diff --git a/Gruntfile.js b/Gruntfile.js index 097d9d67c..78e730ce8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -425,7 +425,7 @@ module.exports = function (grunt) { }); - grunt.registerTask('build', 'Compile all Phaser versions just to the dist folder', function() { + grunt.registerTask('build', 'Compile all Phaser versions just to the temporary dist folder', function() { grunt.option('exclude', 'ninja,creature'); grunt.option('filename', 'phaser'); diff --git a/README.md b/README.md index 86bccf746..808815788 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Grab the source and join in the fun! > In Development -This is the development branch, where we are building Phaser 2.6.2. +This is the development branch, where we are building Phaser 2.7.0. Check the [Change Log](#change-log) to see what we've done so far. Or switch to the master branch for the current stable release. @@ -107,15 +107,15 @@ Using Browserify? Please [read this](#browserify). [jsDelivr](http://www.jsdelivr.com/#!phaser) is a "super-fast CDN for developers". Include the following in your html: -`` +`` or the minified version: -`` +`` [cdnjs.com](https://cdnjs.com/libraries/phaser) also offers a free CDN service. They have all versions of Phaser and even the custom builds: -`` +`` ### Phaser Sandbox @@ -305,10 +305,11 @@ You can read all about the philosophy behind Lazer [here](http://phaser.io/news/ ![Change Log](http://phaser.io/images/github/div-change-log.png "Change Log") -## Version 2.6.2 - "Kore Springs" - In Development +## Version 2.7.0 - "Kore Springs" - In Development ### New Features +* The brand new WebGL Tilemap Renderer is available in this release of Phaser. Using custom developed shaders, map parsing and index batching, it finally makes tilemap rendering as fast as it possibly can be in WebGL. * Group.getRandomExists will return a random child from the Group that has exists set to true. * Group.getAll will return all children in the Group, or a section of the Group, with the optional ability to test if the child has a property matching the given value or not. * Group.iterate has a new `returnType`: `RETURN_ALL`. This allows you to return all children that pass the iteration test in an array. @@ -316,9 +317,10 @@ You can read all about the philosophy behind Lazer [here](http://phaser.io/news/ ### Updates * TypeScript definitions fixes and updates (thanks ) -* Docs typo fixes (thanks ) +* Docs typo fixes (thanks @rroylance @Owumaro) * The InputHandler.flagged property has been removed. It was never used internally, or exposed via the API, so was just overhead. * The src/system folder has been removed and all files relocated to the src/utils folder. This doesn't change anything from an API point of view, but did change the grunt build scripts slightly. +* BitmapData.shadow and BitmapData.text now both `return this` keeping them in-line with the docs (thanks @greeny #2634) ### Bug Fixes @@ -367,10 +369,10 @@ All rights reserved. [![Analytics](https://ga-beacon.appspot.com/UA-44006568-2/phaser/index)](https://github.com/igrigorik/ga-beacon) -[get-js]: https://github.com/photonstorm/phaser/releases/download/v2.6.2/phaser.js -[get-minjs]: https://github.com/photonstorm/phaser/releases/download/v2.6.2/phaser.min.js -[get-zip]: https://github.com/photonstorm/phaser/archive/v2.6.2.zip -[get-tgz]: https://github.com/photonstorm/phaser/archive/v2.6.2.tar.gz +[get-js]: https://github.com/photonstorm/phaser/releases/download/v2.7.0/phaser.js +[get-minjs]: https://github.com/photonstorm/phaser/releases/download/v2.7.0/phaser.min.js +[get-zip]: https://github.com/photonstorm/phaser/archive/v2.7.0.zip +[get-tgz]: https://github.com/photonstorm/phaser/archive/v2.7.0.tar.gz [clone-http]: https://github.com/photonstorm/phaser.git [clone-ssh]: git@github.com:photonstorm/phaser.git [clone-svn]: https://github.com/photonstorm/phaser diff --git a/build/config.php b/build/config.php index 6ea69a169..9ed3ad358 100644 --- a/build/config.php +++ b/build/config.php @@ -409,10 +409,13 @@ EOL; if ($modules['tilemap']) { echo << + + diff --git a/build/creature.js b/build/creature.js deleted file mode 100644 index 6873e9083..000000000 --- a/build/creature.js +++ /dev/null @@ -1,7207 +0,0 @@ -/** - * @fileoverview gl-matrix - High performance matrix and vector operations - * @author Brandon Jones - * @author Colin MacKenzie IV - * @version 2.2.2 - */ - -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - - -(function(_global) { - "use strict"; - - var shim = {}; - if (typeof(exports) === 'undefined') { - if(typeof define == 'function' && typeof define.amd == 'object' && define.amd) { - shim.exports = {}; - define(function() { - return shim.exports; - }); - } else { - // gl-matrix lives in a browser, define its namespaces in global - shim.exports = typeof(window) !== 'undefined' ? window : _global; - } - } - else { - // gl-matrix lives in commonjs, define its namespaces in exports - shim.exports = exports; - } - - (function(exports) { - /* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - - -if(!GLMAT_EPSILON) { - var GLMAT_EPSILON = 0.000001; -} - -if(!GLMAT_ARRAY_TYPE) { - var GLMAT_ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array; -} - -if(!GLMAT_RANDOM) { - var GLMAT_RANDOM = Math.random; -} - -/** - * @class Common utilities - * @name glMatrix - */ -var glMatrix = {}; - -/** - * Sets the type of array used when creating new vectors and matrices - * - * @param {Type} type Array type, such as Float32Array or Array - */ -glMatrix.setMatrixArrayType = function(type) { - GLMAT_ARRAY_TYPE = type; -} - -if(typeof(exports) !== 'undefined') { - exports.glMatrix = glMatrix; -} - -var degree = Math.PI / 180; - -/** -* Convert Degree To Radian -* -* @param {Number} Angle in Degrees -*/ -glMatrix.toRadian = function(a){ - return a * degree; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 2 Dimensional Vector - * @name vec2 - */ - -var vec2 = {}; - -/** - * Creates a new, empty vec2 - * - * @returns {vec2} a new 2D vector - */ -vec2.create = function() { - var out = new GLMAT_ARRAY_TYPE(2); - out[0] = 0; - out[1] = 0; - return out; -}; - -/** - * Creates a new vec2 initialized with values from an existing vector - * - * @param {vec2} a vector to clone - * @returns {vec2} a new 2D vector - */ -vec2.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(2); - out[0] = a[0]; - out[1] = a[1]; - return out; -}; - -/** - * Creates a new vec2 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @returns {vec2} a new 2D vector - */ -vec2.fromValues = function(x, y) { - var out = new GLMAT_ARRAY_TYPE(2); - out[0] = x; - out[1] = y; - return out; -}; - -/** - * Copy the values from one vec2 to another - * - * @param {vec2} out the receiving vector - * @param {vec2} a the source vector - * @returns {vec2} out - */ -vec2.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - return out; -}; - -/** - * Set the components of a vec2 to the given values - * - * @param {vec2} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @returns {vec2} out - */ -vec2.set = function(out, x, y) { - out[0] = x; - out[1] = y; - return out; -}; - -/** - * Adds two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -vec2.add = function(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - return out; -}; - -/** - * Subtracts vector b from vector a - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -vec2.subtract = function(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - return out; -}; - -/** - * Alias for {@link vec2.subtract} - * @function - */ -vec2.sub = vec2.subtract; - -/** - * Multiplies two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -vec2.multiply = function(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - return out; -}; - -/** - * Alias for {@link vec2.multiply} - * @function - */ -vec2.mul = vec2.multiply; - -/** - * Divides two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -vec2.divide = function(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - return out; -}; - -/** - * Alias for {@link vec2.divide} - * @function - */ -vec2.div = vec2.divide; - -/** - * Returns the minimum of two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -vec2.min = function(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - return out; -}; - -/** - * Returns the maximum of two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -vec2.max = function(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - return out; -}; - -/** - * Scales a vec2 by a scalar number - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec2} out - */ -vec2.scale = function(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - return out; -}; - -/** - * Adds two vec2's after scaling the second operand by a scalar value - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec2} out - */ -vec2.scaleAndAdd = function(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - return out; -}; - -/** - * Calculates the euclidian distance between two vec2's - * - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {Number} distance between a and b - */ -vec2.distance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Alias for {@link vec2.distance} - * @function - */ -vec2.dist = vec2.distance; - -/** - * Calculates the squared euclidian distance between two vec2's - * - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {Number} squared distance between a and b - */ -vec2.squaredDistance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return x*x + y*y; -}; - -/** - * Alias for {@link vec2.squaredDistance} - * @function - */ -vec2.sqrDist = vec2.squaredDistance; - -/** - * Calculates the length of a vec2 - * - * @param {vec2} a vector to calculate length of - * @returns {Number} length of a - */ -vec2.length = function (a) { - var x = a[0], - y = a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Alias for {@link vec2.length} - * @function - */ -vec2.len = vec2.length; - -/** - * Calculates the squared length of a vec2 - * - * @param {vec2} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -vec2.squaredLength = function (a) { - var x = a[0], - y = a[1]; - return x*x + y*y; -}; - -/** - * Alias for {@link vec2.squaredLength} - * @function - */ -vec2.sqrLen = vec2.squaredLength; - -/** - * Negates the components of a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to negate - * @returns {vec2} out - */ -vec2.negate = function(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - return out; -}; - -/** - * Returns the inverse of the components of a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to invert - * @returns {vec2} out - */ -vec2.inverse = function(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - return out; -}; - -/** - * Normalize a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to normalize - * @returns {vec2} out - */ -vec2.normalize = function(out, a) { - var x = a[0], - y = a[1]; - var len = x*x + y*y; - if (len > 0) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec2's - * - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {Number} dot product of a and b - */ -vec2.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1]; -}; - -/** - * Computes the cross product of two vec2's - * Note that the cross product must by definition produce a 3D vector - * - * @param {vec3} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec3} out - */ -vec2.cross = function(out, a, b) { - var z = a[0] * b[1] - a[1] * b[0]; - out[0] = out[1] = 0; - out[2] = z; - return out; -}; - -/** - * Performs a linear interpolation between two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec2} out - */ -vec2.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - return out; -}; - -/** - * Generates a random vector with the given scale - * - * @param {vec2} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec2} out - */ -vec2.random = function (out, scale) { - scale = scale || 1.0; - var r = GLMAT_RANDOM() * 2.0 * Math.PI; - out[0] = Math.cos(r) * scale; - out[1] = Math.sin(r) * scale; - return out; -}; - -/** - * Transforms the vec2 with a mat2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat2} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat2 = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[2] * y; - out[1] = m[1] * x + m[3] * y; - return out; -}; - -/** - * Transforms the vec2 with a mat2d - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat2d} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat2d = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[2] * y + m[4]; - out[1] = m[1] * x + m[3] * y + m[5]; - return out; -}; - -/** - * Transforms the vec2 with a mat3 - * 3rd vector component is implicitly '1' - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat3} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat3 = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[3] * y + m[6]; - out[1] = m[1] * x + m[4] * y + m[7]; - return out; -}; - -/** - * Transforms the vec2 with a mat4 - * 3rd vector component is implicitly '0' - * 4th vector component is implicitly '1' - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat4 = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[4] * y + m[12]; - out[1] = m[1] * x + m[5] * y + m[13]; - return out; -}; - -/** - * Perform some operation over an array of vec2s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -vec2.forEach = (function() { - var vec = vec2.create(); - - return function(a, stride, offset, count, fn, arg) { - var i, l; - if(!stride) { - stride = 2; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; - } - - return a; - }; -})(); - -/** - * Returns a string representation of a vector - * - * @param {vec2} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -vec2.str = function (a) { - return 'vec2(' + a[0] + ', ' + a[1] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.vec2 = vec2; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 3 Dimensional Vector - * @name vec3 - */ - -var vec3 = {}; - -/** - * Creates a new, empty vec3 - * - * @returns {vec3} a new 3D vector - */ -vec3.create = function() { - var out = new GLMAT_ARRAY_TYPE(3); - out[0] = 0; - out[1] = 0; - out[2] = 0; - return out; -}; - -/** - * Creates a new vec3 initialized with values from an existing vector - * - * @param {vec3} a vector to clone - * @returns {vec3} a new 3D vector - */ -vec3.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(3); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - return out; -}; - -/** - * Creates a new vec3 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @returns {vec3} a new 3D vector - */ -vec3.fromValues = function(x, y, z) { - var out = new GLMAT_ARRAY_TYPE(3); - out[0] = x; - out[1] = y; - out[2] = z; - return out; -}; - -/** - * Copy the values from one vec3 to another - * - * @param {vec3} out the receiving vector - * @param {vec3} a the source vector - * @returns {vec3} out - */ -vec3.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - return out; -}; - -/** - * Set the components of a vec3 to the given values - * - * @param {vec3} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @returns {vec3} out - */ -vec3.set = function(out, x, y, z) { - out[0] = x; - out[1] = y; - out[2] = z; - return out; -}; - -/** - * Adds two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.add = function(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - return out; -}; - -/** - * Subtracts vector b from vector a - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.subtract = function(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - return out; -}; - -/** - * Alias for {@link vec3.subtract} - * @function - */ -vec3.sub = vec3.subtract; - -/** - * Multiplies two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.multiply = function(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - out[2] = a[2] * b[2]; - return out; -}; - -/** - * Alias for {@link vec3.multiply} - * @function - */ -vec3.mul = vec3.multiply; - -/** - * Divides two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.divide = function(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - out[2] = a[2] / b[2]; - return out; -}; - -/** - * Alias for {@link vec3.divide} - * @function - */ -vec3.div = vec3.divide; - -/** - * Returns the minimum of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.min = function(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - out[2] = Math.min(a[2], b[2]); - return out; -}; - -/** - * Returns the maximum of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.max = function(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - out[2] = Math.max(a[2], b[2]); - return out; -}; - -/** - * Scales a vec3 by a scalar number - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec3} out - */ -vec3.scale = function(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - return out; -}; - -/** - * Adds two vec3's after scaling the second operand by a scalar value - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec3} out - */ -vec3.scaleAndAdd = function(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - return out; -}; - -/** - * Calculates the euclidian distance between two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} distance between a and b - */ -vec3.distance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2]; - return Math.sqrt(x*x + y*y + z*z); -}; - -/** - * Alias for {@link vec3.distance} - * @function - */ -vec3.dist = vec3.distance; - -/** - * Calculates the squared euclidian distance between two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} squared distance between a and b - */ -vec3.squaredDistance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2]; - return x*x + y*y + z*z; -}; - -/** - * Alias for {@link vec3.squaredDistance} - * @function - */ -vec3.sqrDist = vec3.squaredDistance; - -/** - * Calculates the length of a vec3 - * - * @param {vec3} a vector to calculate length of - * @returns {Number} length of a - */ -vec3.length = function (a) { - var x = a[0], - y = a[1], - z = a[2]; - return Math.sqrt(x*x + y*y + z*z); -}; - -/** - * Alias for {@link vec3.length} - * @function - */ -vec3.len = vec3.length; - -/** - * Calculates the squared length of a vec3 - * - * @param {vec3} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -vec3.squaredLength = function (a) { - var x = a[0], - y = a[1], - z = a[2]; - return x*x + y*y + z*z; -}; - -/** - * Alias for {@link vec3.squaredLength} - * @function - */ -vec3.sqrLen = vec3.squaredLength; - -/** - * Negates the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to negate - * @returns {vec3} out - */ -vec3.negate = function(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - return out; -}; - -/** - * Returns the inverse of the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to invert - * @returns {vec3} out - */ -vec3.inverse = function(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - out[2] = 1.0 / a[2]; - return out; -}; - -/** - * Normalize a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to normalize - * @returns {vec3} out - */ -vec3.normalize = function(out, a) { - var x = a[0], - y = a[1], - z = a[2]; - var len = x*x + y*y + z*z; - if (len > 0) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - out[2] = a[2] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} dot product of a and b - */ -vec3.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -}; - -/** - * Computes the cross product of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.cross = function(out, a, b) { - var ax = a[0], ay = a[1], az = a[2], - bx = b[0], by = b[1], bz = b[2]; - - out[0] = ay * bz - az * by; - out[1] = az * bx - ax * bz; - out[2] = ax * by - ay * bx; - return out; -}; - -/** - * Performs a linear interpolation between two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec3} out - */ -vec3.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1], - az = a[2]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - out[2] = az + t * (b[2] - az); - return out; -}; - -/** - * Generates a random vector with the given scale - * - * @param {vec3} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec3} out - */ -vec3.random = function (out, scale) { - scale = scale || 1.0; - - var r = GLMAT_RANDOM() * 2.0 * Math.PI; - var z = (GLMAT_RANDOM() * 2.0) - 1.0; - var zScale = Math.sqrt(1.0-z*z) * scale; - - out[0] = Math.cos(r) * zScale; - out[1] = Math.sin(r) * zScale; - out[2] = z * scale; - return out; -}; - -/** - * Transforms the vec3 with a mat4. - * 4th vector component is implicitly '1' - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec3} out - */ -vec3.transformMat4 = function(out, a, m) { - var x = a[0], y = a[1], z = a[2], - w = m[3] * x + m[7] * y + m[11] * z + m[15]; - w = w || 1.0; - out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; - out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; - out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; - return out; -}; - -/** - * Transforms the vec3 with a mat3. - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {mat4} m the 3x3 matrix to transform with - * @returns {vec3} out - */ -vec3.transformMat3 = function(out, a, m) { - var x = a[0], y = a[1], z = a[2]; - out[0] = x * m[0] + y * m[3] + z * m[6]; - out[1] = x * m[1] + y * m[4] + z * m[7]; - out[2] = x * m[2] + y * m[5] + z * m[8]; - return out; -}; - -/** - * Transforms the vec3 with a quat - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {quat} q quaternion to transform with - * @returns {vec3} out - */ -vec3.transformQuat = function(out, a, q) { - // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations - - var x = a[0], y = a[1], z = a[2], - qx = q[0], qy = q[1], qz = q[2], qw = q[3], - - // calculate quat * vec - ix = qw * x + qy * z - qz * y, - iy = qw * y + qz * x - qx * z, - iz = qw * z + qx * y - qy * x, - iw = -qx * x - qy * y - qz * z; - - // calculate result * inverse quat - out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; - out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; - out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; - return out; -}; - -/** - * Rotate a 3D vector around the x-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -vec3.rotateX = function(out, a, b, c){ - var p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[0]; - r[1] = p[1]*Math.cos(c) - p[2]*Math.sin(c); - r[2] = p[1]*Math.sin(c) + p[2]*Math.cos(c); - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -}; - -/** - * Rotate a 3D vector around the y-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -vec3.rotateY = function(out, a, b, c){ - var p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[2]*Math.sin(c) + p[0]*Math.cos(c); - r[1] = p[1]; - r[2] = p[2]*Math.cos(c) - p[0]*Math.sin(c); - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -}; - -/** - * Rotate a 3D vector around the z-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -vec3.rotateZ = function(out, a, b, c){ - var p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[0]*Math.cos(c) - p[1]*Math.sin(c); - r[1] = p[0]*Math.sin(c) + p[1]*Math.cos(c); - r[2] = p[2]; - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -}; - -/** - * Perform some operation over an array of vec3s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -vec3.forEach = (function() { - var vec = vec3.create(); - - return function(a, stride, offset, count, fn, arg) { - var i, l; - if(!stride) { - stride = 3; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; - } - - return a; - }; -})(); - -/** - * Returns a string representation of a vector - * - * @param {vec3} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -vec3.str = function (a) { - return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.vec3 = vec3; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 4 Dimensional Vector - * @name vec4 - */ - -var vec4 = {}; - -/** - * Creates a new, empty vec4 - * - * @returns {vec4} a new 4D vector - */ -vec4.create = function() { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 0; - return out; -}; - -/** - * Creates a new vec4 initialized with values from an existing vector - * - * @param {vec4} a vector to clone - * @returns {vec4} a new 4D vector - */ -vec4.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Creates a new vec4 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {vec4} a new 4D vector - */ -vec4.fromValues = function(x, y, z, w) { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = w; - return out; -}; - -/** - * Copy the values from one vec4 to another - * - * @param {vec4} out the receiving vector - * @param {vec4} a the source vector - * @returns {vec4} out - */ -vec4.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Set the components of a vec4 to the given values - * - * @param {vec4} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {vec4} out - */ -vec4.set = function(out, x, y, z, w) { - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = w; - return out; -}; - -/** - * Adds two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.add = function(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - out[3] = a[3] + b[3]; - return out; -}; - -/** - * Subtracts vector b from vector a - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.subtract = function(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - out[3] = a[3] - b[3]; - return out; -}; - -/** - * Alias for {@link vec4.subtract} - * @function - */ -vec4.sub = vec4.subtract; - -/** - * Multiplies two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.multiply = function(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - out[2] = a[2] * b[2]; - out[3] = a[3] * b[3]; - return out; -}; - -/** - * Alias for {@link vec4.multiply} - * @function - */ -vec4.mul = vec4.multiply; - -/** - * Divides two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.divide = function(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - out[2] = a[2] / b[2]; - out[3] = a[3] / b[3]; - return out; -}; - -/** - * Alias for {@link vec4.divide} - * @function - */ -vec4.div = vec4.divide; - -/** - * Returns the minimum of two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.min = function(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - out[2] = Math.min(a[2], b[2]); - out[3] = Math.min(a[3], b[3]); - return out; -}; - -/** - * Returns the maximum of two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.max = function(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - out[2] = Math.max(a[2], b[2]); - out[3] = Math.max(a[3], b[3]); - return out; -}; - -/** - * Scales a vec4 by a scalar number - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec4} out - */ -vec4.scale = function(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - out[3] = a[3] * b; - return out; -}; - -/** - * Adds two vec4's after scaling the second operand by a scalar value - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec4} out - */ -vec4.scaleAndAdd = function(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - out[3] = a[3] + (b[3] * scale); - return out; -}; - -/** - * Calculates the euclidian distance between two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} distance between a and b - */ -vec4.distance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2], - w = b[3] - a[3]; - return Math.sqrt(x*x + y*y + z*z + w*w); -}; - -/** - * Alias for {@link vec4.distance} - * @function - */ -vec4.dist = vec4.distance; - -/** - * Calculates the squared euclidian distance between two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} squared distance between a and b - */ -vec4.squaredDistance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2], - w = b[3] - a[3]; - return x*x + y*y + z*z + w*w; -}; - -/** - * Alias for {@link vec4.squaredDistance} - * @function - */ -vec4.sqrDist = vec4.squaredDistance; - -/** - * Calculates the length of a vec4 - * - * @param {vec4} a vector to calculate length of - * @returns {Number} length of a - */ -vec4.length = function (a) { - var x = a[0], - y = a[1], - z = a[2], - w = a[3]; - return Math.sqrt(x*x + y*y + z*z + w*w); -}; - -/** - * Alias for {@link vec4.length} - * @function - */ -vec4.len = vec4.length; - -/** - * Calculates the squared length of a vec4 - * - * @param {vec4} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -vec4.squaredLength = function (a) { - var x = a[0], - y = a[1], - z = a[2], - w = a[3]; - return x*x + y*y + z*z + w*w; -}; - -/** - * Alias for {@link vec4.squaredLength} - * @function - */ -vec4.sqrLen = vec4.squaredLength; - -/** - * Negates the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to negate - * @returns {vec4} out - */ -vec4.negate = function(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = -a[3]; - return out; -}; - -/** - * Returns the inverse of the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to invert - * @returns {vec4} out - */ -vec4.inverse = function(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - out[2] = 1.0 / a[2]; - out[3] = 1.0 / a[3]; - return out; -}; - -/** - * Normalize a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to normalize - * @returns {vec4} out - */ -vec4.normalize = function(out, a) { - var x = a[0], - y = a[1], - z = a[2], - w = a[3]; - var len = x*x + y*y + z*z + w*w; - if (len > 0) { - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - out[2] = a[2] * len; - out[3] = a[3] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} dot product of a and b - */ -vec4.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; -}; - -/** - * Performs a linear interpolation between two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec4} out - */ -vec4.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1], - az = a[2], - aw = a[3]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - out[2] = az + t * (b[2] - az); - out[3] = aw + t * (b[3] - aw); - return out; -}; - -/** - * Generates a random vector with the given scale - * - * @param {vec4} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec4} out - */ -vec4.random = function (out, scale) { - scale = scale || 1.0; - - //TODO: This is a pretty awful way of doing this. Find something better. - out[0] = GLMAT_RANDOM(); - out[1] = GLMAT_RANDOM(); - out[2] = GLMAT_RANDOM(); - out[3] = GLMAT_RANDOM(); - vec4.normalize(out, out); - vec4.scale(out, out, scale); - return out; -}; - -/** - * Transforms the vec4 with a mat4. - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec4} out - */ -vec4.transformMat4 = function(out, a, m) { - var x = a[0], y = a[1], z = a[2], w = a[3]; - out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w; - out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w; - out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w; - out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w; - return out; -}; - -/** - * Transforms the vec4 with a quat - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to transform - * @param {quat} q quaternion to transform with - * @returns {vec4} out - */ -vec4.transformQuat = function(out, a, q) { - var x = a[0], y = a[1], z = a[2], - qx = q[0], qy = q[1], qz = q[2], qw = q[3], - - // calculate quat * vec - ix = qw * x + qy * z - qz * y, - iy = qw * y + qz * x - qx * z, - iz = qw * z + qx * y - qy * x, - iw = -qx * x - qy * y - qz * z; - - // calculate result * inverse quat - out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; - out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; - out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; - return out; -}; - -/** - * Perform some operation over an array of vec4s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -vec4.forEach = (function() { - var vec = vec4.create(); - - return function(a, stride, offset, count, fn, arg) { - var i, l; - if(!stride) { - stride = 4; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; vec[3] = a[i+3]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; a[i+3] = vec[3]; - } - - return a; - }; -})(); - -/** - * Returns a string representation of a vector - * - * @param {vec4} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -vec4.str = function (a) { - return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.vec4 = vec4; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 2x2 Matrix - * @name mat2 - */ - -var mat2 = {}; - -/** - * Creates a new identity mat2 - * - * @returns {mat2} a new 2x2 matrix - */ -mat2.create = function() { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Creates a new mat2 initialized with values from an existing matrix - * - * @param {mat2} a matrix to clone - * @returns {mat2} a new 2x2 matrix - */ -mat2.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Copy the values from one mat2 to another - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Set a mat2 to the identity matrix - * - * @param {mat2} out the receiving matrix - * @returns {mat2} out - */ -mat2.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Transpose the values of a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.transpose = function(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - var a1 = a[1]; - out[1] = a[2]; - out[2] = a1; - } else { - out[0] = a[0]; - out[1] = a[2]; - out[2] = a[1]; - out[3] = a[3]; - } - - return out; -}; - -/** - * Inverts a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.invert = function(out, a) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - - // Calculate the determinant - det = a0 * a3 - a2 * a1; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = a3 * det; - out[1] = -a1 * det; - out[2] = -a2 * det; - out[3] = a0 * det; - - return out; -}; - -/** - * Calculates the adjugate of a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.adjoint = function(out, a) { - // Caching this value is nessecary if out == a - var a0 = a[0]; - out[0] = a[3]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = a0; - - return out; -}; - -/** - * Calculates the determinant of a mat2 - * - * @param {mat2} a the source matrix - * @returns {Number} determinant of a - */ -mat2.determinant = function (a) { - return a[0] * a[3] - a[2] * a[1]; -}; - -/** - * Multiplies two mat2's - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the first operand - * @param {mat2} b the second operand - * @returns {mat2} out - */ -mat2.multiply = function (out, a, b) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = a0 * b0 + a2 * b1; - out[1] = a1 * b0 + a3 * b1; - out[2] = a0 * b2 + a2 * b3; - out[3] = a1 * b2 + a3 * b3; - return out; -}; - -/** - * Alias for {@link mat2.multiply} - * @function - */ -mat2.mul = mat2.multiply; - -/** - * Rotates a mat2 by the given angle - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2} out - */ -mat2.rotate = function (out, a, rad) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - s = Math.sin(rad), - c = Math.cos(rad); - out[0] = a0 * c + a2 * s; - out[1] = a1 * c + a3 * s; - out[2] = a0 * -s + a2 * c; - out[3] = a1 * -s + a3 * c; - return out; -}; - -/** - * Scales the mat2 by the dimensions in the given vec2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the matrix to rotate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat2} out - **/ -mat2.scale = function(out, a, v) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - v0 = v[0], v1 = v[1]; - out[0] = a0 * v0; - out[1] = a1 * v0; - out[2] = a2 * v1; - out[3] = a3 * v1; - return out; -}; - -/** - * Returns a string representation of a mat2 - * - * @param {mat2} mat matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat2.str = function (a) { - return 'mat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -}; - -/** - * Returns Frobenius norm of a mat2 - * - * @param {mat2} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat2.frob = function (a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2))) -}; - -/** - * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix - * @param {mat2} L the lower triangular matrix - * @param {mat2} D the diagonal matrix - * @param {mat2} U the upper triangular matrix - * @param {mat2} a the input matrix to factorize - */ - -mat2.LDU = function (L, D, U, a) { - L[2] = a[2]/a[0]; - U[0] = a[0]; - U[1] = a[1]; - U[3] = a[3] - L[2] * U[1]; - return [L, D, U]; -}; - -if(typeof(exports) !== 'undefined') { - exports.mat2 = mat2; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 2x3 Matrix - * @name mat2d - * - * @description - * A mat2d contains six elements defined as: - *
- * [a, c, tx,
- *  b, d, ty]
- * 
- * This is a short form for the 3x3 matrix: - *
- * [a, c, tx,
- *  b, d, ty,
- *  0, 0, 1]
- * 
- * The last row is ignored so the array is shorter and operations are faster. - */ - -var mat2d = {}; - -/** - * Creates a new identity mat2d - * - * @returns {mat2d} a new 2x3 matrix - */ -mat2d.create = function() { - var out = new GLMAT_ARRAY_TYPE(6); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - out[4] = 0; - out[5] = 0; - return out; -}; - -/** - * Creates a new mat2d initialized with values from an existing matrix - * - * @param {mat2d} a matrix to clone - * @returns {mat2d} a new 2x3 matrix - */ -mat2d.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(6); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - return out; -}; - -/** - * Copy the values from one mat2d to another - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the source matrix - * @returns {mat2d} out - */ -mat2d.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - return out; -}; - -/** - * Set a mat2d to the identity matrix - * - * @param {mat2d} out the receiving matrix - * @returns {mat2d} out - */ -mat2d.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - out[4] = 0; - out[5] = 0; - return out; -}; - -/** - * Inverts a mat2d - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the source matrix - * @returns {mat2d} out - */ -mat2d.invert = function(out, a) { - var aa = a[0], ab = a[1], ac = a[2], ad = a[3], - atx = a[4], aty = a[5]; - - var det = aa * ad - ab * ac; - if(!det){ - return null; - } - det = 1.0 / det; - - out[0] = ad * det; - out[1] = -ab * det; - out[2] = -ac * det; - out[3] = aa * det; - out[4] = (ac * aty - ad * atx) * det; - out[5] = (ab * atx - aa * aty) * det; - return out; -}; - -/** - * Calculates the determinant of a mat2d - * - * @param {mat2d} a the source matrix - * @returns {Number} determinant of a - */ -mat2d.determinant = function (a) { - return a[0] * a[3] - a[1] * a[2]; -}; - -/** - * Multiplies two mat2d's - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the first operand - * @param {mat2d} b the second operand - * @returns {mat2d} out - */ -mat2d.multiply = function (out, a, b) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5]; - out[0] = a0 * b0 + a2 * b1; - out[1] = a1 * b0 + a3 * b1; - out[2] = a0 * b2 + a2 * b3; - out[3] = a1 * b2 + a3 * b3; - out[4] = a0 * b4 + a2 * b5 + a4; - out[5] = a1 * b4 + a3 * b5 + a5; - return out; -}; - -/** - * Alias for {@link mat2d.multiply} - * @function - */ -mat2d.mul = mat2d.multiply; - - -/** - * Rotates a mat2d by the given angle - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2d} out - */ -mat2d.rotate = function (out, a, rad) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - s = Math.sin(rad), - c = Math.cos(rad); - out[0] = a0 * c + a2 * s; - out[1] = a1 * c + a3 * s; - out[2] = a0 * -s + a2 * c; - out[3] = a1 * -s + a3 * c; - out[4] = a4; - out[5] = a5; - return out; -}; - -/** - * Scales the mat2d by the dimensions in the given vec2 - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to translate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat2d} out - **/ -mat2d.scale = function(out, a, v) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - v0 = v[0], v1 = v[1]; - out[0] = a0 * v0; - out[1] = a1 * v0; - out[2] = a2 * v1; - out[3] = a3 * v1; - out[4] = a4; - out[5] = a5; - return out; -}; - -/** - * Translates the mat2d by the dimensions in the given vec2 - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to translate - * @param {vec2} v the vec2 to translate the matrix by - * @returns {mat2d} out - **/ -mat2d.translate = function(out, a, v) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - v0 = v[0], v1 = v[1]; - out[0] = a0; - out[1] = a1; - out[2] = a2; - out[3] = a3; - out[4] = a0 * v0 + a2 * v1 + a4; - out[5] = a1 * v0 + a3 * v1 + a5; - return out; -}; - -/** - * Returns a string representation of a mat2d - * - * @param {mat2d} a matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat2d.str = function (a) { - return 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + - a[3] + ', ' + a[4] + ', ' + a[5] + ')'; -}; - -/** - * Returns Frobenius norm of a mat2d - * - * @param {mat2d} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat2d.frob = function (a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + 1)) -}; - -if(typeof(exports) !== 'undefined') { - exports.mat2d = mat2d; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 3x3 Matrix - * @name mat3 - */ - -var mat3 = {}; - -/** - * Creates a new identity mat3 - * - * @returns {mat3} a new 3x3 matrix - */ -mat3.create = function() { - var out = new GLMAT_ARRAY_TYPE(9); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -}; - -/** - * Copies the upper-left 3x3 values into the given mat3. - * - * @param {mat3} out the receiving 3x3 matrix - * @param {mat4} a the source 4x4 matrix - * @returns {mat3} out - */ -mat3.fromMat4 = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[4]; - out[4] = a[5]; - out[5] = a[6]; - out[6] = a[8]; - out[7] = a[9]; - out[8] = a[10]; - return out; -}; - -/** - * Creates a new mat3 initialized with values from an existing matrix - * - * @param {mat3} a matrix to clone - * @returns {mat3} a new 3x3 matrix - */ -mat3.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(9); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -}; - -/** - * Copy the values from one mat3 to another - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -}; - -/** - * Set a mat3 to the identity matrix - * - * @param {mat3} out the receiving matrix - * @returns {mat3} out - */ -mat3.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -}; - -/** - * Transpose the values of a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.transpose = function(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - var a01 = a[1], a02 = a[2], a12 = a[5]; - out[1] = a[3]; - out[2] = a[6]; - out[3] = a01; - out[5] = a[7]; - out[6] = a02; - out[7] = a12; - } else { - out[0] = a[0]; - out[1] = a[3]; - out[2] = a[6]; - out[3] = a[1]; - out[4] = a[4]; - out[5] = a[7]; - out[6] = a[2]; - out[7] = a[5]; - out[8] = a[8]; - } - - return out; -}; - -/** - * Inverts a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.invert = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - - b01 = a22 * a11 - a12 * a21, - b11 = -a22 * a10 + a12 * a20, - b21 = a21 * a10 - a11 * a20, - - // Calculate the determinant - det = a00 * b01 + a01 * b11 + a02 * b21; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = b01 * det; - out[1] = (-a22 * a01 + a02 * a21) * det; - out[2] = (a12 * a01 - a02 * a11) * det; - out[3] = b11 * det; - out[4] = (a22 * a00 - a02 * a20) * det; - out[5] = (-a12 * a00 + a02 * a10) * det; - out[6] = b21 * det; - out[7] = (-a21 * a00 + a01 * a20) * det; - out[8] = (a11 * a00 - a01 * a10) * det; - return out; -}; - -/** - * Calculates the adjugate of a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.adjoint = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8]; - - out[0] = (a11 * a22 - a12 * a21); - out[1] = (a02 * a21 - a01 * a22); - out[2] = (a01 * a12 - a02 * a11); - out[3] = (a12 * a20 - a10 * a22); - out[4] = (a00 * a22 - a02 * a20); - out[5] = (a02 * a10 - a00 * a12); - out[6] = (a10 * a21 - a11 * a20); - out[7] = (a01 * a20 - a00 * a21); - out[8] = (a00 * a11 - a01 * a10); - return out; -}; - -/** - * Calculates the determinant of a mat3 - * - * @param {mat3} a the source matrix - * @returns {Number} determinant of a - */ -mat3.determinant = function (a) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8]; - - return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); -}; - -/** - * Multiplies two mat3's - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the first operand - * @param {mat3} b the second operand - * @returns {mat3} out - */ -mat3.multiply = function (out, a, b) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - - b00 = b[0], b01 = b[1], b02 = b[2], - b10 = b[3], b11 = b[4], b12 = b[5], - b20 = b[6], b21 = b[7], b22 = b[8]; - - out[0] = b00 * a00 + b01 * a10 + b02 * a20; - out[1] = b00 * a01 + b01 * a11 + b02 * a21; - out[2] = b00 * a02 + b01 * a12 + b02 * a22; - - out[3] = b10 * a00 + b11 * a10 + b12 * a20; - out[4] = b10 * a01 + b11 * a11 + b12 * a21; - out[5] = b10 * a02 + b11 * a12 + b12 * a22; - - out[6] = b20 * a00 + b21 * a10 + b22 * a20; - out[7] = b20 * a01 + b21 * a11 + b22 * a21; - out[8] = b20 * a02 + b21 * a12 + b22 * a22; - return out; -}; - -/** - * Alias for {@link mat3.multiply} - * @function - */ -mat3.mul = mat3.multiply; - -/** - * Translate a mat3 by the given vector - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to translate - * @param {vec2} v vector to translate by - * @returns {mat3} out - */ -mat3.translate = function(out, a, v) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - x = v[0], y = v[1]; - - out[0] = a00; - out[1] = a01; - out[2] = a02; - - out[3] = a10; - out[4] = a11; - out[5] = a12; - - out[6] = x * a00 + y * a10 + a20; - out[7] = x * a01 + y * a11 + a21; - out[8] = x * a02 + y * a12 + a22; - return out; -}; - -/** - * Rotates a mat3 by the given angle - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat3} out - */ -mat3.rotate = function (out, a, rad) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - - s = Math.sin(rad), - c = Math.cos(rad); - - out[0] = c * a00 + s * a10; - out[1] = c * a01 + s * a11; - out[2] = c * a02 + s * a12; - - out[3] = c * a10 - s * a00; - out[4] = c * a11 - s * a01; - out[5] = c * a12 - s * a02; - - out[6] = a20; - out[7] = a21; - out[8] = a22; - return out; -}; - -/** - * Scales the mat3 by the dimensions in the given vec2 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to rotate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat3} out - **/ -mat3.scale = function(out, a, v) { - var x = v[0], y = v[1]; - - out[0] = x * a[0]; - out[1] = x * a[1]; - out[2] = x * a[2]; - - out[3] = y * a[3]; - out[4] = y * a[4]; - out[5] = y * a[5]; - - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -}; - -/** - * Copies the values from a mat2d into a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat2d} a the matrix to copy - * @returns {mat3} out - **/ -mat3.fromMat2d = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = 0; - - out[3] = a[2]; - out[4] = a[3]; - out[5] = 0; - - out[6] = a[4]; - out[7] = a[5]; - out[8] = 1; - return out; -}; - -/** -* Calculates a 3x3 matrix from the given quaternion -* -* @param {mat3} out mat3 receiving operation result -* @param {quat} q Quaternion to create matrix from -* -* @returns {mat3} out -*/ -mat3.fromQuat = function (out, q) { - var x = q[0], y = q[1], z = q[2], w = q[3], - x2 = x + x, - y2 = y + y, - z2 = z + z, - - xx = x * x2, - yx = y * x2, - yy = y * y2, - zx = z * x2, - zy = z * y2, - zz = z * z2, - wx = w * x2, - wy = w * y2, - wz = w * z2; - - out[0] = 1 - yy - zz; - out[3] = yx - wz; - out[6] = zx + wy; - - out[1] = yx + wz; - out[4] = 1 - xx - zz; - out[7] = zy - wx; - - out[2] = zx - wy; - out[5] = zy + wx; - out[8] = 1 - xx - yy; - - return out; -}; - -/** -* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix -* -* @param {mat3} out mat3 receiving operation result -* @param {mat4} a Mat4 to derive the normal matrix from -* -* @returns {mat3} out -*/ -mat3.normalFromMat4 = function (out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], - - b00 = a00 * a11 - a01 * a10, - b01 = a00 * a12 - a02 * a10, - b02 = a00 * a13 - a03 * a10, - b03 = a01 * a12 - a02 * a11, - b04 = a01 * a13 - a03 * a11, - b05 = a02 * a13 - a03 * a12, - b06 = a20 * a31 - a21 * a30, - b07 = a20 * a32 - a22 * a30, - b08 = a20 * a33 - a23 * a30, - b09 = a21 * a32 - a22 * a31, - b10 = a21 * a33 - a23 * a31, - b11 = a22 * a33 - a23 * a32, - - // Calculate the determinant - det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; - out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det; - out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det; - - out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det; - out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det; - out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det; - - out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det; - out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det; - out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det; - - return out; -}; - -/** - * Returns a string representation of a mat3 - * - * @param {mat3} mat matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat3.str = function (a) { - return 'mat3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + - a[3] + ', ' + a[4] + ', ' + a[5] + ', ' + - a[6] + ', ' + a[7] + ', ' + a[8] + ')'; -}; - -/** - * Returns Frobenius norm of a mat3 - * - * @param {mat3} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat3.frob = function (a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2))) -}; - - -if(typeof(exports) !== 'undefined') { - exports.mat3 = mat3; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 4x4 Matrix - * @name mat4 - */ - -var mat4 = {}; - -/** - * Creates a new identity mat4 - * - * @returns {mat4} a new 4x4 matrix - */ -mat4.create = function() { - var out = new GLMAT_ARRAY_TYPE(16); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -}; - -/** - * Creates a new mat4 initialized with values from an existing matrix - * - * @param {mat4} a matrix to clone - * @returns {mat4} a new 4x4 matrix - */ -mat4.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(16); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -}; - -/** - * Copy the values from one mat4 to another - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -}; - -/** - * Set a mat4 to the identity matrix - * - * @param {mat4} out the receiving matrix - * @returns {mat4} out - */ -mat4.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -}; - -/** - * Transpose the values of a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.transpose = function(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - var a01 = a[1], a02 = a[2], a03 = a[3], - a12 = a[6], a13 = a[7], - a23 = a[11]; - - out[1] = a[4]; - out[2] = a[8]; - out[3] = a[12]; - out[4] = a01; - out[6] = a[9]; - out[7] = a[13]; - out[8] = a02; - out[9] = a12; - out[11] = a[14]; - out[12] = a03; - out[13] = a13; - out[14] = a23; - } else { - out[0] = a[0]; - out[1] = a[4]; - out[2] = a[8]; - out[3] = a[12]; - out[4] = a[1]; - out[5] = a[5]; - out[6] = a[9]; - out[7] = a[13]; - out[8] = a[2]; - out[9] = a[6]; - out[10] = a[10]; - out[11] = a[14]; - out[12] = a[3]; - out[13] = a[7]; - out[14] = a[11]; - out[15] = a[15]; - } - - return out; -}; - -/** - * Inverts a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.invert = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], - - b00 = a00 * a11 - a01 * a10, - b01 = a00 * a12 - a02 * a10, - b02 = a00 * a13 - a03 * a10, - b03 = a01 * a12 - a02 * a11, - b04 = a01 * a13 - a03 * a11, - b05 = a02 * a13 - a03 * a12, - b06 = a20 * a31 - a21 * a30, - b07 = a20 * a32 - a22 * a30, - b08 = a20 * a33 - a23 * a30, - b09 = a21 * a32 - a22 * a31, - b10 = a21 * a33 - a23 * a31, - b11 = a22 * a33 - a23 * a32, - - // Calculate the determinant - det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; - out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; - out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; - out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; - out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; - out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; - out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; - out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; - out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; - out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; - out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; - out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; - out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; - out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; - out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; - out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; - - return out; -}; - -/** - * Calculates the adjugate of a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.adjoint = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22)); - out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); - out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12)); - out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); - out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); - out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22)); - out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); - out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12)); - out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21)); - out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); - out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11)); - out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); - out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); - out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21)); - out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); - out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11)); - return out; -}; - -/** - * Calculates the determinant of a mat4 - * - * @param {mat4} a the source matrix - * @returns {Number} determinant of a - */ -mat4.determinant = function (a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], - - b00 = a00 * a11 - a01 * a10, - b01 = a00 * a12 - a02 * a10, - b02 = a00 * a13 - a03 * a10, - b03 = a01 * a12 - a02 * a11, - b04 = a01 * a13 - a03 * a11, - b05 = a02 * a13 - a03 * a12, - b06 = a20 * a31 - a21 * a30, - b07 = a20 * a32 - a22 * a30, - b08 = a20 * a33 - a23 * a30, - b09 = a21 * a32 - a22 * a31, - b10 = a21 * a33 - a23 * a31, - b11 = a22 * a33 - a23 * a32; - - // Calculate the determinant - return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; -}; - -/** - * Multiplies two mat4's - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the first operand - * @param {mat4} b the second operand - * @returns {mat4} out - */ -mat4.multiply = function (out, a, b) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - // Cache only the current line of the second matrix - var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7]; - out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11]; - out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15]; - out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - return out; -}; - -/** - * Alias for {@link mat4.multiply} - * @function - */ -mat4.mul = mat4.multiply; - -/** - * Translate a mat4 by the given vector - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to translate - * @param {vec3} v vector to translate by - * @returns {mat4} out - */ -mat4.translate = function (out, a, v) { - var x = v[0], y = v[1], z = v[2], - a00, a01, a02, a03, - a10, a11, a12, a13, - a20, a21, a22, a23; - - if (a === out) { - out[12] = a[0] * x + a[4] * y + a[8] * z + a[12]; - out[13] = a[1] * x + a[5] * y + a[9] * z + a[13]; - out[14] = a[2] * x + a[6] * y + a[10] * z + a[14]; - out[15] = a[3] * x + a[7] * y + a[11] * z + a[15]; - } else { - a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; - a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; - a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; - - out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03; - out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13; - out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23; - - out[12] = a00 * x + a10 * y + a20 * z + a[12]; - out[13] = a01 * x + a11 * y + a21 * z + a[13]; - out[14] = a02 * x + a12 * y + a22 * z + a[14]; - out[15] = a03 * x + a13 * y + a23 * z + a[15]; - } - - return out; -}; - -/** - * Scales the mat4 by the dimensions in the given vec3 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to scale - * @param {vec3} v the vec3 to scale the matrix by - * @returns {mat4} out - **/ -mat4.scale = function(out, a, v) { - var x = v[0], y = v[1], z = v[2]; - - out[0] = a[0] * x; - out[1] = a[1] * x; - out[2] = a[2] * x; - out[3] = a[3] * x; - out[4] = a[4] * y; - out[5] = a[5] * y; - out[6] = a[6] * y; - out[7] = a[7] * y; - out[8] = a[8] * z; - out[9] = a[9] * z; - out[10] = a[10] * z; - out[11] = a[11] * z; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -}; - -/** - * Rotates a mat4 by the given angle - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @param {vec3} axis the axis to rotate around - * @returns {mat4} out - */ -mat4.rotate = function (out, a, rad, axis) { - var x = axis[0], y = axis[1], z = axis[2], - len = Math.sqrt(x * x + y * y + z * z), - s, c, t, - a00, a01, a02, a03, - a10, a11, a12, a13, - a20, a21, a22, a23, - b00, b01, b02, - b10, b11, b12, - b20, b21, b22; - - if (Math.abs(len) < GLMAT_EPSILON) { return null; } - - len = 1 / len; - x *= len; - y *= len; - z *= len; - - s = Math.sin(rad); - c = Math.cos(rad); - t = 1 - c; - - a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; - a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; - a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; - - // Construct the elements of the rotation matrix - b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s; - b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s; - b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c; - - // Perform rotation-specific matrix multiplication - out[0] = a00 * b00 + a10 * b01 + a20 * b02; - out[1] = a01 * b00 + a11 * b01 + a21 * b02; - out[2] = a02 * b00 + a12 * b01 + a22 * b02; - out[3] = a03 * b00 + a13 * b01 + a23 * b02; - out[4] = a00 * b10 + a10 * b11 + a20 * b12; - out[5] = a01 * b10 + a11 * b11 + a21 * b12; - out[6] = a02 * b10 + a12 * b11 + a22 * b12; - out[7] = a03 * b10 + a13 * b11 + a23 * b12; - out[8] = a00 * b20 + a10 * b21 + a20 * b22; - out[9] = a01 * b20 + a11 * b21 + a21 * b22; - out[10] = a02 * b20 + a12 * b21 + a22 * b22; - out[11] = a03 * b20 + a13 * b21 + a23 * b22; - - if (a !== out) { // If the source and destination differ, copy the unchanged last row - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - return out; -}; - -/** - * Rotates a matrix by the given angle around the X axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -mat4.rotateX = function (out, a, rad) { - var s = Math.sin(rad), - c = Math.cos(rad), - a10 = a[4], - a11 = a[5], - a12 = a[6], - a13 = a[7], - a20 = a[8], - a21 = a[9], - a22 = a[10], - a23 = a[11]; - - if (a !== out) { // If the source and destination differ, copy the unchanged rows - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[4] = a10 * c + a20 * s; - out[5] = a11 * c + a21 * s; - out[6] = a12 * c + a22 * s; - out[7] = a13 * c + a23 * s; - out[8] = a20 * c - a10 * s; - out[9] = a21 * c - a11 * s; - out[10] = a22 * c - a12 * s; - out[11] = a23 * c - a13 * s; - return out; -}; - -/** - * Rotates a matrix by the given angle around the Y axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -mat4.rotateY = function (out, a, rad) { - var s = Math.sin(rad), - c = Math.cos(rad), - a00 = a[0], - a01 = a[1], - a02 = a[2], - a03 = a[3], - a20 = a[8], - a21 = a[9], - a22 = a[10], - a23 = a[11]; - - if (a !== out) { // If the source and destination differ, copy the unchanged rows - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[0] = a00 * c - a20 * s; - out[1] = a01 * c - a21 * s; - out[2] = a02 * c - a22 * s; - out[3] = a03 * c - a23 * s; - out[8] = a00 * s + a20 * c; - out[9] = a01 * s + a21 * c; - out[10] = a02 * s + a22 * c; - out[11] = a03 * s + a23 * c; - return out; -}; - -/** - * Rotates a matrix by the given angle around the Z axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -mat4.rotateZ = function (out, a, rad) { - var s = Math.sin(rad), - c = Math.cos(rad), - a00 = a[0], - a01 = a[1], - a02 = a[2], - a03 = a[3], - a10 = a[4], - a11 = a[5], - a12 = a[6], - a13 = a[7]; - - if (a !== out) { // If the source and destination differ, copy the unchanged last row - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[0] = a00 * c + a10 * s; - out[1] = a01 * c + a11 * s; - out[2] = a02 * c + a12 * s; - out[3] = a03 * c + a13 * s; - out[4] = a10 * c - a00 * s; - out[5] = a11 * c - a01 * s; - out[6] = a12 * c - a02 * s; - out[7] = a13 * c - a03 * s; - return out; -}; - -/** - * Creates a matrix from a quaternion rotation and vector translation - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.translate(dest, vec); - * var quatMat = mat4.create(); - * quat4.toMat4(quat, quatMat); - * mat4.multiply(dest, quatMat); - * - * @param {mat4} out mat4 receiving operation result - * @param {quat4} q Rotation quaternion - * @param {vec3} v Translation vector - * @returns {mat4} out - */ -mat4.fromRotationTranslation = function (out, q, v) { - // Quaternion math - var x = q[0], y = q[1], z = q[2], w = q[3], - x2 = x + x, - y2 = y + y, - z2 = z + z, - - xx = x * x2, - xy = x * y2, - xz = x * z2, - yy = y * y2, - yz = y * z2, - zz = z * z2, - wx = w * x2, - wy = w * y2, - wz = w * z2; - - out[0] = 1 - (yy + zz); - out[1] = xy + wz; - out[2] = xz - wy; - out[3] = 0; - out[4] = xy - wz; - out[5] = 1 - (xx + zz); - out[6] = yz + wx; - out[7] = 0; - out[8] = xz + wy; - out[9] = yz - wx; - out[10] = 1 - (xx + yy); - out[11] = 0; - out[12] = v[0]; - out[13] = v[1]; - out[14] = v[2]; - out[15] = 1; - - return out; -}; - -mat4.fromQuat = function (out, q) { - var x = q[0], y = q[1], z = q[2], w = q[3], - x2 = x + x, - y2 = y + y, - z2 = z + z, - - xx = x * x2, - yx = y * x2, - yy = y * y2, - zx = z * x2, - zy = z * y2, - zz = z * z2, - wx = w * x2, - wy = w * y2, - wz = w * z2; - - out[0] = 1 - yy - zz; - out[1] = yx + wz; - out[2] = zx - wy; - out[3] = 0; - - out[4] = yx - wz; - out[5] = 1 - xx - zz; - out[6] = zy + wx; - out[7] = 0; - - out[8] = zx + wy; - out[9] = zy - wx; - out[10] = 1 - xx - yy; - out[11] = 0; - - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - - return out; -}; - -/** - * Generates a frustum matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {Number} left Left bound of the frustum - * @param {Number} right Right bound of the frustum - * @param {Number} bottom Bottom bound of the frustum - * @param {Number} top Top bound of the frustum - * @param {Number} near Near bound of the frustum - * @param {Number} far Far bound of the frustum - * @returns {mat4} out - */ -mat4.frustum = function (out, left, right, bottom, top, near, far) { - var rl = 1 / (right - left), - tb = 1 / (top - bottom), - nf = 1 / (near - far); - out[0] = (near * 2) * rl; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = (near * 2) * tb; - out[6] = 0; - out[7] = 0; - out[8] = (right + left) * rl; - out[9] = (top + bottom) * tb; - out[10] = (far + near) * nf; - out[11] = -1; - out[12] = 0; - out[13] = 0; - out[14] = (far * near * 2) * nf; - out[15] = 0; - return out; -}; - -/** - * Generates a perspective projection matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {number} fovy Vertical field of view in radians - * @param {number} aspect Aspect ratio. typically viewport width/height - * @param {number} near Near bound of the frustum - * @param {number} far Far bound of the frustum - * @returns {mat4} out - */ -mat4.perspective = function (out, fovy, aspect, near, far) { - var f = 1.0 / Math.tan(fovy / 2), - nf = 1 / (near - far); - out[0] = f / aspect; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = f; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = (far + near) * nf; - out[11] = -1; - out[12] = 0; - out[13] = 0; - out[14] = (2 * far * near) * nf; - out[15] = 0; - return out; -}; - -/** - * Generates a orthogonal projection matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {number} left Left bound of the frustum - * @param {number} right Right bound of the frustum - * @param {number} bottom Bottom bound of the frustum - * @param {number} top Top bound of the frustum - * @param {number} near Near bound of the frustum - * @param {number} far Far bound of the frustum - * @returns {mat4} out - */ -mat4.ortho = function (out, left, right, bottom, top, near, far) { - var lr = 1 / (left - right), - bt = 1 / (bottom - top), - nf = 1 / (near - far); - out[0] = -2 * lr; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = -2 * bt; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 2 * nf; - out[11] = 0; - out[12] = (left + right) * lr; - out[13] = (top + bottom) * bt; - out[14] = (far + near) * nf; - out[15] = 1; - return out; -}; - -/** - * Generates a look-at matrix with the given eye position, focal point, and up axis - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {vec3} eye Position of the viewer - * @param {vec3} center Point the viewer is looking at - * @param {vec3} up vec3 pointing up - * @returns {mat4} out - */ -mat4.lookAt = function (out, eye, center, up) { - var x0, x1, x2, y0, y1, y2, z0, z1, z2, len, - eyex = eye[0], - eyey = eye[1], - eyez = eye[2], - upx = up[0], - upy = up[1], - upz = up[2], - centerx = center[0], - centery = center[1], - centerz = center[2]; - - if (Math.abs(eyex - centerx) < GLMAT_EPSILON && - Math.abs(eyey - centery) < GLMAT_EPSILON && - Math.abs(eyez - centerz) < GLMAT_EPSILON) { - return mat4.identity(out); - } - - z0 = eyex - centerx; - z1 = eyey - centery; - z2 = eyez - centerz; - - len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); - z0 *= len; - z1 *= len; - z2 *= len; - - x0 = upy * z2 - upz * z1; - x1 = upz * z0 - upx * z2; - x2 = upx * z1 - upy * z0; - len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); - if (!len) { - x0 = 0; - x1 = 0; - x2 = 0; - } else { - len = 1 / len; - x0 *= len; - x1 *= len; - x2 *= len; - } - - y0 = z1 * x2 - z2 * x1; - y1 = z2 * x0 - z0 * x2; - y2 = z0 * x1 - z1 * x0; - - len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); - if (!len) { - y0 = 0; - y1 = 0; - y2 = 0; - } else { - len = 1 / len; - y0 *= len; - y1 *= len; - y2 *= len; - } - - out[0] = x0; - out[1] = y0; - out[2] = z0; - out[3] = 0; - out[4] = x1; - out[5] = y1; - out[6] = z1; - out[7] = 0; - out[8] = x2; - out[9] = y2; - out[10] = z2; - out[11] = 0; - out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); - out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); - out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); - out[15] = 1; - - return out; -}; - -/** - * Returns a string representation of a mat4 - * - * @param {mat4} mat matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat4.str = function (a) { - return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + - a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' + - a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + - a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')'; -}; - -/** - * Returns Frobenius norm of a mat4 - * - * @param {mat4} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat4.frob = function (a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2) + Math.pow(a[9], 2) + Math.pow(a[10], 2) + Math.pow(a[11], 2) + Math.pow(a[12], 2) + Math.pow(a[13], 2) + Math.pow(a[14], 2) + Math.pow(a[15], 2) )) -}; - - -if(typeof(exports) !== 'undefined') { - exports.mat4 = mat4; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class Quaternion - * @name quat - */ - -var quat = {}; - -/** - * Creates a new identity quat - * - * @returns {quat} a new quaternion - */ -quat.create = function() { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Sets a quaternion to represent the shortest rotation from one - * vector to another. - * - * Both vectors are assumed to be unit length. - * - * @param {quat} out the receiving quaternion. - * @param {vec3} a the initial vector - * @param {vec3} b the destination vector - * @returns {quat} out - */ -quat.rotationTo = (function() { - var tmpvec3 = vec3.create(); - var xUnitVec3 = vec3.fromValues(1,0,0); - var yUnitVec3 = vec3.fromValues(0,1,0); - - return function(out, a, b) { - var dot = vec3.dot(a, b); - if (dot < -0.999999) { - vec3.cross(tmpvec3, xUnitVec3, a); - if (vec3.length(tmpvec3) < 0.000001) - vec3.cross(tmpvec3, yUnitVec3, a); - vec3.normalize(tmpvec3, tmpvec3); - quat.setAxisAngle(out, tmpvec3, Math.PI); - return out; - } else if (dot > 0.999999) { - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; - } else { - vec3.cross(tmpvec3, a, b); - out[0] = tmpvec3[0]; - out[1] = tmpvec3[1]; - out[2] = tmpvec3[2]; - out[3] = 1 + dot; - return quat.normalize(out, out); - } - }; -})(); - -/** - * Sets the specified quaternion with values corresponding to the given - * axes. Each axis is a vec3 and is expected to be unit length and - * perpendicular to all other specified axes. - * - * @param {vec3} view the vector representing the viewing direction - * @param {vec3} right the vector representing the local "right" direction - * @param {vec3} up the vector representing the local "up" direction - * @returns {quat} out - */ -quat.setAxes = (function() { - var matr = mat3.create(); - - return function(out, view, right, up) { - matr[0] = right[0]; - matr[3] = right[1]; - matr[6] = right[2]; - - matr[1] = up[0]; - matr[4] = up[1]; - matr[7] = up[2]; - - matr[2] = -view[0]; - matr[5] = -view[1]; - matr[8] = -view[2]; - - return quat.normalize(out, quat.fromMat3(out, matr)); - }; -})(); - -/** - * Creates a new quat initialized with values from an existing quaternion - * - * @param {quat} a quaternion to clone - * @returns {quat} a new quaternion - * @function - */ -quat.clone = vec4.clone; - -/** - * Creates a new quat initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {quat} a new quaternion - * @function - */ -quat.fromValues = vec4.fromValues; - -/** - * Copy the values from one quat to another - * - * @param {quat} out the receiving quaternion - * @param {quat} a the source quaternion - * @returns {quat} out - * @function - */ -quat.copy = vec4.copy; - -/** - * Set the components of a quat to the given values - * - * @param {quat} out the receiving quaternion - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {quat} out - * @function - */ -quat.set = vec4.set; - -/** - * Set a quat to the identity quaternion - * - * @param {quat} out the receiving quaternion - * @returns {quat} out - */ -quat.identity = function(out) { - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Sets a quat from the given angle and rotation axis, - * then returns it. - * - * @param {quat} out the receiving quaternion - * @param {vec3} axis the axis around which to rotate - * @param {Number} rad the angle in radians - * @returns {quat} out - **/ -quat.setAxisAngle = function(out, axis, rad) { - rad = rad * 0.5; - var s = Math.sin(rad); - out[0] = s * axis[0]; - out[1] = s * axis[1]; - out[2] = s * axis[2]; - out[3] = Math.cos(rad); - return out; -}; - -/** - * Adds two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {quat} out - * @function - */ -quat.add = vec4.add; - -/** - * Multiplies two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {quat} out - */ -quat.multiply = function(out, a, b) { - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bx = b[0], by = b[1], bz = b[2], bw = b[3]; - - out[0] = ax * bw + aw * bx + ay * bz - az * by; - out[1] = ay * bw + aw * by + az * bx - ax * bz; - out[2] = az * bw + aw * bz + ax * by - ay * bx; - out[3] = aw * bw - ax * bx - ay * by - az * bz; - return out; -}; - -/** - * Alias for {@link quat.multiply} - * @function - */ -quat.mul = quat.multiply; - -/** - * Scales a quat by a scalar number - * - * @param {quat} out the receiving vector - * @param {quat} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {quat} out - * @function - */ -quat.scale = vec4.scale; - -/** - * Rotates a quaternion by the given angle about the X axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -quat.rotateX = function (out, a, rad) { - rad *= 0.5; - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bx = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw + aw * bx; - out[1] = ay * bw + az * bx; - out[2] = az * bw - ay * bx; - out[3] = aw * bw - ax * bx; - return out; -}; - -/** - * Rotates a quaternion by the given angle about the Y axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -quat.rotateY = function (out, a, rad) { - rad *= 0.5; - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - by = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw - az * by; - out[1] = ay * bw + aw * by; - out[2] = az * bw + ax * by; - out[3] = aw * bw - ay * by; - return out; -}; - -/** - * Rotates a quaternion by the given angle about the Z axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -quat.rotateZ = function (out, a, rad) { - rad *= 0.5; - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bz = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw + ay * bz; - out[1] = ay * bw - ax * bz; - out[2] = az * bw + aw * bz; - out[3] = aw * bw - az * bz; - return out; -}; - -/** - * Calculates the W component of a quat from the X, Y, and Z components. - * Assumes that quaternion is 1 unit in length. - * Any existing W component will be ignored. - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate W component of - * @returns {quat} out - */ -quat.calculateW = function (out, a) { - var x = a[0], y = a[1], z = a[2]; - - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)); - return out; -}; - -/** - * Calculates the dot product of two quat's - * - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {Number} dot product of a and b - * @function - */ -quat.dot = vec4.dot; - -/** - * Performs a linear interpolation between two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {quat} out - * @function - */ -quat.lerp = vec4.lerp; - -/** - * Performs a spherical linear interpolation between two quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {quat} out - */ -quat.slerp = function (out, a, b, t) { - // benchmarks: - // http://jsperf.com/quaternion-slerp-implementations - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bx = b[0], by = b[1], bz = b[2], bw = b[3]; - - var omega, cosom, sinom, scale0, scale1; - - // calc cosine - cosom = ax * bx + ay * by + az * bz + aw * bw; - // adjust signs (if necessary) - if ( cosom < 0.0 ) { - cosom = -cosom; - bx = - bx; - by = - by; - bz = - bz; - bw = - bw; - } - // calculate coefficients - if ( (1.0 - cosom) > 0.000001 ) { - // standard case (slerp) - omega = Math.acos(cosom); - sinom = Math.sin(omega); - scale0 = Math.sin((1.0 - t) * omega) / sinom; - scale1 = Math.sin(t * omega) / sinom; - } else { - // "from" and "to" quaternions are very close - // ... so we can do a linear interpolation - scale0 = 1.0 - t; - scale1 = t; - } - // calculate final values - out[0] = scale0 * ax + scale1 * bx; - out[1] = scale0 * ay + scale1 * by; - out[2] = scale0 * az + scale1 * bz; - out[3] = scale0 * aw + scale1 * bw; - - return out; -}; - -/** - * Calculates the inverse of a quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate inverse of - * @returns {quat} out - */ -quat.invert = function(out, a) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - dot = a0*a0 + a1*a1 + a2*a2 + a3*a3, - invDot = dot ? 1.0/dot : 0; - - // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0 - - out[0] = -a0*invDot; - out[1] = -a1*invDot; - out[2] = -a2*invDot; - out[3] = a3*invDot; - return out; -}; - -/** - * Calculates the conjugate of a quat - * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result. - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate conjugate of - * @returns {quat} out - */ -quat.conjugate = function (out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Calculates the length of a quat - * - * @param {quat} a vector to calculate length of - * @returns {Number} length of a - * @function - */ -quat.length = vec4.length; - -/** - * Alias for {@link quat.length} - * @function - */ -quat.len = quat.length; - -/** - * Calculates the squared length of a quat - * - * @param {quat} a vector to calculate squared length of - * @returns {Number} squared length of a - * @function - */ -quat.squaredLength = vec4.squaredLength; - -/** - * Alias for {@link quat.squaredLength} - * @function - */ -quat.sqrLen = quat.squaredLength; - -/** - * Normalize a quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a quaternion to normalize - * @returns {quat} out - * @function - */ -quat.normalize = vec4.normalize; - -/** - * Creates a quaternion from the given 3x3 rotation matrix. - * - * NOTE: The resultant quaternion is not normalized, so you should be sure - * to renormalize the quaternion yourself where necessary. - * - * @param {quat} out the receiving quaternion - * @param {mat3} m rotation matrix - * @returns {quat} out - * @function - */ -quat.fromMat3 = function(out, m) { - // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes - // article "Quaternion Calculus and Fast Animation". - var fTrace = m[0] + m[4] + m[8]; - var fRoot; - - if ( fTrace > 0.0 ) { - // |w| > 1/2, may as well choose w > 1/2 - fRoot = Math.sqrt(fTrace + 1.0); // 2w - out[3] = 0.5 * fRoot; - fRoot = 0.5/fRoot; // 1/(4w) - out[0] = (m[5]-m[7])*fRoot; - out[1] = (m[6]-m[2])*fRoot; - out[2] = (m[1]-m[3])*fRoot; - } else { - // |w| <= 1/2 - var i = 0; - if ( m[4] > m[0] ) - i = 1; - if ( m[8] > m[i*3+i] ) - i = 2; - var j = (i+1)%3; - var k = (i+2)%3; - - fRoot = Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k] + 1.0); - out[i] = 0.5 * fRoot; - fRoot = 0.5 / fRoot; - out[3] = (m[j*3+k] - m[k*3+j]) * fRoot; - out[j] = (m[j*3+i] + m[i*3+j]) * fRoot; - out[k] = (m[k*3+i] + m[i*3+k]) * fRoot; - } - - return out; -}; - -/** - * Returns a string representation of a quatenion - * - * @param {quat} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -quat.str = function (a) { - return 'quat(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.quat = quat; -} -; - - - - - - - - - - - - - - })(shim.exports); -})(this); - -/****************************************************************************** - * Creature Runtimes License - * - * Copyright (c) 2015, Kestrel Moon Studios - * All rights reserved. - * - * Preamble: This Agreement governs the relationship between Licensee and Kestrel Moon Studios(Hereinafter: Licensor). - * This Agreement sets the terms, rights, restrictions and obligations on using [Creature Runtimes] (hereinafter: The Software) created and owned by Licensor, - * as detailed herein: - * License Grant: Licensor hereby grants Licensee a Sublicensable, Non-assignable & non-transferable, Commercial, Royalty free, - * Including the rights to create but not distribute derivative works, Non-exclusive license, all with accordance with the terms set forth and - * other legal restrictions set forth in 3rd party software used while running Software. - * Limited: Licensee may use Software for the purpose of: - * Running Software on Licensee’s Website[s] and Server[s]; - * Allowing 3rd Parties to run Software on Licensee’s Website[s] and Server[s]; - * Publishing Software’s output to Licensee and 3rd Parties; - * Distribute verbatim copies of Software’s output (including compiled binaries); - * Modify Software to suit Licensee’s needs and specifications. - * Binary Restricted: Licensee may sublicense Software as a part of a larger work containing more than Software, - * distributed solely in Object or Binary form under a personal, non-sublicensable, limited license. Such redistribution shall be limited to unlimited codebases. - * Non Assignable & Non-Transferable: Licensee may not assign or transfer his rights and duties under this license. - * Commercial, Royalty Free: Licensee may use Software for any purpose, including paid-services, without any royalties - * Including the Right to Create Derivative Works: Licensee may create derivative works based on Software, - * including amending Software’s source code, modifying it, integrating it into a larger work or removing portions of Software, - * as long as no distribution of the derivative works is made - * - * THE RUNTIMES IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE RUNTIMES OR THE USE OR OTHER DEALINGS IN THE - * RUNTIMES. - *****************************************************************************/ - - -// dualQuat - -var Q_X = 0; -var Q_Y = 1; -var Q_Z = 2; -var Q_W = 3; - -function dualQuat() -{ - this.real = quat.create(); - this.real[Q_W] = 0; - - this.imaginary = quat.create(); - this.imaginary[Q_W] = 0; - - this.tmpQ1 = quat.create(); -}; - -dualQuat.prototype.reset = function() -{ - quat.identity(this.real); - this.real[Q_W] = 0; - quat.identity(this.imaginary); - this.imaginary[Q_W] = 0; - quat.identity(this.tmpQ1); -}; - -dualQuat.prototype.createFromData = function(q0, t) -{ - this.real = q0; - this.imaginary = quat.create(); - this.imaginary[Q_W] = -0.5 * ( t[Q_X] * q0[Q_X] + t[Q_Y] * q0[Q_Y] + t[Q_Z] * q0[Q_Z]); - this.imaginary[Q_X] = 0.5 * ( t[Q_X] * q0[Q_W] + t[Q_Y] * q0[Q_Z] - t[Q_Z] * q0[Q_Y]); - this.imaginary[Q_Y] = 0.5 * (-t[Q_X] * q0[Q_Z] + t[Q_Y] * q0[Q_W] + t[Q_Z] * q0[Q_X]); - this.imaginary[Q_Z] = 0.5 * ( t[Q_X] * q0[Q_Y] - t[Q_Y] * q0[Q_X] + t[Q_Z] * q0[Q_W]); - -}; - -dualQuat.prototype.add = function(quat_in, real_factor, imaginary_factor) -{ - //real = real.add((quat_in.real.cpy().mul(real_factor))); - //var tmpQ = quat.clone(quat_in.real); - quat.copy(this.tmpQ1, quat_in.real); - - quat.scale(this.tmpQ1, this.tmpQ1, real_factor); - quat.add(this.real, this.tmpQ1, this.real); - - //imaginary = imaginary.add(quat_in.imaginary.cpy().mul(imaginary_factor)); - //tmpQ = quat.clone(quat_in.imaginary); - quat.copy(this.tmpQ1, quat_in.imaginary); - quat.scale(this.tmpQ1, this.tmpQ1, imaginary_factor); - quat.add(this.imaginary, this.tmpQ1, this.imaginary); -}; - -dualQuat.prototype.normalize = function() -{ - var norm = quat.length(this.real); - - this.real = quat.scale(this.real, this.real, 1.0 / norm); - this.imaginary = quat.scale(this.imaginary, this.imaginary, 1.0 / norm); -}; - -var v0 = vec3.create(); -var ve = vec3.create(); -var trans = vec3.create(); -var tmpVec1 = vec3.create(); -var tmpVec2 = vec3.create(); -var tmpVec0 = vec3.create(); -var aVec = vec3.create(); -var rot = vec3.create(); - -dualQuat.prototype.transform = function(p) -{ - v0[Q_X] = this.real[Q_X]; v0[Q_Y] = this.real[Q_Y]; v0[Q_Z] = this.real[Q_Z]; - - ve[Q_X] = this.imaginary[Q_X]; ve[Q_Y] = this.imaginary[Q_Y]; ve[Q_Z] = this.imaginary[Q_Z]; - - //trans = (ve*real.w - v0*imaginary.w + Vector3.Cross(v0, ve)) * 2.0f; - -// var tmpVec1 = v0.cpy().scl((float)imaginary.w); - tmpVec1 = vec3.scale(tmpVec1, v0, this.imaginary[Q_W]); - -// var tmpVec2 = v0.cpy().crs(ve); - tmpVec2 = vec3.cross(tmpVec2, v0, ve); - - //var tmpVec0 = ve.cpy().scl(real.w); - //trans = tmpVec0.sub(tmpVec1).add(tmpVec2); - //trans.scl(2.0f); - - tmpVec0 = vec3.scale(tmpVec0, ve, this.real[Q_W]); - - aVec = vec3.subtract(aVec, tmpVec0, tmpVec1); - trans = vec3.add(trans, aVec, tmpVec2); - trans = vec3.scale(trans, trans, 2.0); - - //var rot = real.transform(p.cpy()); - rot = vec3.transformQuat(rot, p, this.real); - - //return rot.add(trans); - rot = vec3.add(rot, rot, trans); - - return rot; -}; - -// Utils -var Utils = {}; - -Utils.setAxisMatrix = function(xAxis, yAxis, zAxis) -{ - var retMat = mat4.create(); - - var M00 = 0; - var M01 = 4; - var M02 = 8; - var M03 = 12; - var M10 = 1; - var M11 = 5; - var M12 = 9; - var M13 = 13; - var M20 = 2; - var M21 = 6; - var M22 = 10; - var M23 = 14; - var M30 = 3; - var M31 = 7; - var M32 = 11; - var M33 = 15; - - retMat[M00] = xAxis[Q_X]; - retMat[M01] = xAxis[Q_Y]; - retMat[M02] = xAxis[Q_Z]; - retMat[M10] = yAxis[Q_X]; - retMat[M11] = yAxis[Q_Y]; - retMat[M12] = yAxis[Q_Z]; - retMat[M20] = zAxis[Q_X]; - retMat[M21] = zAxis[Q_Y]; - retMat[M22] = zAxis[Q_Z]; - retMat[M03] = 0; - retMat[M13] = 0; - retMat[M23] = 0; - retMat[M30] = 0; - retMat[M31] = 0; - retMat[M32] = 0; - retMat[M33] = 1; - - retMat = mat4.transpose(retMat, retMat); - - return retMat; -}; - -Utils.matrixToQuat = function(mat_in) -{ - var retQuat = quat.create(); - var te = mat_in, - - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], - - trace = m11 + m22 + m33, - s; - - if ( trace > 0 ) { - - s = 0.5 / Math.sqrt( trace + 1.0 ); - - retQuat[Q_W] = 0.25 / s; - retQuat[Q_X] = ( m32 - m23 ) * s; - retQuat[Q_Y] = ( m13 - m31 ) * s; - retQuat[Q_Z] = ( m21 - m12 ) * s; - - } else if ( m11 > m22 && m11 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); - - retQuat[Q_W] = ( m32 - m23 ) / s; - retQuat[Q_X] = 0.25 * s; - retQuat[Q_Y] = ( m12 + m21 ) / s; - retQuat[Q_Z] = ( m13 + m31 ) / s; - - } else if ( m22 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); - - retQuat[Q_W] = ( m13 - m31 ) / s; - retQuat[Q_X] = ( m12 + m21 ) / s; - retQuat[Q_Y] = 0.25 * s; - retQuat[Q_Z] = ( m23 + m32 ) / s; - - } else { - - s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); - - retQuat[Q_W] = ( m21 - m12 ) / s; - retQuat[Q_X] = ( m13 + m31 ) / s; - retQuat[Q_Y] = ( m23 + m32 ) / s; - retQuat[Q_Z] = 0.25 * s; - - } - - return retQuat; -}; - -Utils.rotateVec_90 = function(vec_in) -{ - var ret_vec = vec3.fromValues(-vec_in[Q_Y], vec_in[Q_X], vec_in[Q_Z]); - - return ret_vec; -}; - -Utils.calcRotateMat = function(vec_in) -{ - var dir = vec3.clone(vec_in); - dir = vec3.normalize(dir, dir); - - var pep_dir = Utils.rotateVec_90(dir); - - var cur_tangent = vec3.fromValues(dir[Q_X], dir[Q_Y], 0); - var cur_normal = vec3.fromValues(pep_dir[Q_X], pep_dir[Q_Y], 0); - var cur_binormal = vec3.fromValues(0, 0, 1); - - var cur_rotate = mat4.create(); - cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); - - return cur_rotate; -}; - -Utils.getMatTranslate = function(mat_in) -{ - var ret_pos = vec3.create(); - ret_pos[Q_X] = mat_in[12]; - ret_pos[Q_Y] = mat_in[13]; - ret_pos[Q_Z] = mat_in[14]; - - return ret_pos; -}; - -Utils.addMat = function(mat1, mat2) -{ - var retMat = mat4.create(); - for(var i = 0; i < 16; i++) - { - retMat[i] = mat1[i] + mat2[i]; - } - - return retMat; -}; - -Utils.mulMat = function(mat_in, factor) -{ - var retMat = mat4.create(); - for(var i = 0; i < 16; i++) - { - retMat[i] = mat_in[i] * factor; - } - - return retMat; -}; - -Utils.clamp = function(num, min, max) { - return num < min ? min : (num > max ? max : num); -}; - - var newVec1 = vec3.create(); - var newVec2 = vec3.create(); - -Utils.vecInterp = function(vec1, vec2, ratio) -{ - newVec1 = vec3.scale(newVec1, vec1, 1.0 - ratio); - newVec2 = vec3.scale(newVec2, vec2, ratio); - - var retVec = vec3.create(); - retVec = vec3.add(retVec, newVec1, newVec2); - - return retVec; -}; - -Utils.vec2Interp = function(vec_1, vec_2, ratio) -{ - var newVec1 = vec2.create(); - var newVec2 = vec2.create(); - - newVec1 = vec2.scale(newVec1, vec_1, 1.0 - ratio); - newVec2 = vec2.scale(newVec2, vec_2, ratio); - - var retVec = vec2.create(); - retVec = vec2.add(retVec, newVec1, newVec2); - - return retVec; -}; - -// MeshBone -function MeshBone(key_in, start_pt_in, end_pt_in, parent_transform) -{ - this.key = key_in; - this.world_rest_angle = 0; - this.rest_parent_mat = mat4.create(); - this.rest_parent_inv_mat = mat4.create(); - this.rest_world_mat = mat4.create(); - this.rest_world_inv_mat = mat4.create(); - this.bind_world_mat = mat4.create(); - this.bind_world_inv_mat = mat4.create(); - this.parent_world_mat = mat4.create(); - this.parent_world_inv_mat = mat4.create(); - this.local_rest_start_pt = null; - this.local_rest_end_pt = null; - - this.setRestParentMat(parent_transform, null); - this.setLocalRestStartPt(start_pt_in); - this.setLocalRestEndPt(end_pt_in); - this.setParentWorldInvMat(mat4.create()); - this.setParentWorldMat(mat4.create()); - - this.local_binormal_dir = vec3.fromValues(0.0,0.0,1.0); - this.tag_id = 0; - - this.children = []; -}; - -MeshBone.prototype.setRestParentMat = function(transform_in, inverse_in) -{ - this.rest_parent_mat = transform_in; - if(inverse_in == null) { - this.rest_parent_inv_mat = mat4.clone(this.rest_parent_mat); - //rest_parent_inv_mat.inv(); - mat4.invert(this.rest_parent_inv_mat, this.rest_parent_inv_mat); - } - else { - this.rest_parent_inv_mat = mat4.clone(inverse_in); - } -}; - -MeshBone.prototype.setParentWorldMat = function(transform_in) -{ - this.parent_world_mat = transform_in; -}; - -MeshBone.prototype.setParentWorldInvMat = function(transform_in) -{ - this.parent_world_inv_mat = transform_in; -}; - -MeshBone.prototype.getLocalRestStartPt = function() -{ - return this.local_rest_start_pt; -}; - -MeshBone.prototype.getLocalRestEndPt = function() -{ - return this.local_rest_end_pt; -}; - -MeshBone.prototype.setLocalRestStartPt = function(world_pt_in) -{ - //local_rest_start_pt = Vector3.Transform(world_pt_in, rest_parent_inv_mat); - //this.local_rest_start_pt = world_pt_in.cpy().traMul(rest_parent_inv_mat); - this.local_rest_start_pt = vec3.create(); - this.local_rest_start_pt = vec3.transformMat4(this.local_rest_start_pt, world_pt_in, this.rest_parent_inv_mat); - this.calcRestData(); -}; - -MeshBone.prototype.setLocalRestEndPt = function(world_pt_in) -{ - //local_rest_end_pt = Vector3.Transform(world_pt_in, rest_parent_inv_mat); - //this.local_rest_end_pt = world_pt_in.cpy().traMul(rest_parent_inv_mat); - this.local_rest_end_pt = vec3.create(); - this.local_rest_end_pt = vec3.transformMat4(this.local_rest_end_pt, world_pt_in, this.rest_parent_inv_mat); - this.calcRestData(); -}; - -MeshBone.prototype.calcRestData = function() -{ - if(this.local_rest_start_pt == null || this.local_rest_end_pt == null) - { - return; - } - - var calc = this.computeDirs(this.local_rest_start_pt, this.local_rest_end_pt); - - this.local_rest_dir = calc.first; - this.local_rest_normal_dir = calc.second; - - this.computeRestLength(); -}; - -MeshBone.prototype.setWorldStartPt = function(world_pt_in) -{ - this.world_start_pt = world_pt_in; -}; - -MeshBone.prototype.setWorldEndPt = function(world_pt_in) -{ - this.world_end_pt = world_pt_in; -}; - -MeshBone.prototype.fixDQs = function(ref_dq) -{ - // if( Quaternion.Dot(world_dq.real, ref_dq.real) < 0) { - //if( world_dq.real.dot(ref_dq.real) < 0) { - if(quat.dot(this.world_dq.real, ref_dq.real) < 0) { - //this.world_dq.real = world_dq.real.cpy().mul(-1); - this.world_dq.real = quat.scale(this.world_dq.real, this.world_dq.real, -1); - //this.world_dq.imaginary = world_dq.imaginary.cpy().mul(-1); - this.world_dq.imaginary = quat.scale(this.world_dq.imaginary, this.world_dq.imaginary, -1); - } - - for(var i = 0; i < this.children.length; i++) { - var cur_child = this.children[i]; - cur_child.fixDQs(this.world_dq); - } -}; - -MeshBone.prototype.initWorldPts = function() -{ - this.setWorldStartPt(this.getWorldRestStartPt()); - this.setWorldEndPt(this.getWorldRestEndPt()); - - for(var i = 0; i < this.children.length; i++) { - this.children[i].initWorldPts(); - } -}; - -MeshBone.prototype.getWorldRestStartPt = function() -{ - //Vector3 ret_vec = Vector3.Transform(local_rest_start_pt, rest_parent_mat); - var tmp_mat = this.rest_parent_mat; - var ret_vec = vec3.create(); - ret_vec = vec3.transformMat4(ret_vec, this.local_rest_start_pt, tmp_mat); - - return ret_vec; -}; - -MeshBone.prototype.getWorldRestEndPt = function() -{ - // Vector3 ret_vec = Vector3.Transform(local_rest_end_pt, rest_parent_mat); - var tmp_mat = this.rest_parent_mat; - var ret_vec = vec3.create(); - ret_vec = vec3.transformMat4(ret_vec, this.local_rest_end_pt, tmp_mat); - - return ret_vec; -}; - -MeshBone.prototype.getWorldRestAngle = function() -{ - return this.world_rest_angle; -}; - -MeshBone.prototype.getWorldRestPos = function() -{ - return this.world_rest_pos; -}; - -MeshBone.prototype.getWorldStartPt = function() -{ - return this.world_start_pt; -}; - -MeshBone.prototype.getWorldEndPt = function() -{ - return this.world_end_pt; -}; - -MeshBone.prototype.getRestParentMat = function() -{ - return this.rest_parent_mat; -}; - -MeshBone.prototype.getRestWorldMat = function() -{ - return this.rest_world_mat; -}; - -MeshBone.prototype.getWorldDeltaMat = function() -{ - return this.world_delta_mat; -}; - -MeshBone.prototype.getParentWorldMat = function() -{ - return this.parent_world_mat; -}; - -MeshBone.prototype.getParentWorldInvMat = function() -{ - return this.parent_world_inv_mat; -}; - -MeshBone.prototype.getWorldDq = function() -{ - return this.world_dq; -}; - -MeshBone.prototype.computeRestParentTransforms = function() -{ - var cur_tangent = vec3.fromValues(this.local_rest_dir[Q_X], this.local_rest_dir[Q_Y], 0); - var cur_binormal = vec3.fromValues(this.local_binormal_dir[Q_X], this.local_binormal_dir[Q_Y], this.local_binormal_dir[Q_Z]); - var cur_normal = vec3.fromValues(this.local_rest_normal_dir[Q_X], this.local_rest_normal_dir[Q_Y], 0); - - var cur_translate = mat4.create(); - //cur_translate.setTranslation(local_rest_end_pt.x, local_rest_end_pt.y, 0); - mat4.translate(cur_translate, cur_translate, this.local_rest_end_pt); - - var cur_rotate = mat4.create(); - /* - cur_rotate.Right = cur_tangent; - cur_rotate.Up = cur_normal; - cur_rotate.Backward = cur_binormal; - */ - //cur_rotate.set(cur_tangent, cur_normal, cur_binormal, new Vector3(0,0,0)); - cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); - //cur_rotate.tra(); - - //Matrix4 cur_final = cur_translate.cpy().mul(cur_rotate); - var cur_final = mat4.create(); - cur_final = mat4.multiply(cur_final, cur_translate, cur_rotate); - - //rest_world_mat = rest_parent_mat.cpy().mul(cur_final); - this.rest_world_mat = mat4.create(); - this.rest_world_mat = mat4.multiply(this.rest_world_mat, this.rest_parent_mat, cur_final); - - this.rest_world_inv_mat = mat4.clone(this.rest_world_mat); - this.rest_world_inv_mat = mat4.invert(this.rest_world_inv_mat, this.rest_world_inv_mat); - //Matrix4.Invert(ref rest_world_mat, out rest_world_inv_mat); - -// var world_rest_dir = getWorldRestEndPt().cpy().sub( getWorldRestStartPt()); - var world_rest_dir = vec3.clone(this.getWorldRestEndPt()); - world_rest_dir = vec3.subtract(world_rest_dir, world_rest_dir, this.getWorldRestStartPt()); - - world_rest_dir = vec3.normalize(world_rest_dir, world_rest_dir); - this.world_rest_pos = this.getWorldRestStartPt(); - - - var bind_translate = mat4.create(); - //bind_translate.setTranslation(getWorldRestStartPt().x, getWorldRestStartPt().y, 0); - bind_translate = mat4.translate(bind_translate, bind_translate, this.getWorldRestStartPt()); - - var tVec = vec3.create(); - tVec = vec3.sub(tVec, this.getWorldRestEndPt(), this.getWorldRestStartPt()); - var bind_rotate = Utils.calcRotateMat(tVec); - //Matrix4 cur_bind_final = bind_translate.cpy().mul(bind_rotate); - var cur_bind_final = mat4.create(); - cur_bind_final = mat4.multiply(cur_bind_final, bind_translate, bind_rotate); - - this.bind_world_mat = mat4.clone(cur_bind_final); - this.bind_world_inv_mat = mat4.clone(this.bind_world_mat); - this.bind_world_inv_mat = mat4.invert(this.bind_world_inv_mat, this.bind_world_inv_mat); - //Matrix4.Invert(ref bind_world_mat, out bind_world_inv_mat); - - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - cur_bone.setRestParentMat(this.rest_world_mat, this.rest_world_inv_mat); - cur_bone.computeRestParentTransforms(); - } -}; - -MeshBone.prototype.computeParentTransforms = function() -{ - var translate_parent = mat4.create(); - translate_parent = mat4.translate(translate_parent, translate_parent, this.getWorldEndPt()); - - var tVec = vec3.create(); - tVec = vec3.subtract(tVec, this.getWorldEndpt(), this.getWorldStartPt()); - var rotate_parent = Utils.calcRotateMat(tVec); - - var final_transform = mat4.create(); - final_transform = mat4.multiply(final_transform, translate_parent, rotate_parent); - - var final_inv_transform = mat4.clone(final_transform); - //final_inv_transform.inv(); - final_inv_transform = mat4.invert(final_inv_transform, final_inv_transform); - - for(var i = 0; i < children.length; i++) { - var cur_bone = children[i]; - cur_bone.setParentWorldMat(final_transform); - cur_bone.setParentWorldInvMat(final_inv_transform); - cur_bone.computeParentTransforms(); - } -}; - -MeshBone.prototype.computeWorldDeltaTransforms = function() -{ - var calc = this.computeDirs(this.world_start_pt, this.world_end_pt); - var cur_tangent = vec3.fromValues(calc["first"][Q_X], calc["first"][Q_Y], 0); - var cur_normal = vec3.fromValues(calc["second"][Q_X], calc["second"][Q_Y], 0); - var cur_binormal = vec3.fromValues(this.local_binormal_dir[Q_X], this.local_binormal_dir[Q_Y], this.local_binormal_dir[Q_Z]); - - var cur_rotate = mat4.create(); - /* - cur_rotate.Right = cur_tangent; - cur_rotate.Up = cur_normal; - cur_rotate.Backward = cur_binormal; - */ - //cur_rotate.set(cur_tangent, cur_normal, cur_binormal, new Vector3(0,0,0)); - cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); - - //cur_rotate.tra(); - - var cur_translate = mat4.create(); - //cur_translate.setTranslation(world_start_pt.x, world_start_pt.y, 0); - cur_translate = mat4.translate(cur_translate, cur_translate, this.world_start_pt); - - /* - world_delta_mat = (cur_translate * cur_rotate) - * bind_world_inv_mat; - */ - - this.world_delta_mat = mat4.create(); -// world_delta_mat = (cur_translate.cpy().mul(cur_rotate)).mul(bind_world_inv_mat); - this.world_delta_mat = mat4.multiply(this.world_delta_mat, cur_translate, cur_rotate); - this.world_delta_mat = mat4.multiply(this.world_delta_mat, this.world_delta_mat, this.bind_world_inv_mat); - - - // Quaternion cur_quat = XnaGeometry.Quaternion.CreateFromRotationMatrix(world_delta_mat); - //var tmpMat = mat3.create(); - //tmpMat = mat3.fromMat4(tmpMat, this.world_delta_mat); - var cur_quat = Utils.matrixToQuat(this.world_delta_mat); - - - var tmp_pos = Utils.getMatTranslate(this.world_delta_mat); - this.world_dq = new dualQuat(); - this.world_dq.createFromData(cur_quat, tmp_pos); - - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - cur_bone.computeWorldDeltaTransforms(); - } -}; - -MeshBone.prototype.addChild = function(bone_in) -{ - bone_in.setRestParentMat(this.rest_world_mat, this.rest_world_inv_mat); - this.children.push(bone_in); -}; - -MeshBone.prototype.getChildren = function() -{ - return this.children; -}; - -MeshBone.prototype.hasBone = function(bone_in) -{ - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - if(cur_bone == bone_in) { - return true; - } - } - - return false; -}; - -MeshBone.prototype.getChildByKey = function(search_key) -{ - if(this.key === search_key) { - return this; - } - - var ret_data = null; - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - - var result = cur_bone.getChildByKey(search_key); - if(result != null) { - ret_data = result; - break; - } - } - - return ret_data; -}; - -MeshBone.prototype.getKey = function() -{ - return this.key; -}; - -MeshBone.prototype.getAllBoneKeys = function() -{ - var ret_data = []; - ret_data.push(this.getKey()); - - for(var i = 0; i < this.children.length; i++) { - var append_data = this.children[i].getAllBoneKeys(); - ret_data = ret_data.concat(append_data); - } - - return ret_data; -}; - -MeshBone.prototype.getAllChildren = function() -{ - var ret_data = []; - ret_data.push(this); - for(var i = 0; i < this.children.length; i++) { - var append_data = this.children[i].getAllChildren(); - ret_data = ret_data.concat(append_data); - } - - return ret_data; -}; - -MeshBone.prototype.getBoneDepth = function(bone_in, depth) -{ - if(bone_in == this) { - return depth; - } - - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - var ret_val = cur_bone.getBoneDepth(bone_in, depth + 1); - if(ret_val != -1) { - return ret_val; - } - } - - return -1; -}; - -MeshBone.prototype.isLeaf = function() -{ - return this.children.length == 0; -}; - -MeshBone.prototype.deleteChildren = function() -{ - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - cur_bone.deleteChildren(); - } - - this.children = []; -}; - -MeshBone.prototype.setTagId = function(value_in) -{ - this.tag_id = value_in; -}; - -MeshBone.prototype.getTagId = function() -{ - return this.tag_id; -}; - -MeshBone.prototype.computeDirs = function(start_pt, end_pt) -{ - var tangent = vec3.create(); - tangent = vec3.subtract(tangent, end_pt, start_pt); - tangent = vec3.normalize(tangent, tangent); - - var normal = Utils.rotateVec_90(tangent); - - var retData = {}; - retData["first"] = tangent; - retData["second"] = normal; - - return retData; -}; - -MeshBone.prototype.computeRestLength = function() -{ - var tmp_dir = vec3.create(); - //Vector3 tmp_dir = local_rest_end_pt.cpy().sub(local_rest_start_pt); - tmp_dir = vec3.subtract(tmp_dir, this.local_rest_end_pt, this.local_rest_start_pt); - - this.rest_length = vec3.length(tmp_dir); -}; - -// MeshRenderRegion -function MeshRenderRegion(indices_in, rest_pts_in, uvs_in, start_pt_index_in, end_pt_index_in, - start_index_in, end_index_in) -{ - this.store_indices = indices_in; - this.store_rest_pts = rest_pts_in; - this.store_uvs = uvs_in; - - this.use_local_displacements = false; - this.use_post_displacements = false; - this.use_uv_warp = false; - this.uv_warp_local_offset = vec2.fromValues(0,0); - this.uv_warp_global_offset = vec2.fromValues(0,0); - this.uv_warp_scale = vec2.fromValues(1,1); - this.start_pt_index = start_pt_index_in; - this.end_pt_index = end_pt_index_in; - this.start_index = start_index_in; - this.end_index = end_index_in; - this.main_bone = null; - this.local_displacements = []; - this.post_displacements = []; - this.uv_warp_ref_uvs = []; - this.normal_weight_map = {}; - this.fast_normal_weight_map = []; - this.fast_bones_map = []; - this.relevant_bones_indices = []; - this.use_dq = true; - this.tag_id = -1; - - this.initUvWarp(); -}; - -MeshRenderRegion.prototype.getIndicesIndex = function() -{ - // return store_indices + (start_index); - return this.start_index; -}; - -MeshRenderRegion.prototype.getRestPtsIndex = function() -{ - // return store_rest_pts + (3 * start_pt_index); - return 3 * this.start_pt_index; -}; - -MeshRenderRegion.prototype.getUVsIndex = function() -{ - // return store_uvs + (2 * start_pt_index); - return 2 * this.start_pt_index; -}; - -MeshRenderRegion.prototype.getNumPts = function() -{ - return this.end_pt_index - this.start_pt_index + 1; -}; - -MeshRenderRegion.prototype.getStartPtIndex = function() -{ - return this.start_pt_index; -}; - -MeshRenderRegion.prototype.getEndPtIndex = function() -{ - return this.end_pt_index; -}; - -MeshRenderRegion.prototype.getNumIndices = function() -{ - return this.end_index - this.start_index + 1; -}; - -MeshRenderRegion.prototype.getStartIndex = function() -{ - return this.start_index; -}; - -MeshRenderRegion.prototype.getEndIndex = function() -{ - return this.end_index; -}; - -var accum_dq = new dualQuat(); -var accum_mat = mat4.create(); -var final_pt = vec3.create(); -var tmp1 = vec3.create(); -var tmp2 = vec3.create(); - -MeshRenderRegion.prototype.poseFinalPts = function(output_pts, output_start_index, bones_map) -{ - var read_pt_index = this.getRestPtsIndex(); - var write_pt_index = output_start_index; - - // point posing - for(var i = 0; i < 16; i++) - { - accum_mat[i] = 0.0; - } - - var boneKeys = Object.keys(bones_map); - var boneKeyLength = boneKeys.length; - - for(var i = 0, l = this.getNumPts(); i < l; i++) { - var cur_rest_pt = - vec3.set(tmp1, this.store_rest_pts[0 + read_pt_index], - this.store_rest_pts[1 + read_pt_index], - this.store_rest_pts[2 + read_pt_index]); - // vec3.fromValues(this.store_rest_pts[0 + read_pt_index], - // this.store_rest_pts[1 + read_pt_index], - // this.store_rest_pts[2 + read_pt_index]); - - if(this.use_local_displacements == true) { - cur_rest_pt[Q_X] += this.local_displacements[i][Q_X]; - cur_rest_pt[Q_Y] += this.local_displacements[i][Q_Y]; - } - - for(var j = 0; j < 16; j++) - { - accum_mat[j] = 0.0; - } - // reuse - // var accum_dq = new dualQuat(); - accum_dq.reset(); - - var curBoneIndices = this.relevant_bones_indices[i]; - var relevantIndicesLength = curBoneIndices.length; - for (var j = 0; j < relevantIndicesLength; j++) - { - var idx_lookup = curBoneIndices[j]; - var cur_bone = this.fast_bones_map[idx_lookup]; - var cur_weight_val = this.fast_normal_weight_map[idx_lookup][i]; - var cur_im_weight_val = cur_weight_val; - - var world_dq = cur_bone.getWorldDq(); - accum_dq.add(world_dq, cur_weight_val, cur_im_weight_val); - } - - accum_dq.normalize(); - var tmp_pt = vec3.set(tmp2, cur_rest_pt[Q_X], cur_rest_pt[Q_Y], cur_rest_pt[Q_Z]); - // var tmp_pt = vec3.fromValues(cur_rest_pt[Q_X], cur_rest_pt[Q_Y], cur_rest_pt[Q_Z]); - final_pt = accum_dq.transform(tmp_pt); - - // debug start - - // debug end - - if(this.use_post_displacements == true) { - final_pt[Q_X] += this.post_displacements[i][Q_X]; - final_pt[Q_Y] += this.post_displacements[i][Q_Y]; - } - - output_pts[0 + write_pt_index] = final_pt[Q_X]; - output_pts[1 + write_pt_index] = final_pt[Q_Y]; - output_pts[2 + write_pt_index] = final_pt[Q_Z]; - - - - read_pt_index += 3; - write_pt_index += 3; - } - - // uv warping - if(this.use_uv_warp == true) { - this.runUvWarp(); - } -}; - -MeshRenderRegion.prototype.setMainBoneKey = function(key_in) -{ - this.main_bone_key = key_in; -}; - -MeshRenderRegion.prototype.determineMainBone = function(root_bone_in) -{ - this.main_bone = root_bone_in.getChildByKey(this.main_bone_key); -}; - -MeshRenderRegion.prototype.setUseDq = function(flag_in) -{ - this.use_dq = flag_in; -}; - -MeshRenderRegion.prototype.setName = function(name_in) -{ - this.name = name_in; -}; - -MeshRenderRegion.prototype.getName = function() -{ - return this.name; -}; - -MeshRenderRegion.prototype.setUseLocalDisplacements = function(flag_in) -{ - this.use_local_displacements = flag_in; - if((this.local_displacements.length != this.getNumPts()) - && this.use_local_displacements) - { - this.local_displacements = []; - for(var i = 0; i < this.getNumPts(); i++) { - this.local_displacements.push (vec2.create()); - } - } -}; - -MeshRenderRegion.prototype. getUseLocalDisplacements = function() -{ - return this.use_local_displacements; -}; - -MeshRenderRegion.prototype.setUsePostDisplacements = function(flag_in) -{ - this.use_post_displacements = flag_in; - if((this.post_displacements.length != this.getNumPts()) - && this.use_post_displacements) - { - this.post_displacements = []; - for(var i = 0; i < this.getNumPts(); i++) { - this.post_displacements.push(vec2.create()); - } - } -}; - -MeshRenderRegion.prototype.getUsePostDisplacements = function() -{ - return this.use_post_displacements; -}; - -MeshRenderRegion.prototype.getRestLocalPt = function(index_in) -{ - var read_pt_index = this.getRestPtsIndex() + (3 * index_in); - var return_pt = vec2.fromValues(this.store_rest_pts[0 + read_pt_index], - this.store_rest_pts[1 + read_pt_index]); - return return_pt; -}; - -MeshRenderRegion.prototype.getLocalIndex = function(index_in) -{ - var read_index = this.getIndicesIndex() + index_in; - return this.store_indices[read_index]; -}; - -MeshRenderRegion.prototype.clearLocalDisplacements = function() -{ - for(var i = 0; i < this.local_displacements.length; i++) { - this.local_displacements[i] = vec2.create(); - } -}; - -MeshRenderRegion.prototype.clearPostDisplacements = function() -{ - for(var i = 0; i < this.post_displacements.length; i++) { - this.post_displacements[i] = vec2.create(); - } -}; - -MeshRenderRegion.prototype.setUseUvWarp = function(flag_in) -{ - this.use_uv_warp = flag_in; - if(this.use_uv_warp == false) { - this.restoreRefUv(); - } -}; - -MeshRenderRegion.prototype. getUseUvWarp = function() -{ - return this.use_uv_warp; -}; - -MeshRenderRegion.prototype.setUvWarpLocalOffset = function(vec_in) -{ - this.uv_warp_local_offset = vec_in; -}; - -MeshRenderRegion.prototype.setUvWarpGlobalOffset = function(vec_in) -{ - this.uv_warp_global_offset = vec_in; -}; - -MeshRenderRegion.prototype.setUvWarpScale = function(vec_in) -{ - this.uv_warp_scale = vec_in; -}; - -MeshRenderRegion.prototype. getUvWarpLocalOffset = function() -{ - return this.uv_warp_local_offset; -}; - -MeshRenderRegion.prototype. getUvWarpGlobalOffset = function() -{ - return this.uv_warp_global_offset; -}; - -MeshRenderRegion.prototype. getUvWarpScale = function() -{ - return this.uv_warp_scale; -}; - -MeshRenderRegion.prototype.runUvWarp = function() -{ - var cur_uvs_index = this.getUVsIndex(); - for(var i = 0; i < this.uv_warp_ref_uvs.length; i++) { - var set_uv = vec2.clone(this.uv_warp_ref_uvs[i]); - - - set_uv = vec2.subtract(set_uv, set_uv, this.uv_warp_local_offset); - set_uv[Q_X] *= this.uv_warp_scale[Q_X]; - set_uv[Q_Y] *= this.uv_warp_scale[Q_Y]; - set_uv = vec2.add(set_uv, set_uv, this.uv_warp_global_offset); - - - /* - set_uv.sub(uv_warp_local_offset); - set_uv.scl(uv_warp_scale); - set_uv.add(uv_warp_global_offset); - */ - - - this.store_uvs[0 + cur_uvs_index] = set_uv[Q_X]; - this.store_uvs[1 + cur_uvs_index] = set_uv[Q_Y]; - - - cur_uvs_index += 2; - } -}; - -MeshRenderRegion.prototype.restoreRefUv = function() -{ - var cur_uvs_index = this.getUVsIndex(); - for(var i = 0; i < this.uv_warp_ref_uvs.length; i++) { - var set_uv = this.uv_warp_ref_uvs[i]; - - this.store_uvs[0 + cur_uvs_index] = set_uv[Q_X]; - this.store_uvs[1 + cur_uvs_index] = set_uv[Q_Y]; - - cur_uvs_index += 2; - } -}; - -MeshRenderRegion.prototype.getTagId = function() -{ - return this.tag_id; -}; - -MeshRenderRegion.prototype.setTagId = function(value_in) -{ - this.tag_id = value_in; -}; - -MeshRenderRegion.prototype.initFastNormalWeightMap = function(bones_map) -{ - this.relevant_bones_indices = []; - - // fast normal weight map lookup, avoids hash lookups - for (var cur_key in bones_map) { - var values = this.normal_weight_map[cur_key]; - this.fast_normal_weight_map.push(values); - } - - // relevant bone indices - var cutoff_val = 0.05; - for(var i = 0; i < this.getNumPts(); i++) { - var curIndicesArray = []; - for (var j = 0; j < this.fast_normal_weight_map.length; j++) - { - var cur_val = this.fast_normal_weight_map[j][i]; - if(cur_val > cutoff_val) - { - curIndicesArray.push(j); - } - } - - this.relevant_bones_indices.push(curIndicesArray); - } - - // fast bone map lookup - for (var cur_key in bones_map) { - var cur_bone = bones_map[cur_key]; - this.fast_bones_map.push(cur_bone); - } -}; - -MeshRenderRegion.prototype.initUvWarp = function() -{ - var cur_uvs_index = this.getUVsIndex(); - // uv_warp_ref_uvs = new java.util.Vector(new Vector2[getNumPts()]); - this.uv_warp_ref_uvs = [];; - - for(var i = 0; i < this.getNumPts(); i++) { - this.uv_warp_ref_uvs.push(vec2.create()); - - this.uv_warp_ref_uvs[i] = vec2.fromValues(this.store_uvs[cur_uvs_index], - this.store_uvs[cur_uvs_index + 1]); - - - - cur_uvs_index += 2; - } -}; - - -// MeshRenderBoneComposition -function MeshRenderBoneComposition() -{ - this.root_bone = null; - this.bones_map = {}; - this.regions = []; - this.regions_map = {}; -}; - -MeshRenderBoneComposition.prototype.addRegion = function(region_in) -{ - this.regions.push(region_in); -}; - -MeshRenderBoneComposition.prototype.setRootBone = function(root_bone_in) -{ - this.root_bone = root_bone_in; -}; - -MeshRenderBoneComposition.prototype.getRootBone = function() -{ - return this.root_bone; -}; - -MeshRenderBoneComposition.prototype.initBoneMap = function() -{ - this.bones_map = MeshRenderBoneComposition.genBoneMap(this.root_bone); -}; - -MeshRenderBoneComposition.prototype.initRegionsMap = function() -{ - this.regions_map = {}; - for(var i = 0; i < this.regions.length; i++) { - cur_key = this.regions[i].getName(); - this.regions_map[cur_key] = this.regions[i]; - } -}; - -MeshRenderBoneComposition.genBoneMap = function(input_bone) -{ - var ret_map = {}; - var all_keys = input_bone.getAllBoneKeys(); - for(var i = 0; i < all_keys.length; i++) { - var cur_key = all_keys[i]; - ret_map[cur_key] = input_bone.getChildByKey(cur_key); - } - - return ret_map; -}; - -MeshRenderBoneComposition.prototype.getBonesMap = function() -{ - return this.bones_map; -}; - -MeshRenderBoneComposition.prototype.getRegionsMap = function() -{ - return this.regions_map; -}; - -MeshRenderBoneComposition.prototype.getRegions = function() -{ - return this.regions; -}; - -MeshRenderBoneComposition.prototype.getRegionWithId = function(id_in) -{ - for(var i = 0; i < this.regions.length; i++) { - var cur_region = this.regions[i]; - if(cur_region.getTagId() == id_in) { - return cur_region; - } - } - - return null; -}; - -MeshRenderBoneComposition.prototype.resetToWorldRestPts = function() -{ - this.getRootBone().initWorldPts(); -}; - -MeshRenderBoneComposition.prototype.updateAllTransforms = function(update_parent_xf) -{ - if(update_parent_xf) { - this.getRootBone().computeParentTransforms(); - } - - this.getRootBone().computeWorldDeltaTransforms(); - this.getRootBone().fixDQs(this.getRootBone().getWorldDq()); -}; - -// MeshBoneCache -function MeshBoneCache(key_in) -{ - this.key = key_in; -}; - -MeshBoneCache.prototype.setWorldStartPt = function(pt_in) { - this.world_start_pt = pt_in; -}; - -MeshBoneCache.prototype.setWorldEndPt = function(pt_in) { - this.world_end_pt = pt_in; -}; - -MeshBoneCache.prototype.getWorldStartPt = function() { - return this.world_start_pt; -}; - -MeshBoneCache.prototype.getWorldEndPt = function() { - return this.world_end_pt; -}; - -MeshBoneCache.prototype.getKey = function() { - return this.key; -}; - -// MeshDisplacementCache -function MeshDisplacementCache(key_in) -{ - this.key = key_in; - this.local_displacements = []; - this.post_displacements = []; -}; - -MeshDisplacementCache.prototype.setLocalDisplacements = function(displacements_in) -{ - this.local_displacements = displacements_in; -}; - -MeshDisplacementCache.prototype.setPostDisplacements = function(displacements_in) -{ - this.post_displacements = displacements_in; -}; - -MeshDisplacementCache.prototype.getKey = function() { - return this.key; -}; - -MeshDisplacementCache.prototype.getLocalDisplacements = function() -{ - return this.local_displacements; -}; - -MeshDisplacementCache.prototype.getPostDisplacements = function() -{ - return this.post_displacements; -}; - - -// MeshUVWarpCache -function MeshUVWarpCache(key_in) -{ - this.uv_warp_global_offset = vec2.create(); - this.uv_warp_local_offset = vec2.create(); - this.uv_warp_scale = vec2.fromValues(-1,-1); - this.key = key_in; - this.enabled = false; -}; - -MeshUVWarpCache.prototype.setUvWarpLocalOffset = function(vec_in) -{ - this.uv_warp_local_offset = vec_in; -}; - -MeshUVWarpCache.prototype.setUvWarpGlobalOffset = function(vec_in) -{ - this.uv_warp_global_offset = vec_in; -}; - -MeshUVWarpCache.prototype.setUvWarpScale = function(vec_in) -{ - this.uv_warp_scale = vec_in; -}; - -MeshUVWarpCache.prototype.getUvWarpLocalOffset = function() -{ - return this.uv_warp_local_offset; -}; - -MeshUVWarpCache.prototype.getUvWarpGlobalOffset = function() -{ - return this.uv_warp_global_offset; -}; - -MeshUVWarpCache.prototype.getUvWarpScale = function() -{ - return this.uv_warp_scale; -}; - -MeshUVWarpCache.prototype.getKey = function() { - return this.key; -}; - -MeshUVWarpCache.prototype.setEnabled = function(flag_in) -{ - this.enabled = flag_in; -}; - -MeshUVWarpCache.prototype.getEnabled = function() { - return this.enabled; -}; - -// MeshBoneCacheManager -function MeshBoneCacheManager() -{ - this.is_ready = false; - this.bone_cache_table = null; - this.bone_cache_data_ready = null; - this.bone_cache_table = []; - this.bone_cache_data_ready = []; -}; - -MeshBoneCacheManager.prototype.init = function(start_time_in, end_time_in) -{ - this.start_time = start_time_in; - this.end_time = end_time_in; - - var num_frames = this.end_time - this.start_time + 1; - this.bone_cache_table = []; - - this.bone_cache_data_ready = []; - for(var i = 0; i < num_frames; i++) { - this.bone_cache_table.push([]); - this.bone_cache_data_ready.push(false); - } - - this.is_ready = false; -}; - -MeshBoneCacheManager.prototype.getStartTime = function() -{ - return this.start_time; -}; - -MeshBoneCacheManager.prototype.getEndime = function() -{ - return this.end_time; -}; - -MeshBoneCacheManager.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.bone_cache_table.length) - 1); - - return retval; -}; - -MeshBoneCacheManager.prototype.retrieveValuesAtTime = function(time_in, bone_map) -{ - var base_time = this.getIndexByTime(Math.floor(time_in)); - var end_time = this.getIndexByTime(Math.ceil(time_in)); - - var ratio = (time_in - Math.floor(time_in)); - - if(this.bone_cache_data_ready.length == 0) { - return; - } - - if((this.bone_cache_data_ready[base_time] == false) - || ((this.bone_cache_data_ready[end_time] == false))) - { - return; - } - - var base_cache = this.bone_cache_table[base_time]; - var end_cache = this.bone_cache_table[end_time]; - - for(var i = 0, l = base_cache.length; i < l; i++) { - var base_data = base_cache[i]; - var end_data = end_cache[i]; - var cur_key = base_data.getKey(); - - var final_world_start_pt = Utils.vecInterp(base_data.getWorldStartPt(), end_data.getWorldStartPt(), ratio); - - var final_world_end_pt = Utils.vecInterp(base_data.getWorldEndPt(), end_data.getWorldEndPt(), ratio); - - /* - Vector3 final_world_start_pt = ((1.0f - ratio) * base_data.getWorldStartPt()) + - (ratio * end_data.getWorldStartPt()); - - Vector3 final_world_end_pt = ((1.0f - ratio) * base_data.getWorldEndPt()) + - (ratio * end_data.getWorldEndPt()); - */ - - bone_map[cur_key].setWorldStartPt(final_world_start_pt); - bone_map[cur_key].setWorldEndPt(final_world_end_pt); - } -}; - -MeshBoneCacheManager.prototype.allReady = function() -{ - if(this.is_ready) { - return true; - } - else { - var num_frames = this.end_time - this.start_time + 1; - var ready_cnt = 0; - for(var i = 0; i < this.bone_cache_data_ready.size(); i++) { - if(this.bone_cache_data_ready[i]) { - ready_cnt++; - } - } - - if(ready_cnt == num_frames) { - this.is_ready = true; - } - } - - return this.is_ready; -}; - -MeshBoneCacheManager.prototype.makeAllReady = function() -{ - for(var i = 0; i < this.bone_cache_data_ready.length; i++) { - this.bone_cache_data_ready[i] = true; - } -}; - -// MeshDisplacementCacheManager -function MeshDisplacementCacheManager() -{ - this.is_ready = false; - this.displacement_cache_table = null; - this.displacement_cache_data_ready = null; - this.displacement_cache_table = []; - this.displacement_cache_data_ready = []; -}; - -MeshDisplacementCacheManager.prototype.init = function(start_time_in, end_time_in) -{ - this.start_time = start_time_in; - this.end_time = end_time_in; - - var num_frames = this.end_time - this.start_time + 1; - this.displacement_cache_table = []; - - this.displacement_cache_data_ready = []; - for(var i = 0; i < num_frames; i++) { - this.displacement_cache_table.push([]); - this.displacement_cache_data_ready.push(false); - } - - this.is_ready = false; -}; - -MeshDisplacementCacheManager.prototype.getStartTime = function() -{ - return this.start_time; -}; - -MeshDisplacementCacheManager.prototype.getEndime = function() -{ - return this.end_time; -}; - -MeshDisplacementCacheManager.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.displacement_cache_table.length) - 1); - - return retval; -}; - -MeshDisplacementCacheManager.prototype.retrieveValuesAtTime = function(time_in, regions_map) -{ - var base_time = this.getIndexByTime(Math.floor(time_in)); - var end_time = this.getIndexByTime(Math.ceil(time_in)); - - var ratio = (time_in - Math.floor(time_in)); - - if(this.displacement_cache_data_ready.length == 0) { - return; - } - - if((this.displacement_cache_data_ready[base_time] == false) - || (this.displacement_cache_data_ready[end_time] == false)) - { - return; - } - - var base_cache = this.displacement_cache_table[base_time]; - var end_cache = this.displacement_cache_table[end_time]; - - for(var i = 0; i < base_cache.length; i++) { - var base_data = base_cache[i]; - var end_data = end_cache[i]; - var cur_key = base_data.getKey(); - - var set_region = regions_map[cur_key]; - - if(set_region.getUseLocalDisplacements()) { - var displacements = - set_region.local_displacements; - if((base_data.getLocalDisplacements().length == displacements.length) - && (end_data.getLocalDisplacements().length == displacements.length)) - { - for(var j = 0; j < displacements.length; j++) { - var interp_val = Utils.vec2Interp(base_data.getLocalDisplacements()[j], - end_data.getLocalDisplacements()[j], - ratio); - - /* - Vector2 interp_val = - ((1.0f - ratio) * base_data.getLocalDisplacements().get(j)) + - (ratio * end_data.getLocalDisplacements().get(j)); - */ - - displacements[j] = interp_val; - } - } - else { - for(var j = 0; j < displacements.length; j++) { - displacements[j] = vec2.create(); - } - } - } - - if(set_region.getUsePostDisplacements()) { - var displacements = - set_region.post_displacements; - if((base_data.getPostDisplacements().length == displacements.length) - && (end_data.getPostDisplacements().length == displacements.length)) - { - - for(var j = 0; j < displacements.length; j++) { - var interp_val = Utils.vec2Interp(base_data.getPostDisplacements()[j], - end_data.getPostDisplacements()[j], - ratio); - - /* - Vector2 interp_val = - ((1.0f - ratio) * base_data.getPostDisplacements()[j]) + - (ratio * end_data.getPostDisplacements()[j]); - */ - displacements[j] = interp_val; - } - } - else { - for(var j = 0; j < displacements.length; j++) { - displacements.set[j] = vec2.create(); - } - } - } - } -}; - -MeshDisplacementCacheManager.prototype.allReady = function() -{ - if(this.is_ready) { - return true; - } - else { - var num_frames = this.end_time - this.start_time + 1; - var ready_cnt = 0; - for(var i = 0; i < this.displacement_cache_data_ready.length; i++) { - if(this.displacement_cache_data_ready[i]) { - ready_cnt++; - } - } - - if(ready_cnt == num_frames) { - this.is_ready = true; - } - } - - return this.is_ready; -}; - -MeshDisplacementCacheManager.prototype.makeAllReady = function() -{ - for(var i = 0; i < this.displacement_cache_data_ready.length; i++) { - this.displacement_cache_data_ready[i] = true; - } -}; - -// MeshUVWarpCacheManager -function MeshUVWarpCacheManager() -{ - this.is_ready = false; - this.uv_cache_table = null; - this.uv_cache_data_ready = null; - this.uv_cache_table = []; - this.uv_cache_data_ready = []; -}; - -MeshUVWarpCacheManager.prototype.init = function(start_time_in, end_time_in) -{ - this.start_time = start_time_in; - this.end_time = end_time_in; - - var num_frames = this.end_time - this.start_time + 1; - this.uv_cache_table = []; - - this.uv_cache_data_ready = []; - for(var i = 0; i < num_frames; i++) { - this.uv_cache_table.push([]); - this.uv_cache_data_ready.push(false); - } - - this.is_ready = false; -}; - -MeshUVWarpCacheManager.prototype.getStartTime = function() -{ - return this.start_time; -}; - -MeshUVWarpCacheManager.prototype.getEndime = function() -{ - return this.end_time; -}; - -MeshUVWarpCacheManager.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.uv_cache_table.length) - 1); - - return retval; -}; - -MeshUVWarpCacheManager.prototype.retrieveValuesAtTime = function(time_in, regions_map) -{ - var base_time = this.getIndexByTime(Math.floor(time_in)); - var end_time = this.getIndexByTime(Math.ceil(time_in)); - - var ratio = (time_in - Math.floor(time_in)); - - if(this.uv_cache_data_ready.length == 0) { - return; - } - - if((this.uv_cache_data_ready[base_time] == false) - || (this.uv_cache_data_ready[end_time] == false)) - { - return; - } - - var base_cache = this.uv_cache_table[base_time]; - var end_cache = this.uv_cache_table[end_time]; - - for(var i = 0; i < base_cache.length; i++) { - var base_data = base_cache[i]; - var end_data = end_cache[i]; - var cur_key = base_data.getKey(); - - var set_region = regions_map[cur_key]; - if(set_region.getUseUvWarp()) { - var final_local_offset = base_data.getUvWarpLocalOffset(); - - - var final_global_offset = base_data.getUvWarpGlobalOffset(); - - var final_scale = base_data.getUvWarpScale(); - /* - Vector2 final_local_offset = ((1.0f - ratio) * base_data.getUvWarpLocalOffset()) + - (ratio * end_data.getUvWarpLocalOffset()); - - Vector2 final_global_offset = ((1.0f - ratio) * base_data.getUvWarpGlobalOffset()) + - (ratio * end_data.getUvWarpGlobalOffset()); - - Vector2 final_scale = ((1.0f - ratio) * base_data.getUvWarpScale()) + - (ratio * end_data.getUvWarpScale()); - - */ - - - set_region.setUvWarpLocalOffset(final_local_offset); - set_region.setUvWarpGlobalOffset(final_global_offset); - set_region.setUvWarpScale(final_scale); - } - } -}; - -MeshUVWarpCacheManager.prototype.allReady = function() -{ - if(this.is_ready) { - return true; - } - else { - var num_frames = this.end_time - this.start_time + 1; - var ready_cnt = 0; - for(var i = 0; i < this.uv_cache_data_ready.length; i++) { - if(uv_cache_data_ready[i]) { - ready_cnt++; - } - } - - if(ready_cnt == num_frames) { - this.is_ready = true; - } - } - - return this.is_ready; -}; - -MeshUVWarpCacheManager.prototype.makeAllReady = function() -{ - for(var i = 0; i < this.uv_cache_data_ready.length; i++) { - this.uv_cache_data_ready[i] = true; - } -}; - -// CreatureModuleUtils -var CreatureModuleUtils = {}; - -CreatureModuleUtils.GetAllAnimationNames = function(json_data) -{ - var json_animations = json_data["animation"]; - var keys = []; - for (var name in json_animations) - { - keys.push(name); - } - - return keys; -}; - -CreatureModuleUtils.getFloatArray = function(raw_data) -{ - return raw_data; -}; - -CreatureModuleUtils.getIntArray = function(raw_data) -{ - return raw_data; -}; - - -CreatureModuleUtils.ReadPointsArray2DJSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - var ret_list = []; - var num_points = raw_array.length / 2; - for (var i = 0; i < num_points; i++) - { - var cur_index = i * 2; - ret_list.push( - vec2.fromValues(raw_array[0 + cur_index], raw_array[1 + cur_index])); - } - - return ret_list; -}; - -CreatureModuleUtils.ReadFloatArray3DJSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - - var ret_list = []; - var num_points = raw_array.length / 2; - for (var i = 0; i < num_points; i++) - { - var cur_index = i * 2; - ret_list.push(raw_array[0 + cur_index]); - ret_list.push(raw_array[1 + cur_index]); - ret_list.push(0); - } - - return ret_list; -}; - -CreatureModuleUtils.ReadBoolJSON = function(data, key) -{ - var val = data[key]; - return val; -}; - -CreatureModuleUtils.ReadFloatArrayJSON = function(data, key) -{ - /* - var raw_array = getFloatArray(data.get[key]); - var ret_list = []; - for(var i = 0; i < raw_array.length; i++) - { - ret_list.push(raw_array[i]); - } - - return ret_list; - */ - - return data[key]; -}; - -CreatureModuleUtils.ReadIntArrayJSON = function(data, key) -{ - /* - int[] raw_array = getIntArray (data.get(key)); - java.util.Vector ret_list = new java.util.Vector(); - - for(int i = 0; i < raw_array.length; i++) { - ret_list.add(raw_array[i]); - } - - return ret_list; - */ - return data[key]; -}; - -CreatureModuleUtils.ReadMatrixJSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - var retMat = mat4.create(); - for(var i = 0; i < 16; i++) - { - retMat[i] = raw_array[i]; - } - - return retMat; -}; - -CreatureModuleUtils.ReadVector2JSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - return vec2.fromValues(raw_array[0], raw_array[1]); -}; - - -CreatureModuleUtils.ReadVector3JSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - return vec3.fromValues(raw_array[0], raw_array[1], 0); -}; - -CreatureModuleUtils.CreateBones = function(json_obj, key) { - var root_bone = null; - var base_obj = json_obj[key]; - //var bone_data = new HashMap>>(); - var bone_data = {}; - var child_set = {}; - - // layout bones - for (var cur_name in base_obj) - { - - var cur_node = base_obj[cur_name]; - - var cur_id = cur_node["id"]; //GetJSONNodeFromKey(*cur_node, "id")->value.toNumber(); - var cur_parent_mat = CreatureModuleUtils.ReadMatrixJSON(cur_node, "restParentMat"); - - var cur_local_rest_start_pt = CreatureModuleUtils.ReadVector3JSON(cur_node, "localRestStartPt"); - var cur_local_rest_end_pt = CreatureModuleUtils.ReadVector3JSON(cur_node, "localRestEndPt"); - var cur_children_ids = CreatureModuleUtils.ReadIntArrayJSON(cur_node, "children"); - - var new_bone = new MeshBone(cur_name, - vec3.create(), - vec3.create(), - cur_parent_mat); - new_bone.local_rest_start_pt = cur_local_rest_start_pt; - new_bone.local_rest_end_pt = cur_local_rest_end_pt; - new_bone.calcRestData(); - new_bone.setTagId(cur_id); - - bone_data[cur_id] = {first:new_bone, second:cur_children_ids}; - - for(var i = 0; i < cur_children_ids.length; i++){ - var cur_child_id = cur_children_ids[i]; - child_set[cur_child_id] = cur_child_id; - } - } - - // Find root - for(var cur_id in bone_data) - { - if( (cur_id in child_set) == false) { - // not a child, so is root - var cur_data = bone_data[cur_id]; - root_bone = cur_data.first; - break; - } - } - - // construct hierarchy - for(var cur_id in bone_data) - { - var cur_data = bone_data[cur_id]; - - var cur_bone = cur_data.first; - var children_ids = cur_data.second; - for(var i = 0; i < children_ids.length; i++) - { - var cur_child_id = children_ids[i]; - var child_bone = bone_data[cur_child_id].first; - cur_bone.addChild(child_bone); - } - - } - - - return root_bone; -}; - -CreatureModuleUtils.CreateRegions = function(json_obj, key, indices_in, rest_pts_in, uvs_in) -{ - var ret_regions = []; - var base_obj = json_obj[key]; - - for (var cur_name in base_obj) - { - var cur_node = base_obj[cur_name]; - - var cur_id = cur_node["id"]; //(int)GetJSONNodeFromKey(*cur_node, "id")->value.toNumber(); - var cur_start_pt_index = cur_node["start_pt_index"]; //(int)GetJSONNodeFromKey(*cur_node, "start_pt_index")->value.toNumber(); - var cur_end_pt_index = cur_node["end_pt_index"]; //(int)GetJSONNodeFromKey(*cur_node, "end_pt_index")->value.toNumber(); - var cur_start_index = cur_node["start_index"]; //(int)GetJSONNodeFromKey(*cur_node, "start_index")->value.toNumber(); - var cur_end_index = cur_node["end_index"]; //(int)GetJSONNodeFromKey(*cur_node, "end_index")->value.toNumber(); - - var new_region = new MeshRenderRegion(indices_in, - rest_pts_in, - uvs_in, - cur_start_pt_index, - cur_end_pt_index, - cur_start_index, - cur_end_index); - - new_region.setName(cur_name); - new_region.setTagId(cur_id); - - // Read in weights - var weight_map = - new_region.normal_weight_map; - var weight_obj = cur_node["weights"]; - - for (var w_key in weight_obj) - { - var w_node = weight_obj[w_key]; - var values = CreatureModuleUtils.ReadFloatArrayJSON(weight_obj, w_key); - weight_map[w_key] = values; - } - - ret_regions.push(new_region); - } - - return ret_regions; -}; - -CreatureModuleUtils.GetStartEndTimes = function(json_obj, key) -{ - var start_time = 0; - var end_time = 0; - var first = true; - var base_obj = json_obj[key]; - - for (var cur_val in base_obj) - { - var cur_node = base_obj[cur_val]; - var cur_num = parseInt(cur_val); - if(first) { - start_time = cur_num; - end_time = cur_num; - first = false; - } - else { - if(cur_num > end_time) { - end_time = cur_num; - } - - if(cur_num < start_time) { - start_time = cur_num; - } - } - } - - return {first:start_time, second:end_time}; -}; - -CreatureModuleUtils.FillBoneCache = function(json_obj, key, start_time, end_time, cache_manager) -{ - var base_obj = json_obj[key]; - - cache_manager.init(start_time, end_time); - - for (var cur_time in base_obj) - { - var cur_node = base_obj[cur_time]; - - cache_list = []; - - for (var cur_name in cur_node) - { - var bone_node = cur_node[cur_name]; - - var cur_start_pt = CreatureModuleUtils.ReadVector3JSON(bone_node, "start_pt"); //ReadJSONVec4_2(*bone_node, "start_pt"); - var cur_end_pt = CreatureModuleUtils.ReadVector3JSON(bone_node, "end_pt"); //ReadJSONVec4_2(*bone_node, "end_pt"); - - var cache_data = new MeshBoneCache(cur_name); - cache_data.setWorldStartPt(cur_start_pt); - cache_data.setWorldEndPt(cur_end_pt); - - cache_list.push(cache_data); - } - - var set_index = cache_manager.getIndexByTime(cur_time); - cache_manager.bone_cache_table[set_index] = cache_list; - } - - cache_manager.makeAllReady(); -}; - -CreatureModuleUtils.FillDeformationCache = function(json_obj, key, start_time, end_time, cache_manager) -{ - var base_obj = json_obj[key]; - - cache_manager.init(start_time, end_time); - - for (var cur_time in base_obj) - { - var cur_node = base_obj[cur_time]; - - var cache_list = []; - - for (var cur_name in cur_node) - { - var mesh_node = cur_node[cur_name]; - - var cache_data = new MeshDisplacementCache(cur_name); - - var use_local_displacement = CreatureModuleUtils.ReadBoolJSON(mesh_node, "use_local_displacements"); //GetJSONNodeFromKey(*mesh_node, "use_local_displacements")->value.toBool(); - var use_post_displacement = CreatureModuleUtils.ReadBoolJSON(mesh_node, "use_post_displacements"); //GetJSONNodeFromKey(*mesh_node, "use_post_displacements")->value.toBool(); - - if(use_local_displacement == true) { - var read_pts = CreatureModuleUtils.ReadPointsArray2DJSON(mesh_node, "local_displacements"); //ReadJSONPoints2DVector(*mesh_node, "local_displacements"); - cache_data.setLocalDisplacements(read_pts); - } - - if(use_post_displacement == true) { - var read_pts = CreatureModuleUtils.ReadPointsArray2DJSON(mesh_node, "post_displacements"); //ReadJSONPoints2DVector(*mesh_node, "post_displacements"); - cache_data.setPostDisplacements(read_pts); - } - - cache_list.push(cache_data); - } - - var set_index = cache_manager.getIndexByTime(cur_time); - cache_manager.displacement_cache_table[set_index] = cache_list; - } - - cache_manager.makeAllReady(); -}; - -CreatureModuleUtils.FillUVSwapCache = function(json_obj, key, start_time, end_time, cache_manager) -{ - var base_obj = json_obj[key]; - - cache_manager.init(start_time, end_time); - - for (var cur_time in base_obj) - { - var cur_node = base_obj[cur_time]; - - var cache_list = []; - - for (var cur_name in cur_node) - { - var uv_node = cur_node[cur_name]; - - var cache_data = new MeshUVWarpCache(cur_name); - var use_uv = CreatureModuleUtils.ReadBoolJSON(uv_node, "enabled"); //GetJSONNodeFromKey(*uv_node, "enabled")->value.toBool(); - cache_data.setEnabled(use_uv); - if(use_uv == true) { - var local_offset = CreatureModuleUtils.ReadVector2JSON(uv_node, "local_offset"); //ReadJSONVec2(*uv_node, "local_offset"); - var global_offset = CreatureModuleUtils.ReadVector2JSON(uv_node, "global_offset"); //ReadJSONVec2(*uv_node, "global_offset"); - var scale = CreatureModuleUtils.ReadVector2JSON(uv_node, "scale"); //ReadJSONVec2(*uv_node, "scale"); - cache_data.setUvWarpLocalOffset(local_offset); - cache_data.setUvWarpGlobalOffset(global_offset); - cache_data.setUvWarpScale(scale); - } - - cache_list.push(cache_data); - } - - var set_index = cache_manager.getIndexByTime(cur_time); - cache_manager.uv_cache_table[set_index] = cache_list; - } - - cache_manager.makeAllReady(); -}; - -// Creature -function Creature(load_data) -{ - this.total_num_pts = 0; - this.total_num_indices = 0; - this.global_indices = null; - this.global_pts = null; - this.global_uvs = null; - this.render_pts = null; - this.render_colours = null; - this.render_composition = null; - this.boundary_indices = []; - this.boundary_min = vec2.create(); - this.boundary_max = vec2.create(); - - this.LoadFromData(load_data); -}; - -// Fills entire mesh with (r,g,b,a) colours -Creature.prototype.FillRenderColours = function(r, g, b, a) -{ - for(var i = 0; i < this.total_num_pts; i++) - { - var cur_colour_index = i * 4; - this.render_colours[0 + cur_colour_index] = r; - this.render_colours[1 + cur_colour_index] = g; - this.render_colours[2 + cur_colour_index] = b; - this.render_colours[3 + cur_colour_index] = a; - } -}; - -// Compute boundary indices - -Creature.prototype.ComputeBoundaryIndices = function() -{ - var freq_table = {}; - for(var i = 0; i < this.total_num_pts; i++) - { - freq_table[i] = 0; - } - - var cur_regions = this.render_composition.getRegions(); - for(var i = 0; i < this.global_indices.length; i++) - { - var cur_idx = this.global_indices[i]; - var is_found = false; - for(var j = 0; j < cur_regions.length; j++) - { - var cur_region = cur_regions[j]; - var cur_start_index = cur_region.getStartPtIndex(); - var cur_end_index = cur_region.getEndPtIndex(); - - if(cur_idx >= cur_start_index && cur_idx <= cur_end_index) - { - is_found = true; - break; - } - } - - - if(is_found) - { - freq_table[cur_idx]++; - } - } - - // now find the boundary indices who have <= 5 referenced triangles - this.boundary_indices = []; - for(var i = 0; i < this.total_num_pts; i++) - { - if(freq_table[i] <=5) - { - this.boundary_indices.push(i); - } - } -}; - -// Compute min and max bounds of the animated mesh -Creature.prototype.ComputeBoundaryMinMax = function() -{ - - if(this.boundary_indices.length <= 0) - { - this.ComputeBoundaryIndices(); - } - - - var firstIdx = this.boundary_indices[0] * 3; - var minPt = vec2.fromValues(this.render_pts[firstIdx + 0], this.render_pts[firstIdx + 1]); - var maxPt = vec2.fromValues(minPt[0], minPt[1]); - - - for(var i = 0; i < this.boundary_indices.length; i++) - { - var ref_idx = this.boundary_indices[i] * 3; - var ref_x = this.render_pts[ref_idx]; - var ref_y = this.render_pts[ref_idx + 1]; - - if(minPt[0] > ref_x) - { - minPt[0] = ref_x; - } - - if(minPt[1] > ref_y) - { - minPt[1] = ref_y; - } - - if(maxPt[0] < ref_x) - { - maxPt[0] = ref_x; - } - - if(maxPt[1] < ref_y) - { - maxPt[1] = ref_y; - } - } - - this.boundary_min = minPt; - this.boundary_max = maxPt; -}; - - -// Load data -Creature.prototype.LoadFromData = function(load_data) -{ - // Load points and topology - var json_mesh = load_data["mesh"]; - - this.global_pts = CreatureModuleUtils.ReadFloatArray3DJSON(json_mesh, "points"); - this.total_num_pts = this.global_pts.length / 3; - - this.global_indices = CreatureModuleUtils.ReadIntArrayJSON (json_mesh, "indices"); - this.total_num_indices = this.global_indices.length; - - this.global_uvs = CreatureModuleUtils.ReadFloatArrayJSON (json_mesh, "uvs"); - - - this.render_colours = []; - for(var i = 0; i < this.total_num_pts * 4; i++) - { - this.render_colours.push(0); - } - this.FillRenderColours(1, 1, 1, 1); - - this.render_pts = []; - - // Load bones - var root_bone = CreatureModuleUtils.CreateBones(load_data, "skeleton"); - - - // Load regions - var regions = CreatureModuleUtils.CreateRegions(json_mesh, - "regions", - this.global_indices, - this.global_pts, - this.global_uvs); - - // Add into composition - this.render_composition = new MeshRenderBoneComposition(); - this.render_composition.setRootBone(root_bone); - this.render_composition.getRootBone().computeRestParentTransforms(); - - for(var i = 0; i < regions.length; i++) { - var cur_region = regions[i]; - cur_region.setMainBoneKey(root_bone.getKey()); - cur_region.determineMainBone(root_bone); - this.render_composition.addRegion(cur_region); - } - - this.render_composition.initBoneMap(); - this.render_composition.initRegionsMap(); - - for(var i = 0; i < regions.length; i++) { - var cur_region = regions[i]; - cur_region.initFastNormalWeightMap(this.render_composition.bones_map); - } - - this.render_composition.resetToWorldRestPts(); -}; - -// CreatureAnimation -function CreatureAnimation(load_data, name_in) -{ - this.name = name_in; - this.bones_cache = new MeshBoneCacheManager(); - this.displacement_cache = new MeshDisplacementCacheManager(); - this.uv_warp_cache = new MeshUVWarpCacheManager(); - this.cache_pts = []; - this.fill_cache_pts = []; - - this.LoadFromData(name_in, load_data); -}; - -CreatureAnimation.prototype.LoadFromData = function(name_in, load_data) -{ - var json_anim_base = load_data["animation"]; - var json_clip = json_anim_base[name_in]; - - var start_end_times = CreatureModuleUtils.GetStartEndTimes(json_clip, "bones"); - this.start_time = start_end_times.first; - this.end_time = start_end_times.second; - - // bone animation - CreatureModuleUtils.FillBoneCache(json_clip, - "bones", - this.start_time, - this.end_time, - this.bones_cache); - - // mesh deformation animation - CreatureModuleUtils.FillDeformationCache(json_clip, - "meshes", - this.start_time, - this.end_time, - this.displacement_cache); - - // uv swapping animation - CreatureModuleUtils.FillUVSwapCache(json_clip, - "uv_swaps", - this.start_time, - this.end_time, - this.uv_warp_cache); -}; - -CreatureAnimation.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.cache_pts.length) - 1); - - return retval; -}; - -CreatureAnimation.prototype.verifyFillCache = function() -{ - if(this.fill_cache_pts.length == (this.end_time - this.start_time + 1)) - { - // ready to switch over - this.cache_pts = this.fill_cache_pts; - } -}; - -CreatureAnimation.prototype.poseFromCachePts = function(time_in, target_pts, num_pts) -{ - var cur_floor_time = this.getIndexByTime(Math.floor(time_in)); - var cur_ceil_time = this.getIndexByTime(Math.ceil(time_in)); - var cur_ratio = time_in - Math.floor(time_in); - - var set_pt = target_pts; - var floor_pts = this.cache_pts[cur_floor_time]; - var ceil_pts = this.cache_pts[cur_ceil_time]; - - var set_idx = 0; - var floor_idx = 0; - var ceil_idx = 0; - - for(var i = 0; i < num_pts; i++) - { - set_pt[set_idx + 0] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 0]) + (cur_ratio * ceil_pts[ceil_idx + 0]); - set_pt[set_idx + 1] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 1]) + (cur_ratio * ceil_pts[ceil_idx + 1]); - set_pt[set_idx + 2] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 2]) + (cur_ratio * ceil_pts[ceil_idx + 2]); - - set_idx += 3; - floor_idx += 3; - ceil_idx += 3; - } -}; - -// CreatureManager -function CreatureManager(target_creature_in) -{ - this.target_creature = target_creature_in; - this.is_playing = false; - this.run_time = 0; - this.time_scale = 30.0; - this.blending_factor = 0; - this.should_loop = true; - this.use_custom_time_range = false; - this.custom_start_time = 0; - this.custom_end_time = 0; - this.animations = {}; - this.bones_override_callback = null; - - this.blend_render_pts = []; - this.blend_render_pts.push([]); - this.blend_render_pts.push([]); - this.do_blending = false; - - this.active_blend_animation_names = []; - this.active_blend_animation_names.push(""); - this.active_blend_animation_names.push(""); -}; - -// Create an animation -CreatureManager.prototype.CreateAnimation = function(load_data, name_in) -{ - var new_animation = new CreatureAnimation(load_data, name_in); - this.AddAnimation(new_animation); -}; - -// Create all animations -CreatureManager.prototype.CreateAllAnimations = function(load_data) -{ - var all_animation_names = CreatureModuleUtils.GetAllAnimationNames (load_data); - for(var i = 0; i < all_animation_names.length; i++) - { - var cur_name = all_animation_names[i]; - this.CreateAnimation(load_data, cur_name); - } - - this.SetActiveAnimationName (all_animation_names.get(0)); -}; - -// Add an animation -CreatureManager.prototype.AddAnimation = function(animation_in) -{ - this.animations[animation_in.name] = animation_in; -}; - -// Return an animation -CreatureManager.prototype.GetAnimation = function(name_in) -{ - return this.animations[name_in]; -}; - -// Return the creature -CreatureManager.prototype.GetCreature = function() -{ - return this.target_creature; -}; - -// Returns all the animation names -CreatureManager.prototype.GetAnimationNames = function() -{ - var ret_names = []; - for(var cur_name in animations) { - ret_names.push(cur_name); - } - - return ret_names; -}; - -// Sets the current animation to be active by name -CreatureManager.prototype.SetActiveAnimationName = function(name_in, check_already_active) -{ - if (name_in == null || (name_in in this.animations) == false) { - return false; - } - - if(check_already_active == true) - { - if(this.active_animation_name == name_in) - { - return false; - } - } - - this.active_animation_name = name_in; - var cur_animation = this.animations[this.active_animation_name]; - this.run_time = cur_animation.start_time; - - var displacement_cache_manager = cur_animation.displacement_cache; - var displacement_table = - displacement_cache_manager.displacement_cache_table[0]; - - var uv_warp_cache_manager = cur_animation.uv_warp_cache; - var uv_swap_table = - uv_warp_cache_manager.uv_cache_table[0]; - - var render_composition = - this.target_creature.render_composition; - - var all_regions = render_composition.getRegions(); - - var index = 0; - for(var i = 0; i < all_regions.length; i++) - { - var cur_region = all_regions[i]; - // Setup active or inactive displacements - var use_local_displacements = !(displacement_table[index].getLocalDisplacements().length == 0); - var use_post_displacements = !(displacement_table[index].getPostDisplacements().length == 0); - cur_region.setUseLocalDisplacements(use_local_displacements); - cur_region.setUsePostDisplacements(use_post_displacements); - - // Setup active or inactive uv swaps - cur_region.setUseUvWarp(uv_swap_table[index].getEnabled()); - - index++; - } - - return true; -}; - -// Returns the name of the currently active animation -CreatureManager.prototype.GetActiveAnimationName = function() -{ - return this.active_animation_name; -}; - -// Returns the table of all animations -CreatureManager.prototype.GetAllAnimations = function() -{ - return this.animations; -}; - -// Creates a point cache for the current animation -CreatureManager.prototype.MakePointCache = function(animation_name_in) -{ - var store_run_time = this.getRunTime(); - var cur_animation = this.animations[animation_name_in]; - if(cur_animation.length > 0) - { - // cache already generated, just exit - return; - } - - var cache_pts_list = cur_animation.cache_pts; - - for(var i = cur_animation.start_time; i <= cur_animation.end_time; i++) - { - this.setRunTime(i); - var new_pts = []; - for (var j = 0; j < this.target_creature.total_num_pts * 3; j++) new_pts[j] = 0; - //auto new_pts = new glm::float32[target_creature->GetTotalNumPoints() * 3]; - this.PoseCreature(animation_name_in, new_pts); - - cache_pts_list.push(new_pts); - } - - this.setRunTime(store_run_time); -}; - -// Fills up a single frame for a point cache animation -// Point caching is only enabled when the cache is FULLY filled up -// Remember the new filled cache is Appended onto the end of a list -// There is no indexing by time here so MAKE SURE this cache is filled up sequentially! -CreatureManager.prototype.FillSinglePointCacheFrame = function(animation_name_in, time_in) -{ - var store_run_time = this.getRunTime(); - var cur_animation = this.animations[animation_name_in]; - - this.setRunTime(time_in); - var new_pts = []; - for (var j = 0; j < this.target_creature.total_num_pts * 3; j++) new_pts[j] = 0; - this.PoseCreature(animation_name_in, new_pts); - - cur_animation.fill_cache_pts.push(new_pts); - cur_animation.verifyFillCache(); - - this.setRunTime(store_run_time); -}; - -// Returns if animation is playing -CreatureManager.prototype.GetIsPlaying = function() -{ - return this.is_playing; -}; - -// Sets whether to loop the animation -CreatureManager.prototype.SetShouldLoop = function(flag_in) -{ - this.should_loop = flag_in; -}; - -// Sets whether to use a user defined custom time range for the currently -// active animation clip -CreatureManager.prototype.SetUseCustomTimeRange = function(flag_in) -{ - this.use_custom_time_range = flag_in; -}; - -// Sets the user defined custom time range -CreatureManager.prototype.SetCustomTimeRange = function(start_time_in, end_time_in) -{ - this.custom_start_time = start_time_in; - this.custom_end_time = end_time_in; -}; - -// Sets whether the animation is playing -CreatureManager.prototype.SetIsPlaying = function(flag_in) -{ - this.is_playing = flag_in; -}; - -// Resets animation to start time -CreatureManager.prototype.ResetToStartTimes = function() -{ - var cur_animation = this.animations[active_animation_name]; - this.run_time = cur_animation.start_time; -}; - -// Sets the run time of the animation -CreatureManager.prototype.setRunTime = function(time_in) -{ - this.run_time = time_in; - this.correctTime (); -}; - -// Increments the run time of the animation by a delta value -CreatureManager.prototype.increRunTime = function(delta_in) -{ - this.run_time += delta_in; - this.correctTime (); -}; - -CreatureManager.prototype.correctTime = function() -{ - var cur_animation = this.animations[this.active_animation_name]; - var anim_start_time = cur_animation.start_time; - var anim_end_time = cur_animation.end_time; - - if(this.use_custom_time_range) - { - anim_start_time = this.custom_start_time; - anim_end_time = this.custom_end_time; - } - - if(this.run_time > anim_end_time) - { - if(this.should_loop) - { - this.run_time = anim_start_time; - } - else { - this.run_time = anim_end_time; - } - } - else if(this.run_time < anim_start_time) - { - if(this.should_loop) - { - this.run_time = anim_end_time; - } - else { - this.run_time = anim_start_time; - } - } -}; - -// Returns the current run time of the animation -CreatureManager.prototype.getRunTime = function() -{ - return this.run_time; -}; - -// Runs a single step of the animation for a given delta timestep -CreatureManager.prototype.Update = function(delta) -{ - if(!this.is_playing) - { - return; - } - - this.increRunTime(delta * this.time_scale); - - this.RunCreature (); -}; - -CreatureManager.prototype.RunAtTime = function(time_in) -{ - if(!this.is_playing) - { - return; - } - - this.setRunTime(time_in); - this.RunCreature (); -}; - -CreatureManager.prototype.RunCreature = function() -{ - if(this.do_blending) - { - for(var i = 0; i < 2; i++) { - var cur_animation = this.animations[this.active_blend_animation_names[i]]; - if(cur_animation.cache_pts.length > 0) - { - cur_animation.poseFromCachePts(this.getRunTime(), this.blend_render_pts[i], this.target_creature.total_num_pts); - } - else { - this.PoseCreature(this.active_blend_animation_names[i], this.blend_render_pts[i]); - } - } - - for(var j = 0; j < this.target_creature.total_num_pts * 3; j++) - { - var set_data_index = j; - var read_data_1 = this.blend_render_pts[0][j]; - var read_data_2 = this.blend_render_pts[1][j]; - /* - target_creature.render_pts[set_data_index] = - ((1.0f - blending_factor) * (read_data_1)) + - (blending_factor * (read_data_2)); - */ - this.target_creature.render_pts.set(set_data_index, - ((1.0 - blending_factor) * (read_data_1)) + - (blending_factor * (read_data_2))); - - } - } - else { - var cur_animation = this.animations[this.active_animation_name]; - if(cur_animation.cache_pts.length > 0) - { - cur_animation.poseFromCachePts(this.getRunTime(), this.target_creature.render_pts, this.target_creature.total_num_pts); - // cur_animation->poseFromCachePts(getRunTime(), target_creature->GetRenderPts(), target_creature->GetTotalNumPoints()); - } - else { - this.PoseCreature(this.active_animation_name, this.target_creature.render_pts); - } - } -}; - -// Sets scaling for time -CreatureManager.prototype.SetTimeScale = function(scale_in) -{ - this.time_scale = scale_in; -}; - -// Enables/Disables blending -CreatureManager.prototype.SetBlending = function(flag_in) -{ - this.do_blending = flag_in; - - if (this.do_blending) { - if (this.blend_render_pts[0].length == 0) { - var new_vec = []; - for(var i = 0; i < target_creature.total_num_pts * 3; i++) - { - new_vec.push(0); - } - - this.blend_render_pts.set(0, new_vec); - } - - if (this.blend_render_pts[1].length == 0) { - var new_vec = []; - for(var i = 0; i < this.target_creature.total_num_pts * 3; i++) - { - new_vec.push(0); - } - - this.blend_render_pts[1] = new_vec; - } - - } -}; - -// Sets blending animation names -CreatureManager.prototype.SetBlendingAnimations = function(name_1, name_2) -{ - this.active_blend_animation_names[0] = name_1; - this.active_blend_animation_names[1] = name_2; -}; - -// Sets the blending factor -CreatureManager.prototype.SetBlendingFactor = function(value_in) -{ - this.blending_factor = value_in; -}; - -// Given a set of coordinates in local creature space, -// see if any bone is in contact -CreatureManager.prototype.IsContactBone = function(pt_in, radius) -{ - var cur_bone = this.target_creature.render_composition.getRootBone(); - return this.ProcessContactBone(pt_in, radius, cur_bone); -}; - - -CreatureManager.prototype.PoseCreature = function(animation_name_in, target_pts) -{ - var cur_animation = this.animations[animation_name_in]; - - var bone_cache_manager = cur_animation.bones_cache; - var displacement_cache_manager = cur_animation.displacement_cache; - var uv_warp_cache_manager = cur_animation.uv_warp_cache; - - var render_composition = - this.target_creature.render_composition; - - // Extract values from caches - var bones_map = - render_composition.getBonesMap(); - var regions_map = - render_composition.getRegionsMap(); - - bone_cache_manager.retrieveValuesAtTime(this.getRunTime(), - bones_map); - - if(this.bones_override_callback != null) - { - this.bones_override_callback(bones_map); - } - - displacement_cache_manager.retrieveValuesAtTime(this.getRunTime(), - regions_map); - uv_warp_cache_manager.retrieveValuesAtTime(this.getRunTime(), - regions_map); - - - // Do posing, decide if we are blending or not - var cur_regions = - render_composition.getRegions(); - var cur_bones = - render_composition.getBonesMap(); - - render_composition.updateAllTransforms(false); - for(var j = 0, l = cur_regions.length; j < l; j++) { - var cur_region = cur_regions[j]; - - var cur_pt_index = cur_region.getStartPtIndex(); - - - cur_region.poseFinalPts(target_pts, - cur_pt_index * 3, - cur_bones); - - // add in z offsets for different regions - - var start = cur_region.getStartPtIndex() * 3; - var end = cur_region.getEndPtIndex() * 3; - for(var k = start; - k <= end; - k+=3) - { - target_pts[k + 2] = -j * 0.001; - } - - } -}; - diff --git a/build/creature.map b/build/creature.map deleted file mode 100644 index f018483bd..000000000 --- a/build/creature.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["creature.js"],"names":["dualQuat","this","real","quat","create","Q_W","imaginary","tmpQ1","MeshBone","key_in","start_pt_in","end_pt_in","parent_transform","key","world_rest_angle","rest_parent_mat","mat4","rest_parent_inv_mat","rest_world_mat","rest_world_inv_mat","bind_world_mat","bind_world_inv_mat","parent_world_mat","parent_world_inv_mat","local_rest_start_pt","local_rest_end_pt","setRestParentMat","setLocalRestStartPt","setLocalRestEndPt","setParentWorldInvMat","setParentWorldMat","local_binormal_dir","vec3","fromValues","tag_id","children","MeshRenderRegion","indices_in","rest_pts_in","uvs_in","start_pt_index_in","end_pt_index_in","start_index_in","end_index_in","store_indices","store_rest_pts","store_uvs","use_local_displacements","use_post_displacements","use_uv_warp","uv_warp_local_offset","vec2","uv_warp_global_offset","uv_warp_scale","start_pt_index","end_pt_index","start_index","end_index","main_bone","local_displacements","post_displacements","uv_warp_ref_uvs","normal_weight_map","fast_normal_weight_map","fast_bones_map","relevant_bones_indices","use_dq","initUvWarp","MeshRenderBoneComposition","root_bone","bones_map","regions","regions_map","MeshBoneCache","MeshDisplacementCache","MeshUVWarpCache","enabled","MeshBoneCacheManager","is_ready","bone_cache_table","bone_cache_data_ready","MeshDisplacementCacheManager","displacement_cache_table","displacement_cache_data_ready","MeshUVWarpCacheManager","uv_cache_table","uv_cache_data_ready","Creature","load_data","total_num_pts","total_num_indices","global_indices","global_pts","global_uvs","render_pts","render_colours","render_composition","boundary_indices","boundary_min","boundary_max","LoadFromData","CreatureAnimation","name_in","name","bones_cache","displacement_cache","uv_warp_cache","cache_pts","fill_cache_pts","CreatureManager","target_creature_in","target_creature","is_playing","run_time","time_scale","blending_factor","should_loop","use_custom_time_range","custom_start_time","custom_end_time","animations","bones_override_callback","blend_render_pts","push","do_blending","active_blend_animation_names","_global","shim","define","amd","exports","window","GLMAT_EPSILON","GLMAT_ARRAY_TYPE","Float32Array","Array","GLMAT_RANDOM","Math","random","glMatrix","setMatrixArrayType","type","degree","PI","toRadian","a","out","clone","x","y","copy","set","add","b","subtract","sub","multiply","mul","divide","div","min","max","scale","scaleAndAdd","distance","sqrt","dist","squaredDistance","sqrDist","length","len","squaredLength","sqrLen","negate","inverse","normalize","dot","cross","z","lerp","t","ax","ay","r","cos","sin","transformMat2","m","transformMat2d","transformMat3","transformMat4","forEach","vec","stride","offset","count","fn","arg","i","l","str","az","bx","by","bz","zScale","w","transformQuat","q","qx","qy","qz","qw","ix","iy","iz","iw","rotateX","c","p","rotateY","rotateZ","vec4","aw","mat2","identity","transpose","a1","invert","a0","a2","a3","det","adjoint","determinant","b0","b1","b2","b3","rotate","rad","s","v","v0","v1","frob","pow","LDU","L","D","U","mat2d","aa","ab","ac","ad","atx","aty","a4","a5","b4","b5","translate","mat3","fromMat4","a01","a02","a12","a00","a10","a11","a20","a21","a22","b01","b11","b21","b00","b02","b10","b12","b20","b22","fromMat2d","fromQuat","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","normalFromMat4","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","axis","abs","fromRotationTranslation","xy","xz","yz","frustum","left","right","bottom","top","near","far","rl","tb","nf","perspective","fovy","aspect","f","tan","ortho","lr","bt","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","rotationTo","tmpvec3","xUnitVec3","yUnitVec3","setAxisAngle","setAxes","matr","view","fromMat3","bw","calculateW","slerp","omega","cosom","sinom","scale0","scale1","acos","invDot","conjugate","fRoot","fTrace","j","k","Q_X","Q_Y","Q_Z","prototype","reset","createFromData","q0","quat_in","real_factor","imaginary_factor","norm","ve","trans","tmpVec1","tmpVec2","tmpVec0","aVec","rot","transform","Utils","setAxisMatrix","xAxis","yAxis","zAxis","retMat","M00","M01","M02","M03","M10","M11","M12","M13","M20","M21","M22","M23","M30","M31","M32","M33","matrixToQuat","mat_in","retQuat","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","rotateVec_90","vec_in","ret_vec","calcRotateMat","dir","pep_dir","cur_tangent","cur_normal","cur_binormal","cur_rotate","getMatTranslate","ret_pos","addMat","mat1","mulMat","factor","clamp","num","newVec1","newVec2","vecInterp","vec1","ratio","retVec","vec2Interp","vec_1","vec_2","transform_in","inverse_in","getLocalRestStartPt","getLocalRestEndPt","world_pt_in","calcRestData","calc","computeDirs","local_rest_dir","first","local_rest_normal_dir","second","computeRestLength","setWorldStartPt","world_start_pt","setWorldEndPt","world_end_pt","fixDQs","ref_dq","world_dq","cur_child","initWorldPts","getWorldRestStartPt","getWorldRestEndPt","tmp_mat","getWorldRestAngle","getWorldRestPos","world_rest_pos","getWorldStartPt","getWorldEndPt","getRestParentMat","getRestWorldMat","getWorldDeltaMat","world_delta_mat","getParentWorldMat","getParentWorldInvMat","getWorldDq","computeRestParentTransforms","cur_translate","cur_final","world_rest_dir","bind_translate","tVec","bind_rotate","cur_bind_final","cur_bone","computeParentTransforms","translate_parent","getWorldEndpt","rotate_parent","final_transform","final_inv_transform","computeWorldDeltaTransforms","cur_quat","tmp_pos","addChild","bone_in","getChildren","hasBone","getChildByKey","search_key","ret_data","result","getKey","getAllBoneKeys","append_data","concat","getAllChildren","getBoneDepth","depth","ret_val","isLeaf","deleteChildren","setTagId","value_in","getTagId","start_pt","end_pt","tangent","normal","retData","tmp_dir","rest_length","getIndicesIndex","getRestPtsIndex","getUVsIndex","getNumPts","getStartPtIndex","getEndPtIndex","getNumIndices","getStartIndex","getEndIndex","accum_dq","accum_mat","final_pt","tmp1","tmp2","poseFinalPts","output_pts","output_start_index","read_pt_index","write_pt_index","boneKeys","Object","keys","cur_rest_pt","curBoneIndices","relevantIndicesLength","idx_lookup","cur_weight_val","cur_im_weight_val","tmp_pt","runUvWarp","setMainBoneKey","main_bone_key","determineMainBone","root_bone_in","setUseDq","flag_in","setName","getName","setUseLocalDisplacements","getUseLocalDisplacements","setUsePostDisplacements","getUsePostDisplacements","getRestLocalPt","index_in","return_pt","getLocalIndex","read_index","clearLocalDisplacements","clearPostDisplacements","setUseUvWarp","restoreRefUv","getUseUvWarp","setUvWarpLocalOffset","setUvWarpGlobalOffset","setUvWarpScale","getUvWarpLocalOffset","getUvWarpGlobalOffset","getUvWarpScale","cur_uvs_index","set_uv","initFastNormalWeightMap","cur_key","values","cutoff_val","curIndicesArray","cur_val","addRegion","region_in","setRootBone","getRootBone","initBoneMap","genBoneMap","initRegionsMap","input_bone","ret_map","all_keys","getBonesMap","getRegionsMap","getRegions","getRegionWithId","id_in","cur_region","resetToWorldRestPts","updateAllTransforms","update_parent_xf","pt_in","setLocalDisplacements","displacements_in","setPostDisplacements","getLocalDisplacements","getPostDisplacements","setEnabled","getEnabled","init","start_time_in","end_time_in","start_time","end_time","num_frames","getStartTime","getEndime","getIndexByTime","time_in","retval","retrieveValuesAtTime","bone_map","base_time","floor","ceil","base_cache","end_cache","base_data","end_data","final_world_start_pt","final_world_end_pt","allReady","ready_cnt","size","makeAllReady","set_region","displacements","interp_val","final_local_offset","final_global_offset","final_scale","CreatureModuleUtils","GetAllAnimationNames","json_data","json_animations","getFloatArray","raw_data","getIntArray","ReadPointsArray2DJSON","data","raw_array","ret_list","num_points","cur_index","ReadFloatArray3DJSON","ReadBoolJSON","val","ReadFloatArrayJSON","ReadIntArrayJSON","ReadMatrixJSON","ReadVector2JSON","ReadVector3JSON","CreateBones","json_obj","base_obj","bone_data","child_set","cur_name","cur_node","cur_id","cur_parent_mat","cur_local_rest_start_pt","cur_local_rest_end_pt","cur_children_ids","new_bone","cur_child_id","cur_data","children_ids","child_bone","CreateRegions","ret_regions","cur_start_pt_index","cur_end_pt_index","cur_start_index","cur_end_index","new_region","weight_map","weight_obj","w_key","GetStartEndTimes","cur_num","parseInt","FillBoneCache","cache_manager","cur_time","cache_list","bone_node","cur_start_pt","cur_end_pt","cache_data","set_index","FillDeformationCache","mesh_node","use_local_displacement","use_post_displacement","read_pts","FillUVSwapCache","uv_node","use_uv","local_offset","global_offset","FillRenderColours","g","cur_colour_index","ComputeBoundaryIndices","freq_table","cur_regions","cur_idx","is_found","ComputeBoundaryMinMax","firstIdx","minPt","maxPt","ref_idx","ref_x","ref_y","json_mesh","json_anim_base","json_clip","start_end_times","verifyFillCache","poseFromCachePts","target_pts","num_pts","cur_floor_time","cur_ceil_time","cur_ratio","set_pt","floor_pts","ceil_pts","set_idx","floor_idx","ceil_idx","CreateAnimation","new_animation","AddAnimation","CreateAllAnimations","all_animation_names","SetActiveAnimationName","get","animation_in","GetAnimation","GetCreature","GetAnimationNames","ret_names","check_already_active","active_animation_name","cur_animation","displacement_cache_manager","displacement_table","uv_warp_cache_manager","uv_swap_table","all_regions","index","GetActiveAnimationName","GetAllAnimations","MakePointCache","animation_name_in","store_run_time","getRunTime","cache_pts_list","setRunTime","new_pts","PoseCreature","FillSinglePointCacheFrame","GetIsPlaying","SetShouldLoop","SetUseCustomTimeRange","SetCustomTimeRange","SetIsPlaying","ResetToStartTimes","correctTime","increRunTime","delta_in","anim_start_time","anim_end_time","Update","delta","RunCreature","RunAtTime","set_data_index","read_data_1","read_data_2","SetTimeScale","scale_in","SetBlending","new_vec","SetBlendingAnimations","name_1","name_2","SetBlendingFactor","IsContactBone","radius","ProcessContactBone","bone_cache_manager","cur_bones","cur_pt_index","start","end"],"mappings":"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","file":"creature.min.js"} \ No newline at end of file diff --git a/build/creature.min.js b/build/creature.min.js deleted file mode 100644 index 69c1dd644..000000000 --- a/build/creature.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/* Phaser v2.6.1 Creature Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ - -function dualQuat(){this.real=quat.create(),this.real[Q_W]=0,this.imaginary=quat.create(),this.imaginary[Q_W]=0,this.tmpQ1=quat.create()}function MeshBone(a,b,c,d){this.key=a,this.world_rest_angle=0,this.rest_parent_mat=mat4.create(),this.rest_parent_inv_mat=mat4.create(),this.rest_world_mat=mat4.create(),this.rest_world_inv_mat=mat4.create(),this.bind_world_mat=mat4.create(),this.bind_world_inv_mat=mat4.create(),this.parent_world_mat=mat4.create(),this.parent_world_inv_mat=mat4.create(),this.local_rest_start_pt=null,this.local_rest_end_pt=null,this.setRestParentMat(d,null),this.setLocalRestStartPt(b),this.setLocalRestEndPt(c),this.setParentWorldInvMat(mat4.create()),this.setParentWorldMat(mat4.create()),this.local_binormal_dir=vec3.fromValues(0,0,1),this.tag_id=0,this.children=[]}function MeshRenderRegion(a,b,c,d,e,f,g){this.store_indices=a,this.store_rest_pts=b,this.store_uvs=c,this.use_local_displacements=!1,this.use_post_displacements=!1,this.use_uv_warp=!1,this.uv_warp_local_offset=vec2.fromValues(0,0),this.uv_warp_global_offset=vec2.fromValues(0,0),this.uv_warp_scale=vec2.fromValues(1,1),this.start_pt_index=d,this.end_pt_index=e,this.start_index=f,this.end_index=g,this.main_bone=null,this.local_displacements=[],this.post_displacements=[],this.uv_warp_ref_uvs=[],this.normal_weight_map={},this.fast_normal_weight_map=[],this.fast_bones_map=[],this.relevant_bones_indices=[],this.use_dq=!0,this.tag_id=-1,this.initUvWarp()}function MeshRenderBoneComposition(){this.root_bone=null,this.bones_map={},this.regions=[],this.regions_map={}}function MeshBoneCache(a){this.key=a}function MeshDisplacementCache(a){this.key=a,this.local_displacements=[],this.post_displacements=[]}function MeshUVWarpCache(a){this.uv_warp_global_offset=vec2.create(),this.uv_warp_local_offset=vec2.create(),this.uv_warp_scale=vec2.fromValues(-1,-1),this.key=a,this.enabled=!1}function MeshBoneCacheManager(){this.is_ready=!1,this.bone_cache_table=null,this.bone_cache_data_ready=null,this.bone_cache_table=[],this.bone_cache_data_ready=[]}function MeshDisplacementCacheManager(){this.is_ready=!1,this.displacement_cache_table=null,this.displacement_cache_data_ready=null,this.displacement_cache_table=[],this.displacement_cache_data_ready=[]}function MeshUVWarpCacheManager(){this.is_ready=!1,this.uv_cache_table=null,this.uv_cache_data_ready=null,this.uv_cache_table=[],this.uv_cache_data_ready=[]}function Creature(a){this.total_num_pts=0,this.total_num_indices=0,this.global_indices=null,this.global_pts=null,this.global_uvs=null,this.render_pts=null,this.render_colours=null,this.render_composition=null,this.boundary_indices=[],this.boundary_min=vec2.create(),this.boundary_max=vec2.create(),this.LoadFromData(a)}function CreatureAnimation(a,b){this.name=b,this.bones_cache=new MeshBoneCacheManager,this.displacement_cache=new MeshDisplacementCacheManager,this.uv_warp_cache=new MeshUVWarpCacheManager,this.cache_pts=[],this.fill_cache_pts=[],this.LoadFromData(b,a)}function CreatureManager(a){this.target_creature=a,this.is_playing=!1,this.run_time=0,this.time_scale=30,this.blending_factor=0,this.should_loop=!0,this.use_custom_time_range=!1,this.custom_start_time=0,this.custom_end_time=0,this.animations={},this.bones_override_callback=null,this.blend_render_pts=[],this.blend_render_pts.push([]),this.blend_render_pts.push([]),this.do_blending=!1,this.active_blend_animation_names=[],this.active_blend_animation_names.push(""),this.active_blend_animation_names.push("")}!function(a){"use strict";var b={};"undefined"==typeof exports?"function"==typeof define&&"object"==typeof define.amd&&define.amd?(b.exports={},define(function(){return b.exports})):b.exports="undefined"!=typeof window?window:a:b.exports=exports,function(a){if(!b)var b=1e-6;if(!c)var c="undefined"!=typeof Float32Array?Float32Array:Array;if(!d)var d=Math.random;var e={};e.setMatrixArrayType=function(a){c=a},"undefined"!=typeof a&&(a.glMatrix=e);var f=Math.PI/180;e.toRadian=function(a){return a*f};var g={};g.create=function(){var a=new c(2);return a[0]=0,a[1]=0,a},g.clone=function(a){var b=new c(2);return b[0]=a[0],b[1]=a[1],b},g.fromValues=function(a,b){var d=new c(2);return d[0]=a,d[1]=b,d},g.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},g.set=function(a,b,c){return a[0]=b,a[1]=c,a},g.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},g.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},g.sub=g.subtract,g.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},g.mul=g.multiply,g.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},g.div=g.divide,g.min=function(a,b,c){return a[0]=Math.min(b[0],c[0]),a[1]=Math.min(b[1],c[1]),a},g.max=function(a,b,c){return a[0]=Math.max(b[0],c[0]),a[1]=Math.max(b[1],c[1]),a},g.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},g.scaleAndAdd=function(a,b,c,d){return a[0]=b[0]+c[0]*d,a[1]=b[1]+c[1]*d,a},g.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},g.dist=g.distance,g.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},g.sqrDist=g.squaredDistance,g.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},g.len=g.length,g.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},g.sqrLen=g.squaredLength,g.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},g.inverse=function(a,b){return a[0]=1/b[0],a[1]=1/b[1],a},g.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},g.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},g.cross=function(a,b,c){var d=b[0]*c[1]-b[1]*c[0];return a[0]=a[1]=0,a[2]=d,a},g.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},g.random=function(a,b){b=b||1;var c=2*d()*Math.PI;return a[0]=Math.cos(c)*b,a[1]=Math.sin(c)*b,a},g.transformMat2=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e,a[1]=c[1]*d+c[3]*e,a},g.transformMat2d=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e+c[4],a[1]=c[1]*d+c[3]*e+c[5],a},g.transformMat3=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[3]*e+c[6],a[1]=c[1]*d+c[4]*e+c[7],a},g.transformMat4=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[4]*e+c[12],a[1]=c[1]*d+c[5]*e+c[13],a},g.forEach=function(){var a=g.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=2),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],f(a,a,g),b[h]=a[0],b[h+1]=a[1];return b}}(),g.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},"undefined"!=typeof a&&(a.vec2=g);var h={};h.create=function(){var a=new c(3);return a[0]=0,a[1]=0,a[2]=0,a},h.clone=function(a){var b=new c(3);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b},h.fromValues=function(a,b,d){var e=new c(3);return e[0]=a,e[1]=b,e[2]=d,e},h.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a},h.set=function(a,b,c,d){return a[0]=b,a[1]=c,a[2]=d,a},h.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a[2]=b[2]+c[2],a},h.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a[2]=b[2]-c[2],a},h.sub=h.subtract,h.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a[2]=b[2]*c[2],a},h.mul=h.multiply,h.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a[2]=b[2]/c[2],a},h.div=h.divide,h.min=function(a,b,c){return a[0]=Math.min(b[0],c[0]),a[1]=Math.min(b[1],c[1]),a[2]=Math.min(b[2],c[2]),a},h.max=function(a,b,c){return a[0]=Math.max(b[0],c[0]),a[1]=Math.max(b[1],c[1]),a[2]=Math.max(b[2],c[2]),a},h.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a[2]=b[2]*c,a},h.scaleAndAdd=function(a,b,c,d){return a[0]=b[0]+c[0]*d,a[1]=b[1]+c[1]*d,a[2]=b[2]+c[2]*d,a},h.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2];return Math.sqrt(c*c+d*d+e*e)},h.dist=h.distance,h.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2];return c*c+d*d+e*e},h.sqrDist=h.squaredDistance,h.length=function(a){var b=a[0],c=a[1],d=a[2];return Math.sqrt(b*b+c*c+d*d)},h.len=h.length,h.squaredLength=function(a){var b=a[0],c=a[1],d=a[2];return b*b+c*c+d*d},h.sqrLen=h.squaredLength,h.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a},h.inverse=function(a,b){return a[0]=1/b[0],a[1]=1/b[1],a[2]=1/b[2],a},h.normalize=function(a,b){var c=b[0],d=b[1],e=b[2],f=c*c+d*d+e*e;return f>0&&(f=1/Math.sqrt(f),a[0]=b[0]*f,a[1]=b[1]*f,a[2]=b[2]*f),a},h.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]},h.cross=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[0],h=c[1],i=c[2];return a[0]=e*i-f*h,a[1]=f*g-d*i,a[2]=d*h-e*g,a},h.lerp=function(a,b,c,d){var e=b[0],f=b[1],g=b[2];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a[2]=g+d*(c[2]-g),a},h.random=function(a,b){b=b||1;var c=2*d()*Math.PI,e=2*d()-1,f=Math.sqrt(1-e*e)*b;return a[0]=Math.cos(c)*f,a[1]=Math.sin(c)*f,a[2]=e*b,a},h.transformMat4=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[3]*d+c[7]*e+c[11]*f+c[15];return g=g||1,a[0]=(c[0]*d+c[4]*e+c[8]*f+c[12])/g,a[1]=(c[1]*d+c[5]*e+c[9]*f+c[13])/g,a[2]=(c[2]*d+c[6]*e+c[10]*f+c[14])/g,a},h.transformMat3=function(a,b,c){var d=b[0],e=b[1],f=b[2];return a[0]=d*c[0]+e*c[3]+f*c[6],a[1]=d*c[1]+e*c[4]+f*c[7],a[2]=d*c[2]+e*c[5]+f*c[8],a},h.transformQuat=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[0],h=c[1],i=c[2],j=c[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return a[0]=k*j+n*-g+l*-i-m*-h,a[1]=l*j+n*-h+m*-g-k*-i,a[2]=m*j+n*-i+k*-h-l*-g,a},h.rotateX=function(a,b,c,d){var e=[],f=[];return e[0]=b[0]-c[0],e[1]=b[1]-c[1],e[2]=b[2]-c[2],f[0]=e[0],f[1]=e[1]*Math.cos(d)-e[2]*Math.sin(d),f[2]=e[1]*Math.sin(d)+e[2]*Math.cos(d),a[0]=f[0]+c[0],a[1]=f[1]+c[1],a[2]=f[2]+c[2],a},h.rotateY=function(a,b,c,d){var e=[],f=[];return e[0]=b[0]-c[0],e[1]=b[1]-c[1],e[2]=b[2]-c[2],f[0]=e[2]*Math.sin(d)+e[0]*Math.cos(d),f[1]=e[1],f[2]=e[2]*Math.cos(d)-e[0]*Math.sin(d),a[0]=f[0]+c[0],a[1]=f[1]+c[1],a[2]=f[2]+c[2],a},h.rotateZ=function(a,b,c,d){var e=[],f=[];return e[0]=b[0]-c[0],e[1]=b[1]-c[1],e[2]=b[2]-c[2],f[0]=e[0]*Math.cos(d)-e[1]*Math.sin(d),f[1]=e[0]*Math.sin(d)+e[1]*Math.cos(d),f[2]=e[2],a[0]=f[0]+c[0],a[1]=f[1]+c[1],a[2]=f[2]+c[2],a},h.forEach=function(){var a=h.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=3),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],a[2]=b[h+2],f(a,a,g),b[h]=a[0],b[h+1]=a[1],b[h+2]=a[2];return b}}(),h.str=function(a){return"vec3("+a[0]+", "+a[1]+", "+a[2]+")"},"undefined"!=typeof a&&(a.vec3=h);var i={};i.create=function(){var a=new c(4);return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a},i.clone=function(a){var b=new c(4);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},i.fromValues=function(a,b,d,e){var f=new c(4);return f[0]=a,f[1]=b,f[2]=d,f[3]=e,f},i.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a},i.set=function(a,b,c,d,e){return a[0]=b,a[1]=c,a[2]=d,a[3]=e,a},i.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a[2]=b[2]+c[2],a[3]=b[3]+c[3],a},i.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a[2]=b[2]-c[2],a[3]=b[3]-c[3],a},i.sub=i.subtract,i.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a[2]=b[2]*c[2],a[3]=b[3]*c[3],a},i.mul=i.multiply,i.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a[2]=b[2]/c[2],a[3]=b[3]/c[3],a},i.div=i.divide,i.min=function(a,b,c){return a[0]=Math.min(b[0],c[0]),a[1]=Math.min(b[1],c[1]),a[2]=Math.min(b[2],c[2]),a[3]=Math.min(b[3],c[3]),a},i.max=function(a,b,c){return a[0]=Math.max(b[0],c[0]),a[1]=Math.max(b[1],c[1]),a[2]=Math.max(b[2],c[2]),a[3]=Math.max(b[3],c[3]),a},i.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a[2]=b[2]*c,a[3]=b[3]*c,a},i.scaleAndAdd=function(a,b,c,d){return a[0]=b[0]+c[0]*d,a[1]=b[1]+c[1]*d,a[2]=b[2]+c[2]*d,a[3]=b[3]+c[3]*d,a},i.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2],f=b[3]-a[3];return Math.sqrt(c*c+d*d+e*e+f*f)},i.dist=i.distance,i.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2],f=b[3]-a[3];return c*c+d*d+e*e+f*f},i.sqrDist=i.squaredDistance,i.length=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return Math.sqrt(b*b+c*c+d*d+e*e)},i.len=i.length,i.squaredLength=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return b*b+c*c+d*d+e*e},i.sqrLen=i.squaredLength,i.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a[3]=-b[3],a},i.inverse=function(a,b){return a[0]=1/b[0],a[1]=1/b[1],a[2]=1/b[2],a[3]=1/b[3],a},i.normalize=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c*c+d*d+e*e+f*f;return g>0&&(g=1/Math.sqrt(g),a[0]=b[0]*g,a[1]=b[1]*g,a[2]=b[2]*g,a[3]=b[3]*g),a},i.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]},i.lerp=function(a,b,c,d){var e=b[0],f=b[1],g=b[2],h=b[3];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a[2]=g+d*(c[2]-g),a[3]=h+d*(c[3]-h),a},i.random=function(a,b){return b=b||1,a[0]=d(),a[1]=d(),a[2]=d(),a[3]=d(),i.normalize(a,a),i.scale(a,a,b),a},i.transformMat4=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3];return a[0]=c[0]*d+c[4]*e+c[8]*f+c[12]*g,a[1]=c[1]*d+c[5]*e+c[9]*f+c[13]*g,a[2]=c[2]*d+c[6]*e+c[10]*f+c[14]*g,a[3]=c[3]*d+c[7]*e+c[11]*f+c[15]*g,a},i.transformQuat=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[0],h=c[1],i=c[2],j=c[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return a[0]=k*j+n*-g+l*-i-m*-h,a[1]=l*j+n*-h+m*-g-k*-i,a[2]=m*j+n*-i+k*-h-l*-g,a},i.forEach=function(){var a=i.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=4),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],a[2]=b[h+2],a[3]=b[h+3],f(a,a,g),b[h]=a[0],b[h+1]=a[1],b[h+2]=a[2],b[h+3]=a[3];return b}}(),i.str=function(a){return"vec4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"},"undefined"!=typeof a&&(a.vec4=i);var j={};j.create=function(){var a=new c(4);return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a},j.clone=function(a){var b=new c(4);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},j.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a},j.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a},j.transpose=function(a,b){if(a===b){var c=b[1];a[1]=b[2],a[2]=c}else a[0]=b[0],a[1]=b[2],a[2]=b[1],a[3]=b[3];return a},j.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c*f-e*d;return g?(g=1/g,a[0]=f*g,a[1]=-d*g,a[2]=-e*g,a[3]=c*g,a):null},j.adjoint=function(a,b){var c=b[0];return a[0]=b[3],a[1]=-b[1],a[2]=-b[2],a[3]=c,a},j.determinant=function(a){return a[0]*a[3]-a[2]*a[1]},j.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=c[0],i=c[1],j=c[2],k=c[3];return a[0]=d*h+f*i,a[1]=e*h+g*i,a[2]=d*j+f*k,a[3]=e*j+g*k,a},j.mul=j.multiply,j.rotate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i+f*h,a[1]=e*i+g*h,a[2]=d*-h+f*i,a[3]=e*-h+g*i,a},j.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=c[0],i=c[1];return a[0]=d*h,a[1]=e*h,a[2]=f*i,a[3]=g*i,a},j.str=function(a){return"mat2("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"},j.frob=function(a){return Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)+Math.pow(a[3],2))},j.LDU=function(a,b,c,d){return a[2]=d[2]/d[0],c[0]=d[0],c[1]=d[1],c[3]=d[3]-a[2]*c[1],[a,b,c]},"undefined"!=typeof a&&(a.mat2=j);var k={};k.create=function(){var a=new c(6);return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a[4]=0,a[5]=0,a},k.clone=function(a){var b=new c(6);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b},k.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a},k.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a[4]=0,a[5]=0,a},k.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=c*f-d*e;return i?(i=1/i,a[0]=f*i,a[1]=-d*i,a[2]=-e*i,a[3]=c*i,a[4]=(e*h-f*g)*i,a[5]=(d*g-c*h)*i,a):null},k.determinant=function(a){return a[0]*a[3]-a[1]*a[2]},k.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=c[0],k=c[1],l=c[2],m=c[3],n=c[4],o=c[5];return a[0]=d*j+f*k,a[1]=e*j+g*k,a[2]=d*l+f*m,a[3]=e*l+g*m,a[4]=d*n+f*o+h,a[5]=e*n+g*o+i,a},k.mul=k.multiply,k.rotate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=Math.sin(c),k=Math.cos(c);return a[0]=d*k+f*j,a[1]=e*k+g*j,a[2]=d*-j+f*k,a[3]=e*-j+g*k,a[4]=h,a[5]=i,a},k.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=c[0],k=c[1];return a[0]=d*j,a[1]=e*j,a[2]=f*k,a[3]=g*k,a[4]=h,a[5]=i,a},k.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=c[0],k=c[1];return a[0]=d,a[1]=e,a[2]=f,a[3]=g,a[4]=d*j+f*k+h,a[5]=e*j+g*k+i,a},k.str=function(a){return"mat2d("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+")"},k.frob=function(a){return Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)+Math.pow(a[3],2)+Math.pow(a[4],2)+Math.pow(a[5],2)+1)},"undefined"!=typeof a&&(a.mat2d=k);var l={};l.create=function(){var a=new c(9);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},l.fromMat4=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[4],a[4]=b[5],a[5]=b[6],a[6]=b[8],a[7]=b[9],a[8]=b[10],a},l.clone=function(a){var b=new c(9);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},l.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a},l.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},l.transpose=function(a,b){if(a===b){var c=b[1],d=b[2],e=b[5];a[1]=b[3],a[2]=b[6],a[3]=c,a[5]=b[7],a[6]=d,a[7]=e}else a[0]=b[0],a[1]=b[3],a[2]=b[6],a[3]=b[1],a[4]=b[4],a[5]=b[7],a[6]=b[2],a[7]=b[5],a[8]=b[8];return a},l.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=k*g-h*j,m=-k*f+h*i,n=j*f-g*i,o=c*l+d*m+e*n;return o?(o=1/o,a[0]=l*o,a[1]=(-k*d+e*j)*o,a[2]=(h*d-e*g)*o,a[3]=m*o,a[4]=(k*c-e*i)*o,a[5]=(-h*c+e*f)*o,a[6]=n*o,a[7]=(-j*c+d*i)*o,a[8]=(g*c-d*f)*o,a):null},l.adjoint=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8];return a[0]=g*k-h*j,a[1]=e*j-d*k,a[2]=d*h-e*g,a[3]=h*i-f*k,a[4]=c*k-e*i,a[5]=e*f-c*h,a[6]=f*j-g*i,a[7]=d*i-c*j,a[8]=c*g-d*f,a},l.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8];return b*(j*f-g*i)+c*(-j*e+g*h)+d*(i*e-f*h)},l.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=c[0],n=c[1],o=c[2],p=c[3],q=c[4],r=c[5],s=c[6],t=c[7],u=c[8];return a[0]=m*d+n*g+o*j,a[1]=m*e+n*h+o*k,a[2]=m*f+n*i+o*l,a[3]=p*d+q*g+r*j,a[4]=p*e+q*h+r*k,a[5]=p*f+q*i+r*l,a[6]=s*d+t*g+u*j,a[7]=s*e+t*h+u*k,a[8]=s*f+t*i+u*l,a},l.mul=l.multiply,l.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=c[0],n=c[1];return a[0]=d,a[1]=e,a[2]=f,a[3]=g,a[4]=h,a[5]=i,a[6]=m*d+n*g+j,a[7]=m*e+n*h+k,a[8]=m*f+n*i+l,a},l.rotate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=Math.sin(c),n=Math.cos(c);return a[0]=n*d+m*g,a[1]=n*e+m*h,a[2]=n*f+m*i,a[3]=n*g-m*d,a[4]=n*h-m*e,a[5]=n*i-m*f,a[6]=j,a[7]=k,a[8]=l,a},l.scale=function(a,b,c){var d=c[0],e=c[1];return a[0]=d*b[0],a[1]=d*b[1],a[2]=d*b[2],a[3]=e*b[3],a[4]=e*b[4],a[5]=e*b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a},l.fromMat2d=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=0,a[3]=b[2],a[4]=b[3],a[5]=0,a[6]=b[4],a[7]=b[5],a[8]=1,a},l.fromQuat=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c+c,h=d+d,i=e+e,j=c*g,k=d*g,l=d*h,m=e*g,n=e*h,o=e*i,p=f*g,q=f*h,r=f*i;return a[0]=1-l-o,a[3]=k-r,a[6]=m+q,a[1]=k+r,a[4]=1-j-o,a[7]=n-p,a[2]=m-q,a[5]=n+p,a[8]=1-j-l,a},l.normalFromMat4=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=b[9],m=b[10],n=b[11],o=b[12],p=b[13],q=b[14],r=b[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=s*D-t*C+u*B+v*A-w*z+x*y;return E?(E=1/E,a[0]=(h*D-i*C+j*B)*E,a[1]=(i*A-g*D-j*z)*E,a[2]=(g*C-h*A+j*y)*E,a[3]=(e*C-d*D-f*B)*E,a[4]=(c*D-e*A+f*z)*E,a[5]=(d*A-c*C-f*y)*E,a[6]=(p*x-q*w+r*v)*E,a[7]=(q*u-o*x-r*t)*E,a[8]=(o*w-p*u+r*s)*E,a):null},l.str=function(a){return"mat3("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+")"},l.frob=function(a){return Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)+Math.pow(a[3],2)+Math.pow(a[4],2)+Math.pow(a[5],2)+Math.pow(a[6],2)+Math.pow(a[7],2)+Math.pow(a[8],2))},"undefined"!=typeof a&&(a.mat3=l);var m={};m.create=function(){var a=new c(16);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},m.clone=function(a){var b=new c(16);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15],b},m.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15],a},m.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},m.transpose=function(a,b){if(a===b){var c=b[1],d=b[2],e=b[3],f=b[6],g=b[7],h=b[11];a[1]=b[4],a[2]=b[8],a[3]=b[12],a[4]=c,a[6]=b[9],a[7]=b[13],a[8]=d,a[9]=f,a[11]=b[14],a[12]=e,a[13]=g,a[14]=h}else a[0]=b[0],a[1]=b[4],a[2]=b[8],a[3]=b[12],a[4]=b[1],a[5]=b[5],a[6]=b[9],a[7]=b[13],a[8]=b[2],a[9]=b[6],a[10]=b[10],a[11]=b[14],a[12]=b[3],a[13]=b[7],a[14]=b[11],a[15]=b[15];return a},m.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=b[9],m=b[10],n=b[11],o=b[12],p=b[13],q=b[14],r=b[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=s*D-t*C+u*B+v*A-w*z+x*y;return E?(E=1/E,a[0]=(h*D-i*C+j*B)*E,a[1]=(e*C-d*D-f*B)*E,a[2]=(p*x-q*w+r*v)*E,a[3]=(m*w-l*x-n*v)*E,a[4]=(i*A-g*D-j*z)*E,a[5]=(c*D-e*A+f*z)*E,a[6]=(q*u-o*x-r*t)*E,a[7]=(k*x-m*u+n*t)*E,a[8]=(g*C-h*A+j*y)*E,a[9]=(d*A-c*C-f*y)*E,a[10]=(o*w-p*u+r*s)*E,a[11]=(l*u-k*w-n*s)*E,a[12]=(h*z-g*B-i*y)*E,a[13]=(c*B-d*z+e*y)*E,a[14]=(p*t-o*v-q*s)*E,a[15]=(k*v-l*t+m*s)*E,a):null},m.adjoint=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=b[9],m=b[10],n=b[11],o=b[12],p=b[13],q=b[14],r=b[15];return a[0]=h*(m*r-n*q)-l*(i*r-j*q)+p*(i*n-j*m),a[1]=-(d*(m*r-n*q)-l*(e*r-f*q)+p*(e*n-f*m)),a[2]=d*(i*r-j*q)-h*(e*r-f*q)+p*(e*j-f*i),a[3]=-(d*(i*n-j*m)-h*(e*n-f*m)+l*(e*j-f*i)),a[4]=-(g*(m*r-n*q)-k*(i*r-j*q)+o*(i*n-j*m)),a[5]=c*(m*r-n*q)-k*(e*r-f*q)+o*(e*n-f*m),a[6]=-(c*(i*r-j*q)-g*(e*r-f*q)+o*(e*j-f*i)),a[7]=c*(i*n-j*m)-g*(e*n-f*m)+k*(e*j-f*i),a[8]=g*(l*r-n*p)-k*(h*r-j*p)+o*(h*n-j*l),a[9]=-(c*(l*r-n*p)-k*(d*r-f*p)+o*(d*n-f*l)),a[10]=c*(h*r-j*p)-g*(d*r-f*p)+o*(d*j-f*h),a[11]=-(c*(h*n-j*l)-g*(d*n-f*l)+k*(d*j-f*h)),a[12]=-(g*(l*q-m*p)-k*(h*q-i*p)+o*(h*m-i*l)),a[13]=c*(l*q-m*p)-k*(d*q-e*p)+o*(d*m-e*l),a[14]=-(c*(h*q-i*p)-g*(d*q-e*p)+o*(d*i-e*h)),a[15]=c*(h*m-i*l)-g*(d*m-e*l)+k*(d*i-e*h),a},m.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11],n=a[12],o=a[13],p=a[14],q=a[15],r=b*g-c*f,s=b*h-d*f,t=b*i-e*f,u=c*h-d*g,v=c*i-e*g,w=d*i-e*h,x=j*o-k*n,y=j*p-l*n,z=j*q-m*n,A=k*p-l*o,B=k*q-m*o,C=l*q-m*p;return r*C-s*B+t*A+u*z-v*y+w*x},m.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],o=b[11],p=b[12],q=b[13],r=b[14],s=b[15],t=c[0],u=c[1],v=c[2],w=c[3];return a[0]=t*d+u*h+v*l+w*p,a[1]=t*e+u*i+v*m+w*q,a[2]=t*f+u*j+v*n+w*r,a[3]=t*g+u*k+v*o+w*s,t=c[4],u=c[5],v=c[6],w=c[7],a[4]=t*d+u*h+v*l+w*p,a[5]=t*e+u*i+v*m+w*q,a[6]=t*f+u*j+v*n+w*r,a[7]=t*g+u*k+v*o+w*s,t=c[8],u=c[9],v=c[10],w=c[11],a[8]=t*d+u*h+v*l+w*p,a[9]=t*e+u*i+v*m+w*q,a[10]=t*f+u*j+v*n+w*r,a[11]=t*g+u*k+v*o+w*s,t=c[12],u=c[13],v=c[14],w=c[15],a[12]=t*d+u*h+v*l+w*p,a[13]=t*e+u*i+v*m+w*q,a[14]=t*f+u*j+v*n+w*r,a[15]=t*g+u*k+v*o+w*s,a},m.mul=m.multiply,m.translate=function(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p=c[0],q=c[1],r=c[2];return b===a?(a[12]=b[0]*p+b[4]*q+b[8]*r+b[12],a[13]=b[1]*p+b[5]*q+b[9]*r+b[13],a[14]=b[2]*p+b[6]*q+b[10]*r+b[14],a[15]=b[3]*p+b[7]*q+b[11]*r+b[15]):(d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],o=b[11],a[0]=d,a[1]=e,a[2]=f,a[3]=g,a[4]=h,a[5]=i,a[6]=j,a[7]=k,a[8]=l,a[9]=m,a[10]=n,a[11]=o,a[12]=d*p+h*q+l*r+b[12],a[13]=e*p+i*q+m*r+b[13],a[14]=f*p+j*q+n*r+b[14],a[15]=g*p+k*q+o*r+b[15]),a},m.scale=function(a,b,c){var d=c[0],e=c[1],f=c[2];return a[0]=b[0]*d,a[1]=b[1]*d,a[2]=b[2]*d,a[3]=b[3]*d,a[4]=b[4]*e,a[5]=b[5]*e,a[6]=b[6]*e,a[7]=b[7]*e,a[8]=b[8]*f,a[9]=b[9]*f,a[10]=b[10]*f,a[11]=b[11]*f,a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15],a},m.rotate=function(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D=e[0],E=e[1],F=e[2],G=Math.sqrt(D*D+E*E+F*F);return Math.abs(G)g?(h.cross(a,b,e),h.length(a)<1e-6&&h.cross(a,c,e),h.normalize(a,a),n.setAxisAngle(d,a,Math.PI),d):g>.999999?(d[0]=0,d[1]=0,d[2]=0,d[3]=1,d):(h.cross(a,e,f),d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=1+g,n.normalize(d,d))}}(),n.setAxes=function(){var a=l.create();return function(b,c,d,e){return a[0]=d[0],a[3]=d[1],a[6]=d[2],a[1]=e[0],a[4]=e[1],a[7]=e[2],a[2]=-c[0],a[5]=-c[1],a[8]=-c[2],n.normalize(b,n.fromMat3(b,a))}}(),n.clone=i.clone,n.fromValues=i.fromValues,n.copy=i.copy,n.set=i.set,n.identity=function(a){return a[0]=0,a[1]=0,a[2]=0,a[3]=1,a},n.setAxisAngle=function(a,b,c){c=.5*c;var d=Math.sin(c);return a[0]=d*b[0],a[1]=d*b[1],a[2]=d*b[2],a[3]=Math.cos(c),a},n.add=i.add,n.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=c[0],i=c[1],j=c[2],k=c[3];return a[0]=d*k+g*h+e*j-f*i,a[1]=e*k+g*i+f*h-d*j,a[2]=f*k+g*j+d*i-e*h,a[3]=g*k-d*h-e*i-f*j,a},n.mul=n.multiply,n.scale=i.scale,n.rotateX=function(a,b,c){c*=.5;var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i+g*h,a[1]=e*i+f*h,a[2]=f*i-e*h,a[3]=g*i-d*h,a},n.rotateY=function(a,b,c){c*=.5;var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i-f*h,a[1]=e*i+g*h,a[2]=f*i+d*h,a[3]=g*i-e*h,a},n.rotateZ=function(a,b,c){c*=.5;var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i+e*h,a[1]=e*i-d*h,a[2]=f*i+g*h,a[3]=g*i-f*h,a},n.calculateW=function(a,b){var c=b[0],d=b[1],e=b[2];return a[0]=c,a[1]=d,a[2]=e,a[3]=Math.sqrt(Math.abs(1-c*c-d*d-e*e)),a},n.dot=i.dot,n.lerp=i.lerp,n.slerp=function(a,b,c,d){var e,f,g,h,i,j=b[0],k=b[1],l=b[2],m=b[3],n=c[0],o=c[1],p=c[2],q=c[3];return f=j*n+k*o+l*p+m*q,0>f&&(f=-f,n=-n,o=-o,p=-p,q=-q),1-f>1e-6?(e=Math.acos(f),g=Math.sin(e),h=Math.sin((1-d)*e)/g,i=Math.sin(d*e)/g):(h=1-d,i=d),a[0]=h*j+i*n,a[1]=h*k+i*o,a[2]=h*l+i*p,a[3]=h*m+i*q,a},n.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c*c+d*d+e*e+f*f,h=g?1/g:0;return a[0]=-c*h,a[1]=-d*h,a[2]=-e*h,a[3]=f*h,a},n.conjugate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a[3]=b[3],a},n.length=i.length,n.len=n.length,n.squaredLength=i.squaredLength,n.sqrLen=n.squaredLength,n.normalize=i.normalize,n.fromMat3=function(a,b){var c,d=b[0]+b[4]+b[8];if(d>0)c=Math.sqrt(d+1),a[3]=.5*c,c=.5/c,a[0]=(b[5]-b[7])*c,a[1]=(b[6]-b[2])*c,a[2]=(b[1]-b[3])*c;else{var e=0;b[4]>b[0]&&(e=1),b[8]>b[3*e+e]&&(e=2);var f=(e+1)%3,g=(e+2)%3;c=Math.sqrt(b[3*e+e]-b[3*f+f]-b[3*g+g]+1),a[e]=.5*c,c=.5/c,a[3]=(b[3*f+g]-b[3*g+f])*c,a[f]=(b[3*f+e]+b[3*e+f])*c,a[g]=(b[3*g+e]+b[3*e+g])*c}return a},n.str=function(a){return"quat("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"},"undefined"!=typeof a&&(a.quat=n)}(b.exports)}(this);var Q_X=0,Q_Y=1,Q_Z=2,Q_W=3;dualQuat.prototype.reset=function(){quat.identity(this.real),this.real[Q_W]=0,quat.identity(this.imaginary),this.imaginary[Q_W]=0,quat.identity(this.tmpQ1)},dualQuat.prototype.createFromData=function(a,b){this.real=a,this.imaginary=quat.create(),this.imaginary[Q_W]=-.5*(b[Q_X]*a[Q_X]+b[Q_Y]*a[Q_Y]+b[Q_Z]*a[Q_Z]),this.imaginary[Q_X]=.5*(b[Q_X]*a[Q_W]+b[Q_Y]*a[Q_Z]-b[Q_Z]*a[Q_Y]),this.imaginary[Q_Y]=.5*(-b[Q_X]*a[Q_Z]+b[Q_Y]*a[Q_W]+b[Q_Z]*a[Q_X]),this.imaginary[Q_Z]=.5*(b[Q_X]*a[Q_Y]-b[Q_Y]*a[Q_X]+b[Q_Z]*a[Q_W])},dualQuat.prototype.add=function(a,b,c){quat.copy(this.tmpQ1,a.real),quat.scale(this.tmpQ1,this.tmpQ1,b),quat.add(this.real,this.tmpQ1,this.real),quat.copy(this.tmpQ1,a.imaginary), -quat.scale(this.tmpQ1,this.tmpQ1,c),quat.add(this.imaginary,this.tmpQ1,this.imaginary)},dualQuat.prototype.normalize=function(){var a=quat.length(this.real);this.real=quat.scale(this.real,this.real,1/a),this.imaginary=quat.scale(this.imaginary,this.imaginary,1/a)};var v0=vec3.create(),ve=vec3.create(),trans=vec3.create(),tmpVec1=vec3.create(),tmpVec2=vec3.create(),tmpVec0=vec3.create(),aVec=vec3.create(),rot=vec3.create();dualQuat.prototype.transform=function(a){return v0[Q_X]=this.real[Q_X],v0[Q_Y]=this.real[Q_Y],v0[Q_Z]=this.real[Q_Z],ve[Q_X]=this.imaginary[Q_X],ve[Q_Y]=this.imaginary[Q_Y],ve[Q_Z]=this.imaginary[Q_Z],tmpVec1=vec3.scale(tmpVec1,v0,this.imaginary[Q_W]),tmpVec2=vec3.cross(tmpVec2,v0,ve),tmpVec0=vec3.scale(tmpVec0,ve,this.real[Q_W]),aVec=vec3.subtract(aVec,tmpVec0,tmpVec1),trans=vec3.add(trans,aVec,tmpVec2),trans=vec3.scale(trans,trans,2),rot=vec3.transformQuat(rot,a,this.real),rot=vec3.add(rot,rot,trans)};var Utils={};Utils.setAxisMatrix=function(a,b,c){var d=mat4.create(),e=0,f=4,g=8,h=12,i=1,j=5,k=9,l=13,m=2,n=6,o=10,p=14,q=3,r=7,s=11,t=15;return d[e]=a[Q_X],d[f]=a[Q_Y],d[g]=a[Q_Z],d[i]=b[Q_X],d[j]=b[Q_Y],d[k]=b[Q_Z],d[m]=c[Q_X],d[n]=c[Q_Y],d[o]=c[Q_Z],d[h]=0,d[l]=0,d[p]=0,d[q]=0,d[r]=0,d[s]=0,d[t]=1,d=mat4.transpose(d,d)},Utils.matrixToQuat=function(a){var b,c=quat.create(),d=a,e=d[0],f=d[4],g=d[8],h=d[1],i=d[5],j=d[9],k=d[2],l=d[6],m=d[10],n=e+i+m;return n>0?(b=.5/Math.sqrt(n+1),c[Q_W]=.25/b,c[Q_X]=(l-j)*b,c[Q_Y]=(g-k)*b,c[Q_Z]=(h-f)*b):e>i&&e>m?(b=2*Math.sqrt(1+e-i-m),c[Q_W]=(l-j)/b,c[Q_X]=.25*b,c[Q_Y]=(f+h)/b,c[Q_Z]=(g+k)/b):i>m?(b=2*Math.sqrt(1+i-e-m),c[Q_W]=(g-k)/b,c[Q_X]=(f+h)/b,c[Q_Y]=.25*b,c[Q_Z]=(j+l)/b):(b=2*Math.sqrt(1+m-e-i),c[Q_W]=(h-f)/b,c[Q_X]=(g+k)/b,c[Q_Y]=(j+l)/b,c[Q_Z]=.25*b),c},Utils.rotateVec_90=function(a){var b=vec3.fromValues(-a[Q_Y],a[Q_X],a[Q_Z]);return b},Utils.calcRotateMat=function(a){var b=vec3.clone(a);b=vec3.normalize(b,b);var c=Utils.rotateVec_90(b),d=vec3.fromValues(b[Q_X],b[Q_Y],0),e=vec3.fromValues(c[Q_X],c[Q_Y],0),f=vec3.fromValues(0,0,1),g=mat4.create();return g=Utils.setAxisMatrix(d,e,f)},Utils.getMatTranslate=function(a){var b=vec3.create();return b[Q_X]=a[12],b[Q_Y]=a[13],b[Q_Z]=a[14],b},Utils.addMat=function(a,b){for(var c=mat4.create(),d=0;16>d;d++)c[d]=a[d]+b[d];return c},Utils.mulMat=function(a,b){for(var c=mat4.create(),d=0;16>d;d++)c[d]=a[d]*b;return c},Utils.clamp=function(a,b,c){return b>a?b:a>c?c:a};var newVec1=vec3.create(),newVec2=vec3.create();Utils.vecInterp=function(a,b,c){newVec1=vec3.scale(newVec1,a,1-c),newVec2=vec3.scale(newVec2,b,c);var d=vec3.create();return d=vec3.add(d,newVec1,newVec2)},Utils.vec2Interp=function(a,b,c){var d=vec2.create(),e=vec2.create();d=vec2.scale(d,a,1-c),e=vec2.scale(e,b,c);var f=vec2.create();return f=vec2.add(f,d,e)},MeshBone.prototype.setRestParentMat=function(a,b){this.rest_parent_mat=a,null==b?(this.rest_parent_inv_mat=mat4.clone(this.rest_parent_mat),mat4.invert(this.rest_parent_inv_mat,this.rest_parent_inv_mat)):this.rest_parent_inv_mat=mat4.clone(b)},MeshBone.prototype.setParentWorldMat=function(a){this.parent_world_mat=a},MeshBone.prototype.setParentWorldInvMat=function(a){this.parent_world_inv_mat=a},MeshBone.prototype.getLocalRestStartPt=function(){return this.local_rest_start_pt},MeshBone.prototype.getLocalRestEndPt=function(){return this.local_rest_end_pt},MeshBone.prototype.setLocalRestStartPt=function(a){this.local_rest_start_pt=vec3.create(),this.local_rest_start_pt=vec3.transformMat4(this.local_rest_start_pt,a,this.rest_parent_inv_mat),this.calcRestData()},MeshBone.prototype.setLocalRestEndPt=function(a){this.local_rest_end_pt=vec3.create(),this.local_rest_end_pt=vec3.transformMat4(this.local_rest_end_pt,a,this.rest_parent_inv_mat),this.calcRestData()},MeshBone.prototype.calcRestData=function(){if(null!=this.local_rest_start_pt&&null!=this.local_rest_end_pt){var a=this.computeDirs(this.local_rest_start_pt,this.local_rest_end_pt);this.local_rest_dir=a.first,this.local_rest_normal_dir=a.second,this.computeRestLength()}},MeshBone.prototype.setWorldStartPt=function(a){this.world_start_pt=a},MeshBone.prototype.setWorldEndPt=function(a){this.world_end_pt=a},MeshBone.prototype.fixDQs=function(a){quat.dot(this.world_dq.real,a.real)<0&&(this.world_dq.real=quat.scale(this.world_dq.real,this.world_dq.real,-1),this.world_dq.imaginary=quat.scale(this.world_dq.imaginary,this.world_dq.imaginary,-1));for(var b=0;bf;f++)accum_mat[f]=0;for(var g=Object.keys(c),f=(g.length,0),h=this.getNumPts();h>f;f++){var i=vec3.set(tmp1,this.store_rest_pts[0+d],this.store_rest_pts[1+d],this.store_rest_pts[2+d]);1==this.use_local_displacements&&(i[Q_X]+=this.local_displacements[f][Q_X],i[Q_Y]+=this.local_displacements[f][Q_Y]);for(var j=0;16>j;j++)accum_mat[j]=0;accum_dq.reset();for(var k=this.relevant_bones_indices[f],l=k.length,j=0;l>j;j++){var m=k[j],n=this.fast_bones_map[m],o=this.fast_normal_weight_map[m][f],p=o,q=n.getWorldDq();accum_dq.add(q,o,p)}accum_dq.normalize();var r=vec3.set(tmp2,i[Q_X],i[Q_Y],i[Q_Z]);final_pt=accum_dq.transform(r),1==this.use_post_displacements&&(final_pt[Q_X]+=this.post_displacements[f][Q_X],final_pt[Q_Y]+=this.post_displacements[f][Q_Y]),a[0+e]=final_pt[Q_X],a[1+e]=final_pt[Q_Y],a[2+e]=final_pt[Q_Z],d+=3,e+=3}1==this.use_uv_warp&&this.runUvWarp()},MeshRenderRegion.prototype.setMainBoneKey=function(a){this.main_bone_key=a},MeshRenderRegion.prototype.determineMainBone=function(a){this.main_bone=a.getChildByKey(this.main_bone_key)},MeshRenderRegion.prototype.setUseDq=function(a){this.use_dq=a},MeshRenderRegion.prototype.setName=function(a){this.name=a},MeshRenderRegion.prototype.getName=function(){return this.name},MeshRenderRegion.prototype.setUseLocalDisplacements=function(a){if(this.use_local_displacements=a,this.local_displacements.length!=this.getNumPts()&&this.use_local_displacements){this.local_displacements=[];for(var b=0;bd&&f.push(g)}this.relevant_bones_indices.push(f)}for(var b in a){var i=a[b];this.fast_bones_map.push(i)}},MeshRenderRegion.prototype.initUvWarp=function(){var a=this.getUVsIndex();this.uv_warp_ref_uvs=[];for(var b=0;bd;d++)this.bone_cache_table.push([]),this.bone_cache_data_ready.push(!1);this.is_ready=!1},MeshBoneCacheManager.prototype.getStartTime=function(){return this.start_time},MeshBoneCacheManager.prototype.getEndime=function(){return this.end_time},MeshBoneCacheManager.prototype.getIndexByTime=function(a){var b=a-this.start_time;return b=Utils.clamp(b,0,this.bone_cache_table.length-1)},MeshBoneCacheManager.prototype.retrieveValuesAtTime=function(a,b){var c=this.getIndexByTime(Math.floor(a)),d=this.getIndexByTime(Math.ceil(a)),e=a-Math.floor(a);if(0!=this.bone_cache_data_ready.length&&0!=this.bone_cache_data_ready[c]&&0!=this.bone_cache_data_ready[d])for(var f=this.bone_cache_table[c],g=this.bone_cache_table[d],h=0,i=f.length;i>h;h++){var j=f[h],k=g[h],l=j.getKey(),m=Utils.vecInterp(j.getWorldStartPt(),k.getWorldStartPt(),e),n=Utils.vecInterp(j.getWorldEndPt(),k.getWorldEndPt(),e);b[l].setWorldStartPt(m),b[l].setWorldEndPt(n)}},MeshBoneCacheManager.prototype.allReady=function(){if(this.is_ready)return!0;for(var a=this.end_time-this.start_time+1,b=0,c=0;cd;d++)this.displacement_cache_table.push([]),this.displacement_cache_data_ready.push(!1);this.is_ready=!1},MeshDisplacementCacheManager.prototype.getStartTime=function(){return this.start_time},MeshDisplacementCacheManager.prototype.getEndime=function(){return this.end_time},MeshDisplacementCacheManager.prototype.getIndexByTime=function(a){var b=a-this.start_time;return b=Utils.clamp(b,0,this.displacement_cache_table.length-1)},MeshDisplacementCacheManager.prototype.retrieveValuesAtTime=function(a,b){var c=this.getIndexByTime(Math.floor(a)),d=this.getIndexByTime(Math.ceil(a)),e=a-Math.floor(a);if(0!=this.displacement_cache_data_ready.length&&0!=this.displacement_cache_data_ready[c]&&0!=this.displacement_cache_data_ready[d])for(var f=this.displacement_cache_table[c],g=this.displacement_cache_table[d],h=0;hd;d++)this.uv_cache_table.push([]),this.uv_cache_data_ready.push(!1);this.is_ready=!1},MeshUVWarpCacheManager.prototype.getStartTime=function(){return this.start_time},MeshUVWarpCacheManager.prototype.getEndime=function(){return this.end_time},MeshUVWarpCacheManager.prototype.getIndexByTime=function(a){var b=a-this.start_time;return b=Utils.clamp(b,0,this.uv_cache_table.length-1)},MeshUVWarpCacheManager.prototype.retrieveValuesAtTime=function(a,b){var c=this.getIndexByTime(Math.floor(a)),d=this.getIndexByTime(Math.ceil(a));a-Math.floor(a);if(0!=this.uv_cache_data_ready.length&&0!=this.uv_cache_data_ready[c]&&0!=this.uv_cache_data_ready[d])for(var e=this.uv_cache_table[c],f=this.uv_cache_table[d],g=0;gf;f++){var g=2*f;d.push(vec2.fromValues(c[0+g],c[1+g]))}return d},CreatureModuleUtils.ReadFloatArray3DJSON=function(a,b){for(var c=CreatureModuleUtils.getFloatArray(a[b]),d=[],e=c.length/2,f=0;e>f;f++){var g=2*f;d.push(c[0+g]),d.push(c[1+g]),d.push(0)}return d},CreatureModuleUtils.ReadBoolJSON=function(a,b){var c=a[b];return c},CreatureModuleUtils.ReadFloatArrayJSON=function(a,b){return a[b]},CreatureModuleUtils.ReadIntArrayJSON=function(a,b){return a[b]},CreatureModuleUtils.ReadMatrixJSON=function(a,b){for(var c=CreatureModuleUtils.getFloatArray(a[b]),d=mat4.create(),e=0;16>e;e++)d[e]=c[e];return d},CreatureModuleUtils.ReadVector2JSON=function(a,b){var c=CreatureModuleUtils.getFloatArray(a[b]);return vec2.fromValues(c[0],c[1])},CreatureModuleUtils.ReadVector3JSON=function(a,b){var c=CreatureModuleUtils.getFloatArray(a[b]);return vec3.fromValues(c[0],c[1],0)},CreatureModuleUtils.CreateBones=function(a,b){var c=null,d=a[b],e={},f={};for(var g in d){var h=d[g],i=h.id,j=CreatureModuleUtils.ReadMatrixJSON(h,"restParentMat"),k=CreatureModuleUtils.ReadVector3JSON(h,"localRestStartPt"),l=CreatureModuleUtils.ReadVector3JSON(h,"localRestEndPt"),m=CreatureModuleUtils.ReadIntArrayJSON(h,"children"),n=new MeshBone(g,vec3.create(),vec3.create(),j);n.local_rest_start_pt=k,n.local_rest_end_pt=l,n.calcRestData(),n.setTagId(i),e[i]={first:n,second:m};for(var o=0;od&&(d=h),c>h&&(c=h))}return{first:c,second:d}},CreatureModuleUtils.FillBoneCache=function(a,b,c,d,e){var f=a[b];e.init(c,d);for(var g in f){var h=f[g];cache_list=[];for(var i in h){var j=h[i],k=CreatureModuleUtils.ReadVector3JSON(j,"start_pt"),l=CreatureModuleUtils.ReadVector3JSON(j,"end_pt"),m=new MeshBoneCache(i);m.setWorldStartPt(k),m.setWorldEndPt(l),cache_list.push(m)}var n=e.getIndexByTime(g);e.bone_cache_table[n]=cache_list}e.makeAllReady()},CreatureModuleUtils.FillDeformationCache=function(a,b,c,d,e){var f=a[b];e.init(c,d);for(var g in f){var h=f[g],i=[];for(var j in h){var k=h[j],l=new MeshDisplacementCache(j),m=CreatureModuleUtils.ReadBoolJSON(k,"use_local_displacements"),n=CreatureModuleUtils.ReadBoolJSON(k,"use_post_displacements");if(1==m){var o=CreatureModuleUtils.ReadPointsArray2DJSON(k,"local_displacements");l.setLocalDisplacements(o)}if(1==n){var o=CreatureModuleUtils.ReadPointsArray2DJSON(k,"post_displacements");l.setPostDisplacements(o)}i.push(l)}var p=e.getIndexByTime(g);e.displacement_cache_table[p]=i}e.makeAllReady()},CreatureModuleUtils.FillUVSwapCache=function(a,b,c,d,e){var f=a[b];e.init(c,d);for(var g in f){var h=f[g],i=[];for(var j in h){var k=h[j],l=new MeshUVWarpCache(j),m=CreatureModuleUtils.ReadBoolJSON(k,"enabled");if(l.setEnabled(m),1==m){var n=CreatureModuleUtils.ReadVector2JSON(k,"local_offset"),o=CreatureModuleUtils.ReadVector2JSON(k,"global_offset"),p=CreatureModuleUtils.ReadVector2JSON(k,"scale");l.setUvWarpLocalOffset(n),l.setUvWarpGlobalOffset(o),l.setUvWarpScale(p)}i.push(l)}var q=e.getIndexByTime(g);e.uv_cache_table[q]=i}e.makeAllReady()},Creature.prototype.FillRenderColours=function(a,b,c,d){for(var e=0;e=h&&i>=d){e=!0;break}}e&&a[d]++}this.boundary_indices=[];for(var b=0;bf&&(b[0]=f),b[1]>g&&(b[1]=g),c[0]m;m++)g[j+0]=(1-f)*h[k+0]+f*i[l+0],g[j+1]=(1-f)*h[k+1]+f*i[l+1],g[j+2]=(1-f)*h[k+2]+f*i[l+2],j+=3,k+=3,l+=3},CreatureManager.prototype.CreateAnimation=function(a,b){var c=new CreatureAnimation(a,b);this.AddAnimation(c)},CreatureManager.prototype.CreateAllAnimations=function(a){for(var b=CreatureModuleUtils.GetAllAnimationNames(a),c=0;c0)){for(var d=c.cache_pts,e=c.start_time;e<=c.end_time;e++){this.setRunTime(e);for(var f=[],g=0;g<3*this.target_creature.total_num_pts;g++)f[g]=0;this.PoseCreature(a,f),d.push(f)}this.setRunTime(b)}},CreatureManager.prototype.FillSinglePointCacheFrame=function(a,b){var c=this.getRunTime(),d=this.animations[a];this.setRunTime(b);for(var e=[],f=0;f<3*this.target_creature.total_num_pts;f++)e[f]=0;this.PoseCreature(a,e),d.fill_cache_pts.push(e),d.verifyFillCache(),this.setRunTime(c)},CreatureManager.prototype.GetIsPlaying=function(){return this.is_playing},CreatureManager.prototype.SetShouldLoop=function(a){this.should_loop=a},CreatureManager.prototype.SetUseCustomTimeRange=function(a){this.use_custom_time_range=a},CreatureManager.prototype.SetCustomTimeRange=function(a,b){this.custom_start_time=a,this.custom_end_time=b},CreatureManager.prototype.SetIsPlaying=function(a){this.is_playing=a},CreatureManager.prototype.ResetToStartTimes=function(){var a=this.animations[active_animation_name];this.run_time=a.start_time},CreatureManager.prototype.setRunTime=function(a){this.run_time=a,this.correctTime()},CreatureManager.prototype.increRunTime=function(a){this.run_time+=a,this.correctTime()},CreatureManager.prototype.correctTime=function(){var a=this.animations[this.active_animation_name],b=a.start_time,c=a.end_time;this.use_custom_time_range&&(b=this.custom_start_time,c=this.custom_end_time),this.run_time>c?this.should_loop?this.run_time=b:this.run_time=c:this.run_timea;a++){var b=this.animations[this.active_blend_animation_names[a]];b.cache_pts.length>0?b.poseFromCachePts(this.getRunTime(),this.blend_render_pts[a],this.target_creature.total_num_pts):this.PoseCreature(this.active_blend_animation_names[a],this.blend_render_pts[a])}for(var c=0;c<3*this.target_creature.total_num_pts;c++){var d=c,e=this.blend_render_pts[0][c],f=this.blend_render_pts[1][c];this.target_creature.render_pts.set(d,(1-blending_factor)*e+blending_factor*f)}}else{var b=this.animations[this.active_animation_name];b.cache_pts.length>0?b.poseFromCachePts(this.getRunTime(),this.target_creature.render_pts,this.target_creature.total_num_pts):this.PoseCreature(this.active_animation_name,this.target_creature.render_pts)}},CreatureManager.prototype.SetTimeScale=function(a){this.time_scale=a},CreatureManager.prototype.SetBlending=function(a){if(this.do_blending=a,this.do_blending){if(0==this.blend_render_pts[0].length){for(var b=[],c=0;c<3*target_creature.total_num_pts;c++)b.push(0);this.blend_render_pts.set(0,b)}if(0==this.blend_render_pts[1].length){for(var b=[],c=0;c<3*this.target_creature.total_num_pts;c++)b.push(0);this.blend_render_pts[1]=b}}},CreatureManager.prototype.SetBlendingAnimations=function(a,b){this.active_blend_animation_names[0]=a,this.active_blend_animation_names[1]=b},CreatureManager.prototype.SetBlendingFactor=function(a){this.blending_factor=a},CreatureManager.prototype.IsContactBone=function(a,b){var c=this.target_creature.render_composition.getRootBone();return this.ProcessContactBone(a,b,c)},CreatureManager.prototype.PoseCreature=function(a,b){var c=this.animations[a],d=c.bones_cache,e=c.displacement_cache,f=c.uv_warp_cache,g=this.target_creature.render_composition,h=g.getBonesMap(),i=g.getRegionsMap();d.retrieveValuesAtTime(this.getRunTime(),h),null!=this.bones_override_callback&&this.bones_override_callback(h),e.retrieveValuesAtTime(this.getRunTime(),i),f.retrieveValuesAtTime(this.getRunTime(),i);var j=g.getRegions(),k=g.getBonesMap();g.updateAllTransforms(!1);for(var l=0,m=j.length;m>l;l++){var n=j[l],o=n.getStartPtIndex();n.poseFinalPts(b,3*o,k);for(var p=3*n.getStartPtIndex(),q=3*n.getEndPtIndex(),r=p;q>=r;r+=3)b[r+2]=.001*-l}}; -//# sourceMappingURL=creature.map \ No newline at end of file diff --git a/build/custom/p2.map b/build/custom/p2.map index 703f1d345..8d02ba7fc 100644 --- a/build/custom/p2.map +++ b/build/custom/p2.map @@ -1 +1 @@ -{"version":3,"sources":["p2.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist","3","Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point","4","abs","5","./Polygon","6","name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp","7","AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body","9","NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape","10","Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary","11","Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList","14","Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation","15","DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint","16","GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis","18","PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation","19","RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation","20","./Equation","21","computeB","h","GW","Gq","GiMf","computeGiMf","B","22","ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps","23","FrictionEquation","getSlipForce","24","worldVectorA","worldVectorB","25","26","EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y","31","_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter","32","LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring","33","RotationalSpring","restAngle","34","35","TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint","36","Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World","37","arguments","axes","updateArea","./Convex","./Shape","38","intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1","39","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint","40","isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk","41","key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo","42","raycast_normal","raycast_l0","raycast_l1","raycast_unit_y","43","44","intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir","45","material","sensor","46","GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver","47","equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND","48","destroy","equation","./Pool","49","50","IslandNodePool","IslandNode","../world/IslandNode","51","IslandPool","Island","../world/Island","52","OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils","53","OverlapKeeperRecord","54","record","55","objects","resize","object","56","getKey","dict","57","howmany","P2_ARRAY_TYPE","Float32Array","58","bodyIds","59","IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode","60","61","springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager"],"mappings":"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","file":"p2.min.js"} \ No newline at end of file +{"version":3,"sources":["p2.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist","3","Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point","4","abs","5","./Polygon","6","name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp","7","AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body","9","NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape","10","Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary","11","Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList","14","Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation","15","DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint","16","GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis","18","PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation","19","RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation","20","./Equation","21","computeB","h","GW","Gq","GiMf","computeGiMf","B","22","ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps","23","FrictionEquation","getSlipForce","24","worldVectorA","worldVectorB","25","26","EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y","31","_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter","32","LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring","33","RotationalSpring","restAngle","34","35","TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint","36","Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World","37","arguments","axes","updateArea","./Convex","./Shape","38","intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1","39","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint","40","isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk","41","key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo","42","raycast_normal","raycast_l0","raycast_l1","raycast_unit_y","43","44","intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir","45","material","sensor","46","GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver","47","equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND","48","destroy","equation","./Pool","49","50","IslandNodePool","IslandNode","../world/IslandNode","51","IslandPool","Island","../world/Island","52","OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils","53","OverlapKeeperRecord","54","record","55","objects","resize","object","56","getKey","dict","57","howmany","P2_ARRAY_TYPE","Float32Array","58","bodyIds","59","IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode","60","61","springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager"],"mappings":"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","file":"p2.min.js"} \ No newline at end of file diff --git a/build/custom/p2.min.js b/build/custom/p2.min.js index 9a2a670ff..2838ecd55 100644 --- a/build/custom/p2.min.js +++ b/build/custom/p2.min.js @@ -1,7 +1,7 @@ -/* Phaser v2.6.1 P2.JS Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.2 P2.JS Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d)},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0, -this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&i<=1&&j>=0&&j<=1}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return ma.vertices.length)throw new Error("lol2");if(b<0)throw new Error("lol3");for(var d=b;db[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;ch)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xq&&(q+=this.vertices.length),p=Number.MAX_VALUE,q3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;kh[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return c<=d*d},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return(a.type!==d||b.type!==d)&&(!(a.type===c&&b.type===d||a.type===d&&b.type===c)&&((a.type!==c||b.type!==c)&&((a.sleepState!==f.SLEEPING||b.sleepState!==f.SLEEPING)&&!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d))))},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;hW&&V0)for(var N=0;NMath.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(H===-1||I===-1)return 0;for(var J=0;J<2;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;V=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||hi){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=B<=0,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=B<=0,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(k===-1||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);w<0&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;Ay&&(y=n[A]);if(c[1]-m>y)return!l&&0;for(var B=!1,A=w;A=u[0]&&q[0]0)for(var A=w;A<=x;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;us&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return!j&&0;for(var v=0,u=q;u=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;eb.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(b=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;kthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),a.indexOf(e)===-1&&a.push(e);else{var u=a.indexOf(e);u!==-1&&a.splice(u,1)}if(this.lowerLimitEnabled&&sh)o.angle=h,e.indexOf(o)===-1&&e.push(o);else{var r=e.indexOf(o);r!==-1&&e.splice(r,1)}if(this.lowerLimitEnabled&&q>1;if(b<3)return[];for(var c=[],e=[],f=0;f3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;r3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&u+v<1},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return!(g<0)&&(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&e<=1&&f>=0&&f<=1?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0===a.allowSleep||a.allowSleep, +this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0===a.collisionResponse||a.collisionResponse,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return b!==-1&&(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0)},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;g0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&i=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;r<2;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(t<0))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&A<=1&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&B<=1&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(n<0))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&s<=1&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&t<=1&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||de){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bb&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;k=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),es){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);b!==-1&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;d=a&&d=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a)) +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* Tilemap - constructor +* +* @param {Array} layer - layer data from the map, arranged in mapheight lists of mapwidth Phaser.Tile objects (2d array) +* +*/ +PIXI.Tilemap = function(texture, mapwidth, mapheight, tilewidth, tileheight, layer) { + + PIXI.DisplayObjectContainer.call(this); + + /** + * The texture of the Tilemap + * + * @property texture + * @type Texture + */ + this.texture = texture; + + // faster access to the tile dimensions + this.tileWide = tilewidth; + this.tileHigh = tileheight; + this.mapWide = mapwidth; + this.mapHigh = mapheight; + + // TODO: switch here to create DisplayObjectContainer at correct size for the render mode + this.width = this.mapWide * this.tileWide; + this.height = this.mapHigh * this.tileHigh; + + this.layer = layer; + + // store the list of batch drawing instructions (for use with WebGL rendering) + this.glBatch = null; + + /** + * Remember last tile drawn to avoid unnecessary set-up + * + * @type Integer + */ + this.lastTile = -1; + + /** + * Whether the Tilemap is dirty or not + * + * @property dirty + * @type Boolean + */ + this.dirty = true; + + /** + * The blend mode to be applied to the tilemap. Set to PIXI.blendModes.NORMAL to remove any blend mode. + * + * @property blendMode + * @type Number + * @default PIXI.blendModes.NORMAL; + */ + this.blendMode = PIXI.blendModes.NORMAL; + + /** + * The size of a single data element in the batch drawing. + * Each tile requires two triangles, each specified as: + * float left, bottom, right, top - screen coordinates + * float u, v, wide, high - source texture coordinates + * + * @type {Number} + */ + this.batchDataElement = 16; + + // calculate total batch data size + var dataSize = mapwidth * mapheight * this.batchDataElement; + + // create buffer data for the webgl rendering of this tile + this.buffer = new PIXI.Float32Array( dataSize ); + +}; + +// constructor, this class extends PIXI.DisplayObjectContainer +PIXI.Tilemap.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); +PIXI.Tilemap.prototype.constructor = PIXI.Tilemap; + +// unused methods overridden to prevent default behavior +PIXI.Tilemap.prototype.update = function () {}; +PIXI.Tilemap.prototype.postUpdate = function () {}; + +// override PIXI.DisplayObjectContainer _renderWebGL +PIXI.Tilemap.prototype._renderWebGL = function (renderSession) { + + // if the sprite is not visible or the alpha is 0 then no need to render this element + if (!this.visible || this.alpha <= 0) + { + return; + } + + // stop current render session batch drawing + renderSession.spriteBatch.stop(); + + if (!this._vertexBuffer) + { + this._initWebGL(renderSession); + } + + renderSession.shaderManager.setShader(renderSession.shaderManager.tilemapShader); + + this._renderWholeTilemap(renderSession); + + // restart batch drawing now that this Tile layer has been rendered + renderSession.spriteBatch.start(); + +}; + +PIXI.Tilemap.prototype._initWebGL = function (renderSession) { + + var gl = renderSession.gl; + + this._vertexBuffer = gl.createBuffer(); + this._indexBuffer = gl.createBuffer(); + this._uvBuffer = gl.createBuffer(); + this._colorBuffer = gl.createBuffer(); + + // create a GL buffer to transfer all the vertex position data through + this.positionBuffer = gl.createBuffer(); + + // bind the buffer to the RAM resident positionBuffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.buffer, gl.STATIC_DRAW); + +}; + + +PIXI.Tilemap.prototype._renderBatch = function (renderSession) { + + if (this.glBatch) + { + var gl = renderSession.gl; + + // TODO: should probably use destination buffer dimensions (halved) + var screenWide2 = this.game.width * 0.5; + var screenHigh2 = this.game.height * 0.5; + + // size of one pixel in the source texture + var iTextureWide = 1.0 / this.texture.width; + var iTextureHigh = 1.0 / this.texture.height; + + // size of one tile in the source texture + var srcWide = this.tileWide * iTextureWide; + var srcHigh = this.tileHigh * iTextureHigh; + + // pre-calculate inverse half-buffer dimensions + var iWide = 1.0 / screenWide2; + var iHigh = 1.0 / screenHigh2; + + var wide = this.tileWide * 0.5 / screenWide2; + var high = this.tileHigh * 0.5 / screenHigh2; + + var buffer = this.buffer; + var oldR, oldT, uvl, uvt; + + // process entire glBatch into a single webGl draw buffer for a TRIANGLE_STRIP blit + var c = 0; + var degenerate = false; + + for (var i = 0, l = this.glBatch.length; i < l; i++) + { + // sx: this.drawCoords[coordIndex], + // sy: this.drawCoords[coordIndex + 1], + // sw: this.tileWidth, + // sh: this.tileHeight, + // dx: x, + // dy: y, + // dw: this.tileWidth, + // dh: this.tileHeight + + var t = this.glBatch[i]; + + if (!t) + { + // insert a degenerate triangle when null is found in the list of batch objects + degenerate = true; + + // skip to end of loop, degenerate will be inserted when no more null objects are found + continue; + } + + var x = t.dx * iWide - 1; + var y = 1 - t.dy * iHigh; + + var lft = x - wide; + var bot = y + high; + + var uvl = t.sx * iTextureWide; + var uvt = t.sy * iTextureHigh; + + // insert a degenerate triangle to separate the tiles + if (degenerate) + { + // add a degenerate triangle: repeat the last vertex + buffer[ c ] = oldR; + buffer[ c + 1 ] = oldT; + // then repeat the next vertex + buffer[ c + 4 ] = lft; + buffer[ c + 5 ] = bot; + // pad with texture coordinates (probably not needed) + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 7 ] = uvt; + + // advance the buffer index for one single degenerate triangle + c += 8; + degenerate = false; + } + + // calculate the destination location of the tile in screen units (-1..1) + buffer[ c ] = buffer[ c + 4 ] = lft; + buffer[ c + 1 ] = buffer[ c + 9 ] = bot; + buffer[ c + 8 ] = buffer[ c + 12] = oldR = x + wide; + buffer[ c + 5 ] = buffer[ c + 13] = oldT = y - high; + + // calculate the uv coordinates of the tile source image + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 11] = uvt; + buffer[ c + 10] = buffer[ c + 14] = uvl + srcWide; + buffer[ c + 7 ] = buffer[ c + 15] = uvt + srcHigh; + + // advance the buffer index + c += 16; + } + + // if there's anything to draw... + if (c > 0) + { + var shader = renderSession.shaderManager.tilemapShader; + + // upload the VBO + gl.bufferData( gl.ARRAY_BUFFER, buffer, gl.STATIC_DRAW ); + + // prepare the shader attributes + gl.vertexAttribPointer( shader.aPosition, 4, gl.FLOAT, false, 0, 0 ); + + // draw the entire VBO in one call + gl.drawArrays(gl.TRIANGLE_STRIP, 0, Math.floor(c / 4)); + } + } + +}; + +/** +* render the entire tilemap using a fast webgl batched tile render +* +* @param {[type]} renderSession [description] +*/ +PIXI.Tilemap.prototype._renderWholeTilemap = function (renderSession) { + + var gl = renderSession.gl; + + var shader = renderSession.shaderManager.tilemapShader; + + renderSession.blendModeManager.setBlendMode(this.blendMode); + + // set the uniforms and texture + + // set the offset in screen units to the center of the screen + // and flip the GL y coordinate to be zero at the top + gl.uniform2f(shader.uCentreOffset, 1, -1); + + // alpha value for whole batch + gl.uniform1f(shader.uAlpha, this.alpha); + + // scale factors for whole batch + gl.uniform2f(shader.uScale, this.worldScale.x, this.worldScale.y); + + // source texture unit + gl.activeTexture(gl.TEXTURE0); + + // check if a texture is dirty.. + if(this.texture.baseTexture._dirty[gl.id]) + { + renderSession.renderer.updateTexture(this.texture.baseTexture); + } + else + { + // bind the current texture + gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); + } + + // bind the source buffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + + // draw the batched tile list + this._renderBatch(renderSession); + +}; + +/** + * When the texture is updated, this event will fire to update the scale and frame + * + * @method onTextureUpdate + * @param event + * @private + */ +PIXI.Tilemap.prototype.onTextureUpdate = function () { + + this.updateFrame = true; + +}; + +/** + * Returns the bounds of the map as a rectangle. The bounds calculation takes the worldTransform into account. + * + * @method getBounds + * @param matrix {Matrix} the transformation matrix of the sprite + * @return {Rectangle} the framing rectangle + */ +PIXI.Tilemap.prototype.getBounds = function (matrix) { + + var worldTransform = matrix || this.worldTransform; + + var a = worldTransform.a; + var b = worldTransform.b; + var c = worldTransform.c; + var d = worldTransform.d; + var tx = worldTransform.tx; + var ty = worldTransform.ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + var vertices = [ + 0, 0, + this.mapWide * this.tileWide, 0, + this.mapWide * this.tileWide, this.mapHigh * this.tileHigh, + 0, this.mapHigh * this.tileHigh + ]; + + for (var i = 0, n = vertices.length; i < n; i += 2) + { + var rawX = vertices[i], rawY = vertices[i + 1]; + var x = (a * rawX) + (c * rawY) + tx; + var y = (d * rawY) + (b * rawX) + ty; + + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + } + + if (minX === -Infinity || maxY === Infinity) + { + return PIXI.EmptyRectangle; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + // store a reference so that if this function gets called again in the render cycle we do not have to recalculate + this._currentBounds = bounds; + + return bounds; + +}; + +/** +* @author Richard Davey +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* This shader is used to render a batch of tiles stored as a tri-strip with +* degenerate triangles at the end of each row, or group of tiles (A group is a +* row of tiles with content followed by one or more empty tiles which are not +* drawn). +* +* Settings available are: +* +* uAlpha - the alpha blending factor for a batch draw +* uCentreOffset - the offset to the center of the drawing area, in WebGL units (-1...1) +* uScale - the scaling factor for a batch draw +* uImageSampler - the source texture containing the tile images +* aPosition - the attribute set by the batch data for drawing location +* +* @class TilemapShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.TilemapShader = function (gl) { + + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + this.fragmentSrc = [ + " precision lowp float;", + " uniform sampler2D uImageSampler;", + " uniform float uAlpha;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_FragColor = texture2D(uImageSampler, vTexCoord) * uAlpha;", + " }" + ]; + + this.vertexSrc = [ + " precision lowp float;", + " uniform vec2 uCentreOffset;", + " uniform vec2 uScale;", + " attribute vec4 aPosition;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_Position.zw = vec2(1, 1);", + " gl_Position.xy = (aPosition.xy + uCentreOffset) * uScale - uCentreOffset;", + " vTexCoord = aPosition.zw;", + " }" + ]; + + /** + * A local texture counter for multi-texture shaders. + * @property textureCount + * @type Number + */ + this.textureCount = 0; + + this.init(); +}; + +PIXI.TilemapShader.prototype.constructor = PIXI.TilemapShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.TilemapShader.prototype.init = function () { + + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + gl.useProgram(program); + + // get and store the attributes + this.aPosition = gl.getAttribLocation(program, 'aPosition'); + this.uSampler = gl.getUniformLocation(program, 'uImageSampler'); + this.uCentreOffset = gl.getUniformLocation(program, 'uCentreOffset'); + this.uAlpha = gl.getUniformLocation(program, 'uAlpha'); + this.uScale = gl.getUniformLocation(program, 'uScale'); + + this.attributes = [this.aPosition]; + this.uniforms = [this.uCentreOffset, this.uAlpha, this.uScale, this.uSampler]; + + this.program = program; + +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.TilemapShader.prototype.destroy = function () { + + this.gl.deleteProgram(this.program); + this.gl = null; + + this.uniforms = null; + this.attributes = null; + +}; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -75109,6 +75698,7 @@ Phaser.Tile = function (layer, index, x, y, width, height) { /** * @property {number} alpha - The alpha value at which this tile is drawn to the canvas. + * TODO: currently unused for both Canvas and WebGL renderers */ this.alpha = 1; @@ -75537,7 +76127,12 @@ Phaser.Tilemap = function (game, key, tileWidth, tileHeight, width, height) { * @property {array} tilesets - An array of Tilesets. */ this.tilesets = data.tilesets; - + + /** + * @property {array} tilesetLayers - An array of internal layers used to separate multiple tilesets from a single map layer. + */ + this.tilesetLayers = null; + /** * @property {array} imagecollections - An array of Image Collections. */ @@ -75748,6 +76343,20 @@ Phaser.Tilemap.prototype = { if (this.tilesets[idx]) { this.tilesets[idx].setImage(img); + + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // // for the first tileset, don't create a layer because createLayer will be called to do that + // this.tilesetLayers = []; + // } + // else + // { + // // for all the rest, go ahead and make a (currently) blank layer + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return this.tilesets[idx]; } else @@ -75796,6 +76405,17 @@ Phaser.Tilemap.prototype = { } } + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // this.tilesetLayers = []; + // } + // else + // { + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return newSet; } @@ -75998,10 +76618,9 @@ Phaser.Tilemap.prototype = { * @param {number} [width] - The rendered width of the layer, should never be wider than Game.width. If not given it will be set to Game.width. * @param {number} [height] - The rendered height of the layer, should never be wider than Game.height. If not given it will be set to Game.height. * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @param {boolean} [pixiTest] - Temporary additional flag to enable tests of the PIXI.Tilemap renderer * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Sprite and can be moved around the display list accordingly. */ - createLayer: function (layer, width, height, group, pixiTest) { + createLayer: function (layer, width, height, group) { // Add Buffer support for the left of the canvas @@ -76022,8 +76641,17 @@ Phaser.Tilemap.prototype = { return; } - if ( pixiTest ) + // create the internal layers for different tilesets using this one as a base description + for (var i = 1, l = this.tilesets.length; i < l; i++) { + var ts = this.tilesets[i]; + var li = this.layers[index]; + this.createInternalLayer( "_internal" + i.toString(), ts, li.width, li.height, ts.tileWidth, ts.tileHeight, group ); + } + + if ( this.game.renderType === Phaser.WEBGL ) + { + // use WebGL variant of TilemapLayer return group.add(new Phaser.TilemapLayerGL(this.game, this, index, width, height)); } @@ -76031,6 +76659,121 @@ Phaser.Tilemap.prototype = { }, + /** + * Creates a new internal layer on this Tilemap. + * + * Internal layers are used when a Tilemap contains multiple Tilesets with different sized tiles. The tilesets + * each get a separate layer which is only ever referenced internally by the renderer. This approach permits us + * to handle large tiles at screen edges, and with the correct offset relative to the 'base' tileset regardless + * of size differences between the tiles. + * + * For WebGL rendering, this approach also permits us to batch the drawing calls efficiently. + * + * By default TilemapLayers are fixed to the camera. + * + * @method Phaser.Tilemap#createInternalLayer + * @param {string} name - The name of this layer. Must be unique within the map. + * @param {Phaser.Tileset} tileset - The tileset whose data is to be added to this layer. + * @param {number} width - The width of the layer in tiles. + * @param {number} height - The height of the layer in tiles. + * @param {number} tileWidth - The width of the tiles the layer uses for calculations. + * @param {number} tileHeight - The height of the tiles the layer uses for calculations. + * @param {Phaser.Group} [group] - Optional Group to add the layer to. If not specified it will be added to the World group. + * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. + */ + createInternalLayer: function (name, tileset, width, height, tileWidth, tileHeight, group) { + + if (group === undefined) { group = this.game.world; } + + if (this.getLayerIndex(name) !== null) + { + console.warn('Tilemap.createBlankLayer: Layer with matching name already exists'); + return; + } + + var layer = { + + name: name, + x: 0, + y: 0, + width: width, + height: height, + widthInPixels: width * tileWidth, + heightInPixels: height * tileHeight, + alpha: 1, + visible: true, + properties: {}, + indexes: [], + callbacks: [], + bodies: [], + data: null, + tileset: tileset + + }; + + var row; + var output = []; + + for (var y = 0; y < height; y++) + { + row = []; + for (var x = 0; x < width; x++) + { + // get the equivalent tile from this Tilemap + var tile = this.layers[0].data[y][x]; + // find out which tileset it is in + var setIndex = this.tiles[tile.index] && this.tiles[tile.index][2]; + var ts = this.tilesets[setIndex]; + // is it one of the ones we want to move? + if ( ts == tileset ) + { + // move the tile to this new layer + row.push( tile ); + // erase it from the original (mixed tileset) layer + this.layers[0].data[y][x] = new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight); + } + else + { + // add an empty tile + row.push(new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight)); + } + } + + output.push(row); + } + + layer.data = output; + + this.layers.push(layer); + + var w = layer.widthInPixels; + var h = layer.heightInPixels; + + if (w > this.game.width) + { + w = this.game.width; + } + + if (h > this.game.height) + { + h = this.game.height; + } + + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } + output.name = name; + + return group.add(output); + + }, + /** * Creates a new and empty layer on this Tilemap. By default TilemapLayers are fixed to the camera. * @@ -76107,7 +76850,15 @@ Phaser.Tilemap.prototype = { h = this.game.height; } - var output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } output.name = name; return group.add(output); @@ -76436,6 +77187,10 @@ Phaser.Tilemap.prototype = { { layer = layer.index; } + else if (layer instanceof Phaser.TilemapLayerGL) + { + layer = layer.index; + } return layer; @@ -78704,6 +79459,914 @@ Object.defineProperty(Phaser.TilemapLayer.prototype, "collisionHeight", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* A TilemapLayerGL is a PIXI.Tilemap that renders a specific TileLayer of a Tilemap using the PIXI WebGL renderer. +* +* NOTE: This is a close duplicate of Phaser.TilemapLayer class, modified to support WebGL rendering, it may be possible to merge the two classes +* although that will probably incur performance penalties due to some fundamental differences in the set-up before rendering. +* +* Since a PIXI.Tilemap is a PIXI.DisplayObjectContainer it can be moved around the display list, added to other groups, or display objects, etc. +* +* By default TilemapLayers have fixedToCamera set to `true`. Changing this will break Camera follow and scrolling behavior. +* +* @class Phaser.TilemapLayerGL +* @extends Phaser.Sprite +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. +* @param {Phaser.Tilemap} tilemap - The tilemap to which this layer belongs. +* @param {integer} index - The index of the TileLayer to render within the Tilemap. +* @param {integer} width - Width of the renderable area of the layer (in pixels). +* @param {integer} height - Height of the renderable area of the layer (in pixels). +*/ +Phaser.TilemapLayerGL = function (game, tilemap, index, width, height) { + + this.game = game; + + width |= 0; + height |= 0; + + /** + * The Tilemap to which this layer is bound. + * @property {Phaser.Tilemap} map + * @protected + * @readonly + */ + this.map = tilemap; + + /** + * The index of this layer within the Tilemap. + * @property {number} index + * @protected + * @readonly + */ + this.index = index; + + /** + * The layer object within the Tilemap that this layer represents. + * @property {object} layer + * @protected + * @readonly + */ + this.layer = tilemap.layers[index]; + + /** + * The const type of this object. + * @property {number} type + * @readonly + * @protected + * @default Phaser.TILEMAPLAYER + */ + this.type = Phaser.TILEMAPLAYER; + + /** + * @property {number} physicsType - The const physics body type of this object. + * @readonly + */ + this.physicsType = Phaser.TILEMAPLAYER; + + /** + * Settings that control standard (non-diagnostic) rendering. + * + * @property {boolean} [enableScrollDelta=true] - Delta scroll rendering only draws tiles/edges as they come into view. + * This can greatly improve scrolling rendering performance, especially when there are many small tiles. + * It should only be disabled in rare cases. + * + * @property {?DOMCanvasElement} [copyCanvas=(auto)] - [Internal] If set, force using a separate (shared) copy canvas. + * Using a canvas bitblt/copy when the source and destinations region overlap produces unexpected behavior + * in some browsers, notably Safari. + * + * @default + */ + this.renderSettings = { + enableScrollDelta: false, + overdrawRatio: 0.20, + copyCanvas: null + }; + + /** + * Enable an additional "debug rendering" pass to display collision information. + * + * @property {boolean} debug + * @default + */ + this.debug = false; + + /** + * @property {boolean} exists - Controls if the core game loop and physics update this game object or not. + */ + this.exists = true; + + /** + * Settings used for debugging and diagnostics. + * + * @property {?string} missingImageFill - A tile is rendered as a rectangle using the following fill if a valid tileset/image cannot be found. A value of `null` prevents additional rendering for tiles without a valid tileset image. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {?string} debuggedTileOverfill - If a Tile has `Tile#debug` true then, after normal tile image rendering, a rectangle with the following fill is drawn above/over it. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {boolean} forceFullRedraw - When debug rendering (`debug` is true), and this option is enabled, the a full redraw is forced and rendering optimization is suppressed. + * + * @property {number} debugAlpha - When debug rendering (`debug` is true), the tileset is initially rendered with this alpha level. This can make the tile edges clearer. + * + * @property {?string} facingEdgeStroke - When debug rendering (`debug` is true), this color/stroke is used to draw "face" edges. A value of `null` disables coloring facing edges. + * + * @property {?string} collidingTileOverfill - When debug rendering (`debug` is true), this fill is used for tiles that are collidable. A value of `null` disables applying the additional overfill. + * + */ + this.debugSettings = { + + missingImageFill: 'rgb(255,255,255)', + debuggedTileOverfill: 'rgba(0,255,0,0.4)', + + forceFullRedraw: true, + + debugAlpha: 0.5, + facingEdgeStroke: 'rgba(0,255,0,1)', + collidingTileOverfill: 'rgba(0,255,0,0.2)' + + }; + + /** + * Speed at which this layer scrolls horizontally, relative to the camera (e.g. scrollFactorX of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do). + * @property {number} scrollFactorX + * @public + * @default + */ + this.scrollFactorX = 1; + + /** + * Speed at which this layer scrolls vertically, relative to the camera (e.g. scrollFactorY of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do) + * @property {number} scrollFactorY + * @public + * @default + */ + this.scrollFactorY = 1; + + /** + * If true tiles will be force rendered, even if such is not believed to be required. + * @property {boolean} dirty + * @protected + */ + this.dirty = true; + + /** + * When ray-casting against tiles this is the number of steps it will jump. For larger tile sizes you can increase this to improve performance. + * @property {integer} rayStepRate + * @default + */ + this.rayStepRate = 4; + + /** + * Flag controlling if the layer tiles wrap at the edges. + * @property {boolean} _wrap + * @private + */ + this._wrap = false; + + /** + * Local map data and calculation cache. + * @property {object} _mc + * @private + */ + var tileset = this.layer.tileset || this.map.tilesets[0]; + this._mc = { + + // Used to bypass rendering without reliance on `dirty` and detect changes. + scrollX: 0, + scrollY: 0, + renderWidth: 0, + renderHeight: 0, + + // dimensions of tiles in the original tilemap (the one holding all the tile indices) + tileWidth: tilemap.tileWidth, + tileHeight: tilemap.tileHeight, + + // Collision width/height (pixels) + // What purpose do these have? Most things use tile width/height directly. + // This also only extends collisions right and down. + + // dimensions of tiles in this tileset (may not match the original tilemap) + cw: tileset.tileWidth, + ch: tileset.tileHeight, + + // the tileset for this layer + tileset: tileset, + + // Cached tilesets from index -> Tileset + tilesets: [] + }; + + /** + * The rendering mode (used by PIXI.Tilemap). Modes are: 0 - render entire screen of tiles, 1 - render entire map of tiles + * TODO: make some constants for the rendering modes + * @property {number} _renderMode + * @private + */ + this._renderMode = 0; + + /** + * The current canvas left after scroll is applied. + * @property {number} _scrollX + * @private + */ + this._scrollX = 0; + + /** + * The current canvas top after scroll is applied. + * @propety {number} _scrollY + * @private + */ + this._scrollY = 0; + + /** + * Used for caching the tiles / array of tiles. + * @property {Phaser.Tile[]} _results + * @private + */ + this._results = []; + + // get PIXI textures for each tileset source image + var baseTexture = new PIXI.BaseTexture( tileset.image ); + PIXI.Tilemap.call(this, new PIXI.Texture(baseTexture), this.map.width, this.map.height, this._mc.tileset.tileWidth, this._mc.tileset.tileHeight, this.layer); + + Phaser.Component.Core.init.call(this, game, 0, 0, null, null); + + // must be set *after* the Core.init + this.fixedToCamera = true; +}; + + +// constructor: extends PIXI.Tilemap +Phaser.TilemapLayerGL.prototype = Object.create(PIXI.Tilemap.prototype); +Phaser.TilemapLayerGL.prototype.constructor = Phaser.TilemapLayerGL; + + +// only one Phaser component used +Phaser.Component.Core.install.call(Phaser.TilemapLayerGL.prototype, [ + 'FixedToCamera' +]); + + +// redirect method prototypes (TODO: not needed? I'm not sure...) +Phaser.TilemapLayerGL.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; +Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; +Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; +Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; +Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; + + +/** +* Automatically called by World.preUpdate. +* +* @method Phaser.TilemapLayerGL#preUpdate +*/ +Phaser.TilemapLayerGL.prototype.preUpdate = function() { + + return this.preUpdateCore(); + +}; + +/** +* Automatically called by World.postUpdate. Handles camera scrolling. +* +* @method Phaser.TilemapLayerGL#postUpdate +* @protected +*/ +Phaser.TilemapLayerGL.prototype.postUpdate = function () { + + Phaser.Component.FixedToCamera.postUpdate.call(this); + + // Stops you being able to auto-scroll the camera if it's not following a sprite + var camera = this.game.camera; + + this.scrollX = camera.x * this.scrollFactorX / this.scale.x; + this.scrollY = camera.y * this.scrollFactorY / this.scale.y; + + this.render(); + +}; + +/** +* Destroys this TilemapLayerGL. +* +* @method Phaser.TilemapLayerGL#destroy +*/ +Phaser.TilemapLayerGL.prototype.destroy = function() { + + PIXI.CanvasPool.remove(this); + + Phaser.Component.Destroy.prototype.destroy.call(this); + +}; + +/** +* Resizes the internal dimensions and texture frame used by this TilemapLayerGL. +* +* This is an expensive call, so don't bind it to a window resize event! But instead call it at carefully +* selected times. +* +* Be aware that no validation of the new sizes takes place and the current map scroll coordinates are not +* modified either. You will have to handle both of these things from your game code if required. +* +* @method Phaser.TilemapLayerGL#resize +* @param {number} width - The new width of the TilemapLayerGL +* @param {number} height - The new height of the TilemapLayerGL +*/ +Phaser.TilemapLayerGL.prototype.resize = function (width, height) { + + this.texture.frame.resize(width, height); + + this.texture.width = width; + this.texture.height = height; + + this.texture.crop.width = width; + this.texture.crop.height = height; + + this.texture.baseTexture.width = width; + this.texture.baseTexture.height = height; + + this.texture.baseTexture.dirty(); + this.texture.requiresUpdate = true; + + this.texture._updateUvs(); + + this.dirty = true; + +}; + +/** +* Sets the world size to match the size of this layer. +* +* @method Phaser.TilemapLayerGL#resizeWorld +* @public +*/ +Phaser.TilemapLayerGL.prototype.resizeWorld = function () { + + this.game.world.setBounds(0, 0, this.layer.widthInPixels * this.scale.x, this.layer.heightInPixels * this.scale.y); + +}; + +/** +* Take an x coordinate that doesn't account for scrollFactorX and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixX +* @private +* @param {number} x - x coordinate in camera space +* @return {number} x coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixX = function (x) { + + if (x < 0) + { + x = 0; + } + + if (this.scrollFactorX === 1) + { + return x; + } + + return this._scrollX + (x - (this._scrollX / this.scrollFactorX)); + +}; + +/** +* Take an x coordinate that _does_ account for scrollFactorX and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixX +* @private +* @param {number} x - x coordinate in scrollFactor-adjusted dimensions +* @return {number} x coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixX = function (x) { + + if (this.scrollFactorX === 1) + { + return x; + } + + return (this._scrollX / this.scrollFactorX) + (x - this._scrollX); + +}; + +/** +* Take a y coordinate that doesn't account for scrollFactorY and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixY +* @private +* @param {number} y - y coordinate in camera space +* @return {number} y coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixY = function (y) { + + if (y < 0) + { + y = 0; + } + + if (this.scrollFactorY === 1) + { + return y; + } + + return this._scrollY + (y - (this._scrollY / this.scrollFactorY)); + +}; + +/** +* Take a y coordinate that _does_ account for scrollFactorY and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixY +* @private +* @param {number} y - y coordinate in scrollFactor-adjusted dimensions +* @return {number} y coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixY = function (y) { + + if (this.scrollFactorY === 1) + { + return y; + } + + return (this._scrollY / this.scrollFactorY) + (y - this._scrollY); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileX +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @return {integer} The X map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileX = function (x) { + + // var tileWidth = this.tileWidth * this.scale.x; + return Math.floor(this._fixX(x) / this._mc.tileWidth); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileY +* @public +* @param {number} y - Y position of the point in target tile (in pixels). +* @return {integer} The Y map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileY = function (y) { + + // var tileHeight = this.tileHeight * this.scale.y; + return Math.floor(this._fixY(y) / this._mc.tileHeight); + +}; + +/** +* Convert a pixel coordinate to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileXY +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @param {number} y - Y position of the point in target tile (in pixels). +* @param {(Phaser.Point|object)} point - The Point/object to update. +* @return {(Phaser.Point|object)} A Point/object with its `x` and `y` properties set. +*/ +Phaser.TilemapLayerGL.prototype.getTileXY = function (x, y, point) { + + point.x = this.getTileX(x); + point.y = this.getTileY(y); + + return point; + +}; + +/** +* Gets all tiles that intersect with the given line. +* +* @method Phaser.TilemapLayerGL#getRayCastTiles +* @public +* @param {Phaser.Line} line - The line used to determine which tiles to return. +* @param {integer} [stepRate=(rayStepRate)] - How many steps through the ray will we check? Defaults to `rayStepRate`. +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {Phaser.Tile[]} An array of Phaser.Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getRayCastTiles = function (line, stepRate, collides, interestingFace) { + + if (!stepRate) { stepRate = this.rayStepRate; } + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + // First get all tiles that touch the bounds of the line + var tiles = this.getTiles(line.x, line.y, line.width, line.height, collides, interestingFace); + + if (tiles.length === 0) + { + return []; + } + + // Now we only want the tiles that intersect with the points on this line + var coords = line.coordinatesOnLine(stepRate); + var results = []; + + for (var i = 0; i < tiles.length; i++) + { + for (var t = 0; t < coords.length; t++) + { + var tile = tiles[i]; + var coord = coords[t]; + if (tile.containsPoint(coord[0], coord[1])) + { + results.push(tile); + break; + } + } + } + + return results; + +}; + +/** +* Get all tiles that exist within the given area, defined by the top-left corner, width and height. Values given are in pixels, not tiles. +* +* @method Phaser.TilemapLayerGL#getTiles +* @public +* @param {number} x - X position of the top left corner (in pixels). +* @param {number} y - Y position of the top left corner (in pixels). +* @param {number} width - Width of the area to get (in pixels). +* @param {number} height - Height of the area to get (in pixels). +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {array} An array of Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getTiles = function (x, y, width, height, collides, interestingFace) { + + // Should we only get tiles that have at least one of their collision flags set? (true = yes, false = no just get them all) + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + var fetchAll = !(collides || interestingFace); + + // Adjust the x,y coordinates for scrollFactor + x = this._fixX(x); + y = this._fixY(y); + + // Convert the pixel values into tile coordinates + var tx = Math.floor(x / (this._mc.cw * this.scale.x)); + var ty = Math.floor(y / (this._mc.ch * this.scale.y)); + // Don't just use ceil(width/cw) to allow account for x/y diff within cell + var tw = Math.ceil((x + width) / (this._mc.cw * this.scale.x)) - tx; + var th = Math.ceil((y + height) / (this._mc.ch * this.scale.y)) - ty; + + // Discard old results before storing the new ones + this._results = []; + + for (var wy = ty; wy < ty + th; wy++) + { + for (var wx = tx; wx < tx + tw; wx++) + { + var row = this.layer.data[wy]; + + if (row && row[wx]) + { + if (fetchAll || row[wx].isInteresting(collides, interestingFace)) + { + this._results.push(row[wx]); + } + } + } + } + + return this._results.slice(); + +}; + +/** +* The TilemapLayerGL caches tileset look-ups. +* +* Call this method of clear the cache if tilesets have been added or updated after the layer has been rendered. +* +* @method Phaser.TilemapLayerGL#resetTilesetCache +* @public +*/ +Phaser.TilemapLayerGL.prototype.resetTilesetCache = function () { + + this._mc.tilesets = []; +}; + +/** + * This method will set the scale of the tilemap as well as update the underlying block data of this layer. + * + * @method Phaser.TilemapLayerGL#setScale + * @param {number} [xScale=1] - The scale factor along the X-plane + * @param {number} [yScale] - The scale factor along the Y-plane + */ +Phaser.TilemapLayerGL.prototype.setScale = function (xScale, yScale) { + + xScale = xScale || 1; + yScale = yScale || xScale; + + for (var y = 0; y < this.layer.data.length; y++) + { + var row = this.layer.data[y]; + + for (var x = 0; x < row.length; x++) + { + var tile = row[x]; + + tile.width = this.map.tileWidth * xScale; + tile.height = this.map.tileHeight * yScale; + + tile.worldX = tile.x * tile.width; + tile.worldY = tile.y * tile.height; + } + } + + this.scale.setTo(xScale, yScale); + +}; + +/** +* Render tiles in the given area given by the virtual tile coordinates biased by the given scroll factor. +* This will constrain the tile coordinates based on wrapping but not physical coordinates. +* +* @method Phaser.TilemapLayerGL#renderRegion +* @private +* @param {integer} scrollX - Render x offset/scroll. +* @param {integer} scrollY - Render y offset/scroll. +* @param {integer} left - Leftmost column to render. +* @param {integer} top - Topmost row to render. +* @param {integer} right - Rightmost column to render. +* @param {integer} bottom - Bottommost row to render. +*/ +Phaser.TilemapLayerGL.prototype.renderRegion = function (scrollX, scrollY, left, top, right, bottom, offx, offy) { + + var width = this.layer.width; + var height = this.layer.height; + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + // var lastAlpha = NaN; + + offx = offx || 0; + offy = offy || 0; + + if (!this._wrap) + { + if (left <= right) // Only adjust if going to render + { + left = Math.max(0, left); + right = Math.min(width - 1, right); + } + if (top <= bottom) + { + top = Math.max(0, top); + bottom = Math.min(height - 1, bottom); + } + } + + // top-left pixel of top-left cell + var baseX = (left * tw) - scrollX; + var baseY = (top * th) - scrollY; + + // Fix normStartX/normStartY such it is normalized [0..width/height). This allows a simple conditional and decrement to always keep in range [0..width/height) during the loop. The major offset bias is to take care of negative values. + var normStartX = (left + ((1 << 20) * width)) % width; + var normStartY = (top + ((1 << 20) * height)) % height; + + // tx/ty - are pixel coordinates where tile is drawn + // x/y - is cell location, normalized [0..width/height) in loop + // xmax/ymax - remaining cells to render on column/row + var tx, ty, x, y, xmax, ymax; + + //context.fillStyle = this.tileColor; + + for (y = normStartY, ymax = bottom - top, ty = baseY; + ymax >= 0; + y++, ymax--, ty += th) + { + + if (y >= height) { y -= height; } + + var row = this.layer.data[y]; + + for (x = normStartX, xmax = right - left, tx = baseX; + xmax >= 0; + x++, xmax--, tx += tw) + { + + if (x >= width) { x -= width; } + + var tile = row[x]; + + if (!tile || tile.index < 0) + { + // skipping some tiles, add a degenerate marker into the batch list + this._mc.tileset.addDegenerate( this.glBatch ); + continue; + } + + var index = tile.index; + + if (tile.rotation || tile.flipped) + { + this._mc.tileset.drawGl(this.glBatch, -tile.centerX + offx, -tile.centerY + offy, index, tile.alpha); + } + else + { + this._mc.tileset.drawGl(this.glBatch, tx + offx, ty + offy, index, tile.alpha); + } + } + + // at end of each row, add a degenerate marker into the batch drawing list + this._mc.tileset.addDegenerate( this.glBatch ); + } + +}; + +/** +* Clear and render the entire canvas. +* +* @method Phaser.TilemapLayerGL#renderFull +* @private +*/ +Phaser.TilemapLayerGL.prototype.renderFull = function () { + + var scrollX = this._mc.scrollX; + var scrollY = this._mc.scrollY; + + var renderW = this.game._width; //this.canvas.width; + var renderH = this.game._height; //this.canvas.height; + + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + var cw = this._mc.cw; + var ch = this._mc.ch; + + var left = Math.floor( (scrollX - (cw - tw)) / tw ); + var right = Math.floor( (renderW - 1 + scrollX) / tw ); + var top = Math.floor( (scrollY - (ch - th)) / th ); + var bottom = Math.floor( (renderH - 1 + scrollY) / th ); + + this.glBatch = []; + this.renderRegion(scrollX, scrollY, left, top, right, bottom, 0, -(ch - th)); +}; + +/** +* Renders the tiles to the layer canvas and pushes to the display. +* +* @method Phaser.TilemapLayerGL#render +* @protected +*/ +Phaser.TilemapLayerGL.prototype.render = function () { + + var redrawAll = false; + + if (!this.visible) + { + return; + } + + if (this.dirty || this.layer.dirty) + { + this.layer.dirty = false; + redrawAll = true; + } + + // Scrolling bias; whole pixels only + var scrollX = this._scrollX | 0; + var scrollY = this._scrollY | 0; + + var mc = this._mc; + var shiftX = mc.scrollX - scrollX; // Negative when scrolling right/down + var shiftY = mc.scrollY - scrollY; + + if (!redrawAll && + shiftX === 0 && shiftY === 0) + { + // No reason to rebuild batch, looking at same thing and not invalidated. + return; + } + + mc.scrollX = scrollX; + mc.scrollY = scrollY; + + this.renderFull(); + + this.texture.baseTexture.dirty(); + + this.dirty = false; + + return true; + +}; + +/** +* Flag controlling if the layer tiles wrap at the edges. Only works if the World size matches the Map size. +* +* @property {boolean} wrap +* @memberof Phaser.TilemapLayerGL +* @public +* @default false +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "wrap", { + + get: function () { + return this._wrap; + }, + + set: function (value) { + this._wrap = value; + this.dirty = true; + } + +}); + +/** +* Scrolls the map horizontally or returns the current x position. +* +* @property {number} scrollX +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollX", { + + get: function () { + return this._scrollX; + }, + + set: function (value) { + this._scrollX = value; + } + +}); + +/** +* Scrolls the map vertically or returns the current y position. +* +* @property {number} scrollY +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollY", { + + get: function () { + return this._scrollY; + }, + + set: function (value) { + this._scrollY = value; + } + +}); + +/** +* The width of the collision tiles (in pixels). +* +* @property {integer} collisionWidth +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionWidth", { + + get: function () { + return this._mc.cw; + }, + + set: function (value) { + this._mc.cw = value | 0; + this.dirty = true; + } + +}); + +/** +* The height of the collision tiles (in pixels). +* +* @property {integer} collisionHeight +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionHeight", { + + get: function () { + return this._mc.ch; + }, + + set: function (value) { + this._mc.ch = value | 0; + this.dirty = true; + } + +}); + +/** +* @author Richard Davey +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * Phaser.TilemapParser parses data objects from Phaser.Loader that need more preparation before they can be inserted into a Tilemap. * @@ -78726,34 +80389,7 @@ Phaser.TilemapParser = { INSERT_NULL: false, /** - * A tiled flag that resides within the 32 bit of the object gid and - * indicates whether the tiled/object is flipped horizontally. - * - * @constant - * @type {number} - */ - FLIPPED_HORIZONTALLY_FLAG: 0x80000000, - - /** - * A tiled flag that resides within the 31 bit of the object gid and - * indicates whether the tiled/object is flipped vertically. - * - * @constant - * @type {number} - */ - FLIPPED_VERTICALLY_FLAG: 0x40000000, - - /** - * A tiled flag that resides within the 30 bit of the object gid and - * indicates whether the tiled/object is flipped diagonally. - * - * @constant - * @type {number} - */ - FLIPPED_DIAGONALLY_FLAG: 0x20000000, - - /** - * Parse tilemap data from the cache and creates a Tilemap object. + * Parse tilemap data from the cache and creates data for a Tilemap object. * * @method Phaser.TilemapParser.parse * @param {Phaser.Game} game - Game reference to the currently running game. @@ -79232,8 +80868,6 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { - var self = this; - var object = { gid: curo.objects[v].gid, @@ -79241,13 +80875,9 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, - width: curo.objects[v].width, - height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties, - horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, - verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, - diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG + properties: curo.objects[v].properties + }; if (curo.objects[v].rotation) @@ -79380,11 +81010,13 @@ Phaser.TilemapParser = { var sid; var set; - // go through each of the map layers + // go through each of the map data layers for (var i = 0; i < map.layers.length; i++) { layer = map.layers[i]; + set = null; + // rows of tiles for (var j = 0; j < layer.data.length; j++) { @@ -79405,12 +81037,14 @@ Phaser.TilemapParser = { sid = map.tiles[tile.index][2]; set = map.tilesets[sid]; + // if that tile type has any properties, add them to the tile object if (set.tileProperties && set.tileProperties[tile.index - set.firstgid]) { tile.properties = Phaser.Utils.mixin(set.tileProperties[tile.index - set.firstgid], tile.properties); } + } } } @@ -79560,6 +81194,7 @@ Phaser.Tileset.prototype = { if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) { + // draw the tile on the canvas context.drawImage( this.image, this.drawCoords[coordIndex], @@ -79575,6 +81210,56 @@ Phaser.Tileset.prototype = { }, + /** + * Draws a tile from this Tileset at the given coordinates using a WebGl renderer. + * + * @method Phaser.Tileset#drawGl + * @public + * @param out {Array} glBatch - A list of webgl batch objects to draw later. + * @param {number} x - The x coordinate to draw to. + * @param {number} y - The y coordinate to draw to. + * @param {integer} index - The index of the tile within the set to draw. + * @param {number} alpha - The alpha value to draw this tile with. + */ + drawGl: function (glBatch, x, y, index, alpha) { + + // Correct the tile index for the set and bias for interlacing x/y values + var coordIndex = (index - this.firstgid) * 2; + + if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) + { + // add the tile to the webgl batch + // source and destination coordinates, in pixel units + // destination is the centre of the tile + glBatch.push( { + sx: this.drawCoords[coordIndex], + sy: this.drawCoords[coordIndex + 1], + sw: this.tileWidth, + sh: this.tileHeight, + dx: x + this.tileWidth * 0.5, + dy: y + this.tileHeight * 0.5, + dw: this.tileWidth, + dh: this.tileHeight, + alpha: alpha + } ); + } + + }, + + /** + * adds a marker for the WebGl batch display to insert a degenerate triangle (eg. at the end of each row of tiles) + * + * @param {[type]} glBatch [description] + */ + addDegenerate: function( glBatch ) + { + // don't insert multiple degenerate markers in a row + if ( glBatch[ glBatch.length - 1] ) + { + glBatch.push( null ); + } + }, + /** * Returns true if and only if this tileset contains the given tile index. * diff --git a/build/custom/phaser-arcade-physics.map b/build/custom/phaser-arcade-physics.map index 738b3633e..d60292f6b 100644 --- a/build/custom/phaser-arcade-physics.map +++ b/build/custom/phaser-arcade-physics.map @@ -1 +1 @@ -{"version":3,"sources":["phaser-arcade-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","collision","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","getLayer","customClass","lw","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","bodies","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polyline","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","on","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser-arcade-physics.min.js"} \ No newline at end of file +{"version":3,"sources":["phaser-arcade-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","tilemapShader","TilemapShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","RETURN_ALL","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","getRandomExists","list","getAll","pick","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","mapwidth","mapheight","tileWide","tileHigh","mapWide","mapHigh","glBatch","lastTile","batchDataElement","dataSize","_renderWholeTilemap","positionBuffer","_renderBatch","oldR","oldT","uvl","uvt","screenWide2","screenHigh2","iTextureWide","iTextureHigh","srcWide","srcHigh","iWide","iHigh","wide","degenerate","lft","bot","aPosition","drawArrays","uCentreOffset","uAlpha","uScale","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","tilesetLayers","imagecollections","tiles","collideIndexes","collision","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","getLayer","customClass","lw","lh","createLayer","getLayerIndex","ts","li","createInternalLayer","TilemapLayerGL","indexes","bodies","setIndex","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","_renderMode","offx","offy","addDegenerate","drawGl","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","polyline","polygon","ellipse","sid","drawCoords","coordIndex","sw","sh","dw","dh","setSpacing","rowCount","colCount","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","on","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser-arcade-physics.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-arcade-physics.min.js b/build/custom/phaser-arcade-physics.min.js index a35ad1419..bdb72e3dd 100644 --- a/build/custom/phaser-arcade-physics.min.js +++ b/build/custom/phaser-arcade-physics.min.js @@ -1,23 +1,23 @@ -/* Phaser v2.6.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.2 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{ -get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){ -var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null), -e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)), -this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){ -this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL, -this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){ -void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate, -c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?"))); -var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a), -b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h={},i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius,radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2), -this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){ -this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e, -j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(c<0||d<0)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(b===-1)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(b<0||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a<0||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(b!==-1)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&e<=d){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;co?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;b0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(f===-1){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;q0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;e=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;e0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;ej?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;j1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bv?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.7.0 Beta",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return a<0?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function a(b){if(b&&(a.prototype=b),!(this instanceof a))return new a}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;e0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);i0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return i+j<=k},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{ +get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a=c&&a<=d&&b>=e&&b<=f},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=c-h&&(k-=h,c+=i),m=0&&p<=1&&q>=0&&q<=1?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&d<=j&&e>=i&&e<=k||f>=h&&f<=j&&g>=i&&g<=k)return!0;if(d=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&l<=k)return!0}else if(d>j&&f<=j&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&l<=k))return!0;if(e=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&l<=j)return!0}else if(e>k&&g<=k&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&l<=j))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(this.y*-1,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y*-1,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(d<1)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;e0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;c=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return!(a.width<=0||a.height<=0)&&(b>=a.x&&b=a.y&&c=a&&e=b&&fb.volume)&&(a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!(!d&&this._shake.duration>0)&&(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2)); +},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?!!(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)||(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(h!==-1){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return this._indexOfListener(a,b)!==-1},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;e=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;gthis.children.length||a===-1&&b===-1))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor)return this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor};c.Group.prototype.next=function(){if(this.cursor)return this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.previous=function(){if(this.cursor)return 0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return a<0||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!(!c.Utils.getProperty(a,b)&&e)&&c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){if(void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible))return this.setProperty(a,b,c,f,g)},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(0===this.children.length){if(d===c.Group.RETURN_TOTAL)return 0;if(d===c.Group.RETURN_ALL)return[]}var h=0;if(d===c.Group.RETURN_ALL)var i=[];for(var j=0;j0)return this.children[this.children.length-1]},c.Group.prototype.getBottom=function(){if(this.children.length>0)return this.children[0]},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return void 0===a&&(a=0),void 0===b&&(b=this.children.length),0===b?null:c.ArrayUtils.getRandomItem(this.children,a,b)},c.Group.prototype.getRandomExists=function(a,b){var c=this.getAll("exists",!0,a,b);return this.game.rnd.pick(c)},c.Group.prototype.getAll=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=this.children.length);for(var e=[],f=c;f0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d), +a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||a<0||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fa||this.priorityID===a&&this.sprite.renderOrderID>b))},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;b<10;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;b<10;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return!!(a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectClick)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPointerOver:function(a,b){return!!(this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectOver)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){if(null!==this.sprite&&void 0!==this.sprite.parent)return this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1)},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)this.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY))); +},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||navigator.userAgent.indexOf("Firefox/")!=-1||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||d<0&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return!(this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0))||(this.kill(),!1)},c.Component.LifeSpan.prototype={ +alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,!(!this._exists||!this.parent.exists)||(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,(!0),a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return!!this.preUpdateInWorld()&&this.preUpdateCore()},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c&&(this.frame=c,!0)},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;b=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){if(a>=0&&a<=this.width&&b>=0&&b<=this.height)return this.pixels[b*this.width+a]},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||e<=0)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||d<=0)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){ +return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;l<=g;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;q<=l;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(m<1e-8||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&e<=d?e+=2*Math.PI:f&&d<=e&&(d+=2*Math.PI);var h=f?(d-e)*-1:e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;s<=q;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dv?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;cb?h+j:b,d=ie?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else{g=f.points;for(var p=0;pb?h+o:b,d=i-oe?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(c<3)return[];for(var d=[],e=[],f=0;f3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;r3*g){if(!b)return null;for(d=[],e=[],f=0;f=0&&v>=0&&u+v<1},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;oj&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;f0)for(f=b;f=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);h<=e&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fc.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;b0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;ch?e:h,i=fj?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;kA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;dy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255; +}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLines0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;q<0&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;h0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;gk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(p<=k)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;ig;i--){for(j=0;j0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;e0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),a<0&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{ +get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(a){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=navigator.userAgent.toLowerCase().indexOf("iphone")!=-1,l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=navigator.userAgent.toLowerCase().indexOf("ipad")!=-1,"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]||2712847316!=c[0]&&null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return!("mp3"!==a||!this.mp3)||(!("ogg"!==a||!this.ogg&&!this.opus)||(!("m4a"!==a||!this.m4a)||(!("opus"!==a||!this.opus)||(!("wav"!==a||!this.wav)||(!("webm"!==a||!this.webm)||!("mp4"!==a||!this.dolby))))))},c.Device.canPlayVideo=function(a){return!("webm"!==a||!this.webmVideo&&!this.vp9Video)||(!("mp4"!==a||!this.mp4Video&&!this.h264Video)||(!("ogg"!==a&&"ogv"!==a||!this.oggVideo)||!("mpeg"!==a||!this.hlsVideo)))},c.Device.isConsoleOpen=function(){return!(!window.console||!window.console.firebug)||!(!window.console||(console.profile(),console.profileEnd(),console.clear&&console.clear(),!console.profiles))&&console.profiles.length>0},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);if(b)return a[b]},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;cb-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;c=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(d<=0)return 0;var e=(a-b)%d;return e<0&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;ba[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;cb[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return b<0?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;e<=d;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(b<0&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):b<0?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[c0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;j0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:aa?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),b!==-1))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(d!==-1?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return window.location.hostname.indexOf(a)!==-1},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=d.indexOf("?")!==-1?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;a0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1; +},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||b<=0)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;bthis.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),c===-1)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return a<.5?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,(!1)),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;a=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a])return this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d))},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return!(this.updateIfVisible&&!this.sprite.visible)&&(!(!this.currentAnim||!this.currentAnim.update())&&(this.currentFrame=this.currentAnim.currentFrame,!0))},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){if(this.currentAnim)return this.currentAnim.name}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){if(this.currentFrame)return this.currentFrame.index},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){if(this.currentFrame)return this.currentFrame.name},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame)&&(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),!this.onUpdate||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)):(this.complete(),!1):this.updateCurrentFrame(!0)))},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),!this.onUpdate||!a||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;b<0&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(b=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame, +c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;bj&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1&&{index:c,file:this._fileList[c]}},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else i===-1&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0, +console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(a){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(b){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(a){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,a)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;a1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottleb;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,(!0)),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return a-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);if(b>-1)return this.list.splice(b,1),a},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;e-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||b===-270||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(b===-90||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(b1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);if(b)return c.Color.getColor32(b.a,b.r,b.g,b.b)},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return b<128?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return b<128?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return b<128?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return b<128?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return b<128?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:c+e<0?c+=e:c=0),c>f?c=f:c<-f&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return!(!a.body||!b.body)&&(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0)},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h={},i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right)&&!(a.position.y>=b.bottom))))},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius,radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){if(0!==b.length&&a.exists)return this.getObjectsAtLocation(a.x,a.y,b,c,d,a)},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0, +this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return!(b||a>=1||void 0!==c&&c!==!0)||(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1)},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){b<0?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){b<0?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),PIXI.Tilemap=function(a,b,c,d,e,f){PIXI.DisplayObjectContainer.call(this),this.texture=a,this.tileWide=d,this.tileHigh=e,this.mapWide=b,this.mapHigh=c,this.width=this.mapWide*this.tileWide,this.height=this.mapHigh*this.tileHigh,this.layer=f,this.glBatch=null,this.lastTile=-1,this.dirty=!0,this.blendMode=PIXI.blendModes.NORMAL,this.batchDataElement=16;var g=b*c*this.batchDataElement;this.buffer=new PIXI.Float32Array(g)},PIXI.Tilemap.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Tilemap.prototype.constructor=PIXI.Tilemap,PIXI.Tilemap.prototype.update=function(){},PIXI.Tilemap.prototype.postUpdate=function(){},PIXI.Tilemap.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.tilemapShader),this._renderWholeTilemap(a),a.spriteBatch.start())},PIXI.Tilemap.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),this.positionBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this.positionBuffer),b.bufferData(b.ARRAY_BUFFER,this.buffer,b.STATIC_DRAW)},PIXI.Tilemap.prototype._renderBatch=function(a){if(this.glBatch){for(var b,c,d,e,f=a.gl,g=.5*this.game.width,h=.5*this.game.height,i=1/this.texture.width,j=1/this.texture.height,k=this.tileWide*i,l=this.tileHigh*j,m=1/g,n=1/h,o=.5*this.tileWide/g,p=.5*this.tileHigh/h,q=this.buffer,r=0,s=!1,t=0,u=this.glBatch.length;t0){var A=a.shaderManager.tilemapShader;f.bufferData(f.ARRAY_BUFFER,q,f.STATIC_DRAW),f.vertexAttribPointer(A.aPosition,4,f.FLOAT,!1,0,0),f.drawArrays(f.TRIANGLE_STRIP,0,Math.floor(r/4))}}},PIXI.Tilemap.prototype._renderWholeTilemap=function(a){var b=a.gl,c=a.shaderManager.tilemapShader;a.blendModeManager.setBlendMode(this.blendMode),b.uniform2f(c.uCentreOffset,1,-1),b.uniform1f(c.uAlpha,this.alpha),b.uniform2f(c.uScale,this.worldScale.x,this.worldScale.y),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ARRAY_BUFFER,this.positionBuffer),this._renderBatch(a)},PIXI.Tilemap.prototype.onTextureUpdate=function(){this.updateFrame=!0},PIXI.Tilemap.prototype.getBounds=function(a){for(var b=a||this.worldTransform,c=b.a,d=b.b,e=b.c,f=b.d,g=b.tx,h=b.ty,i=-(1/0),j=-(1/0),k=1/0,l=1/0,m=[0,0,this.mapWide*this.tileWide,0,this.mapWide*this.tileWide,this.mapHigh*this.tileHigh,0,this.mapHigh*this.tileHigh],n=0,o=m.length;ni?r:i,j=s>j?s:j}if(k===-(1/0)||j===1/0)return PIXI.EmptyRectangle;var t=this._bounds;return t.x=k,t.width=i-k,t.y=l,t.height=j-l,this._currentBounds=t,t},PIXI.TilemapShader=function(a){this._UID=PIXI._UID++,this.gl=a,this.program=null,this.fragmentSrc=[" precision lowp float;"," uniform sampler2D uImageSampler;"," uniform float uAlpha;"," varying vec2 vTexCoord;"," void main(void) {"," gl_FragColor = texture2D(uImageSampler, vTexCoord) * uAlpha;"," }"],this.vertexSrc=[" precision lowp float;"," uniform vec2 uCentreOffset;"," uniform vec2 uScale;"," attribute vec4 aPosition;"," varying vec2 vTexCoord;"," void main(void) {"," gl_Position.zw = vec2(1, 1);"," gl_Position.xy = (aPosition.xy + uCentreOffset) * uScale - uCentreOffset;"," vTexCoord = aPosition.zw;"," }"],this.textureCount=0,this.init()},PIXI.TilemapShader.prototype.constructor=PIXI.TilemapShader,PIXI.TilemapShader.prototype.init=function(){var a=this.gl,b=PIXI.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(b),this.aPosition=a.getAttribLocation(b,"aPosition"),this.uSampler=a.getUniformLocation(b,"uImageSampler"),this.uCentreOffset=a.getUniformLocation(b,"uCentreOffset"),this.uAlpha=a.getUniformLocation(b,"uAlpha"),this.uScale=a.getUniformLocation(b,"uScale"),this.attributes=[this.aPosition],this.uniforms=[this.uCentreOffset,this.uAlpha,this.uScale,this.uSampler],this.program=b},PIXI.TilemapShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.gl=null,this.uniforms=null,this.attributes=null},c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||c<=0)&&(c=32),(void 0===d||d<=0)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return!(c<=this.worldX)&&(!(d<=this.worldY)&&(!(a>=this.worldX+this.width)&&!(b>=this.worldY+this.height)))},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:!!b&&(this.faceTop||this.faceBottom||this.faceLeft||this.faceRight)},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tilesetLayers=null,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;r1)for(l=0;lthis.layers.length)return void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f);for(var g=1,h=this.tilesets.length;gthis.game.width&&(q=this.game.width),r>this.game.height&&(r=this.game.height);var k;return k=this.game.renderType===c.WEBGL?new c.TilemapLayerGL(this.game,this,this.layers.length-1,q,r):new c.TilemapLayer(this.game,this,this.layers.length-1,q,r),k.name=a,h.add(k)},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;kthis.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j;return j=this.game.renderType===c.WEBGL?new c.TilemapLayerGL(this.game,this,this.layers.length-1,m,n):new c.TilemapLayer(this.game,this,this.layers.length-1,m,n),j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;cb)){for(var f=a;f<=b;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;e-1&&this.collideIndexes.splice(e,1)}for(var f=0;f0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1; +},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&bthis.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;f1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;h=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(a<0?(i=e+a,j=e-1):a>0&&(j=a),b<0?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),i<=j){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(k<=l){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapLayerGL=function(a,b,d,e,f){this.game=a,e|=0,f|=0,this.map=b,this.index=d,this.layer=b.layers[d],this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1;var g=this.layer.tileset||this.map.tilesets[0];this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:g.tileWidth,ch:g.tileHeight,tileset:g,tilesets:[]},this._renderMode=0,this._scrollX=0,this._scrollY=0,this._results=[];var h=new PIXI.BaseTexture(g.image);PIXI.Tilemap.call(this,new PIXI.Texture(h),this.map.width,this.map.height,this._mc.tileset.tileWidth,this._mc.tileset.tileHeight,this.layer),c.Component.Core.init.call(this,a,0,0,null,null),this.fixedToCamera=!0},c.TilemapLayerGL.prototype=Object.create(PIXI.Tilemap.prototype),c.TilemapLayerGL.prototype.constructor=c.TilemapLayerGL,c.Component.Core.install.call(c.TilemapLayerGL.prototype,["FixedToCamera"]),c.TilemapLayerGL.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TileSprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.TileSprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.TileSprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.TileSprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayerGL.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayerGL.prototype.postUpdate=function(){c.Component.FixedToCamera.postUpdate.call(this);var a=this.game.camera;this.scrollX=a.x*this.scrollFactorX/this.scale.x,this.scrollY=a.y*this.scrollFactorY/this.scale.y,this.render()},c.TilemapLayerGL.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayerGL.prototype.resize=function(a,b){this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayerGL.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayerGL.prototype._fixX=function(a){return a<0&&(a=0),1===this.scrollFactorX?a:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayerGL.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayerGL.prototype._fixY=function(a){return a<0&&(a=0),1===this.scrollFactorY?a:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayerGL.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayerGL.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayerGL.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayerGL.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayerGL.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;h=0;p++,r--,n+=l){p>=j&&(p-=j);var w=this.layer.data[p];for(o=u,q=e-c,m=s;q>=0;o++,q--,m+=k){o>=i&&(o-=i);var x=w[o];if(!x||x.index<0)this._mc.tileset.addDegenerate(this.glBatch);else{var y=x.index;x.rotation||x.flipped?this._mc.tileset.drawGl(this.glBatch,-x.centerX+g,-x.centerY+h,y,x.alpha):this._mc.tileset.drawGl(this.glBatch,m+g,n+h,y,x.alpha)}}this._mc.tileset.addDegenerate(this.glBatch)}},c.TilemapLayerGL.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.game._width,d=this.game._height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=this._mc.cw,h=this._mc.ch,i=Math.floor((a-(g-e))/e),j=Math.floor((c-1+a)/e),k=Math.floor((b-(h-f))/f),l=Math.floor((d-1+b)/f);this.glBatch=[],this.renderRegion(a,b,i,k,j,l,0,-(h-f))},c.TilemapLayerGL.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=0|this._scrollX,c=0|this._scrollY,d=this._mc,e=d.scrollX-b,f=d.scrollY-c;if(a||0!==e||0!==f)return d.scrollX=b,d.scrollY=c,this.renderFull(),this.texture.baseTexture.dirty(),this.dirty=!1,!0}},Object.defineProperty(c.TilemapLayerGL.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayerGL.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayerGL.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayerGL.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayerGL.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;k>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;t536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,(-1),q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;f=0&&e+1=0&&f+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,this._flowTotal!==-1&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);gthis.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;f1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(a===-1&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(a){this.getUserMediaError(a)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){a<0?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return!!this.video&&this.video.loop},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-arcade-physics.map \ No newline at end of file diff --git a/build/custom/phaser-minimum.js b/build/custom/phaser-minimum.js index 2a6f40bb7..3b20686c3 100644 --- a/build/custom/phaser-minimum.js +++ b/build/custom/phaser-minimum.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:07 +* v2.6.2 "Kore Springs" - Built: Mon Jul 18 2016 23:41:16 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -4451,6 +4451,9 @@ PIXI.WebGLShaderManager.prototype.setContext = function(gl) // the next one is used for rendering triangle strips this.stripShader = new PIXI.StripShader(gl); + // shader for batch drawing tilemap tiles as a set of triangle strips with degenerate triangles between them + this.tilemapShader = new PIXI.TilemapShader(gl); + this.setShader(this.defaultShader); }; @@ -4538,6 +4541,8 @@ PIXI.WebGLShaderManager.prototype.destroy = function() this.stripShader.destroy(); + this.tilemapShader.destroy(); + this.gl = null; }; @@ -7843,7 +7848,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.1', + VERSION: '2.7.0 Beta', /** * An array of Phaser game instances. @@ -17463,6 +17468,13 @@ Phaser.Group.RETURN_TOTAL = 1; */ Phaser.Group.RETURN_CHILD = 2; +/** +* A returnType value, as specified in {@link #iterate} eg. +* @constant +* @type {integer} +*/ +Phaser.Group.RETURN_ALL = 3; + /** * A sort ordering value, as specified in {@link #sort} eg. * @constant @@ -17535,7 +17547,7 @@ Phaser.Group.prototype.add = function (child, silent, index) { this.addToHash(child); } - if (this.inputEnableChildren && !child.inputEnabled) + if (this.inputEnableChildren && (!child.input || child.inputEnabled)) { child.inputEnabled = true; } @@ -19142,13 +19154,25 @@ Phaser.Group.prototype.descendingSortHandler = function (a, b) { */ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, callbackContext, args) { - if (returnType === Phaser.Group.RETURN_TOTAL && this.children.length === 0) + if (this.children.length === 0) { - return 0; + if (returnType === Phaser.Group.RETURN_TOTAL) + { + return 0; + } + else if (returnType === Phaser.Group.RETURN_ALL) + { + return []; + } } var total = 0; + if (returnType === Phaser.Group.RETURN_ALL) + { + var output = []; + } + for (var i = 0; i < this.children.length; i++) { if (this.children[i][key] === value) @@ -19172,6 +19196,10 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return this.children[i]; } + else if (returnType === Phaser.Group.RETURN_ALL) + { + output.push(this.children[i]); + } } } @@ -19179,9 +19207,15 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return total; } - - // RETURN_CHILD or RETURN_NONE - return null; + else if (returnType === Phaser.Group.RETURN_ALL) + { + return output; + } + else + { + // RETURN_CHILD or RETURN_NONE + return null; + } }; @@ -19468,24 +19502,83 @@ Phaser.Group.prototype.countDead = function () { * Returns a random child from the group. * * @method Phaser.Group#getRandom -* @param {integer} [startIndex=0] - Offset from the front of the front of the group (lowest child). +* @param {integer} [startIndex=0] - Offset from the front of the group (lowest child). * @param {integer} [length=(to top)] - Restriction on the number of values you want to randomly select from. * @return {any} A random child of this Group. */ Phaser.Group.prototype.getRandom = function (startIndex, length) { - if (this.children.length === 0) + if (startIndex === undefined) { startIndex = 0; } + if (length === undefined) { length = this.children.length; } + + if (length === 0) { return null; } - startIndex = startIndex || 0; - length = length || this.children.length; - return Phaser.ArrayUtils.getRandomItem(this.children, startIndex, length); }; +/** +* Returns a random child from the Group that has `exists` set to `true`. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getRandomExists +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up to. +* @return {any} A random child of this Group that exists. +*/ +Phaser.Group.prototype.getRandomExists = function (startIndex, endIndex) { + + var list = this.getAll('exists', true, startIndex, endIndex); + + return this.game.rnd.pick(list); + +}; + +/** +* Returns all children in this Group. +* +* You can optionally specify a matching criteria using the `property` and `value` arguments. +* +* For example: `getAll('exists', true)` would return only children that have their exists property set. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getAll +* @param {string} [property] - An optional property to test against the value argument. +* @param {any} [value] - If property is set then Child.property must strictly equal this value to be included in the results. +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up until. +* @return {any} A random existing child of this Group. +*/ +Phaser.Group.prototype.getAll = function (property, value, startIndex, endIndex) { + + if (startIndex === undefined) { startIndex = 0; } + if (endIndex === undefined) { endIndex = this.children.length; } + + var output = []; + + for (var i = startIndex; i < endIndex; i++) + { + var child = this.children[i]; + + if (property && child[property] === value) + { + output.push(child); + } + } + + return output; + +}; + /** * Removes the given child from this group. * @@ -26359,8 +26452,6 @@ Phaser.InputHandler.prototype = { this.sprite.events.onAddedToGroup.add(this.addedToGroup, this); this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup, this); - this.flagged = false; - return this.sprite; }, @@ -26417,7 +26508,6 @@ Phaser.InputHandler.prototype = { reset: function () { this.enabled = false; - this.flagged = false; for (var i = 0; i < 10; i++) { diff --git a/build/custom/phaser-minimum.map b/build/custom/phaser-minimum.map index 8f47aef72..f0eb53dc7 100644 --- a/build/custom/phaser-minimum.map +++ b/build/custom/phaser-minimum.map @@ -1 +1 @@ -{"version":3,"sources":["phaser-minimum.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","connect","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","LITTLE_ENDIAN","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","userAgent","test","vita","kindle","match","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","ctx","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","backgroundColor","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","translateX","translateY","skewX","skewY","setSmoothingEnabled","vendor","prefix","getSmoothingEnabled","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","snapToCeil","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","point1","point2","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","diff","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","k","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","t2","t3","difference","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","sign","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","charCodeAt","integer","real","integerInRange","realInRange","normal","pick","ary","weightedPick","timestamp","parseFloat","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","netNoop","isDisabled","getHostName","checkDomainName","updateQueryString","getQueryString","decodeURI","prevTime","physicsElapsed","_desiredFps","suggestedFps","advancedTiming","frames","fps","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","_pause","_resume","elapsedSince","since","elapsedSecondsSince","running","expired","onComplete","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","pendingDelete","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","updateFrameData","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","isPaused","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onStart","onUpdate","onLoop","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reversed","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","Frame","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","FrameData","_frameNames","addFrame","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","addImage","checkImageKey","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","textureFrame","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getBitmapFont","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","path","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","properties","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","status","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","lineHeight","letters","charCode","xAdvance","kerning","kernings","second","finalizeBitmapFont","_face","_size","_lineHeight","letter","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","debugNoop","soundInfo","cameraInfo","spriteInputInfo","inputInfo","spriteBounds","ropeSegments","spriteInfo","spriteCoords","lineInfo","pixel","geom","rectangle","quadTree","bodyInfo","box2dWorld","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","list","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","unshift","rotateLeft","numberArray","numberArrayStep","LinkedList","prev","entity","bmd","palettes","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","manager","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","packPixel","unpackPixel","hsl","hsv","createColor","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","HSLtoRGB","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","exec","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","red","green","blue","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","r2","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendLighten","blendDarken","blendMultiply","blendAverage","blendAdd","blendSubtract","blendDifference","blendNegation","blendScreen","blendExclusion","blendOverlay","blendSoftLight","blendHardLight","blendColorDodge","blendColorBurn","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","box2d","chipmunk","matter","NINJA","BOX2D","CHIPMUNK","MATTERJS","Ninja","P2","Matter","startSystem","system","Box2D","enableAABB","emitters","ID","POLY","RECT","CIRC","ELIP","RREC"],"mappings":"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","file":"phaser-minimum.min.js"} \ No newline at end of file +{"version":3,"sources":["phaser-minimum.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","tilemapShader","TilemapShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","RETURN_ALL","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","getRandomExists","list","getAll","pick","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","connect","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","LITTLE_ENDIAN","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","userAgent","test","vita","kindle","match","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","ctx","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","backgroundColor","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","translateX","translateY","skewX","skewY","setSmoothingEnabled","vendor","prefix","getSmoothingEnabled","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","snapToCeil","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","point1","point2","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","diff","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","k","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","t2","t3","difference","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","sign","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","charCodeAt","integer","real","integerInRange","realInRange","normal","ary","weightedPick","timestamp","parseFloat","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","netNoop","isDisabled","getHostName","checkDomainName","updateQueryString","getQueryString","decodeURI","prevTime","physicsElapsed","_desiredFps","suggestedFps","advancedTiming","frames","fps","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","_pause","_resume","elapsedSince","since","elapsedSecondsSince","running","expired","onComplete","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","pendingDelete","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","updateFrameData","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","isPaused","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onStart","onUpdate","onLoop","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reversed","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","Frame","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","FrameData","_frameNames","addFrame","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","addImage","checkImageKey","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","textureFrame","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getBitmapFont","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","path","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","properties","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","status","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","lineHeight","letters","charCode","xAdvance","kerning","kernings","second","finalizeBitmapFont","_face","_size","_lineHeight","letter","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","debugNoop","soundInfo","cameraInfo","spriteInputInfo","inputInfo","spriteBounds","ropeSegments","spriteInfo","spriteCoords","lineInfo","pixel","geom","rectangle","quadTree","bodyInfo","box2dWorld","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","unshift","rotateLeft","numberArray","numberArrayStep","LinkedList","prev","entity","bmd","palettes","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","manager","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","packPixel","unpackPixel","hsl","hsv","createColor","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","HSLtoRGB","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","exec","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","red","green","blue","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","r2","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendLighten","blendDarken","blendMultiply","blendAverage","blendAdd","blendSubtract","blendDifference","blendNegation","blendScreen","blendExclusion","blendOverlay","blendSoftLight","blendHardLight","blendColorDodge","blendColorBurn","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","box2d","chipmunk","matter","NINJA","BOX2D","CHIPMUNK","MATTERJS","Ninja","P2","Matter","startSystem","system","Box2D","enableAABB","emitters","ID","POLY","RECT","CIRC","ELIP","RREC"],"mappings":"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","file":"phaser-minimum.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-minimum.min.js b/build/custom/phaser-minimum.min.js index 09e6b768b..bf0efb811 100644 --- a/build/custom/phaser-minimum.min.js +++ b/build/custom/phaser-minimum.min.js @@ -1,15 +1,15 @@ -/* Phaser v2.6.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.2 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a; -},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Component=function(){},c.Component.Angle=function(){},c.Component.Angle.prototype={angle:{get:function(){return c.Math.wrapAngle(c.Math.radToDeg(this.rotation))},set:function(a){this.rotation=c.Math.degToRad(c.Math.wrapAngle(a))}}},c.Component.Animation=function(){},c.Component.Animation.prototype={play:function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0}},c.Component.AutoCull=function(){},c.Component.AutoCull.prototype={autoCull:!1,inCamera:{get:function(){return this.autoCull||this.checkWorldBounds||(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y),this.game.world.camera.view.intersects(this._bounds)}}},c.Component.Bounds=function(){},c.Component.Bounds.prototype={offsetX:{get:function(){return this.anchor.x*this.width}},offsetY:{get:function(){return this.anchor.y*this.height}},centerX:{get:function(){return this.x-this.offsetX+.5*this.width},set:function(a){this.x=a+this.offsetX-.5*this.width}},centerY:{get:function(){return this.y-this.offsetY+.5*this.height},set:function(a){this.y=a+this.offsetY-.5*this.height}},left:{get:function(){return this.x-this.offsetX},set:function(a){this.x=a+this.offsetX}},right:{get:function(){return this.x+this.width-this.offsetX},set:function(a){this.x=a-this.width+this.offsetX}},top:{get:function(){return this.y-this.offsetY},set:function(a){this.y=a+this.offsetY}},bottom:{get:function(){return this.y+this.height-this.offsetY},set:function(a){this.y=a-this.height+this.offsetY}},alignIn:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.top=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.top=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.top=a.top-e;break;case c.LEFT_CENTER:this.left=a.left-d,this.centerY=a.centerY+e;break;case c.CENTER:this.centerX=a.centerX+d,this.centerY=a.centerY+e;break;case c.RIGHT_CENTER:this.right=a.right+d,this.centerY=a.centerY+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.bottom=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.bottom=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.bottom=a.bottom+e}return this},alignTo:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.bottom=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.bottom=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.bottom=a.top-e;break;case c.LEFT_TOP:this.right=a.left-d,this.top=a.top-e;break;case c.LEFT_CENTER:this.right=a.left-d,this.centerY=a.centerY+e;break;case c.LEFT_BOTTOM:this.right=a.left-d,this.bottom=a.bottom+e;break;case c.RIGHT_TOP:this.left=a.right+d,this.top=a.top-e;break;case c.RIGHT_CENTER:this.left=a.right+d,this.centerY=a.centerY+e;break;case c.RIGHT_BOTTOM:this.left=a.right+d,this.bottom=a.bottom+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.top=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.top=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.top=a.bottom+e}return this}},c.Group.prototype.alignIn=c.Component.Bounds.prototype.alignIn,c.Group.prototype.alignTo=c.Component.Bounds.prototype.alignTo,c.Component.BringToTop=function(){},c.Component.BringToTop.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},c.Component.BringToTop.prototype.sendToBack=function(){return this.parent&&this.parent.sendToBack(this),this},c.Component.BringToTop.prototype.moveUp=function(){return this.parent&&this.parent.moveUp(this),this},c.Component.BringToTop.prototype.moveDown=function(){return this.parent&&this.parent.moveDown(this),this},c.Component.Core=function(){},c.Component.Core.install=function(a){c.Utils.mixinPrototype(this,c.Component.Core.prototype),this.components={};for(var b=0;bthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var f="Over",g="Out",h="Down",i="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(f,a,this.input.pointerOver()),this.setStateFrame(g,b,!this.input.pointerOver()),this.setStateFrame(h,c,this.input.pointerDown()),this.setStateFrame(i,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,j,k,l){this.setStateSound(f,a,b),this.setStateSound(g,e,j),this.setStateSound(h,c,d),this.setStateSound(i,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(f,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(f),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(f),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(g),this.playStateSound(g),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(i),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(g);else{var d=this.changeStateFrame(i);d||(c?this.changeStateFrame(f):this.changeStateFrame(g))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.TileSprite=function(){},c.Device=function(){this.deviceReadyAt=0,this.initialized=!1,this.desktop=!1,this.iOS=!1,this.iOSVersion=0,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.electron=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.canvasBitBltShift=null,this.webGL=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.worker=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!0,this.quirksMode=!1,this.touch=!1,this.mspointer=!1,this.wheelEvent=null,this.arora=!1,this.chrome=!1,this.chromeVersion=0,this.epiphany=!1,this.firefox=!1,this.firefoxVersion=0,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.edge=!1,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.safariVersion=0,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.dolby=!1,this.oggVideo=!1,this.h264Video=!1,this.mp4Video=!1,this.webmVideo=!1,this.vp9Video=!1,this.hlsVideo=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.LITTLE_ENDIAN=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1},c.Device=new c.Device,c.Device.onInitialized=new c.Signal,c.Device.whenReady=function(a,b,c){var d=this._readyCheck;if(this.deviceReadyAt||!d)a.call(b,this);else if(d._monitor||c)d._queue=d._queue||[],d._queue.push([a,b]);else{d._monitor=d.bind(this),d._queue=d._queue||[],d._queue.push([a,b]);var e="undefined"!=typeof window.cordova,f=navigator.isCocoonJS;"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(d._monitor,0):e&&!f?document.addEventListener("deviceready",d._monitor,!1):(document.addEventListener("DOMContentLoaded",d._monitor,!1),window.addEventListener("load",d._monitor,!1))}},c.Device._readyCheck=function(){var a=this._readyCheck;if(document.body){if(!this.deviceReadyAt){this.deviceReadyAt=Date.now(),document.removeEventListener("deviceready",a._monitor),document.removeEventListener("DOMContentLoaded",a._monitor),window.removeEventListener("load",a._monitor),this._initialize(),this.initialized=!0,this.onInitialized.dispatch(this);for(var b;b=a._queue.shift();){var c=b[0],d=b[1];c.call(d,this)}this._readyCheck=null,this._initialize=null,this.onInitialized=null}}else window.setTimeout(a._monitor,20)},c.Device._initialize=function(){function a(){var a=navigator.userAgent;/Playstation Vita/.test(a)?l.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?l.kindle=!0:/Android/.test(a)?l.android=!0:/CrOS/.test(a)?l.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?(l.iOS=!0,navigator.appVersion.match(/OS (\d+)/),l.iOSVersion=parseInt(RegExp.$1,10)):/Linux/.test(a)?l.linux=!0:/Mac OS/.test(a)?l.macOS=!0:/Windows/.test(a)&&(l.windows=!0),(/Windows Phone/i.test(a)||/IEMobile/i.test(a))&&(l.android=!1,l.iOS=!1,l.macOS=!1,l.windows=!0,l.windowsPhone=!0);var b=/Silk/.test(a);(l.windows||l.macOS||l.linux&&!b||l.chromeOS)&&(l.desktop=!0),(l.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(l.desktop=!1)}function b(){l.canvas=!!window.CanvasRenderingContext2D||l.cocoonJS;try{l.localStorage=!!localStorage.getItem}catch(a){l.localStorage=!1}l.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),l.fileSystem=!!window.requestFileSystem,l.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),l.webGL=!!l.webGL,l.worker=!!window.Worker,l.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,l.quirksMode="CSS1Compat"!==document.compatMode,navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.oGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,l.getUserMedia=l.getUserMedia&&!!navigator.getUserMedia&&!!window.URL,l.firefox&&l.firefoxVersion<21&&(l.getUserMedia=!1),!l.iOS&&(l.ie||l.firefox||l.chrome)&&(l.canvasBitBltShift=!0),(l.safari||l.mobileSafari)&&(l.canvasBitBltShift=!1)}function c(){("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){ -return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree;var l=function(){};c.Net=l,c.Net.prototype={isDisabled:!0,getHostName:l,checkDomainName:l,updateQueryString:l,getQueryString:l,decodeURI:l},c.Net.prototype.constructor=c.Net,c.TweenManager=function(){},c.TweenManager.prototype.update=function(){},c.TweenManager.prototype.removeAll=function(){},c.TweenManager.prototype.removeFrom=function(){},c.TweenManager.prototype.constructor=c.TweenManager,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b)); -})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}});var m=function(){};return c.Utils.Debug=m,c.Utils.Debug.prototype={isDisabled:!0,boot:m,preUpdate:m,reset:m,start:m,stop:m,line:m,soundInfo:m,cameraInfo:m,timer:m,pointer:m,spriteInputInfo:m,key:m,inputInfo:m,spriteBounds:m,ropeSegments:m,spriteInfo:m,spriteCoords:m,lineInfo:m,pixel:m,geom:m,rectangle:m,text:m,quadTree:m,body:m,bodyInfo:m,box2dWorld:m,box2dBody:m},c.Utils.Debug.prototype.constructor=c.Utils.Debug,c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a, -this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(c<0||d<0)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(b===-1)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(b<0||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a<0||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(b!==-1)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&e<=d){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;co?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;b0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(f===-1){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;q0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;e=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;e>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;e0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);i0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return i+j<=k},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a=c&&a<=d&&b>=e&&b<=f},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=c-h&&(k-=h,c+=i),m=0&&p<=1&&q>=0&&q<=1?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&d<=j&&e>=i&&e<=k||f>=h&&f<=j&&g>=i&&g<=k)return!0;if(d=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&l<=k)return!0}else if(d>j&&f<=j&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&l<=k))return!0;if(e=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&l<=j)return!0}else if(e>k&&g<=k&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&l<=j))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(this.y*-1,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y*-1,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y; +a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(d<1)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;e0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;c=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return!(a.width<=0||a.height<=0)&&(b>=a.x&&b=a.y&&c=a&&e=b&&fb.volume)&&(a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!(!d&&this._shake.duration>0)&&(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?!!(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)||(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(h!==-1){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return this._indexOfListener(a,b)!==-1},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;e=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;gthis.children.length||a===-1&&b===-1))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor)return this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor};c.Group.prototype.next=function(){if(this.cursor)return this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.previous=function(){if(this.cursor)return 0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return a<0||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!(!c.Utils.getProperty(a,b)&&e)&&c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){if(void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible))return this.setProperty(a,b,c,f,g)},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(0===this.children.length){if(d===c.Group.RETURN_TOTAL)return 0;if(d===c.Group.RETURN_ALL)return[]}var h=0;if(d===c.Group.RETURN_ALL)var i=[];for(var j=0;j0)return this.children[this.children.length-1]},c.Group.prototype.getBottom=function(){if(this.children.length>0)return this.children[0]},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return void 0===a&&(a=0),void 0===b&&(b=this.children.length),0===b?null:c.ArrayUtils.getRandomItem(this.children,a,b)},c.Group.prototype.getRandomExists=function(a,b){var c=this.getAll("exists",!0,a,b);return this.game.rnd.pick(c)},c.Group.prototype.getAll=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=this.children.length);for(var e=[],f=c;f0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||a<0||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c, +this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fa||this.priorityID===a&&this.sprite.renderOrderID>b))},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;b<10;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;b<10;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return!!(a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectClick)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPointerOver:function(a,b){return!!(this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectOver)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){if(null!==this.sprite&&void 0!==this.sprite.parent)return this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1)},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)this.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Component=function(){},c.Component.Angle=function(){},c.Component.Angle.prototype={angle:{get:function(){return c.Math.wrapAngle(c.Math.radToDeg(this.rotation))},set:function(a){this.rotation=c.Math.degToRad(c.Math.wrapAngle(a))}}},c.Component.Animation=function(){},c.Component.Animation.prototype={play:function(a,b,c,d){if(this.animations)return this.animations.play(a,b,c,d)}},c.Component.AutoCull=function(){},c.Component.AutoCull.prototype={autoCull:!1,inCamera:{get:function(){return this.autoCull||this.checkWorldBounds||(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y),this.game.world.camera.view.intersects(this._bounds)}}},c.Component.Bounds=function(){},c.Component.Bounds.prototype={offsetX:{get:function(){return this.anchor.x*this.width}},offsetY:{get:function(){return this.anchor.y*this.height}},centerX:{get:function(){return this.x-this.offsetX+.5*this.width},set:function(a){this.x=a+this.offsetX-.5*this.width}},centerY:{get:function(){return this.y-this.offsetY+.5*this.height},set:function(a){this.y=a+this.offsetY-.5*this.height}},left:{get:function(){return this.x-this.offsetX},set:function(a){this.x=a+this.offsetX}},right:{get:function(){return this.x+this.width-this.offsetX},set:function(a){this.x=a-this.width+this.offsetX}},top:{get:function(){return this.y-this.offsetY},set:function(a){this.y=a+this.offsetY}},bottom:{get:function(){return this.y+this.height-this.offsetY},set:function(a){this.y=a-this.height+this.offsetY}},alignIn:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.top=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.top=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.top=a.top-e;break;case c.LEFT_CENTER:this.left=a.left-d,this.centerY=a.centerY+e;break;case c.CENTER:this.centerX=a.centerX+d,this.centerY=a.centerY+e;break;case c.RIGHT_CENTER:this.right=a.right+d,this.centerY=a.centerY+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.bottom=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.bottom=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.bottom=a.bottom+e}return this},alignTo:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.bottom=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.bottom=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.bottom=a.top-e;break;case c.LEFT_TOP:this.right=a.left-d,this.top=a.top-e;break;case c.LEFT_CENTER:this.right=a.left-d,this.centerY=a.centerY+e;break;case c.LEFT_BOTTOM:this.right=a.left-d,this.bottom=a.bottom+e;break;case c.RIGHT_TOP:this.left=a.right+d,this.top=a.top-e;break;case c.RIGHT_CENTER:this.left=a.right+d,this.centerY=a.centerY+e;break;case c.RIGHT_BOTTOM:this.left=a.right+d,this.bottom=a.bottom+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.top=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.top=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.top=a.bottom+e}return this}},c.Group.prototype.alignIn=c.Component.Bounds.prototype.alignIn,c.Group.prototype.alignTo=c.Component.Bounds.prototype.alignTo,c.Component.BringToTop=function(){},c.Component.BringToTop.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},c.Component.BringToTop.prototype.sendToBack=function(){return this.parent&&this.parent.sendToBack(this),this},c.Component.BringToTop.prototype.moveUp=function(){return this.parent&&this.parent.moveUp(this),this},c.Component.BringToTop.prototype.moveDown=function(){return this.parent&&this.parent.moveDown(this),this},c.Component.Core=function(){},c.Component.Core.install=function(a){c.Utils.mixinPrototype(this,c.Component.Core.prototype),this.components={};for(var b=0;bthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return!(this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0))||(this.kill(),!1)},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,!(!this._exists||!this.parent.exists)||(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,(!0),a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return!!this.preUpdateInWorld()&&this.preUpdateCore()},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var f="Over",g="Out",h="Down",i="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c&&(this.frame=c,!0)},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(f,a,this.input.pointerOver()),this.setStateFrame(g,b,!this.input.pointerOver()),this.setStateFrame(h,c,this.input.pointerDown()),this.setStateFrame(i,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,j,k,l){this.setStateSound(f,a,b),this.setStateSound(g,e,j),this.setStateSound(h,c,d),this.setStateSound(i,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(f,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(f),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(f),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(g),this.playStateSound(g),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(i),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(g);else{var d=this.changeStateFrame(i);d||(c?this.changeStateFrame(f):this.changeStateFrame(g))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.TileSprite=function(){},c.Device=function(){this.deviceReadyAt=0,this.initialized=!1,this.desktop=!1,this.iOS=!1,this.iOSVersion=0,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.electron=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.canvasBitBltShift=null,this.webGL=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.worker=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!0,this.quirksMode=!1,this.touch=!1,this.mspointer=!1,this.wheelEvent=null,this.arora=!1,this.chrome=!1,this.chromeVersion=0,this.epiphany=!1,this.firefox=!1,this.firefoxVersion=0,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.edge=!1,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.safariVersion=0,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.dolby=!1,this.oggVideo=!1,this.h264Video=!1,this.mp4Video=!1,this.webmVideo=!1,this.vp9Video=!1,this.hlsVideo=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.LITTLE_ENDIAN=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1},c.Device=new c.Device,c.Device.onInitialized=new c.Signal,c.Device.whenReady=function(a,b,c){var d=this._readyCheck;if(this.deviceReadyAt||!d)a.call(b,this);else if(d._monitor||c)d._queue=d._queue||[],d._queue.push([a,b]);else{d._monitor=d.bind(this),d._queue=d._queue||[],d._queue.push([a,b]);var e="undefined"!=typeof window.cordova,f=navigator.isCocoonJS;"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(d._monitor,0):e&&!f?document.addEventListener("deviceready",d._monitor,!1):(document.addEventListener("DOMContentLoaded",d._monitor,!1),window.addEventListener("load",d._monitor,!1))}},c.Device._readyCheck=function(){var a=this._readyCheck;if(document.body){if(!this.deviceReadyAt){this.deviceReadyAt=Date.now(),document.removeEventListener("deviceready",a._monitor),document.removeEventListener("DOMContentLoaded",a._monitor),window.removeEventListener("load",a._monitor),this._initialize(),this.initialized=!0,this.onInitialized.dispatch(this);for(var b;b=a._queue.shift();){var c=b[0],d=b[1];c.call(d,this)}this._readyCheck=null,this._initialize=null,this.onInitialized=null}}else window.setTimeout(a._monitor,20)},c.Device._initialize=function(){function a(){var a=navigator.userAgent;/Playstation Vita/.test(a)?l.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?l.kindle=!0:/Android/.test(a)?l.android=!0:/CrOS/.test(a)?l.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?(l.iOS=!0,navigator.appVersion.match(/OS (\d+)/),l.iOSVersion=parseInt(RegExp.$1,10)):/Linux/.test(a)?l.linux=!0:/Mac OS/.test(a)?l.macOS=!0:/Windows/.test(a)&&(l.windows=!0),(/Windows Phone/i.test(a)||/IEMobile/i.test(a))&&(l.android=!1,l.iOS=!1,l.macOS=!1,l.windows=!0,l.windowsPhone=!0);var b=/Silk/.test(a);(l.windows||l.macOS||l.linux&&!b||l.chromeOS)&&(l.desktop=!0),(l.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(l.desktop=!1)}function b(){l.canvas=!!window.CanvasRenderingContext2D||l.cocoonJS;try{l.localStorage=!!localStorage.getItem}catch(a){l.localStorage=!1}l.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),l.fileSystem=!!window.requestFileSystem,l.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(a){return!1}}(),l.webGL=!!l.webGL,l.worker=!!window.Worker,l.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,l.quirksMode="CSS1Compat"!==document.compatMode,navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.oGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,l.getUserMedia=l.getUserMedia&&!!navigator.getUserMedia&&!!window.URL,l.firefox&&l.firefoxVersion<21&&(l.getUserMedia=!1),!l.iOS&&(l.ie||l.firefox||l.chrome)&&(l.canvasBitBltShift=!0),(l.safari||l.mobileSafari)&&(l.canvasBitBltShift=!1)}function c(){("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(a){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=navigator.userAgent.toLowerCase().indexOf("iphone")!=-1,l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=navigator.userAgent.toLowerCase().indexOf("ipad")!=-1,"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]||2712847316!=c[0]&&null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return!("mp3"!==a||!this.mp3)||(!("ogg"!==a||!this.ogg&&!this.opus)||(!("m4a"!==a||!this.m4a)||(!("opus"!==a||!this.opus)||(!("wav"!==a||!this.wav)||(!("webm"!==a||!this.webm)||!("mp4"!==a||!this.dolby))))))},c.Device.canPlayVideo=function(a){return!("webm"!==a||!this.webmVideo&&!this.vp9Video)||(!("mp4"!==a||!this.mp4Video&&!this.h264Video)||(!("ogg"!==a&&"ogv"!==a||!this.oggVideo)||!("mpeg"!==a||!this.hlsVideo)))},c.Device.isConsoleOpen=function(){return!(!window.console||!window.console.firebug)||!(!window.console||(console.profile(),console.profileEnd(),console.clear&&console.clear(),!console.profiles))&&console.profiles.length>0},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);if(b)return a[b]},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;cb-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;c=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(d<=0)return 0;var e=(a-b)%d;return e<0&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;ba[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;cb[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return b<0?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;e<=d;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(b<0&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):b<0?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[c0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;j0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:aa?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),b!==-1))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(d!==-1?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree;var l=function(){};c.Net=l,c.Net.prototype={isDisabled:!0,getHostName:l,checkDomainName:l,updateQueryString:l,getQueryString:l,decodeURI:l},c.Net.prototype.constructor=c.Net,c.TweenManager=function(){},c.TweenManager.prototype.update=function(){},c.TweenManager.prototype.removeAll=function(){},c.TweenManager.prototype.removeFrom=function(){},c.TweenManager.prototype.constructor=c.TweenManager,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,(!1)),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;a=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a])return this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d))},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return!(this.updateIfVisible&&!this.sprite.visible)&&(!(!this.currentAnim||!this.currentAnim.update())&&(this.currentFrame=this.currentAnim.currentFrame,!0))},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){if(this.currentAnim)return this.currentAnim.name}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){if(this.currentFrame)return this.currentFrame.index},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){if(this.currentFrame)return this.currentFrame.name},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame)&&(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),!this.onUpdate||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)):(this.complete(),!1):this.updateCurrentFrame(!0)))},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),!this.onUpdate||!a||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;b<0&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(b=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;bj&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"), +void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1&&{index:c,file:this._fileList[c]}},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else i===-1&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format); +this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(a){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(b){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(a){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottleb;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}});var m=function(){};return c.Utils.Debug=m,c.Utils.Debug.prototype={isDisabled:!0,boot:m,preUpdate:m,reset:m,start:m,stop:m,line:m,soundInfo:m,cameraInfo:m,timer:m,pointer:m,spriteInputInfo:m,key:m,inputInfo:m,spriteBounds:m,ropeSegments:m,spriteInfo:m,spriteCoords:m,lineInfo:m,pixel:m,geom:m,rectangle:m,text:m,quadTree:m,body:m,bodyInfo:m,box2dWorld:m,box2dBody:m},c.Utils.Debug.prototype.constructor=c.Utils.Debug,c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,!(!a||1!==a.nodeType)&&this.calibrate(a.getBoundingClientRect(),b)},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return a-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);if(b>-1)return this.list.splice(b,1),a},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;e-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||b===-270||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(b===-90||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(b1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);if(b)return c.Color.getColor32(b.a,b.r,b.g,b.b)},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return b<128?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return b<128?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return b<128?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return b<128?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return b<128?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-minimum.map \ No newline at end of file diff --git a/build/custom/phaser-no-physics.js b/build/custom/phaser-no-physics.js index 232f3002b..10c580f35 100644 --- a/build/custom/phaser-no-physics.js +++ b/build/custom/phaser-no-physics.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:02 +* v2.6.2 "Kore Springs" - Built: Mon Jul 18 2016 23:41:11 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -4451,6 +4451,9 @@ PIXI.WebGLShaderManager.prototype.setContext = function(gl) // the next one is used for rendering triangle strips this.stripShader = new PIXI.StripShader(gl); + // shader for batch drawing tilemap tiles as a set of triangle strips with degenerate triangles between them + this.tilemapShader = new PIXI.TilemapShader(gl); + this.setShader(this.defaultShader); }; @@ -4538,6 +4541,8 @@ PIXI.WebGLShaderManager.prototype.destroy = function() this.stripShader.destroy(); + this.tilemapShader.destroy(); + this.gl = null; }; @@ -9043,7 +9048,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.1', + VERSION: '2.7.0 Beta', /** * An array of Phaser game instances. @@ -18663,6 +18668,13 @@ Phaser.Group.RETURN_TOTAL = 1; */ Phaser.Group.RETURN_CHILD = 2; +/** +* A returnType value, as specified in {@link #iterate} eg. +* @constant +* @type {integer} +*/ +Phaser.Group.RETURN_ALL = 3; + /** * A sort ordering value, as specified in {@link #sort} eg. * @constant @@ -18735,7 +18747,7 @@ Phaser.Group.prototype.add = function (child, silent, index) { this.addToHash(child); } - if (this.inputEnableChildren && !child.inputEnabled) + if (this.inputEnableChildren && (!child.input || child.inputEnabled)) { child.inputEnabled = true; } @@ -20342,13 +20354,25 @@ Phaser.Group.prototype.descendingSortHandler = function (a, b) { */ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, callbackContext, args) { - if (returnType === Phaser.Group.RETURN_TOTAL && this.children.length === 0) + if (this.children.length === 0) { - return 0; + if (returnType === Phaser.Group.RETURN_TOTAL) + { + return 0; + } + else if (returnType === Phaser.Group.RETURN_ALL) + { + return []; + } } var total = 0; + if (returnType === Phaser.Group.RETURN_ALL) + { + var output = []; + } + for (var i = 0; i < this.children.length; i++) { if (this.children[i][key] === value) @@ -20372,6 +20396,10 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return this.children[i]; } + else if (returnType === Phaser.Group.RETURN_ALL) + { + output.push(this.children[i]); + } } } @@ -20379,9 +20407,15 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return total; } - - // RETURN_CHILD or RETURN_NONE - return null; + else if (returnType === Phaser.Group.RETURN_ALL) + { + return output; + } + else + { + // RETURN_CHILD or RETURN_NONE + return null; + } }; @@ -20668,24 +20702,83 @@ Phaser.Group.prototype.countDead = function () { * Returns a random child from the group. * * @method Phaser.Group#getRandom -* @param {integer} [startIndex=0] - Offset from the front of the front of the group (lowest child). +* @param {integer} [startIndex=0] - Offset from the front of the group (lowest child). * @param {integer} [length=(to top)] - Restriction on the number of values you want to randomly select from. * @return {any} A random child of this Group. */ Phaser.Group.prototype.getRandom = function (startIndex, length) { - if (this.children.length === 0) + if (startIndex === undefined) { startIndex = 0; } + if (length === undefined) { length = this.children.length; } + + if (length === 0) { return null; } - startIndex = startIndex || 0; - length = length || this.children.length; - return Phaser.ArrayUtils.getRandomItem(this.children, startIndex, length); }; +/** +* Returns a random child from the Group that has `exists` set to `true`. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getRandomExists +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up to. +* @return {any} A random child of this Group that exists. +*/ +Phaser.Group.prototype.getRandomExists = function (startIndex, endIndex) { + + var list = this.getAll('exists', true, startIndex, endIndex); + + return this.game.rnd.pick(list); + +}; + +/** +* Returns all children in this Group. +* +* You can optionally specify a matching criteria using the `property` and `value` arguments. +* +* For example: `getAll('exists', true)` would return only children that have their exists property set. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getAll +* @param {string} [property] - An optional property to test against the value argument. +* @param {any} [value] - If property is set then Child.property must strictly equal this value to be included in the results. +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up until. +* @return {any} A random existing child of this Group. +*/ +Phaser.Group.prototype.getAll = function (property, value, startIndex, endIndex) { + + if (startIndex === undefined) { startIndex = 0; } + if (endIndex === undefined) { endIndex = this.children.length; } + + var output = []; + + for (var i = startIndex; i < endIndex; i++) + { + var child = this.children[i]; + + if (property && child[property] === value) + { + output.push(child); + } + } + + return output; + +}; + /** * Removes the given child from this group. * @@ -27559,8 +27652,6 @@ Phaser.InputHandler.prototype = { this.sprite.events.onAddedToGroup.add(this.addedToGroup, this); this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup, this); - this.flagged = false; - return this.sprite; }, @@ -27617,7 +27708,6 @@ Phaser.InputHandler.prototype = { reset: function () { this.enabled = false; - this.flagged = false; for (var i = 0; i < 10; i++) { @@ -38002,6 +38092,8 @@ Phaser.BitmapData.prototype = { ctx.shadowOffsetX = x || 10; ctx.shadowOffsetY = y || 10; } + + return this; }, @@ -38153,6 +38245,8 @@ Phaser.BitmapData.prototype = { ctx.fillText(text, x, y); ctx.font = prevFont; + + return this; }, @@ -42330,7 +42424,6 @@ Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) { * @constructor * @extends PIXI.RenderTexture * @param {Phaser.Game} game - Current game instance. -* @param {string} key - Internal Phaser reference key for the render texture. * @param {number} [width=100] - The width of the render texture. * @param {number} [height=100] - The height of the render texture. * @param {string} [key=''] - The key of the RenderTexture in the Cache, if stored there. @@ -63040,8 +63133,7 @@ Object.defineProperty(Phaser.Sound.prototype, "mute", { /** * @name Phaser.Sound#volume -* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. -* @readonly +* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. The value given is clamped to the range 0 to 1. */ Object.defineProperty(Phaser.Sound.prototype, "volume", { diff --git a/build/custom/phaser-no-physics.map b/build/custom/phaser-no-physics.map index cf9b54582..c20951247 100644 --- a/build/custom/phaser-no-physics.map +++ b/build/custom/phaser-no-physics.map @@ -1 +1 @@ -{"version":3,"sources":["phaser-no-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","emitters","ID","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser-no-physics.min.js"} \ No newline at end of file +{"version":3,"sources":["phaser-no-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","tilemapShader","TilemapShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","RETURN_ALL","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","getRandomExists","list","getAll","pick","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","emitters","ID","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser-no-physics.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-no-physics.min.js b/build/custom/phaser-no-physics.min.js index 0e2ee4f75..d48876076 100644 --- a/build/custom/phaser-no-physics.min.js +++ b/build/custom/phaser-no-physics.min.js @@ -1,20 +1,20 @@ -/* Phaser v2.6.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.2 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{ -get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){ -var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null), -e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)), -this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){ -this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL, -this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){ -void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate, -c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?"))); -var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a), -b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(c<0||d<0)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(b===-1)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(b<0||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a<0||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(b!==-1)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&e<=d){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;co?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;b0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(f===-1){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;q0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;e=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;e0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;ej?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;j1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bv?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.7.0 Beta",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return a<0?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function a(b){if(b&&(a.prototype=b),!(this instanceof a))return new a}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;e0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);i0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return i+j<=k},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{ +get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a=c&&a<=d&&b>=e&&b<=f},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=c-h&&(k-=h,c+=i),m=0&&p<=1&&q>=0&&q<=1?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&d<=j&&e>=i&&e<=k||f>=h&&f<=j&&g>=i&&g<=k)return!0;if(d=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&l<=k)return!0}else if(d>j&&f<=j&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&l<=k))return!0;if(e=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&l<=j)return!0}else if(e>k&&g<=k&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&l<=j))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(this.y*-1,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y*-1,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(d<1)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;e0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;c=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return!(a.width<=0||a.height<=0)&&(b>=a.x&&b=a.y&&c=a&&e=b&&fb.volume)&&(a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!(!d&&this._shake.duration>0)&&(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2)); +},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?!!(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)||(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(h!==-1){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return this._indexOfListener(a,b)!==-1},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;e=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;gthis.children.length||a===-1&&b===-1))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor)return this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor};c.Group.prototype.next=function(){if(this.cursor)return this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.previous=function(){if(this.cursor)return 0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return a<0||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!(!c.Utils.getProperty(a,b)&&e)&&c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){if(void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible))return this.setProperty(a,b,c,f,g)},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(0===this.children.length){if(d===c.Group.RETURN_TOTAL)return 0;if(d===c.Group.RETURN_ALL)return[]}var h=0;if(d===c.Group.RETURN_ALL)var i=[];for(var j=0;j0)return this.children[this.children.length-1]},c.Group.prototype.getBottom=function(){if(this.children.length>0)return this.children[0]},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return void 0===a&&(a=0),void 0===b&&(b=this.children.length),0===b?null:c.ArrayUtils.getRandomItem(this.children,a,b)},c.Group.prototype.getRandomExists=function(a,b){var c=this.getAll("exists",!0,a,b);return this.game.rnd.pick(c)},c.Group.prototype.getAll=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=this.children.length);for(var e=[],f=c;f0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d), +a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||a<0||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fa||this.priorityID===a&&this.sprite.renderOrderID>b))},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;b<10;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;b<10;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return!!(a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectClick)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPointerOver:function(a,b){return!!(this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectOver)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){if(null!==this.sprite&&void 0!==this.sprite.parent)return this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1)},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)this.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY))); +},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||navigator.userAgent.indexOf("Firefox/")!=-1||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||d<0&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return!(this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0))||(this.kill(),!1)},c.Component.LifeSpan.prototype={ +alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,!(!this._exists||!this.parent.exists)||(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,(!0),a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return!!this.preUpdateInWorld()&&this.preUpdateCore()},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c&&(this.frame=c,!0)},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;b=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){if(a>=0&&a<=this.width&&b>=0&&b<=this.height)return this.pixels[b*this.width+a]},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||e<=0)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||d<=0)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){ +return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;l<=g;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;q<=l;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(m<1e-8||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&e<=d?e+=2*Math.PI:f&&d<=e&&(d+=2*Math.PI);var h=f?(d-e)*-1:e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;s<=q;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dv?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;cb?h+j:b,d=ie?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else{g=f.points;for(var p=0;pb?h+o:b,d=i-oe?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(c<3)return[];for(var d=[],e=[],f=0;f3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;r3*g){if(!b)return null;for(d=[],e=[],f=0;f=0&&v>=0&&u+v<1},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;oj&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;f0)for(f=b;f=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);h<=e&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fc.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;b0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;ch?e:h,i=fj?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;kA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;dy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255; +}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLines0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;q<0&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;h0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;gk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(p<=k)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;ig;i--){for(j=0;j0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;e0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),a<0&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{ +get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(a){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=navigator.userAgent.toLowerCase().indexOf("iphone")!=-1,l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=navigator.userAgent.toLowerCase().indexOf("ipad")!=-1,"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]||2712847316!=c[0]&&null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return!("mp3"!==a||!this.mp3)||(!("ogg"!==a||!this.ogg&&!this.opus)||(!("m4a"!==a||!this.m4a)||(!("opus"!==a||!this.opus)||(!("wav"!==a||!this.wav)||(!("webm"!==a||!this.webm)||!("mp4"!==a||!this.dolby))))))},c.Device.canPlayVideo=function(a){return!("webm"!==a||!this.webmVideo&&!this.vp9Video)||(!("mp4"!==a||!this.mp4Video&&!this.h264Video)||(!("ogg"!==a&&"ogv"!==a||!this.oggVideo)||!("mpeg"!==a||!this.hlsVideo)))},c.Device.isConsoleOpen=function(){return!(!window.console||!window.console.firebug)||!(!window.console||(console.profile(),console.profileEnd(),console.clear&&console.clear(),!console.profiles))&&console.profiles.length>0},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);if(b)return a[b]},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;cb-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;c=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(d<=0)return 0;var e=(a-b)%d;return e<0&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;ba[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;cb[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return b<0?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;e<=d;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(b<0&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):b<0?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[c0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;j0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:aa?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),b!==-1))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(d!==-1?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return window.location.hostname.indexOf(a)!==-1},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=d.indexOf("?")!==-1?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;a0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1; +},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||b<=0)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;bthis.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),c===-1)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return a<.5?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,(!1)),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;a=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a])return this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d))},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return!(this.updateIfVisible&&!this.sprite.visible)&&(!(!this.currentAnim||!this.currentAnim.update())&&(this.currentFrame=this.currentAnim.currentFrame,!0))},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){if(this.currentAnim)return this.currentAnim.name}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){if(this.currentFrame)return this.currentFrame.index},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){if(this.currentFrame)return this.currentFrame.name},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame)&&(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),!this.onUpdate||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)):(this.complete(),!1):this.updateCurrentFrame(!0)))},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),!this.onUpdate||!a||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;b<0&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(b=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame, +c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;bj&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1&&{index:c,file:this._fileList[c]}},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else i===-1&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0, +console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(a){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(b){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(a){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,a)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;a1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottleb;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,(!0)),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return a-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);if(b>-1)return this.list.splice(b,1),a},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;e-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||b===-270||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(b===-90||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(b1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);if(b)return c.Color.getColor32(b.a,b.r,b.g,b.b)},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return b<128?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return b<128?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return b<128?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return b<128?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return b<128?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(a){this.getUserMediaError(a)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){a<0?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return!!this.video&&this.video.loop},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-no-physics.map \ No newline at end of file diff --git a/build/custom/phaser-split.js b/build/custom/phaser-split.js index 8afb60dda..e99079f77 100644 --- a/build/custom/phaser-split.js +++ b/build/custom/phaser-split.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:12 +* v2.6.2 "Kore Springs" - Built: Mon Jul 18 2016 23:41:21 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -54,7 +54,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.1', + VERSION: '2.7.0 Beta', /** * An array of Phaser game instances. @@ -9674,6 +9674,13 @@ Phaser.Group.RETURN_TOTAL = 1; */ Phaser.Group.RETURN_CHILD = 2; +/** +* A returnType value, as specified in {@link #iterate} eg. +* @constant +* @type {integer} +*/ +Phaser.Group.RETURN_ALL = 3; + /** * A sort ordering value, as specified in {@link #sort} eg. * @constant @@ -9746,7 +9753,7 @@ Phaser.Group.prototype.add = function (child, silent, index) { this.addToHash(child); } - if (this.inputEnableChildren && !child.inputEnabled) + if (this.inputEnableChildren && (!child.input || child.inputEnabled)) { child.inputEnabled = true; } @@ -11353,13 +11360,25 @@ Phaser.Group.prototype.descendingSortHandler = function (a, b) { */ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, callbackContext, args) { - if (returnType === Phaser.Group.RETURN_TOTAL && this.children.length === 0) + if (this.children.length === 0) { - return 0; + if (returnType === Phaser.Group.RETURN_TOTAL) + { + return 0; + } + else if (returnType === Phaser.Group.RETURN_ALL) + { + return []; + } } var total = 0; + if (returnType === Phaser.Group.RETURN_ALL) + { + var output = []; + } + for (var i = 0; i < this.children.length; i++) { if (this.children[i][key] === value) @@ -11383,6 +11402,10 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return this.children[i]; } + else if (returnType === Phaser.Group.RETURN_ALL) + { + output.push(this.children[i]); + } } } @@ -11390,9 +11413,15 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return total; } - - // RETURN_CHILD or RETURN_NONE - return null; + else if (returnType === Phaser.Group.RETURN_ALL) + { + return output; + } + else + { + // RETURN_CHILD or RETURN_NONE + return null; + } }; @@ -11679,24 +11708,83 @@ Phaser.Group.prototype.countDead = function () { * Returns a random child from the group. * * @method Phaser.Group#getRandom -* @param {integer} [startIndex=0] - Offset from the front of the front of the group (lowest child). +* @param {integer} [startIndex=0] - Offset from the front of the group (lowest child). * @param {integer} [length=(to top)] - Restriction on the number of values you want to randomly select from. * @return {any} A random child of this Group. */ Phaser.Group.prototype.getRandom = function (startIndex, length) { - if (this.children.length === 0) + if (startIndex === undefined) { startIndex = 0; } + if (length === undefined) { length = this.children.length; } + + if (length === 0) { return null; } - startIndex = startIndex || 0; - length = length || this.children.length; - return Phaser.ArrayUtils.getRandomItem(this.children, startIndex, length); }; +/** +* Returns a random child from the Group that has `exists` set to `true`. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getRandomExists +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up to. +* @return {any} A random child of this Group that exists. +*/ +Phaser.Group.prototype.getRandomExists = function (startIndex, endIndex) { + + var list = this.getAll('exists', true, startIndex, endIndex); + + return this.game.rnd.pick(list); + +}; + +/** +* Returns all children in this Group. +* +* You can optionally specify a matching criteria using the `property` and `value` arguments. +* +* For example: `getAll('exists', true)` would return only children that have their exists property set. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getAll +* @param {string} [property] - An optional property to test against the value argument. +* @param {any} [value] - If property is set then Child.property must strictly equal this value to be included in the results. +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up until. +* @return {any} A random existing child of this Group. +*/ +Phaser.Group.prototype.getAll = function (property, value, startIndex, endIndex) { + + if (startIndex === undefined) { startIndex = 0; } + if (endIndex === undefined) { endIndex = this.children.length; } + + var output = []; + + for (var i = startIndex; i < endIndex; i++) + { + var child = this.children[i]; + + if (property && child[property] === value) + { + output.push(child); + } + } + + return output; + +}; + /** * Removes the given child from this group. * @@ -18570,8 +18658,6 @@ Phaser.InputHandler.prototype = { this.sprite.events.onAddedToGroup.add(this.addedToGroup, this); this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup, this); - this.flagged = false; - return this.sprite; }, @@ -18628,7 +18714,6 @@ Phaser.InputHandler.prototype = { reset: function () { this.enabled = false; - this.flagged = false; for (var i = 0; i < 10; i++) { @@ -29013,6 +29098,8 @@ Phaser.BitmapData.prototype = { ctx.shadowOffsetX = x || 10; ctx.shadowOffsetY = y || 10; } + + return this; }, @@ -29164,6 +29251,8 @@ Phaser.BitmapData.prototype = { ctx.fillText(text, x, y); ctx.font = prevFont; + + return this; }, @@ -33341,7 +33430,6 @@ Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) { * @constructor * @extends PIXI.RenderTexture * @param {Phaser.Game} game - Current game instance. -* @param {string} key - Internal Phaser reference key for the render texture. * @param {number} [width=100] - The width of the render texture. * @param {number} [height=100] - The height of the render texture. * @param {string} [key=''] - The key of the RenderTexture in the Cache, if stored there. @@ -54051,8 +54139,7 @@ Object.defineProperty(Phaser.Sound.prototype, "mute", { /** * @name Phaser.Sound#volume -* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. -* @readonly +* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. The value given is clamped to the range 0 to 1. */ Object.defineProperty(Phaser.Sound.prototype, "volume", { @@ -71337,6 +71424,503 @@ Phaser.Physics.P2.RevoluteConstraint = function (world, bodyA, pivotA, bodyB, pi Phaser.Physics.P2.RevoluteConstraint.prototype = Object.create(p2.RevoluteConstraint.prototype); Phaser.Physics.P2.RevoluteConstraint.prototype.constructor = Phaser.Physics.P2.RevoluteConstraint; +/** +* @author Richard Davey +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* Tilemap - constructor +* +* @param {Array} layer - layer data from the map, arranged in mapheight lists of mapwidth Phaser.Tile objects (2d array) +* +*/ +PIXI.Tilemap = function(texture, mapwidth, mapheight, tilewidth, tileheight, layer) { + + PIXI.DisplayObjectContainer.call(this); + + /** + * The texture of the Tilemap + * + * @property texture + * @type Texture + */ + this.texture = texture; + + // faster access to the tile dimensions + this.tileWide = tilewidth; + this.tileHigh = tileheight; + this.mapWide = mapwidth; + this.mapHigh = mapheight; + + // TODO: switch here to create DisplayObjectContainer at correct size for the render mode + this.width = this.mapWide * this.tileWide; + this.height = this.mapHigh * this.tileHigh; + + this.layer = layer; + + // store the list of batch drawing instructions (for use with WebGL rendering) + this.glBatch = null; + + /** + * Remember last tile drawn to avoid unnecessary set-up + * + * @type Integer + */ + this.lastTile = -1; + + /** + * Whether the Tilemap is dirty or not + * + * @property dirty + * @type Boolean + */ + this.dirty = true; + + /** + * The blend mode to be applied to the tilemap. Set to PIXI.blendModes.NORMAL to remove any blend mode. + * + * @property blendMode + * @type Number + * @default PIXI.blendModes.NORMAL; + */ + this.blendMode = PIXI.blendModes.NORMAL; + + /** + * The size of a single data element in the batch drawing. + * Each tile requires two triangles, each specified as: + * float left, bottom, right, top - screen coordinates + * float u, v, wide, high - source texture coordinates + * + * @type {Number} + */ + this.batchDataElement = 16; + + // calculate total batch data size + var dataSize = mapwidth * mapheight * this.batchDataElement; + + // create buffer data for the webgl rendering of this tile + this.buffer = new PIXI.Float32Array( dataSize ); + +}; + +// constructor, this class extends PIXI.DisplayObjectContainer +PIXI.Tilemap.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); +PIXI.Tilemap.prototype.constructor = PIXI.Tilemap; + +// unused methods overridden to prevent default behavior +PIXI.Tilemap.prototype.update = function () {}; +PIXI.Tilemap.prototype.postUpdate = function () {}; + +// override PIXI.DisplayObjectContainer _renderWebGL +PIXI.Tilemap.prototype._renderWebGL = function (renderSession) { + + // if the sprite is not visible or the alpha is 0 then no need to render this element + if (!this.visible || this.alpha <= 0) + { + return; + } + + // stop current render session batch drawing + renderSession.spriteBatch.stop(); + + if (!this._vertexBuffer) + { + this._initWebGL(renderSession); + } + + renderSession.shaderManager.setShader(renderSession.shaderManager.tilemapShader); + + this._renderWholeTilemap(renderSession); + + // restart batch drawing now that this Tile layer has been rendered + renderSession.spriteBatch.start(); + +}; + +PIXI.Tilemap.prototype._initWebGL = function (renderSession) { + + var gl = renderSession.gl; + + this._vertexBuffer = gl.createBuffer(); + this._indexBuffer = gl.createBuffer(); + this._uvBuffer = gl.createBuffer(); + this._colorBuffer = gl.createBuffer(); + + // create a GL buffer to transfer all the vertex position data through + this.positionBuffer = gl.createBuffer(); + + // bind the buffer to the RAM resident positionBuffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.buffer, gl.STATIC_DRAW); + +}; + + +PIXI.Tilemap.prototype._renderBatch = function (renderSession) { + + if (this.glBatch) + { + var gl = renderSession.gl; + + // TODO: should probably use destination buffer dimensions (halved) + var screenWide2 = this.game.width * 0.5; + var screenHigh2 = this.game.height * 0.5; + + // size of one pixel in the source texture + var iTextureWide = 1.0 / this.texture.width; + var iTextureHigh = 1.0 / this.texture.height; + + // size of one tile in the source texture + var srcWide = this.tileWide * iTextureWide; + var srcHigh = this.tileHigh * iTextureHigh; + + // pre-calculate inverse half-buffer dimensions + var iWide = 1.0 / screenWide2; + var iHigh = 1.0 / screenHigh2; + + var wide = this.tileWide * 0.5 / screenWide2; + var high = this.tileHigh * 0.5 / screenHigh2; + + var buffer = this.buffer; + var oldR, oldT, uvl, uvt; + + // process entire glBatch into a single webGl draw buffer for a TRIANGLE_STRIP blit + var c = 0; + var degenerate = false; + + for (var i = 0, l = this.glBatch.length; i < l; i++) + { + // sx: this.drawCoords[coordIndex], + // sy: this.drawCoords[coordIndex + 1], + // sw: this.tileWidth, + // sh: this.tileHeight, + // dx: x, + // dy: y, + // dw: this.tileWidth, + // dh: this.tileHeight + + var t = this.glBatch[i]; + + if (!t) + { + // insert a degenerate triangle when null is found in the list of batch objects + degenerate = true; + + // skip to end of loop, degenerate will be inserted when no more null objects are found + continue; + } + + var x = t.dx * iWide - 1; + var y = 1 - t.dy * iHigh; + + var lft = x - wide; + var bot = y + high; + + var uvl = t.sx * iTextureWide; + var uvt = t.sy * iTextureHigh; + + // insert a degenerate triangle to separate the tiles + if (degenerate) + { + // add a degenerate triangle: repeat the last vertex + buffer[ c ] = oldR; + buffer[ c + 1 ] = oldT; + // then repeat the next vertex + buffer[ c + 4 ] = lft; + buffer[ c + 5 ] = bot; + // pad with texture coordinates (probably not needed) + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 7 ] = uvt; + + // advance the buffer index for one single degenerate triangle + c += 8; + degenerate = false; + } + + // calculate the destination location of the tile in screen units (-1..1) + buffer[ c ] = buffer[ c + 4 ] = lft; + buffer[ c + 1 ] = buffer[ c + 9 ] = bot; + buffer[ c + 8 ] = buffer[ c + 12] = oldR = x + wide; + buffer[ c + 5 ] = buffer[ c + 13] = oldT = y - high; + + // calculate the uv coordinates of the tile source image + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 11] = uvt; + buffer[ c + 10] = buffer[ c + 14] = uvl + srcWide; + buffer[ c + 7 ] = buffer[ c + 15] = uvt + srcHigh; + + // advance the buffer index + c += 16; + } + + // if there's anything to draw... + if (c > 0) + { + var shader = renderSession.shaderManager.tilemapShader; + + // upload the VBO + gl.bufferData( gl.ARRAY_BUFFER, buffer, gl.STATIC_DRAW ); + + // prepare the shader attributes + gl.vertexAttribPointer( shader.aPosition, 4, gl.FLOAT, false, 0, 0 ); + + // draw the entire VBO in one call + gl.drawArrays(gl.TRIANGLE_STRIP, 0, Math.floor(c / 4)); + } + } + +}; + +/** +* render the entire tilemap using a fast webgl batched tile render +* +* @param {[type]} renderSession [description] +*/ +PIXI.Tilemap.prototype._renderWholeTilemap = function (renderSession) { + + var gl = renderSession.gl; + + var shader = renderSession.shaderManager.tilemapShader; + + renderSession.blendModeManager.setBlendMode(this.blendMode); + + // set the uniforms and texture + + // set the offset in screen units to the center of the screen + // and flip the GL y coordinate to be zero at the top + gl.uniform2f(shader.uCentreOffset, 1, -1); + + // alpha value for whole batch + gl.uniform1f(shader.uAlpha, this.alpha); + + // scale factors for whole batch + gl.uniform2f(shader.uScale, this.worldScale.x, this.worldScale.y); + + // source texture unit + gl.activeTexture(gl.TEXTURE0); + + // check if a texture is dirty.. + if(this.texture.baseTexture._dirty[gl.id]) + { + renderSession.renderer.updateTexture(this.texture.baseTexture); + } + else + { + // bind the current texture + gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); + } + + // bind the source buffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + + // draw the batched tile list + this._renderBatch(renderSession); + +}; + +/** + * When the texture is updated, this event will fire to update the scale and frame + * + * @method onTextureUpdate + * @param event + * @private + */ +PIXI.Tilemap.prototype.onTextureUpdate = function () { + + this.updateFrame = true; + +}; + +/** + * Returns the bounds of the map as a rectangle. The bounds calculation takes the worldTransform into account. + * + * @method getBounds + * @param matrix {Matrix} the transformation matrix of the sprite + * @return {Rectangle} the framing rectangle + */ +PIXI.Tilemap.prototype.getBounds = function (matrix) { + + var worldTransform = matrix || this.worldTransform; + + var a = worldTransform.a; + var b = worldTransform.b; + var c = worldTransform.c; + var d = worldTransform.d; + var tx = worldTransform.tx; + var ty = worldTransform.ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + var vertices = [ + 0, 0, + this.mapWide * this.tileWide, 0, + this.mapWide * this.tileWide, this.mapHigh * this.tileHigh, + 0, this.mapHigh * this.tileHigh + ]; + + for (var i = 0, n = vertices.length; i < n; i += 2) + { + var rawX = vertices[i], rawY = vertices[i + 1]; + var x = (a * rawX) + (c * rawY) + tx; + var y = (d * rawY) + (b * rawX) + ty; + + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + } + + if (minX === -Infinity || maxY === Infinity) + { + return PIXI.EmptyRectangle; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + // store a reference so that if this function gets called again in the render cycle we do not have to recalculate + this._currentBounds = bounds; + + return bounds; + +}; + +/** +* @author Richard Davey +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* This shader is used to render a batch of tiles stored as a tri-strip with +* degenerate triangles at the end of each row, or group of tiles (A group is a +* row of tiles with content followed by one or more empty tiles which are not +* drawn). +* +* Settings available are: +* +* uAlpha - the alpha blending factor for a batch draw +* uCentreOffset - the offset to the center of the drawing area, in WebGL units (-1...1) +* uScale - the scaling factor for a batch draw +* uImageSampler - the source texture containing the tile images +* aPosition - the attribute set by the batch data for drawing location +* +* @class TilemapShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.TilemapShader = function (gl) { + + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + this.fragmentSrc = [ + " precision lowp float;", + " uniform sampler2D uImageSampler;", + " uniform float uAlpha;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_FragColor = texture2D(uImageSampler, vTexCoord) * uAlpha;", + " }" + ]; + + this.vertexSrc = [ + " precision lowp float;", + " uniform vec2 uCentreOffset;", + " uniform vec2 uScale;", + " attribute vec4 aPosition;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_Position.zw = vec2(1, 1);", + " gl_Position.xy = (aPosition.xy + uCentreOffset) * uScale - uCentreOffset;", + " vTexCoord = aPosition.zw;", + " }" + ]; + + /** + * A local texture counter for multi-texture shaders. + * @property textureCount + * @type Number + */ + this.textureCount = 0; + + this.init(); +}; + +PIXI.TilemapShader.prototype.constructor = PIXI.TilemapShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.TilemapShader.prototype.init = function () { + + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + gl.useProgram(program); + + // get and store the attributes + this.aPosition = gl.getAttribLocation(program, 'aPosition'); + this.uSampler = gl.getUniformLocation(program, 'uImageSampler'); + this.uCentreOffset = gl.getUniformLocation(program, 'uCentreOffset'); + this.uAlpha = gl.getUniformLocation(program, 'uAlpha'); + this.uScale = gl.getUniformLocation(program, 'uScale'); + + this.attributes = [this.aPosition]; + this.uniforms = [this.uCentreOffset, this.uAlpha, this.uScale, this.uSampler]; + + this.program = program; + +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.TilemapShader.prototype.destroy = function () { + + this.gl.deleteProgram(this.program); + this.gl = null; + + this.uniforms = null; + this.attributes = null; + +}; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -71550,6 +72134,7 @@ Phaser.Tile = function (layer, index, x, y, width, height) { /** * @property {number} alpha - The alpha value at which this tile is drawn to the canvas. + * TODO: currently unused for both Canvas and WebGL renderers */ this.alpha = 1; @@ -71978,7 +72563,12 @@ Phaser.Tilemap = function (game, key, tileWidth, tileHeight, width, height) { * @property {array} tilesets - An array of Tilesets. */ this.tilesets = data.tilesets; - + + /** + * @property {array} tilesetLayers - An array of internal layers used to separate multiple tilesets from a single map layer. + */ + this.tilesetLayers = null; + /** * @property {array} imagecollections - An array of Image Collections. */ @@ -72189,6 +72779,20 @@ Phaser.Tilemap.prototype = { if (this.tilesets[idx]) { this.tilesets[idx].setImage(img); + + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // // for the first tileset, don't create a layer because createLayer will be called to do that + // this.tilesetLayers = []; + // } + // else + // { + // // for all the rest, go ahead and make a (currently) blank layer + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return this.tilesets[idx]; } else @@ -72237,6 +72841,17 @@ Phaser.Tilemap.prototype = { } } + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // this.tilesetLayers = []; + // } + // else + // { + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return newSet; } @@ -72439,10 +73054,9 @@ Phaser.Tilemap.prototype = { * @param {number} [width] - The rendered width of the layer, should never be wider than Game.width. If not given it will be set to Game.width. * @param {number} [height] - The rendered height of the layer, should never be wider than Game.height. If not given it will be set to Game.height. * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @param {boolean} [pixiTest] - Temporary additional flag to enable tests of the PIXI.Tilemap renderer * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Sprite and can be moved around the display list accordingly. */ - createLayer: function (layer, width, height, group, pixiTest) { + createLayer: function (layer, width, height, group) { // Add Buffer support for the left of the canvas @@ -72463,8 +73077,17 @@ Phaser.Tilemap.prototype = { return; } - if ( pixiTest ) + // create the internal layers for different tilesets using this one as a base description + for (var i = 1, l = this.tilesets.length; i < l; i++) { + var ts = this.tilesets[i]; + var li = this.layers[index]; + this.createInternalLayer( "_internal" + i.toString(), ts, li.width, li.height, ts.tileWidth, ts.tileHeight, group ); + } + + if ( this.game.renderType === Phaser.WEBGL ) + { + // use WebGL variant of TilemapLayer return group.add(new Phaser.TilemapLayerGL(this.game, this, index, width, height)); } @@ -72472,6 +73095,121 @@ Phaser.Tilemap.prototype = { }, + /** + * Creates a new internal layer on this Tilemap. + * + * Internal layers are used when a Tilemap contains multiple Tilesets with different sized tiles. The tilesets + * each get a separate layer which is only ever referenced internally by the renderer. This approach permits us + * to handle large tiles at screen edges, and with the correct offset relative to the 'base' tileset regardless + * of size differences between the tiles. + * + * For WebGL rendering, this approach also permits us to batch the drawing calls efficiently. + * + * By default TilemapLayers are fixed to the camera. + * + * @method Phaser.Tilemap#createInternalLayer + * @param {string} name - The name of this layer. Must be unique within the map. + * @param {Phaser.Tileset} tileset - The tileset whose data is to be added to this layer. + * @param {number} width - The width of the layer in tiles. + * @param {number} height - The height of the layer in tiles. + * @param {number} tileWidth - The width of the tiles the layer uses for calculations. + * @param {number} tileHeight - The height of the tiles the layer uses for calculations. + * @param {Phaser.Group} [group] - Optional Group to add the layer to. If not specified it will be added to the World group. + * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. + */ + createInternalLayer: function (name, tileset, width, height, tileWidth, tileHeight, group) { + + if (group === undefined) { group = this.game.world; } + + if (this.getLayerIndex(name) !== null) + { + console.warn('Tilemap.createBlankLayer: Layer with matching name already exists'); + return; + } + + var layer = { + + name: name, + x: 0, + y: 0, + width: width, + height: height, + widthInPixels: width * tileWidth, + heightInPixels: height * tileHeight, + alpha: 1, + visible: true, + properties: {}, + indexes: [], + callbacks: [], + bodies: [], + data: null, + tileset: tileset + + }; + + var row; + var output = []; + + for (var y = 0; y < height; y++) + { + row = []; + for (var x = 0; x < width; x++) + { + // get the equivalent tile from this Tilemap + var tile = this.layers[0].data[y][x]; + // find out which tileset it is in + var setIndex = this.tiles[tile.index] && this.tiles[tile.index][2]; + var ts = this.tilesets[setIndex]; + // is it one of the ones we want to move? + if ( ts == tileset ) + { + // move the tile to this new layer + row.push( tile ); + // erase it from the original (mixed tileset) layer + this.layers[0].data[y][x] = new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight); + } + else + { + // add an empty tile + row.push(new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight)); + } + } + + output.push(row); + } + + layer.data = output; + + this.layers.push(layer); + + var w = layer.widthInPixels; + var h = layer.heightInPixels; + + if (w > this.game.width) + { + w = this.game.width; + } + + if (h > this.game.height) + { + h = this.game.height; + } + + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } + output.name = name; + + return group.add(output); + + }, + /** * Creates a new and empty layer on this Tilemap. By default TilemapLayers are fixed to the camera. * @@ -72548,7 +73286,15 @@ Phaser.Tilemap.prototype = { h = this.game.height; } - var output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } output.name = name; return group.add(output); @@ -72877,6 +73623,10 @@ Phaser.Tilemap.prototype = { { layer = layer.index; } + else if (layer instanceof Phaser.TilemapLayerGL) + { + layer = layer.index; + } return layer; @@ -75145,6 +75895,914 @@ Object.defineProperty(Phaser.TilemapLayer.prototype, "collisionHeight", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* A TilemapLayerGL is a PIXI.Tilemap that renders a specific TileLayer of a Tilemap using the PIXI WebGL renderer. +* +* NOTE: This is a close duplicate of Phaser.TilemapLayer class, modified to support WebGL rendering, it may be possible to merge the two classes +* although that will probably incur performance penalties due to some fundamental differences in the set-up before rendering. +* +* Since a PIXI.Tilemap is a PIXI.DisplayObjectContainer it can be moved around the display list, added to other groups, or display objects, etc. +* +* By default TilemapLayers have fixedToCamera set to `true`. Changing this will break Camera follow and scrolling behavior. +* +* @class Phaser.TilemapLayerGL +* @extends Phaser.Sprite +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. +* @param {Phaser.Tilemap} tilemap - The tilemap to which this layer belongs. +* @param {integer} index - The index of the TileLayer to render within the Tilemap. +* @param {integer} width - Width of the renderable area of the layer (in pixels). +* @param {integer} height - Height of the renderable area of the layer (in pixels). +*/ +Phaser.TilemapLayerGL = function (game, tilemap, index, width, height) { + + this.game = game; + + width |= 0; + height |= 0; + + /** + * The Tilemap to which this layer is bound. + * @property {Phaser.Tilemap} map + * @protected + * @readonly + */ + this.map = tilemap; + + /** + * The index of this layer within the Tilemap. + * @property {number} index + * @protected + * @readonly + */ + this.index = index; + + /** + * The layer object within the Tilemap that this layer represents. + * @property {object} layer + * @protected + * @readonly + */ + this.layer = tilemap.layers[index]; + + /** + * The const type of this object. + * @property {number} type + * @readonly + * @protected + * @default Phaser.TILEMAPLAYER + */ + this.type = Phaser.TILEMAPLAYER; + + /** + * @property {number} physicsType - The const physics body type of this object. + * @readonly + */ + this.physicsType = Phaser.TILEMAPLAYER; + + /** + * Settings that control standard (non-diagnostic) rendering. + * + * @property {boolean} [enableScrollDelta=true] - Delta scroll rendering only draws tiles/edges as they come into view. + * This can greatly improve scrolling rendering performance, especially when there are many small tiles. + * It should only be disabled in rare cases. + * + * @property {?DOMCanvasElement} [copyCanvas=(auto)] - [Internal] If set, force using a separate (shared) copy canvas. + * Using a canvas bitblt/copy when the source and destinations region overlap produces unexpected behavior + * in some browsers, notably Safari. + * + * @default + */ + this.renderSettings = { + enableScrollDelta: false, + overdrawRatio: 0.20, + copyCanvas: null + }; + + /** + * Enable an additional "debug rendering" pass to display collision information. + * + * @property {boolean} debug + * @default + */ + this.debug = false; + + /** + * @property {boolean} exists - Controls if the core game loop and physics update this game object or not. + */ + this.exists = true; + + /** + * Settings used for debugging and diagnostics. + * + * @property {?string} missingImageFill - A tile is rendered as a rectangle using the following fill if a valid tileset/image cannot be found. A value of `null` prevents additional rendering for tiles without a valid tileset image. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {?string} debuggedTileOverfill - If a Tile has `Tile#debug` true then, after normal tile image rendering, a rectangle with the following fill is drawn above/over it. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {boolean} forceFullRedraw - When debug rendering (`debug` is true), and this option is enabled, the a full redraw is forced and rendering optimization is suppressed. + * + * @property {number} debugAlpha - When debug rendering (`debug` is true), the tileset is initially rendered with this alpha level. This can make the tile edges clearer. + * + * @property {?string} facingEdgeStroke - When debug rendering (`debug` is true), this color/stroke is used to draw "face" edges. A value of `null` disables coloring facing edges. + * + * @property {?string} collidingTileOverfill - When debug rendering (`debug` is true), this fill is used for tiles that are collidable. A value of `null` disables applying the additional overfill. + * + */ + this.debugSettings = { + + missingImageFill: 'rgb(255,255,255)', + debuggedTileOverfill: 'rgba(0,255,0,0.4)', + + forceFullRedraw: true, + + debugAlpha: 0.5, + facingEdgeStroke: 'rgba(0,255,0,1)', + collidingTileOverfill: 'rgba(0,255,0,0.2)' + + }; + + /** + * Speed at which this layer scrolls horizontally, relative to the camera (e.g. scrollFactorX of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do). + * @property {number} scrollFactorX + * @public + * @default + */ + this.scrollFactorX = 1; + + /** + * Speed at which this layer scrolls vertically, relative to the camera (e.g. scrollFactorY of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do) + * @property {number} scrollFactorY + * @public + * @default + */ + this.scrollFactorY = 1; + + /** + * If true tiles will be force rendered, even if such is not believed to be required. + * @property {boolean} dirty + * @protected + */ + this.dirty = true; + + /** + * When ray-casting against tiles this is the number of steps it will jump. For larger tile sizes you can increase this to improve performance. + * @property {integer} rayStepRate + * @default + */ + this.rayStepRate = 4; + + /** + * Flag controlling if the layer tiles wrap at the edges. + * @property {boolean} _wrap + * @private + */ + this._wrap = false; + + /** + * Local map data and calculation cache. + * @property {object} _mc + * @private + */ + var tileset = this.layer.tileset || this.map.tilesets[0]; + this._mc = { + + // Used to bypass rendering without reliance on `dirty` and detect changes. + scrollX: 0, + scrollY: 0, + renderWidth: 0, + renderHeight: 0, + + // dimensions of tiles in the original tilemap (the one holding all the tile indices) + tileWidth: tilemap.tileWidth, + tileHeight: tilemap.tileHeight, + + // Collision width/height (pixels) + // What purpose do these have? Most things use tile width/height directly. + // This also only extends collisions right and down. + + // dimensions of tiles in this tileset (may not match the original tilemap) + cw: tileset.tileWidth, + ch: tileset.tileHeight, + + // the tileset for this layer + tileset: tileset, + + // Cached tilesets from index -> Tileset + tilesets: [] + }; + + /** + * The rendering mode (used by PIXI.Tilemap). Modes are: 0 - render entire screen of tiles, 1 - render entire map of tiles + * TODO: make some constants for the rendering modes + * @property {number} _renderMode + * @private + */ + this._renderMode = 0; + + /** + * The current canvas left after scroll is applied. + * @property {number} _scrollX + * @private + */ + this._scrollX = 0; + + /** + * The current canvas top after scroll is applied. + * @propety {number} _scrollY + * @private + */ + this._scrollY = 0; + + /** + * Used for caching the tiles / array of tiles. + * @property {Phaser.Tile[]} _results + * @private + */ + this._results = []; + + // get PIXI textures for each tileset source image + var baseTexture = new PIXI.BaseTexture( tileset.image ); + PIXI.Tilemap.call(this, new PIXI.Texture(baseTexture), this.map.width, this.map.height, this._mc.tileset.tileWidth, this._mc.tileset.tileHeight, this.layer); + + Phaser.Component.Core.init.call(this, game, 0, 0, null, null); + + // must be set *after* the Core.init + this.fixedToCamera = true; +}; + + +// constructor: extends PIXI.Tilemap +Phaser.TilemapLayerGL.prototype = Object.create(PIXI.Tilemap.prototype); +Phaser.TilemapLayerGL.prototype.constructor = Phaser.TilemapLayerGL; + + +// only one Phaser component used +Phaser.Component.Core.install.call(Phaser.TilemapLayerGL.prototype, [ + 'FixedToCamera' +]); + + +// redirect method prototypes (TODO: not needed? I'm not sure...) +Phaser.TilemapLayerGL.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; +Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; +Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; +Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; +Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; + + +/** +* Automatically called by World.preUpdate. +* +* @method Phaser.TilemapLayerGL#preUpdate +*/ +Phaser.TilemapLayerGL.prototype.preUpdate = function() { + + return this.preUpdateCore(); + +}; + +/** +* Automatically called by World.postUpdate. Handles camera scrolling. +* +* @method Phaser.TilemapLayerGL#postUpdate +* @protected +*/ +Phaser.TilemapLayerGL.prototype.postUpdate = function () { + + Phaser.Component.FixedToCamera.postUpdate.call(this); + + // Stops you being able to auto-scroll the camera if it's not following a sprite + var camera = this.game.camera; + + this.scrollX = camera.x * this.scrollFactorX / this.scale.x; + this.scrollY = camera.y * this.scrollFactorY / this.scale.y; + + this.render(); + +}; + +/** +* Destroys this TilemapLayerGL. +* +* @method Phaser.TilemapLayerGL#destroy +*/ +Phaser.TilemapLayerGL.prototype.destroy = function() { + + PIXI.CanvasPool.remove(this); + + Phaser.Component.Destroy.prototype.destroy.call(this); + +}; + +/** +* Resizes the internal dimensions and texture frame used by this TilemapLayerGL. +* +* This is an expensive call, so don't bind it to a window resize event! But instead call it at carefully +* selected times. +* +* Be aware that no validation of the new sizes takes place and the current map scroll coordinates are not +* modified either. You will have to handle both of these things from your game code if required. +* +* @method Phaser.TilemapLayerGL#resize +* @param {number} width - The new width of the TilemapLayerGL +* @param {number} height - The new height of the TilemapLayerGL +*/ +Phaser.TilemapLayerGL.prototype.resize = function (width, height) { + + this.texture.frame.resize(width, height); + + this.texture.width = width; + this.texture.height = height; + + this.texture.crop.width = width; + this.texture.crop.height = height; + + this.texture.baseTexture.width = width; + this.texture.baseTexture.height = height; + + this.texture.baseTexture.dirty(); + this.texture.requiresUpdate = true; + + this.texture._updateUvs(); + + this.dirty = true; + +}; + +/** +* Sets the world size to match the size of this layer. +* +* @method Phaser.TilemapLayerGL#resizeWorld +* @public +*/ +Phaser.TilemapLayerGL.prototype.resizeWorld = function () { + + this.game.world.setBounds(0, 0, this.layer.widthInPixels * this.scale.x, this.layer.heightInPixels * this.scale.y); + +}; + +/** +* Take an x coordinate that doesn't account for scrollFactorX and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixX +* @private +* @param {number} x - x coordinate in camera space +* @return {number} x coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixX = function (x) { + + if (x < 0) + { + x = 0; + } + + if (this.scrollFactorX === 1) + { + return x; + } + + return this._scrollX + (x - (this._scrollX / this.scrollFactorX)); + +}; + +/** +* Take an x coordinate that _does_ account for scrollFactorX and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixX +* @private +* @param {number} x - x coordinate in scrollFactor-adjusted dimensions +* @return {number} x coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixX = function (x) { + + if (this.scrollFactorX === 1) + { + return x; + } + + return (this._scrollX / this.scrollFactorX) + (x - this._scrollX); + +}; + +/** +* Take a y coordinate that doesn't account for scrollFactorY and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixY +* @private +* @param {number} y - y coordinate in camera space +* @return {number} y coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixY = function (y) { + + if (y < 0) + { + y = 0; + } + + if (this.scrollFactorY === 1) + { + return y; + } + + return this._scrollY + (y - (this._scrollY / this.scrollFactorY)); + +}; + +/** +* Take a y coordinate that _does_ account for scrollFactorY and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixY +* @private +* @param {number} y - y coordinate in scrollFactor-adjusted dimensions +* @return {number} y coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixY = function (y) { + + if (this.scrollFactorY === 1) + { + return y; + } + + return (this._scrollY / this.scrollFactorY) + (y - this._scrollY); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileX +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @return {integer} The X map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileX = function (x) { + + // var tileWidth = this.tileWidth * this.scale.x; + return Math.floor(this._fixX(x) / this._mc.tileWidth); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileY +* @public +* @param {number} y - Y position of the point in target tile (in pixels). +* @return {integer} The Y map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileY = function (y) { + + // var tileHeight = this.tileHeight * this.scale.y; + return Math.floor(this._fixY(y) / this._mc.tileHeight); + +}; + +/** +* Convert a pixel coordinate to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileXY +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @param {number} y - Y position of the point in target tile (in pixels). +* @param {(Phaser.Point|object)} point - The Point/object to update. +* @return {(Phaser.Point|object)} A Point/object with its `x` and `y` properties set. +*/ +Phaser.TilemapLayerGL.prototype.getTileXY = function (x, y, point) { + + point.x = this.getTileX(x); + point.y = this.getTileY(y); + + return point; + +}; + +/** +* Gets all tiles that intersect with the given line. +* +* @method Phaser.TilemapLayerGL#getRayCastTiles +* @public +* @param {Phaser.Line} line - The line used to determine which tiles to return. +* @param {integer} [stepRate=(rayStepRate)] - How many steps through the ray will we check? Defaults to `rayStepRate`. +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {Phaser.Tile[]} An array of Phaser.Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getRayCastTiles = function (line, stepRate, collides, interestingFace) { + + if (!stepRate) { stepRate = this.rayStepRate; } + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + // First get all tiles that touch the bounds of the line + var tiles = this.getTiles(line.x, line.y, line.width, line.height, collides, interestingFace); + + if (tiles.length === 0) + { + return []; + } + + // Now we only want the tiles that intersect with the points on this line + var coords = line.coordinatesOnLine(stepRate); + var results = []; + + for (var i = 0; i < tiles.length; i++) + { + for (var t = 0; t < coords.length; t++) + { + var tile = tiles[i]; + var coord = coords[t]; + if (tile.containsPoint(coord[0], coord[1])) + { + results.push(tile); + break; + } + } + } + + return results; + +}; + +/** +* Get all tiles that exist within the given area, defined by the top-left corner, width and height. Values given are in pixels, not tiles. +* +* @method Phaser.TilemapLayerGL#getTiles +* @public +* @param {number} x - X position of the top left corner (in pixels). +* @param {number} y - Y position of the top left corner (in pixels). +* @param {number} width - Width of the area to get (in pixels). +* @param {number} height - Height of the area to get (in pixels). +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {array} An array of Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getTiles = function (x, y, width, height, collides, interestingFace) { + + // Should we only get tiles that have at least one of their collision flags set? (true = yes, false = no just get them all) + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + var fetchAll = !(collides || interestingFace); + + // Adjust the x,y coordinates for scrollFactor + x = this._fixX(x); + y = this._fixY(y); + + // Convert the pixel values into tile coordinates + var tx = Math.floor(x / (this._mc.cw * this.scale.x)); + var ty = Math.floor(y / (this._mc.ch * this.scale.y)); + // Don't just use ceil(width/cw) to allow account for x/y diff within cell + var tw = Math.ceil((x + width) / (this._mc.cw * this.scale.x)) - tx; + var th = Math.ceil((y + height) / (this._mc.ch * this.scale.y)) - ty; + + // Discard old results before storing the new ones + this._results = []; + + for (var wy = ty; wy < ty + th; wy++) + { + for (var wx = tx; wx < tx + tw; wx++) + { + var row = this.layer.data[wy]; + + if (row && row[wx]) + { + if (fetchAll || row[wx].isInteresting(collides, interestingFace)) + { + this._results.push(row[wx]); + } + } + } + } + + return this._results.slice(); + +}; + +/** +* The TilemapLayerGL caches tileset look-ups. +* +* Call this method of clear the cache if tilesets have been added or updated after the layer has been rendered. +* +* @method Phaser.TilemapLayerGL#resetTilesetCache +* @public +*/ +Phaser.TilemapLayerGL.prototype.resetTilesetCache = function () { + + this._mc.tilesets = []; +}; + +/** + * This method will set the scale of the tilemap as well as update the underlying block data of this layer. + * + * @method Phaser.TilemapLayerGL#setScale + * @param {number} [xScale=1] - The scale factor along the X-plane + * @param {number} [yScale] - The scale factor along the Y-plane + */ +Phaser.TilemapLayerGL.prototype.setScale = function (xScale, yScale) { + + xScale = xScale || 1; + yScale = yScale || xScale; + + for (var y = 0; y < this.layer.data.length; y++) + { + var row = this.layer.data[y]; + + for (var x = 0; x < row.length; x++) + { + var tile = row[x]; + + tile.width = this.map.tileWidth * xScale; + tile.height = this.map.tileHeight * yScale; + + tile.worldX = tile.x * tile.width; + tile.worldY = tile.y * tile.height; + } + } + + this.scale.setTo(xScale, yScale); + +}; + +/** +* Render tiles in the given area given by the virtual tile coordinates biased by the given scroll factor. +* This will constrain the tile coordinates based on wrapping but not physical coordinates. +* +* @method Phaser.TilemapLayerGL#renderRegion +* @private +* @param {integer} scrollX - Render x offset/scroll. +* @param {integer} scrollY - Render y offset/scroll. +* @param {integer} left - Leftmost column to render. +* @param {integer} top - Topmost row to render. +* @param {integer} right - Rightmost column to render. +* @param {integer} bottom - Bottommost row to render. +*/ +Phaser.TilemapLayerGL.prototype.renderRegion = function (scrollX, scrollY, left, top, right, bottom, offx, offy) { + + var width = this.layer.width; + var height = this.layer.height; + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + // var lastAlpha = NaN; + + offx = offx || 0; + offy = offy || 0; + + if (!this._wrap) + { + if (left <= right) // Only adjust if going to render + { + left = Math.max(0, left); + right = Math.min(width - 1, right); + } + if (top <= bottom) + { + top = Math.max(0, top); + bottom = Math.min(height - 1, bottom); + } + } + + // top-left pixel of top-left cell + var baseX = (left * tw) - scrollX; + var baseY = (top * th) - scrollY; + + // Fix normStartX/normStartY such it is normalized [0..width/height). This allows a simple conditional and decrement to always keep in range [0..width/height) during the loop. The major offset bias is to take care of negative values. + var normStartX = (left + ((1 << 20) * width)) % width; + var normStartY = (top + ((1 << 20) * height)) % height; + + // tx/ty - are pixel coordinates where tile is drawn + // x/y - is cell location, normalized [0..width/height) in loop + // xmax/ymax - remaining cells to render on column/row + var tx, ty, x, y, xmax, ymax; + + //context.fillStyle = this.tileColor; + + for (y = normStartY, ymax = bottom - top, ty = baseY; + ymax >= 0; + y++, ymax--, ty += th) + { + + if (y >= height) { y -= height; } + + var row = this.layer.data[y]; + + for (x = normStartX, xmax = right - left, tx = baseX; + xmax >= 0; + x++, xmax--, tx += tw) + { + + if (x >= width) { x -= width; } + + var tile = row[x]; + + if (!tile || tile.index < 0) + { + // skipping some tiles, add a degenerate marker into the batch list + this._mc.tileset.addDegenerate( this.glBatch ); + continue; + } + + var index = tile.index; + + if (tile.rotation || tile.flipped) + { + this._mc.tileset.drawGl(this.glBatch, -tile.centerX + offx, -tile.centerY + offy, index, tile.alpha); + } + else + { + this._mc.tileset.drawGl(this.glBatch, tx + offx, ty + offy, index, tile.alpha); + } + } + + // at end of each row, add a degenerate marker into the batch drawing list + this._mc.tileset.addDegenerate( this.glBatch ); + } + +}; + +/** +* Clear and render the entire canvas. +* +* @method Phaser.TilemapLayerGL#renderFull +* @private +*/ +Phaser.TilemapLayerGL.prototype.renderFull = function () { + + var scrollX = this._mc.scrollX; + var scrollY = this._mc.scrollY; + + var renderW = this.game._width; //this.canvas.width; + var renderH = this.game._height; //this.canvas.height; + + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + var cw = this._mc.cw; + var ch = this._mc.ch; + + var left = Math.floor( (scrollX - (cw - tw)) / tw ); + var right = Math.floor( (renderW - 1 + scrollX) / tw ); + var top = Math.floor( (scrollY - (ch - th)) / th ); + var bottom = Math.floor( (renderH - 1 + scrollY) / th ); + + this.glBatch = []; + this.renderRegion(scrollX, scrollY, left, top, right, bottom, 0, -(ch - th)); +}; + +/** +* Renders the tiles to the layer canvas and pushes to the display. +* +* @method Phaser.TilemapLayerGL#render +* @protected +*/ +Phaser.TilemapLayerGL.prototype.render = function () { + + var redrawAll = false; + + if (!this.visible) + { + return; + } + + if (this.dirty || this.layer.dirty) + { + this.layer.dirty = false; + redrawAll = true; + } + + // Scrolling bias; whole pixels only + var scrollX = this._scrollX | 0; + var scrollY = this._scrollY | 0; + + var mc = this._mc; + var shiftX = mc.scrollX - scrollX; // Negative when scrolling right/down + var shiftY = mc.scrollY - scrollY; + + if (!redrawAll && + shiftX === 0 && shiftY === 0) + { + // No reason to rebuild batch, looking at same thing and not invalidated. + return; + } + + mc.scrollX = scrollX; + mc.scrollY = scrollY; + + this.renderFull(); + + this.texture.baseTexture.dirty(); + + this.dirty = false; + + return true; + +}; + +/** +* Flag controlling if the layer tiles wrap at the edges. Only works if the World size matches the Map size. +* +* @property {boolean} wrap +* @memberof Phaser.TilemapLayerGL +* @public +* @default false +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "wrap", { + + get: function () { + return this._wrap; + }, + + set: function (value) { + this._wrap = value; + this.dirty = true; + } + +}); + +/** +* Scrolls the map horizontally or returns the current x position. +* +* @property {number} scrollX +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollX", { + + get: function () { + return this._scrollX; + }, + + set: function (value) { + this._scrollX = value; + } + +}); + +/** +* Scrolls the map vertically or returns the current y position. +* +* @property {number} scrollY +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollY", { + + get: function () { + return this._scrollY; + }, + + set: function (value) { + this._scrollY = value; + } + +}); + +/** +* The width of the collision tiles (in pixels). +* +* @property {integer} collisionWidth +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionWidth", { + + get: function () { + return this._mc.cw; + }, + + set: function (value) { + this._mc.cw = value | 0; + this.dirty = true; + } + +}); + +/** +* The height of the collision tiles (in pixels). +* +* @property {integer} collisionHeight +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionHeight", { + + get: function () { + return this._mc.ch; + }, + + set: function (value) { + this._mc.ch = value | 0; + this.dirty = true; + } + +}); + +/** +* @author Richard Davey +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * Phaser.TilemapParser parses data objects from Phaser.Loader that need more preparation before they can be inserted into a Tilemap. * @@ -75167,34 +76825,7 @@ Phaser.TilemapParser = { INSERT_NULL: false, /** - * A tiled flag that resides within the 32 bit of the object gid and - * indicates whether the tiled/object is flipped horizontally. - * - * @constant - * @type {number} - */ - FLIPPED_HORIZONTALLY_FLAG: 0x80000000, - - /** - * A tiled flag that resides within the 31 bit of the object gid and - * indicates whether the tiled/object is flipped vertically. - * - * @constant - * @type {number} - */ - FLIPPED_VERTICALLY_FLAG: 0x40000000, - - /** - * A tiled flag that resides within the 30 bit of the object gid and - * indicates whether the tiled/object is flipped diagonally. - * - * @constant - * @type {number} - */ - FLIPPED_DIAGONALLY_FLAG: 0x20000000, - - /** - * Parse tilemap data from the cache and creates a Tilemap object. + * Parse tilemap data from the cache and creates data for a Tilemap object. * * @method Phaser.TilemapParser.parse * @param {Phaser.Game} game - Game reference to the currently running game. @@ -75673,8 +77304,6 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { - var self = this; - var object = { gid: curo.objects[v].gid, @@ -75682,13 +77311,9 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, - width: curo.objects[v].width, - height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties, - horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, - verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, - diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG + properties: curo.objects[v].properties + }; if (curo.objects[v].rotation) @@ -75821,11 +77446,13 @@ Phaser.TilemapParser = { var sid; var set; - // go through each of the map layers + // go through each of the map data layers for (var i = 0; i < map.layers.length; i++) { layer = map.layers[i]; + set = null; + // rows of tiles for (var j = 0; j < layer.data.length; j++) { @@ -75846,12 +77473,14 @@ Phaser.TilemapParser = { sid = map.tiles[tile.index][2]; set = map.tilesets[sid]; + // if that tile type has any properties, add them to the tile object if (set.tileProperties && set.tileProperties[tile.index - set.firstgid]) { tile.properties = Phaser.Utils.mixin(set.tileProperties[tile.index - set.firstgid], tile.properties); } + } } } @@ -76001,6 +77630,7 @@ Phaser.Tileset.prototype = { if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) { + // draw the tile on the canvas context.drawImage( this.image, this.drawCoords[coordIndex], @@ -76016,6 +77646,56 @@ Phaser.Tileset.prototype = { }, + /** + * Draws a tile from this Tileset at the given coordinates using a WebGl renderer. + * + * @method Phaser.Tileset#drawGl + * @public + * @param out {Array} glBatch - A list of webgl batch objects to draw later. + * @param {number} x - The x coordinate to draw to. + * @param {number} y - The y coordinate to draw to. + * @param {integer} index - The index of the tile within the set to draw. + * @param {number} alpha - The alpha value to draw this tile with. + */ + drawGl: function (glBatch, x, y, index, alpha) { + + // Correct the tile index for the set and bias for interlacing x/y values + var coordIndex = (index - this.firstgid) * 2; + + if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) + { + // add the tile to the webgl batch + // source and destination coordinates, in pixel units + // destination is the centre of the tile + glBatch.push( { + sx: this.drawCoords[coordIndex], + sy: this.drawCoords[coordIndex + 1], + sw: this.tileWidth, + sh: this.tileHeight, + dx: x + this.tileWidth * 0.5, + dy: y + this.tileHeight * 0.5, + dw: this.tileWidth, + dh: this.tileHeight, + alpha: alpha + } ); + } + + }, + + /** + * adds a marker for the WebGl batch display to insert a degenerate triangle (eg. at the end of each row of tiles) + * + * @param {[type]} glBatch [description] + */ + addDegenerate: function( glBatch ) + { + // don't insert multiple degenerate markers in a row + if ( glBatch[ glBatch.length - 1] ) + { + glBatch.push( null ); + } + }, + /** * Returns true if and only if this tileset contains the given tile index. * diff --git a/build/custom/phaser-split.map b/build/custom/phaser-split.map index b6f4aafb7..dcf4f47f0 100644 --- a/build/custom/phaser-split.map +++ b/build/custom/phaser-split.map @@ -1 +1 @@ -{"version":3,"sources":["phaser-split.js"],"names":["WheelEventProxy","scaleFactor","deltaMode","this","_scaleFactor","_deltaMode","originalEvent","root","Phaser","VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","PIXI","Math","trunc","x","ceil","floor","Function","prototype","bind","slice","Array","thisArg","bound","args","boundArgs","concat","call","arguments","target","apply","TypeError","F","proto","isArray","arg","Object","toString","forEach","fun","t","len","length","i","window","Uint32Array","CheapArray","type","constructor","console","log","assert","warn","Utils","reverseString","string","split","reverse","join","getProperty","obj","prop","parts","last","pop","l","current","setProperty","value","chanceRoll","chance","undefined","random","randomChoice","choice1","choice2","parseDimension","size","dimension","f","px","substr","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","src","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","key","get","set","defineProperty","from","to","o","childNodes","cloneNode","Circle","y","diameter","_diameter","_radius","circumference","PI","out","Point","u","r","cos","sin","radius","getBounds","Rectangle","setTo","copyFrom","source","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offset","dx","dy","offsetPoint","point","a","top","bottom","equals","b","intersects","degToRad","intersectsRectangle","c","cx","abs","halfWidth","xDist","cy","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","width","height","p","sqrt","normx","normy","Line","x1","y1","x2","y2","start","end","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","result","intersectsPoints","reflect","midPoint","centerOn","tx","ty","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","push","e2","atan2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","Matrix","d","fromArray","array","matrix","toArray","transpose","Float32Array","pos","newPos","applyInverse","id","translate","scale","tx1","append","d1","identity","identityMatrix","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","Error","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","j","ix","iy","jx","jy","y0","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","resize","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","position","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","EmptyRectangle","RoundedRectangle","Camera","game","world","view","bounds","deadzone","visible","roundPx","atLimit","displayObject","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","_shake","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","camera","Graphics","stage","addChild","preUpdate","follow","style","lerpX","lerpY","helper","w","h","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","color","clear","beginFill","drawRect","endFill","alpha","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","worldPosition","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","init","preload","loadUpdate","loadRender","create","preRender","render","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","splice","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","destroy","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","context","save","setTransform","restore","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","uniforms","fragmentSrc","passes","shaders","dirty","padding","prevPoint","Date","resolution","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","textureData","repeat","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","image","anchor","filters","Plugin","parent","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","DisplayObjectContainer","disableVisibilityChange","exists","worldTransform","currentRenderOrderID","_hiddenVar","_onChange","_bgColor","g","rgba","transparent","config","parseConfig","setBackgroundColor","DOM","getOffset","canvas","Canvas","setUserSelect","setTouchAction","checkVisibility","children","updateTransform","worldAlpha","document","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","z","physicsType","alive","ignoreDestroy","pendingDestroy","classType","Sprite","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","child","silent","index","body","removeFromHash","addChildAt","updateZ","enable","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","indexOf","addMultiple","moveAll","getAt","getChildAt","frame","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","child2","swapChildren","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","removeChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","filter","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","startIndex","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","removed","group","destroyTexture","removeBetween","endIndex","destroyChildren","soft","rotation","World","_definedSize","_width","_height","stateChange","setBounds","sprite","useBounds","_currentBounds","between","Game","renderer","antialias","physicsConfig","preserveDrawingBuffer","clearBeforeRender","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","CanvasRenderer","WebGLRenderer","contextLost","contextRestored","cocoonJS","screencanvas","smoothed","addToDOM","preventDefault","initContext","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","count","refresh","timeStep","enableStep","disableStep","step","stop","removeFromDOM","defaultRenderer","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","CanvasPool","getContext","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","wt","hitTest","localPoint","worldVisible","hitArea","TileSprite","texture","graphicsData","data","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","ignoreChildInput","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","worldScale","checkPixel","baseTexture","trim","crop","_dx","_dy","clearRect","drawImage","rgb","getImageData","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","offsetX","offsetY","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","navigator","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","_bounds","Bounds","container","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","cw","ch","_updateUvs","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","mask","renderable","transformCallback","transformCallbackContext","filterArea","_mask","_destroyCachedSprite","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","setFrame","scaleMode","RenderTexture","setTexture","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","valid","Tilemap","TilemapLayer","Texture","fromCanvas","img","getImage","base","skipRender","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","requiresReTint","tilingTexture","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","minX","minY","maxX","maxY","Smoothed","existing","weapon","Weapon","createBullets","Image","creature","mesh","Creature","tween","physicsGroup","spriteBatch","SpriteBatch","audio","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","graphics","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","renderTexture","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","smoothProperty","renderSession","getSmoothingPrefix","imageData","pixels","buffer","ArrayBuffer","BaseTexture","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","fillStyle","fillRect","generateTexture","toDataURL","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","putImageData","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","scaleX","scaleY","newWidth","newHeight","blendMode","getCanvas","tint","cachedTint","tintedTexture","CanvasTinter","getTintedTexture","globalAlpha","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","CanvasGraphics","renderGraphics","worldRotation","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","beginPath","arc","closePath","moveTo","lineTo","lineWidth","strokeStyle","stroke","textureLine","createPattern","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","globalCompositeOperation","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","_webGL","isMask","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","canvasBuffer","CanvasBuffer","_renderWebGL","_cacheAsBitmap","_generateCachedSprite","updateCachedSpriteTexture","_cachedSprite","blendModeManager","setBlendMode","maskManager","pushMask","_filters","filterManager","pushFilter","_filterBlock","currentBlendMode","blendModeWebGL","blendModesWebGL","gl","blendFunc","WebGLGraphics","popFilter","popMask","drawCount","_renderCanvas","_prevTint","transform","blendModesCanvas","shakeX","shakeY","w0","w1","h0","h1","x3","y3","x4","y4","tempPoint","Infinity","RECT","RREC","CIRC","ELIP","getLocalBounds","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","webGLData","projection","shader","shaderManager","primitiveShader","updateGraphics","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","setShader","uniformMatrix3fv","translationMatrix","uniform1f","flipY","uniform2f","projectionVector","offsetVector","uniform3fv","tintColor","hex2rgb","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","aVertexPosition","FLOAT","colorAttribute","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","dist","indexCount","indexStart","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","updateGraphicsTint","strokeRect","kappa","ox","oy","xe","ye","xm","ym","maxRadius","renderGraphicsMask","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","vertices","point1","point2","point3","_tempMatrix","renderXY","WEBGL_RENDERER","renderWebGL","renderCanvas","renderRawXY","textBounds","colors","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","isCocoonJS","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","updateTexture","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","pivot","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","idx","parseFloat","createElement","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","TilingSprite","tilePosition","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","item","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","Uint8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","range","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","s1","s2","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","complete","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","attributes","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","format","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","_glTextures","baseURL","isLoading","hasLoaded","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","temp","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hex","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","v2","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","Spring","broadphase","SAPBroadphase","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","on","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","removeBody","setImpactEvents","impactHandler","off","setPostBroadphaseCallback","postBroadphaseHandler","pairs","bodyA","bodyB","_bodyCallbacks","_bodyCallbackContext","shapeA","shapeB","_groupCallbacks","collisionGroup","_groupCallbackContext","contactEquations","setCollisionGroup","setWorldMaterial","material","shapes","updateBoundsCollisionGroup","setupWall","wall","addShape","Plane","addBody","fixedStepTime","solver","equations","removeAllEquations","cs","constraints","removeConstraint","bodies","springs","removeSpring","cms","contactMaterials","removeContactMaterial","impactCallback","addSpring","spring","RotationalSpring","createDistanceConstraint","localAnchorA","localAnchorB","maxForce","getBody","addConstraint","DistanceConstraint","createGearConstraint","ratio","GearConstraint","createRevoluteConstraint","pivotA","pivotB","worldPivot","RevoluteConstraint","createLockConstraint","LockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","PrismaticConstraint","constraint","addContactMaterial","getContactMaterial","materialA","materialB","setMaterial","createMaterial","Material","createContactMaterial","contact","ContactMaterial","getBodies","getSprings","getConstraints","worldPoint","precision","filterStatic","physicsPosition","query","STATIC","toJSON","createCollisionGroup","bitmask","collisionMask","createSpring","restLength","stiffness","damping","worldA","worldB","localA","localB","createRotationalSpring","restAngle","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","defaultContactMaterial","restitution","applySpringForces","applyDamping","applyGravity","solveConstraints","emitImpactEvent","sleepMode","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","sensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","adjustCenterOfMass","shapeChanged","getVelocityAtPoint","relativePoint","applyImpulse","impulse","applyImpulseLocal","localX","localY","applyForce","setZeroForce","setZeroRotation","setZeroVelocity","setZeroDamping","angularDamping","toLocalFrame","toWorldFrame","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","fixedRotation","updateSpriteTransform","resetDamping","resetMass","clearShapes","removeShape","addCircle","Box","addPlane","addParticle","Particle","addLine","addCapsule","Capsule","fromPolygon","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","aabbNeedsUpdate","generatedShapes","categoryBits","maskBits","isSensor","vec2","polygons","cm","Convex","sub","centerOfMass","updateTriangles","updateCenterOfMass","updateBoundingRadius","loadPolygon","DYNAMIC","KINEMATIC","allowSleep","angularForce","inertia","updateMassProperties","sleepSpeedLimit","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","x0","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","worldAnchorA","worldAnchorB","LinearSpring","localOffsetB","localAngleB","localAxisA","disableRotationalLock","localPivotA","localPivotB","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","requiresUpdate","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","tw","th","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","forceLoaded","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute","emptyTexture","DisplayObject","tempMatrix","TextureSilentFail","exports","module","define","amd"],"mappings":"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","file":"phaser-split.min.js"} \ No newline at end of file +{"version":3,"sources":["phaser-split.js"],"names":["WheelEventProxy","scaleFactor","deltaMode","this","_scaleFactor","_deltaMode","originalEvent","root","Phaser","VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","PIXI","Math","trunc","x","ceil","floor","Function","prototype","bind","slice","Array","thisArg","bound","args","boundArgs","concat","call","arguments","target","apply","TypeError","F","proto","isArray","arg","Object","toString","forEach","fun","t","len","length","i","window","Uint32Array","CheapArray","type","constructor","console","log","assert","warn","Utils","reverseString","string","split","reverse","join","getProperty","obj","prop","parts","last","pop","l","current","setProperty","value","chanceRoll","chance","undefined","random","randomChoice","choice1","choice2","parseDimension","size","dimension","f","px","substr","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","src","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","key","get","set","defineProperty","from","to","o","childNodes","cloneNode","Circle","y","diameter","_diameter","_radius","circumference","PI","out","Point","u","r","cos","sin","radius","getBounds","Rectangle","setTo","copyFrom","source","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offset","dx","dy","offsetPoint","point","a","top","bottom","equals","b","intersects","degToRad","intersectsRectangle","c","cx","abs","halfWidth","xDist","cy","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","width","height","p","sqrt","normx","normy","Line","x1","y1","x2","y2","start","end","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","result","intersectsPoints","reflect","midPoint","centerOn","tx","ty","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","push","e2","atan2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","Matrix","d","fromArray","array","matrix","toArray","transpose","Float32Array","pos","newPos","applyInverse","id","translate","scale","tx1","append","d1","identity","identityMatrix","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","Error","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","j","ix","iy","jx","jy","y0","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","resize","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","position","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","EmptyRectangle","RoundedRectangle","Camera","game","world","view","bounds","deadzone","visible","roundPx","atLimit","displayObject","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","_shake","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","camera","Graphics","stage","addChild","preUpdate","follow","style","lerpX","lerpY","helper","w","h","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","color","clear","beginFill","drawRect","endFill","alpha","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","worldPosition","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","init","preload","loadUpdate","loadRender","create","preRender","render","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","splice","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","destroy","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","context","save","setTransform","restore","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","uniforms","fragmentSrc","passes","shaders","dirty","padding","prevPoint","Date","resolution","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","textureData","repeat","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","image","anchor","filters","Plugin","parent","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","DisplayObjectContainer","disableVisibilityChange","exists","worldTransform","currentRenderOrderID","_hiddenVar","_onChange","_bgColor","g","rgba","transparent","config","parseConfig","setBackgroundColor","DOM","getOffset","canvas","Canvas","setUserSelect","setTouchAction","checkVisibility","children","updateTransform","worldAlpha","document","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","z","physicsType","alive","ignoreDestroy","pendingDestroy","classType","Sprite","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","RETURN_ALL","SORT_ASCENDING","SORT_DESCENDING","child","silent","index","body","removeFromHash","addChildAt","updateZ","enable","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","indexOf","addMultiple","moveAll","getAt","getChildAt","frame","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","child2","swapChildren","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","removeChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","filter","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","startIndex","ArrayUtils","getRandomItem","getRandomExists","endIndex","list","getAll","pick","destroyPhase","onRemovedFromGroup$dispatch","removed","group","destroyTexture","removeBetween","destroyChildren","soft","rotation","World","_definedSize","_width","_height","stateChange","setBounds","sprite","useBounds","_currentBounds","between","Game","renderer","antialias","physicsConfig","preserveDrawingBuffer","clearBeforeRender","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","CanvasRenderer","WebGLRenderer","contextLost","contextRestored","cocoonJS","screencanvas","smoothed","addToDOM","preventDefault","initContext","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","count","refresh","timeStep","enableStep","disableStep","step","stop","removeFromDOM","defaultRenderer","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","CanvasPool","getContext","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","wt","hitTest","localPoint","worldVisible","hitArea","TileSprite","texture","graphicsData","data","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","highestID","highestRenderID","includePixelPerfect","ignoreChildInput","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","worldScale","checkPixel","baseTexture","trim","crop","_dx","_dy","clearRect","drawImage","rgb","getImageData","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","offsetX","offsetY","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","navigator","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","_bounds","Bounds","container","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","cw","ch","_updateUvs","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","mask","renderable","transformCallback","transformCallbackContext","filterArea","_mask","_destroyCachedSprite","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","setFrame","scaleMode","RenderTexture","setTexture","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","valid","Tilemap","TilemapLayer","Texture","fromCanvas","img","getImage","base","skipRender","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","requiresReTint","tilingTexture","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","minX","minY","maxX","maxY","Smoothed","existing","weapon","Weapon","createBullets","Image","creature","mesh","Creature","tween","physicsGroup","spriteBatch","SpriteBatch","audio","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","graphics","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","renderTexture","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","smoothProperty","renderSession","getSmoothingPrefix","imageData","pixels","buffer","ArrayBuffer","BaseTexture","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","fillStyle","fillRect","generateTexture","toDataURL","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","putImageData","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","scaleX","scaleY","newWidth","newHeight","blendMode","getCanvas","tint","cachedTint","tintedTexture","CanvasTinter","getTintedTexture","globalAlpha","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","CanvasGraphics","renderGraphics","worldRotation","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","beginPath","arc","closePath","moveTo","lineTo","lineWidth","strokeStyle","stroke","textureLine","createPattern","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","globalCompositeOperation","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","_webGL","isMask","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","canvasBuffer","CanvasBuffer","_renderWebGL","_cacheAsBitmap","_generateCachedSprite","updateCachedSpriteTexture","_cachedSprite","blendModeManager","setBlendMode","maskManager","pushMask","_filters","filterManager","pushFilter","_filterBlock","currentBlendMode","blendModeWebGL","blendModesWebGL","gl","blendFunc","WebGLGraphics","popFilter","popMask","drawCount","_renderCanvas","_prevTint","transform","blendModesCanvas","shakeX","shakeY","w0","w1","h0","h1","x3","y3","x4","y4","tempPoint","Infinity","RECT","RREC","CIRC","ELIP","getLocalBounds","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","webGLData","projection","shader","shaderManager","primitiveShader","updateGraphics","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","setShader","uniformMatrix3fv","translationMatrix","uniform1f","flipY","uniform2f","projectionVector","offsetVector","uniform3fv","tintColor","hex2rgb","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","aVertexPosition","FLOAT","colorAttribute","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","dist","indexCount","indexStart","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","updateGraphicsTint","strokeRect","kappa","ox","oy","xe","ye","xm","ym","maxRadius","renderGraphicsMask","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","vertices","point1","point2","point3","_tempMatrix","renderXY","WEBGL_RENDERER","renderWebGL","renderCanvas","renderRawXY","textBounds","colors","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","isCocoonJS","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","updateTexture","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","pivot","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","idx","parseFloat","createElement","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","TilingSprite","tilePosition","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","item","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","Uint8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","range","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","s1","s2","sow","integer","integerInRange","realInRange","normal","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","complete","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","attributes","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","format","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","_glTextures","baseURL","isLoading","hasLoaded","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","temp","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hex","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","v2","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","Spring","broadphase","SAPBroadphase","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","on","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","removeBody","setImpactEvents","impactHandler","off","setPostBroadphaseCallback","postBroadphaseHandler","pairs","bodyA","bodyB","_bodyCallbacks","_bodyCallbackContext","shapeA","shapeB","_groupCallbacks","collisionGroup","_groupCallbackContext","contactEquations","setCollisionGroup","setWorldMaterial","material","shapes","updateBoundsCollisionGroup","setupWall","wall","addShape","Plane","addBody","fixedStepTime","solver","equations","removeAllEquations","cs","constraints","removeConstraint","bodies","springs","removeSpring","cms","contactMaterials","removeContactMaterial","impactCallback","addSpring","spring","RotationalSpring","createDistanceConstraint","localAnchorA","localAnchorB","maxForce","getBody","addConstraint","DistanceConstraint","createGearConstraint","ratio","GearConstraint","createRevoluteConstraint","pivotA","pivotB","worldPivot","RevoluteConstraint","createLockConstraint","LockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","PrismaticConstraint","constraint","addContactMaterial","getContactMaterial","materialA","materialB","setMaterial","createMaterial","Material","createContactMaterial","contact","ContactMaterial","getBodies","getSprings","getConstraints","worldPoint","precision","filterStatic","physicsPosition","query","STATIC","toJSON","createCollisionGroup","bitmask","collisionMask","createSpring","restLength","stiffness","damping","worldA","worldB","localA","localB","createRotationalSpring","restAngle","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","defaultContactMaterial","restitution","applySpringForces","applyDamping","applyGravity","solveConstraints","emitImpactEvent","sleepMode","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","sensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","adjustCenterOfMass","shapeChanged","getVelocityAtPoint","relativePoint","applyImpulse","impulse","applyImpulseLocal","localX","localY","applyForce","setZeroForce","setZeroRotation","setZeroVelocity","setZeroDamping","angularDamping","toLocalFrame","toWorldFrame","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","fixedRotation","updateSpriteTransform","resetDamping","resetMass","clearShapes","removeShape","addCircle","Box","addPlane","addParticle","Particle","addLine","addCapsule","Capsule","fromPolygon","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","aabbNeedsUpdate","generatedShapes","categoryBits","maskBits","isSensor","vec2","polygons","cm","Convex","sub","centerOfMass","updateTriangles","updateCenterOfMass","updateBoundingRadius","loadPolygon","DYNAMIC","KINEMATIC","allowSleep","angularForce","inertia","updateMassProperties","sleepSpeedLimit","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","x0","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","worldAnchorA","worldAnchorB","LinearSpring","localOffsetB","localAngleB","localAxisA","disableRotationalLock","localPivotA","localPivotB","mapwidth","mapheight","tileWide","tileHigh","mapWide","mapHigh","glBatch","lastTile","batchDataElement","dataSize","_vertexBuffer","_initWebGL","tilemapShader","_renderWholeTilemap","_indexBuffer","_uvBuffer","_colorBuffer","positionBuffer","_renderBatch","oldR","oldT","uvl","uvt","screenWide2","screenHigh2","iTextureWide","iTextureHigh","srcWide","srcHigh","iWide","iHigh","wide","degenerate","lft","bot","aPosition","drawArrays","uCentreOffset","uAlpha","uScale","activeTexture","TEXTURE0","_dirty","bindTexture","TEXTURE_2D","onTextureUpdate","updateFrame","rawX","rawY","TilemapShader","_UID","program","vertexSrc","textureCount","compileProgram","useProgram","getAttribLocation","uSampler","getUniformLocation","deleteProgram","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","tilesetLayers","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","customClass","lh","createLayer","getLayerIndex","ts","li","createInternalLayer","TilemapLayerGL","indexes","setIndex","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","requiresUpdate","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","tw","th","wy","wx","resolveTileset","tileIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","_renderMode","offx","offy","addDegenerate","drawGl","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","polygon","ellipse","sid","drawCoords","coordIndex","sw","sh","dw","dh","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","forceLoaded","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute","emptyTexture","DisplayObject","tempMatrix","TextureSilentFail","exports","module","define","amd"],"mappings":";;CAmCA,WA41eA,QAASA,GAAiBC,EAAaC,GAMnCC,KAAKC,aAAeH,EAMpBE,KAAKE,WAAaH,EAMlBC,KAAKG,cAAgB,KA52erB,GAAIC,GAAOJ,KAYXK,EAASA,IAOTC,QAAS,aAOTC,SAOAC,KAAM,EAONC,OAAQ,EAORC,MAAO,EAOPC,SAAU,EAOVC,KAAM,EAONC,KAAM,EAONC,MAAO,EAOPC,GAAI,EAOJC,KAAM,EAONC,OAAQ,EAORC,OAAQ,EAORC,MAAO,EAOPC,SAAU,EAOVC,KAAM,EAONC,WAAY,EAOZC,WAAY,EAOZC,MAAO,EAOPC,cAAe,EAOfC,QAAS,EAOTC,aAAc,GAOdC,QAAS,GAOTC,QAAS,GAOTC,WAAY,GAOZC,cAAe,GAOfC,aAAc,GAOdC,QAAS,GAOTC,YAAa,GAObC,UAAW,GAOXC,QAAS,GAOTC,KAAM,GAONC,OAAQ,GAORC,UAAW,GAOXC,KAAM,GAONC,OAAQ,GAORC,MAAO,GAOPC,iBAAkB,GAOlBC,SAAU,GAOVC,MAAO,GAOPC,eAAe,EAOfC,WAAY,EAOZC,SAAU,EAOVC,UAAW,EAOXC,SAAU,EAOVC,SAAU,IAOVC,WAAY,GAOZC,WAAY,IAOZC,YAAa,EAObC,iBAAkB,IAOlBC,iBAAkB,IAOlBC,iBAAkB,GAOlBC,iBAAkB,IAOlBC,SAAU,EAOVC,WAAY,EAOZC,UAAW,EAOXC,SAAU,EAOVC,YAAa,EAObC,YAAa,EAObC,OAAQ,EAORC,UAAW,EAOXC,aAAc,EAOdC,aAAc,EAOdC,YAAa,GAObC,cAAe,GAOfC,aAAc,GA2BdC,YACIC,OAAO,EACPC,IAAI,EACJC,SAAS,EACTC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,WAAW,GACXC,WAAW,GACXC,UAAU,GACVC,IAAI,GACJC,WAAW,GACXC,MAAM,GACNC,WAAW,IAgBfC,YACIC,QAAQ,EACRC,OAAO,EACPC,QAAQ,GAGZC,KAAMA,SA6GV,IAnGKC,KAAKC,QACND,KAAKC,MAAQ,SAAeC,GACxB,MAAOA,GAAI,EAAIF,KAAKG,KAAKD,GAAKF,KAAKI,MAAMF,KAO5CG,SAASC,UAAUC,OAGpBF,SAASC,UAAUC,KAAO,WAEtB,GAAIC,GAAQC,MAAMH,UAAUE,KAE5B,OAAO,UAAUE,GASb,QAASC,KACL,GAAIC,GAAOC,EAAUC,OAAON,EAAMO,KAAKC,WACvCC,GAAOC,MAAMjH,eAAgB0G,GAAQ1G,KAAOyG,EAASE,GATzD,GAAIK,GAAShH,KAAM4G,EAAYL,EAAMO,KAAKC,UAAW,EAErD,IAAsB,kBAAXC,GAEP,KAAM,IAAIE,UAqBd,OAbAR,GAAML,UAAY,QAAUc,GAAEC,GAM1B,GALIA,IAEAD,EAAEd,UAAYe,KAGZpH,eAAgBmH,IAGlB,MAAO,IAAIA,IAEhBH,EAAOX,WAEHK,OAQdF,MAAMa,UAEPb,MAAMa,QAAU,SAAUC,GAEtB,MAA8C,kBAAvCC,OAAOlB,UAAUmB,SAASV,KAAKQ,KAQzCd,MAAMH,UAAUoB,UAEjBjB,MAAMH,UAAUoB,QAAU,SAASC,GAE/B,YAEA,IAAa,SAAT1H,MAA4B,OAATA,KAEnB,KAAM,IAAIkH,UAGd,IAAIS,GAAIJ,OAAOvH,MACX4H,EAAMD,EAAEE,SAAW,CAEvB,IAAmB,kBAARH,GAEP,KAAM,IAAIR,UAKd,KAAK,GAFDT,GAAUM,UAAUc,QAAU,EAAId,UAAU,GAAK,OAE5Ce,EAAI,EAAGA,EAAIF,EAAKE,IAEjBA,IAAKH,IAELD,EAAIZ,KAAKL,EAASkB,EAAEG,GAAIA,EAAGH,KAWT,kBAAvBI,QAAOC,aAA4D,gBAAvBD,QAAOC,YAC9D,CACI,GAAIC,GAAa,SAASC,GAEtB,GAAId,GAAQ,GAAIZ,MAEhBuB,QAAOG,GAAQ,SAASZ,GAEpB,GAAoB,gBAAV,GACV,CACId,MAAMM,KAAK9G,KAAMsH,GACjBtH,KAAK6H,OAASP,CAEd,KAAK,GAAIQ,GAAI,EAAGA,EAAI9H,KAAK6H,OAAQC,IAE7B9H,KAAK8H,GAAK,MAIlB,CACItB,MAAMM,KAAK9G,KAAMsH,EAAIO,QAErB7H,KAAK6H,OAASP,EAAIO,MAElB,KAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK6H,OAAQC,IAE7B9H,KAAK8H,GAAKR,EAAIQ,KAK1BC,OAAOG,GAAM7B,UAAYe,EACzBW,OAAOG,GAAMC,YAAcJ,OAAOG,GAGtCD,GAAW,eACXA,EAAW,cAMVF,OAAOK,UAERL,OAAOK,WACPL,OAAOK,QAAQC,IAAMN,OAAOK,QAAQE,OAAS,aAC7CP,OAAOK,QAAQG,KAAOR,OAAOK,QAAQE,OAAS,cAalDjI,EAAOmI,OAUHC,cAAe,SAAUC,GAErB,MAAOA,GAAOC,MAAM,IAAIC,UAAUC,KAAK,KAY3CC,YAAa,SAASC,EAAKC,GAQvB,IANA,GAAIC,GAAQD,EAAKL,MAAM,KACnBO,EAAOD,EAAME,MACbC,EAAIH,EAAMpB,OACVC,EAAI,EACJuB,EAAUJ,EAAM,GAEbnB,EAAIsB,IAAML,EAAMA,EAAIM,KAEvBA,EAAUJ,EAAMnB,GAChBA,GAGJ,OAAIiB,GAEOA,EAAIG,GAIJ,MAafI,YAAa,SAASP,EAAKC,EAAMO,GAQ7B,IANA,GAAIN,GAAQD,EAAKL,MAAM,KACnBO,EAAOD,EAAME,MACbC,EAAIH,EAAMpB,OACVC,EAAI,EACJuB,EAAUJ,EAAM,GAEbnB,EAAIsB,IAAML,EAAMA,EAAIM,KAEvBA,EAAUJ,EAAMnB,GAChBA,GAQJ,OALIiB,KAEAA,EAAIG,GAAQK,GAGTR,GAcXS,WAAY,SAAUC,GAElB,MADeC,UAAXD,IAAwBA,EAAS,IAC9BA,EAAS,GAAsB,IAAhB1D,KAAK4D,UAAkBF,GAWjDG,aAAc,SAAUC,EAASC,GAC7B,MAAQ/D,MAAK4D,SAAW,GAAOE,EAAUC,GAW7CC,eAAgB,SAAUC,EAAMC,GAE5B,GAAIC,GAAI,EACJC,EAAK,CA4BT,OA1BoB,gBAATH,GAGiB,MAApBA,EAAKI,QAAO,IAEZF,EAAIG,SAASL,EAAM,IAAM,IAIrBG,EAFc,IAAdF,EAEKlC,OAAOuC,WAAaJ,EAIpBnC,OAAOwC,YAAcL,GAK9BC,EAAKE,SAASL,EAAM,IAKxBG,EAAKH,EAGFG,GA+BXK,IAAK,SAAUC,EAAK7C,EAAK4C,EAAKE,GAE1B,GAAYhB,SAAR9B,EAAqB,GAAIA,GAAM,CACnC,IAAY8B,SAARc,EAAqB,GAAIA,GAAM,GACnC,IAAYd,SAARgB,EAAqB,GAAIA,GAAM,CAEnCD,GAAMA,EAAIjD,UAEV,IAAImD,GAAS,CAEb,IAAI/C,EAAM,GAAK6C,EAAI5C,OAEf,OAAQ6C,GAEJ,IAAK,GACDD,EAAM,GAAIjE,OAAMoB,EAAM,EAAI6C,EAAI5C,QAAQgB,KAAK2B,GAAOC,CAClD,MAEJ,KAAK,GACD,GAAIG,GAAQ7E,KAAKG,MAAMyE,EAAS/C,EAAM6C,EAAI5C,QAAU,GAChDgD,EAAOF,EAASC,CACpBH,GAAM,GAAIjE,OAAMqE,EAAK,GAAGhC,KAAK2B,GAAOC,EAAM,GAAIjE,OAAMoE,EAAM,GAAG/B,KAAK2B,EAClE,MAEJ,SACIC,GAAY,GAAIjE,OAAMoB,EAAM,EAAI6C,EAAI5C,QAAQgB,KAAK2B,GAK7D,MAAOC,IAWXK,cAAe,SAAU/B,GAMrB,GAAoB,gBAAV,IAAsBA,EAAIgC,UAAYhC,IAAQA,EAAIhB,OAExD,OAAO,CAOX,KACI,GAAIgB,EAAIZ,iBAAqB6C,eAAelE,KAAKiC,EAAIZ,YAAY9B,UAAW,iBAExE,OAAO,EAEb,MAAO4E,GACL,OAAO,EAKX,OAAO,GAWXC,OAAQ,WAEJ,GAAIC,GAASC,EAAMC,EAAKC,EAAMC,EAAaC,EACvCxE,EAASD,UAAU,OACnBe,EAAI,EACJD,EAASd,UAAUc,OACnB4D,GAAO,CAkBX,KAfsB,iBAAXzE,KAEPyE,EAAOzE,EACPA,EAASD,UAAU,OAEnBe,EAAI,GAIJD,IAAWC,IAEXd,EAAShH,OACP8H,GAGCA,EAAID,EAAQC,IAGf,GAAgC,OAA3BqD,EAAUpE,UAAUe,IAGrB,IAAKsD,IAAQD,GAETE,EAAMrE,EAAOoE,GACbE,EAAOH,EAAQC,GAGXpE,IAAWsE,IAMXG,GAAQH,IAASjL,EAAOmI,MAAMsC,cAAcQ,KAAUC,EAAc/E,MAAMa,QAAQiE,MAE9EC,GAEAA,GAAc,EACdC,EAAQH,GAAO7E,MAAMa,QAAQgE,GAAOA,MAIpCG,EAAQH,GAAOhL,EAAOmI,MAAMsC,cAAcO,GAAOA,KAIrDrE,EAAOoE,GAAQ/K,EAAOmI,MAAM0C,OAAOO,EAAMD,EAAOF,IAIlC5B,SAAT4B,IAELtE,EAAOoE,GAAQE,GAO/B,OAAOtE,IAgBX0E,eAAgB,SAAU1E,EAAQ2E,EAAOC,GAErBlC,SAAZkC,IAAyBA,GAAU,EAIvC,KAAK,GAFDC,GAAYtE,OAAOuE,KAAKH,GAEnB7D,EAAI,EAAGA,EAAI+D,EAAUhE,OAAQC,IACtC,CACI,GAAIiE,GAAMF,EAAU/D,GAChByB,EAAQoC,EAAMI,IAEbH,GAAYG,IAAO/E,MAOhBuC,GACsB,kBAAdA,GAAMyC,KAA2C,kBAAdzC,GAAM0C,IAcjDjF,EAAO+E,GAAOxC,EAXa,kBAAhBA,GAAMiC,MAEbxE,EAAO+E,GAAOxC,EAAMiC,QAIpBjE,OAAO2E,eAAelF,EAAQ+E,EAAKxC,MAqBvDoC,MAAO,SAAUQ,EAAMC,GAEnB,IAAKD,GAA0B,gBAAX,GAEhB,MAAOC,EAGX,KAAK,GAAIL,KAAOI,GAChB,CACI,GAAIE,GAAIF,EAAKJ,EAEb,KAAIM,EAAEC,aAAcD,EAAEE,UAAtB,CAKA,GAAIrE,SAAeiE,GAAKJ,EAEnBI,GAAKJ,IAAiB,WAAT7D,QAOFkE,GAAGL,KAAU7D,EAErBkE,EAAGL,GAAO1L,EAAOmI,MAAMmD,MAAMQ,EAAKJ,GAAMK,EAAGL,IAI3CK,EAAGL,GAAO1L,EAAOmI,MAAMmD,MAAMQ,EAAKJ,GAAM,GAAIM,GAAElE,aAXlDiE,EAAGL,GAAOI,EAAKJ,IAgBvB,MAAOK,KAsBf/L,EAAOmM,OAAS,SAAUvG,EAAGwG,EAAGC,GAE5BzG,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTC,EAAWA,GAAY,EAKvB1M,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAMTzM,KAAK2M,UAAYD,EAMjB1M,KAAK4M,QAAU,EAEXF,EAAW,IAEX1M,KAAK4M,QAAqB,GAAXF,GAOnB1M,KAAKkI,KAAO7H,EAAOiC,QAIvBjC,EAAOmM,OAAOnG,WAQVwG,cAAe,WAEX,MAAO,IAAK9G,KAAK+G,GAAK9M,KAAK4M,UAY/BjD,OAAQ,SAAUoD,GAEFrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIrF,GAAI,EAAI5B,KAAK+G,GAAK/G,KAAK4D,SACvBsD,EAAIlH,KAAK4D,SAAW5D,KAAK4D,SACzBuD,EAAKD,EAAI,EAAK,EAAIA,EAAIA,EACtBhH,EAAIiH,EAAInH,KAAKoH,IAAIxF,GACjB8E,EAAIS,EAAInH,KAAKqH,IAAIzF,EAKrB,OAHAoF,GAAI9G,EAAIjG,KAAKiG,EAAKA,EAAIjG,KAAKqN,OAC3BN,EAAIN,EAAIzM,KAAKyM,EAAKA,EAAIzM,KAAKqN,OAEpBN,GAUXO,UAAW,WAEP,MAAO,IAAIjN,GAAOkN,UAAUvN,KAAKiG,EAAIjG,KAAKqN,OAAQrN,KAAKyM,EAAIzM,KAAKqN,OAAQrN,KAAK0M,SAAU1M,KAAK0M,WAYhGc,MAAO,SAAUvH,EAAGwG,EAAGC,GAOnB,MALA1M,MAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EACTzM,KAAK2M,UAAYD,EACjB1M,KAAK4M,QAAqB,GAAXF,EAER1M,MAUXyN,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,EAAGiB,EAAOhB,WAUjDiB,OAAQ,SAAUC,GAMd,MAJAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EACdmB,EAAKlB,SAAW1M,KAAK2M,UAEdiB,GAYXC,SAAU,SAAUD,EAAME,GAEtB,GAAID,GAAWxN,EAAO0F,KAAK8H,SAAS7N,KAAKiG,EAAGjG,KAAKyM,EAAGmB,EAAK3H,EAAG2H,EAAKnB,EACjE,OAAOqB,GAAQ/H,KAAK+H,MAAMD,GAAYA,GAU1CrC,MAAO,SAAUuC,GAWb,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOmM,OAAOxM,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK0M,UAIhDqB,EAAOP,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK0M,UAG/BqB,GAWXC,SAAU,SAAU/H,EAAGwG,GAEnB,MAAOpM,GAAOmM,OAAOwB,SAAShO,KAAMiG,EAAGwG,IAY3CwB,mBAAoB,SAAUC,EAAOC,EAAWpB,GAE5C,MAAO1M,GAAOmM,OAAOyB,mBAAmBjO,KAAMkO,EAAOC,EAAWpB,IAWpEqB,OAAQ,SAAUC,EAAIC,GAKlB,MAHAtO,MAAKiG,GAAKoI,EACVrO,KAAKyM,GAAK6B,EAEHtO,MAUXuO,YAAa,SAAUC,GACnB,MAAOxO,MAAKoO,OAAOI,EAAMvI,EAAGuI,EAAM/B,IAQtCjF,SAAU,WACN,MAAO,sBAAwBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,aAAezM,KAAK0M,SAAW,WAAa1M,KAAKqN,OAAS,QAK3HhN,EAAOmM,OAAOnG,UAAU8B,YAAc9H,EAAOmM,OAQ7CjF,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,YAE3C2F,IAAK,WACD,MAAOhM,MAAK2M,WAGhBV,IAAK,SAAU1C,GAEPA,EAAQ,IAERvJ,KAAK2M,UAAYpD,EACjBvJ,KAAK4M,QAAkB,GAARrD,MAW3BhC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,UAE3C2F,IAAK,WACD,MAAOhM,MAAK4M,SAGhBX,IAAK,SAAU1C,GAEPA,EAAQ,IAERvJ,KAAK4M,QAAUrD,EACfvJ,KAAK2M,UAAoB,EAARpD,MAY7BhC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,QAE3C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKiG,GAEbjG,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAASrN,KAAKiG,EAAIsD,KAYnChC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,SAE3C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKiG,GAEbjG,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAAS9D,EAAQvJ,KAAKiG,KAYvCsB,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,OAE3C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKyM,GAEbzM,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAASrN,KAAKyM,EAAIlD,KAYnChC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,UAE3C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKyM,GAEbzM,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAAS9D,EAAQvJ,KAAKyM,KAavClF,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,QAE3C2F,IAAK,WAED,MAAIhM,MAAK4M,QAAU,EAER7G,KAAK+G,GAAK9M,KAAK4M,QAAU5M,KAAK4M,QAI9B,KAanBrF,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,SAE3C2F,IAAK,WACD,MAA2B,KAAnBhM,KAAK2M,WAGjBV,IAAK,SAAU1C,GAEPA,KAAU,GAEVvJ,KAAKwN,MAAM,EAAG,EAAG,MAe7BnN,EAAOmM,OAAOwB,SAAW,SAAUS,EAAGxI,EAAGwG,GAGrC,GAAIgC,EAAEpB,OAAS,GAAKpH,GAAKwI,EAAE5D,MAAQ5E,GAAKwI,EAAE7D,OAAS6B,GAAKgC,EAAEC,KAAOjC,GAAKgC,EAAEE,OACxE,CACI,GAAIN,IAAMI,EAAExI,EAAIA,IAAMwI,EAAExI,EAAIA,GACxBqI,GAAMG,EAAEhC,EAAIA,IAAMgC,EAAEhC,EAAIA,EAE5B,OAAQ4B,GAAKC,GAAQG,EAAEpB,OAASoB,EAAEpB,OAIlC,OAAO,GAYfhN,EAAOmM,OAAOoC,OAAS,SAAUH,EAAGI,GAChC,MAAQJ,GAAExI,GAAK4I,EAAE5I,GAAKwI,EAAEhC,GAAKoC,EAAEpC,GAAKgC,EAAE/B,UAAYmC,EAAEnC,UAWxDrM,EAAOmM,OAAOsC,WAAa,SAAUL,EAAGI,GACpC,MAAQxO,GAAO0F,KAAK8H,SAASY,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,IAAOgC,EAAEpB,OAASwB,EAAExB,QAYtEhN,EAAOmM,OAAOyB,mBAAqB,SAAUQ,EAAGP,EAAOC,EAAWpB,GAa9D,MAXkBrD,UAAdyE,IAA2BA,GAAY,GAC/BzE,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEtCmB,KAAc,IAEdD,EAAQ7N,EAAO0F,KAAKgJ,SAASb,IAGjCnB,EAAI9G,EAAIwI,EAAExI,EAAIwI,EAAEpB,OAAStH,KAAKoH,IAAIe,GAClCnB,EAAIN,EAAIgC,EAAEhC,EAAIgC,EAAEpB,OAAStH,KAAKqH,IAAIc,GAE3BnB,GAWX1M,EAAOmM,OAAOwC,oBAAsB,SAAUC,EAAG/B,GAE7C,GAAIgC,GAAKnJ,KAAKoJ,IAAIF,EAAEhJ,EAAIiH,EAAEjH,EAAIiH,EAAEkC,WAC5BC,EAAQnC,EAAEkC,UAAYH,EAAE5B,MAE5B,IAAI6B,EAAKG,EAEL,OAAO,CAGX,IAAIC,GAAKvJ,KAAKoJ,IAAIF,EAAExC,EAAIS,EAAET,EAAIS,EAAEqC,YAC5BC,EAAQtC,EAAEqC,WAAaN,EAAE5B,MAE7B,IAAIiC,EAAKE,EAEL,OAAO,CAGX,IAAIN,GAAMhC,EAAEkC,WAAaE,GAAMpC,EAAEqC,WAE7B,OAAO,CAGX,IAAIE,GAAcP,EAAKhC,EAAEkC,UACrBM,EAAcJ,EAAKpC,EAAEqC,WACrBI,EAAgBF,EAAcA,EAC9BG,EAAgBF,EAAcA,EAC9BG,EAAkBZ,EAAE5B,OAAS4B,EAAE5B,MAEnC,OAAOsC,GAAgBC,GAAiBC,GAK5C/J,KAAK0G,OAASnM,EAAOmM,OAmBrBnM,EAAOyP,QAAU,SAAU7J,EAAGwG,EAAGsD,EAAOC,GAEpC/J,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTsD,EAAQA,GAAS,EACjBC,EAASA,GAAU,EAKnBhQ,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAMdhQ,KAAKkI,KAAO7H,EAAO4B,SAIvB5B,EAAOyP,QAAQzJ,WAWXmH,MAAO,SAAUvH,EAAGwG,EAAGsD,EAAOC,GAO1B,MALAhQ,MAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EACTzM,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEPhQ,MAUXsN,UAAW,WAEP,MAAO,IAAIjN,GAAOkN,UAAUvN,KAAKiG,EAAIjG,KAAK+P,MAAO/P,KAAKyM,EAAIzM,KAAKgQ,OAAQhQ,KAAK+P,MAAO/P,KAAKgQ,SAW5FvC,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,EAAGiB,EAAOqC,MAAOrC,EAAOsC,SAU/DrC,OAAQ,SAASC,GAOb,MALAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EACdmB,EAAKmC,MAAQ/P,KAAK+P,MAClBnC,EAAKoC,OAAShQ,KAAKgQ,OAEZpC,GAUXpC,MAAO,SAASuC,GAWZ,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOyP,QAAQ9P,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAI7DjC,EAAOP,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAG3CjC,GAYXC,SAAU,SAAU/H,EAAGwG,GAEnB,MAAOpM,GAAOyP,QAAQ9B,SAAShO,KAAMiG,EAAGwG,IAY5C9C,OAAQ,SAAUoD,GAEFrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIiD,GAAIlK,KAAK4D,SAAW5D,KAAK+G,GAAK,EAC9BI,EAAInH,KAAK4D,QAQb,OANAoD,GAAI9G,EAAIF,KAAKmK,KAAKhD,GAAKnH,KAAKoH,IAAI8C,GAChClD,EAAIN,EAAI1G,KAAKmK,KAAKhD,GAAKnH,KAAKqH,IAAI6C,GAEhClD,EAAI9G,EAAIjG,KAAKiG,EAAK8G,EAAI9G,EAAIjG,KAAK+P,MAAQ,EACvChD,EAAIN,EAAIzM,KAAKyM,EAAKM,EAAIN,EAAIzM,KAAKgQ,OAAS,EAEjCjD,GASXvF,SAAU,WACN,MAAO,uBAAyBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,UAAYzM,KAAK+P,MAAQ,WAAa/P,KAAKgQ,OAAS,QAKtH3P,EAAOyP,QAAQzJ,UAAU8B,YAAc9H,EAAOyP,QAO9CvI,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAKiG,GAGhBgG,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAIsD,KAWjBhC,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,SAE5C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK+P,OAGzB9D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKiG,EAEbjG,KAAK+P,MAAQ,EAIb/P,KAAK+P,MAAQxG,EAAQvJ,KAAKiG,KAWtCsB,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,OAE5C2F,IAAK,WACD,MAAOhM,MAAKyM,GAGhBR,IAAK,SAAU1C,GACXvJ,KAAKyM,EAAIlD,KAUjBhC,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,UAE5C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAKgQ,QAGzB/D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKyM,EAEbzM,KAAKgQ,OAAS,EAIdhQ,KAAKgQ,OAASzG,EAAQvJ,KAAKyM,KAYvClF,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,SAE5C2F,IAAK,WACD,MAAuB,KAAfhM,KAAK+P,OAA+B,IAAhB/P,KAAKgQ,QAGrC/D,IAAK,SAAU1C,GAEPA,KAAU,GAEVvJ,KAAKwN,MAAM,EAAG,EAAG,EAAG,MAgBhCnN,EAAOyP,QAAQ9B,SAAW,SAAUS,EAAGxI,EAAGwG,GAEtC,GAAIgC,EAAEsB,OAAS,GAAKtB,EAAEuB,QAAU,EAC5B,OAAO,CAIX,IAAIG,IAAUlK,EAAIwI,EAAExI,GAAKwI,EAAEsB,MAAS,GAChCK,GAAU3D,EAAIgC,EAAEhC,GAAKgC,EAAEuB,OAAU,EAKrC,OAHAG,IAASA,EACTC,GAASA,EAEDD,EAAQC,EAAQ,KAK5BtK,KAAKgK,QAAUzP,EAAOyP,QAkBtBzP,EAAOgQ,KAAO,SAAUC,EAAIC,EAAIC,EAAIC,GAEhCH,EAAKA,GAAM,EACXC,EAAKA,GAAM,EACXC,EAAKA,GAAM,EACXC,EAAKA,GAAM,EAKXzQ,KAAK0Q,MAAQ,GAAIrQ,GAAO2M,MAAMsD,EAAIC,GAKlCvQ,KAAK2Q,IAAM,GAAItQ,GAAO2M,MAAMwD,EAAIC,GAMhCzQ,KAAKkI,KAAO7H,EAAOmC,MAIvBnC,EAAOgQ,KAAKhK,WAYRmH,MAAO,SAAU8C,EAAIC,EAAIC,EAAIC,GAKzB,MAHAzQ,MAAK0Q,MAAMlD,MAAM8C,EAAIC,GACrBvQ,KAAK2Q,IAAInD,MAAMgD,EAAIC,GAEZzQ,MAcX4Q,WAAY,SAAUC,EAAaC,EAAWC,GAI1C,MAFkBrH,UAAdqH,IAA2BA,GAAY,GAEvCA,EAEO/Q,KAAKwN,MAAMqD,EAAYG,OAAO/K,EAAG4K,EAAYG,OAAOvE,EAAGqE,EAAUE,OAAO/K,EAAG6K,EAAUE,OAAOvE,GAGhGzM,KAAKwN,MAAMqD,EAAY5K,EAAG4K,EAAYpE,EAAGqE,EAAU7K,EAAG6K,EAAUrE,IAc3EwE,UAAW,SAAUhL,EAAGwG,EAAGyB,EAAOrG,GAK9B,MAHA7H,MAAK0Q,MAAMlD,MAAMvH,EAAGwG,GACpBzM,KAAK2Q,IAAInD,MAAMvH,EAAKF,KAAKoH,IAAIe,GAASrG,EAAS4E,EAAK1G,KAAKqH,IAAIc,GAASrG,GAE/D7H,MAiBXkR,OAAQ,SAAUhD,EAAOC,GAErB,GAAIe,IAAMlP,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,GAAK,EACnCqJ,GAAMtP,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,GAAK,CAKvC,OAHAzM,MAAK0Q,MAAMQ,OAAOhC,EAAII,EAAIpB,EAAOC,GACjCnO,KAAK2Q,IAAIO,OAAOhC,EAAII,EAAIpB,EAAOC,GAExBnO,MAgBXmR,aAAc,SAAUlL,EAAGwG,EAAGyB,EAAOC,GAKjC,MAHAnO,MAAK0Q,MAAMQ,OAAOjL,EAAGwG,EAAGyB,EAAOC,GAC/BnO,KAAK2Q,IAAIO,OAAOjL,EAAGwG,EAAGyB,EAAOC,GAEtBnO,MAeX8O,WAAY,SAAUsC,EAAMC,EAAWC,GAEnC,MAAOjR,GAAOgQ,KAAKkB,iBAAiBvR,KAAK0Q,MAAO1Q,KAAK2Q,IAAKS,EAAKV,MAAOU,EAAKT,IAAKU,EAAWC,IAY/FE,QAAS,SAAUJ,GAEf,MAAO/Q,GAAOgQ,KAAKmB,QAAQxR,KAAMoR,IAWrCK,SAAU,SAAU1E,GAOhB,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,GAAKjG,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,GAAK,EACtC8G,EAAIN,GAAKzM,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,GAAK,EAE/BM,GAeX2E,SAAU,SAAUzL,EAAGwG,GAEnB,GAAIyC,IAAMlP,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,GAAK,EACnCqJ,GAAMtP,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,GAAK,EAEnCkF,EAAK1L,EAAIiJ,EACT0C,EAAKnF,EAAI6C,CAEbtP,MAAK0Q,MAAMmB,IAAIF,EAAIC,GACnB5R,KAAK2Q,IAAIkB,IAAIF,EAAIC,IAYrBE,YAAa,SAAU7L,EAAGwG,GAEtB,OAASxG,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,MAAQzM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMwG,EAAIzM,KAAK0Q,MAAMjE,IAY/GsF,eAAgB,SAAU9L,EAAGwG,GAEzB,GAAIuF,GAAOjM,KAAKkM,IAAIjS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,GACvCiM,EAAOnM,KAAKoM,IAAInS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,GACvCmM,EAAOrM,KAAKkM,IAAIjS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,GACvC4F,EAAOtM,KAAKoM,IAAInS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,EAE3C,OAAQzM,MAAK8R,YAAY7L,EAAGwG,IAAOxG,GAAK+L,GAAQ/L,GAAKiM,GAAUzF,GAAK2F,GAAQ3F,GAAK4F,GAYrF1I,OAAQ,SAAUoD,GAEFrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIrF,GAAI5B,KAAK4D,QAKb,OAHAoD,GAAI9G,EAAIjG,KAAK0Q,MAAMzK,EAAI0B,GAAK3H,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,GACpD8G,EAAIN,EAAIzM,KAAK0Q,MAAMjE,EAAI9E,GAAK3H,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,GAE7CM,GAaXuF,kBAAmB,SAAUC,EAAUC,GAElB9I,SAAb6I,IAA0BA,EAAW,GACzB7I,SAAZ8I,IAAyBA,KAE7B,IAAIlC,GAAKvK,KAAK+H,MAAM9N,KAAK0Q,MAAMzK,GAC3BsK,EAAKxK,KAAK+H,MAAM9N,KAAK0Q,MAAMjE,GAC3B+D,EAAKzK,KAAK+H,MAAM9N,KAAK2Q,IAAI1K,GACzBwK,EAAK1K,KAAK+H,MAAM9N,KAAK2Q,IAAIlE,GAEzB4B,EAAKtI,KAAKoJ,IAAIqB,EAAKF,GACnBhC,EAAKvI,KAAKoJ,IAAIsB,EAAKF,GACnBkC,EAAMnC,EAAKE,EAAM,GAAI,EACrBkC,EAAMnC,EAAKE,EAAM,GAAI,EACrBkC,EAAMtE,EAAKC,CAEfkE,GAAQI,MAAMtC,EAAIC,GAIlB,KAFA,GAAIzI,GAAI,EAEEwI,GAAME,GAAQD,GAAME,GAC9B,CACI,GAAIoC,GAAKF,GAAO,CAEZE,IAAMvE,IAENqE,GAAOrE,EACPgC,GAAMmC,GAGNI,EAAKxE,IAELsE,GAAOtE,EACPkC,GAAMmC,GAGN5K,EAAIyK,IAAa,GAEjBC,EAAQI,MAAMtC,EAAIC,IAGtBzI,IAIJ,MAAO0K,IAUXhH,MAAO,SAAUuC,GAWb,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOgQ,KAAKrQ,KAAK0Q,MAAMzK,EAAGjG,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAI1K,EAAGjG,KAAK2Q,IAAIlE,GAI1EsB,EAAOP,MAAMxN,KAAK0Q,MAAMzK,EAAGjG,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAI1K,EAAGjG,KAAK2Q,IAAIlE,GAG3DsB,IAWfxG,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,UAEzC2F,IAAK,WACD,MAAOjG,MAAKmK,MAAMlQ,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,IAAMzM,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,OAU5IlF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,MAAOjG,MAAK+M,MAAM9S,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,MAU7EsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,OAAQhM,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,IAAMzM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,MAUtEsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,aAEzC2F,IAAK,WACD,SAAUhM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,OAUxElF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,KAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,MAU/CsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,KAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,MAU/ClF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,QAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,MAU/CsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,MAAOjG,MAAKoM,IAAInS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,MAU/CsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,OAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,MAU/ClF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,UAEzC2F,IAAK,WACD,MAAOjG,MAAKoM,IAAInS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,MAU/ClF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,MAAOjG,MAAKoJ,IAAInP,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,MAUhDsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,UAEzC2F,IAAK,WACD,MAAOjG,MAAKoJ,IAAInP,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,MAUhDlF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,WAEzC2F,IAAK,WACD,MAAOjG,MAAKoH,IAAInN,KAAKkO,MAAQ,uBAUrC3G,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,WAEzC2F,IAAK,WACD,MAAOjG,MAAKqH,IAAIpN,KAAKkO,MAAQ,uBAUrC3G,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,eAEzC2F,IAAK,WACD,MAAO3L,GAAO0F,KAAKgN,KAAK/S,KAAKkO,MAAQ,oBAAqBnI,KAAK+G,GAAI/G,KAAK+G,OAoBhFzM,EAAOgQ,KAAKkB,iBAAmB,SAAU9C,EAAGI,EAAG5D,EAAGf,EAAGmH,EAAWC,GAE1C5H,SAAd2H,IAA2BA,GAAY,GAC5B3H,SAAX4H,IAAwBA,EAAS,GAAIjR,GAAO2M,MAEhD,IAAIgG,GAAKnE,EAAEpC,EAAIgC,EAAEhC,EACbwG,EAAK/I,EAAEuC,EAAIxB,EAAEwB,EACbyG,EAAKzE,EAAExI,EAAI4I,EAAE5I,EACbkN,EAAKlI,EAAEhF,EAAIiE,EAAEjE,EACbmN,EAAMvE,EAAE5I,EAAIwI,EAAEhC,EAAMgC,EAAExI,EAAI4I,EAAEpC,EAC5B4G,EAAMnJ,EAAEjE,EAAIgF,EAAEwB,EAAMxB,EAAEhF,EAAIiE,EAAEuC,EAC5B6G,EAASN,EAAKG,EAAOF,EAAKC,CAE9B,IAAc,IAAVI,EAEA,MAAO,KAMX,IAHAhC,EAAOrL,GAAMiN,EAAKG,EAAOF,EAAKC,GAAOE,EACrChC,EAAO7E,GAAMwG,EAAKG,EAAOJ,EAAKK,GAAOC,EAEjCjC,EACJ,CACI,GAAIkC,IAAOrJ,EAAEuC,EAAIxB,EAAEwB,IAAMoC,EAAE5I,EAAIwI,EAAExI,IAAMiE,EAAEjE,EAAIgF,EAAEhF,IAAM4I,EAAEpC,EAAIgC,EAAEhC,GACzD+G,IAAQtJ,EAAEjE,EAAIgF,EAAEhF,IAAMwI,EAAEhC,EAAIxB,EAAEwB,IAAOvC,EAAEuC,EAAIxB,EAAEwB,IAAMgC,EAAExI,EAAIgF,EAAEhF,IAAMsN,EACjEE,IAAQ5E,EAAE5I,EAAIwI,EAAExI,IAAMwI,EAAEhC,EAAIxB,EAAEwB,IAAQoC,EAAEpC,EAAIgC,EAAEhC,IAAMgC,EAAExI,EAAIgF,EAAEhF,IAAOsN,CAEvE,OAAIC,IAAM,GAAKA,GAAM,GAAKC,GAAM,GAAKA,GAAM,EAEhCnC,EAIA,KAIf,MAAOA,IAkBXjR,EAAOgQ,KAAKvB,WAAa,SAAUL,EAAGI,EAAGwC,EAAWC,GAEhD,MAAOjR,GAAOgQ,KAAKkB,iBAAiB9C,EAAEiC,MAAOjC,EAAEkC,IAAK9B,EAAE6B,MAAO7B,EAAE8B,IAAKU,EAAWC,IAoBnFjR,EAAOgQ,KAAKrB,oBAAsB,SAAUoC,EAAMsC,GAG9C,IAAKrT,EAAOkN,UAAUuB,WAAWsC,EAAMsC,GAEnC,OAAO,CAGX,IAAIpD,GAAKc,EAAKV,MAAMzK,EAChBsK,EAAKa,EAAKV,MAAMjE,EAEhB+D,EAAKY,EAAKT,IAAI1K,EACdwK,EAAKW,EAAKT,IAAIlE,EAEdkH,EAAMD,EAAKzN,EACX2N,EAAMF,EAAKjH,EACXoH,EAAMH,EAAK9I,MACXkJ,EAAMJ,EAAK/E,OAEXhH,EAAI,CAKR,IAAK2I,GAAMqD,GAAOrD,GAAMuD,GAAOtD,GAAMqD,GAAOrD,GAAMuD,GAC7CtD,GAAMmD,GAAOnD,GAAMqD,GAAOpD,GAAMmD,GAAOnD,GAAMqD,EAE9C,OAAO,CAGX,IAAIxD,EAAKqD,GAAOnD,GAAMmD,GAKlB,GAFAhM,EAAI4I,GAAME,EAAKF,IAAOoD,EAAMrD,IAAOE,EAAKF,GAEpC3I,EAAIiM,GAAOjM,GAAKmM,EAEhB,OAAO,MAGV,IAAIxD,EAAKuD,GAAOrD,GAAMqD,IAGvBlM,EAAI4I,GAAME,EAAKF,IAAOsD,EAAMvD,IAAOE,EAAKF,GAEpC3I,GAAKiM,GAAOjM,GAAKmM,GAEjB,OAAO,CAIf,IAAIvD,EAAKqD,GAAOnD,GAAMmD,GAKlB,GAFAjM,EAAI2I,GAAME,EAAKF,IAAOsD,EAAMrD,IAAOE,EAAKF,GAEpC5I,GAAKgM,GAAOhM,GAAKkM,EAEjB,OAAO,MAGV,IAAItD,EAAKuD,GAAOrD,GAAMqD,IAGvBnM,EAAI2I,GAAME,EAAKF,IAAOwD,EAAMvD,IAAOE,EAAKF,GAEpC5I,GAAKgM,GAAOhM,GAAKkM,GAEjB,OAAO,CAIf,QAAO,GAaXxT,EAAOgQ,KAAKmB,QAAU,SAAU/C,EAAGI,GAE/B,MAAO,GAAIA,EAAEkF,YAAc,kBAAoBtF,EAAEP,OA6BrD7N,EAAO2T,OAAS,SAAUvF,EAAGI,EAAGI,EAAGgF,EAAGtC,EAAIC,GAE5BlI,SAAN+E,GAAyB,OAANA,IAAcA,EAAI,GAC/B/E,SAANmF,GAAyB,OAANA,IAAcA,EAAI,GAC/BnF,SAANuF,GAAyB,OAANA,IAAcA,EAAI,GAC/BvF,SAANuK,GAAyB,OAANA,IAAcA,EAAI,GAC9BvK,SAAPiI,GAA2B,OAAPA,IAAeA,EAAK,GACjCjI,SAAPkI,GAA2B,OAAPA,IAAeA,EAAK,GAM5C5R,KAAKyO,EAAIA,EAMTzO,KAAK6O,EAAIA,EAMT7O,KAAKiP,EAAIA,EAMTjP,KAAKiU,EAAIA,EAMTjU,KAAK2R,GAAKA,EAMV3R,KAAK4R,GAAKA,EAMV5R,KAAKkI,KAAO7H,EAAOoC,QAIvBpC,EAAO2T,OAAO3N,WAkBV6N,UAAW,SAAUC,GAEjB,MAAOnU,MAAKwN,MAAM2G,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAgB9E3G,MAAO,SAAUiB,EAAGI,EAAGI,EAAGgF,EAAGtC,EAAIC,GAS7B,MAPA5R,MAAKyO,EAAIA,EACTzO,KAAK6O,EAAIA,EACT7O,KAAKiP,EAAIA,EACTjP,KAAKiU,EAAIA,EACTjU,KAAK2R,GAAKA,EACV3R,KAAK4R,GAAKA,EAEH5R,MAaXwL,MAAO,SAAUuC,GAgBb,MAderE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAO2T,OAAOhU,KAAKyO,EAAGzO,KAAK6O,EAAG7O,KAAKiP,EAAGjP,KAAKiU,EAAGjU,KAAK2R,GAAI3R,KAAK4R,KAIzE7D,EAAOU,EAAIzO,KAAKyO,EAChBV,EAAOc,EAAI7O,KAAK6O,EAChBd,EAAOkB,EAAIjP,KAAKiP,EAChBlB,EAAOkG,EAAIjU,KAAKiU,EAChBlG,EAAO4D,GAAK3R,KAAK2R,GACjB5D,EAAO6D,GAAK5R,KAAK4R,IAGd7D,GAWXJ,OAAQ,SAAUyG,GAId,MAFAA,GAAO3G,SAASzN,MAEToU,GAWX3G,SAAU,SAAU2G,GAShB,MAPApU,MAAKyO,EAAI2F,EAAO3F,EAChBzO,KAAK6O,EAAIuF,EAAOvF,EAChB7O,KAAKiP,EAAImF,EAAOnF,EAChBjP,KAAKiU,EAAIG,EAAOH,EAChBjU,KAAK2R,GAAKyC,EAAOzC,GACjB3R,KAAK4R,GAAKwC,EAAOxC,GAEV5R,MAYXqU,QAAS,SAAUC,EAAWH,GA6B1B,MA3BczK,UAAVyK,IAAuBA,EAAQ,GAAIrO,MAAKyO,aAAa,IAErDD,GAEAH,EAAM,GAAKnU,KAAKyO,EAChB0F,EAAM,GAAKnU,KAAK6O,EAChBsF,EAAM,GAAK,EACXA,EAAM,GAAKnU,KAAKiP,EAChBkF,EAAM,GAAKnU,KAAKiU,EAChBE,EAAM,GAAK,EACXA,EAAM,GAAKnU,KAAK2R,GAChBwC,EAAM,GAAKnU,KAAK4R,GAChBuC,EAAM,GAAK,IAIXA,EAAM,GAAKnU,KAAKyO,EAChB0F,EAAM,GAAKnU,KAAKiP,EAChBkF,EAAM,GAAKnU,KAAK2R,GAChBwC,EAAM,GAAKnU,KAAK6O,EAChBsF,EAAM,GAAKnU,KAAKiU,EAChBE,EAAM,GAAKnU,KAAK4R,GAChBuC,EAAM,GAAK,EACXA,EAAM,GAAK,EACXA,EAAM,GAAK,GAGRA,GAcXlN,MAAO,SAAUuN,EAAKC,GAOlB,MALe/K,UAAX+K,IAAwBA,EAAS,GAAIpU,GAAO2M,OAEhDyH,EAAOxO,EAAIjG,KAAKyO,EAAI+F,EAAIvO,EAAIjG,KAAKiP,EAAIuF,EAAI/H,EAAIzM,KAAK2R,GAClD8C,EAAOhI,EAAIzM,KAAK6O,EAAI2F,EAAIvO,EAAIjG,KAAKiU,EAAIO,EAAI/H,EAAIzM,KAAK4R,GAE3C6C,GAcXC,aAAc,SAAUF,EAAKC,GAEV/K,SAAX+K,IAAwBA,EAAS,GAAIpU,GAAO2M,MAEhD,IAAI2H,GAAK,GAAK3U,KAAKyO,EAAIzO,KAAKiU,EAAIjU,KAAKiP,GAAKjP,KAAK6O,GAC3C5I,EAAIuO,EAAIvO,EACRwG,EAAI+H,EAAI/H,CAKZ,OAHAgI,GAAOxO,EAAIjG,KAAKiU,EAAIU,EAAK1O,GAAKjG,KAAKiP,EAAI0F,EAAKlI,GAAKzM,KAAK4R,GAAK5R,KAAKiP,EAAIjP,KAAK2R,GAAK3R,KAAKiU,GAAKU,EACxFF,EAAOhI,EAAIzM,KAAKyO,EAAIkG,EAAKlI,GAAKzM,KAAK6O,EAAI8F,EAAK1O,IAAMjG,KAAK4R,GAAK5R,KAAKyO,EAAIzO,KAAK2R,GAAK3R,KAAK6O,GAAK8F,EAElFF,GAaXG,UAAW,SAAU3O,EAAGwG,GAKpB,MAHAzM,MAAK2R,IAAM1L,EACXjG,KAAK4R,IAAMnF,EAEJzM,MAYX6U,MAAO,SAAU5O,EAAGwG,GAShB,MAPAzM,MAAKyO,GAAKxI,EACVjG,KAAKiU,GAAKxH,EACVzM,KAAKiP,GAAKhJ,EACVjG,KAAK6O,GAAKpC,EACVzM,KAAK2R,IAAM1L,EACXjG,KAAK4R,IAAMnF,EAEJzM,MAWXkR,OAAQ,SAAUhD,GAEd,GAAIf,GAAMpH,KAAKoH,IAAIe,GACfd,EAAMrH,KAAKqH,IAAIc,GAEf8E,EAAKhT,KAAKyO,EACV2E,EAAKpT,KAAKiP,EACV6F,EAAM9U,KAAK2R,EASf,OAPA3R,MAAKyO,EAAIuE,EAAK7F,EAAInN,KAAK6O,EAAIzB,EAC3BpN,KAAK6O,EAAImE,EAAK5F,EAAIpN,KAAK6O,EAAI1B,EAC3BnN,KAAKiP,EAAImE,EAAKjG,EAAInN,KAAKiU,EAAI7G,EAC3BpN,KAAKiU,EAAIb,EAAKhG,EAAIpN,KAAKiU,EAAI9G,EAC3BnN,KAAK2R,GAAKmD,EAAM3H,EAAMnN,KAAK4R,GAAKxE,EAChCpN,KAAK4R,GAAKkD,EAAM1H,EAAMpN,KAAK4R,GAAKzE,EAEzBnN,MAWX+U,OAAQ,SAAUX,GAEd,GAAIpB,GAAKhT,KAAKyO,EACVyE,EAAKlT,KAAK6O,EACVuE,EAAKpT,KAAKiP,EACV+F,EAAKhV,KAAKiU,CAUd,OARAjU,MAAKyO,EAAK2F,EAAO3F,EAAIuE,EAAKoB,EAAOvF,EAAIuE,EACrCpT,KAAK6O,EAAKuF,EAAO3F,EAAIyE,EAAKkB,EAAOvF,EAAImG,EACrChV,KAAKiP,EAAKmF,EAAOnF,EAAI+D,EAAKoB,EAAOH,EAAIb,EACrCpT,KAAKiU,EAAKG,EAAOnF,EAAIiE,EAAKkB,EAAOH,EAAIe,EAErChV,KAAK2R,GAAKyC,EAAOzC,GAAKqB,EAAKoB,EAAOxC,GAAKwB,EAAKpT,KAAK2R,GACjD3R,KAAK4R,GAAKwC,EAAOzC,GAAKuB,EAAKkB,EAAOxC,GAAKoD,EAAKhV,KAAK4R,GAE1C5R,MAUXiV,SAAU,WAEN,MAAOjV,MAAKwN,MAAM,EAAG,EAAG,EAAG,EAAG,EAAG,KAMzCnN,EAAO6U,eAAiB,GAAI7U,GAAO2T,OAGnClO,KAAKkO,OAAS3T,EAAO2T,OACrBlO,KAAKoP,eAAiB7U,EAAO6U,eAmB7B7U,EAAO2M,MAAQ,SAAU/G,EAAGwG,GAExBxG,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EAKTzM,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAMTzM,KAAKkI,KAAO7H,EAAOqC,OAIvBrC,EAAO2M,MAAM3G,WASToH,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,IAUvC0I,OAAQ,WAEJ,MAAOnV,MAAKwN,MAAMxN,KAAKyM,EAAGzM,KAAKiG,IAcnCuH,MAAO,SAAUvH,EAAGwG,GAKhB,MAHAzM,MAAKiG,EAAIA,GAAK,EACdjG,KAAKyM,EAAIA,IAAc,IAANA,EAAWzM,KAAKiG,EAAI,GAE9BjG,MAcXiM,IAAK,SAAUhG,EAAGwG,GAKd,MAHAzM,MAAKiG,EAAIA,GAAK,EACdjG,KAAKyM,EAAIA,IAAc,IAANA,EAAWzM,KAAKiG,EAAI,GAE9BjG,MAYX6R,IAAK,SAAU5L,EAAGwG,GAId,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXoV,SAAU,SAAUnP,EAAGwG,GAInB,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXqV,SAAU,SAAUpP,EAAGwG,GAInB,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXsV,OAAQ,SAAUrP,EAAGwG,GAIjB,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXuV,OAAQ,SAAUtD,EAAKE,GAGnB,MADAnS,MAAKiG,EAAI5F,EAAO0F,KAAKyP,MAAMxV,KAAKiG,EAAGgM,EAAKE,GACjCnS,MAYXyV,OAAQ,SAAUxD,EAAKE,GAGnB,MADAnS,MAAKyM,EAAIpM,EAAO0F,KAAKyP,MAAMxV,KAAKyM,EAAGwF,EAAKE,GACjCnS,MAYXwV,MAAO,SAAUvD,EAAKE,GAIlB,MAFAnS,MAAKiG,EAAI5F,EAAO0F,KAAKyP,MAAMxV,KAAKiG,EAAGgM,EAAKE,GACxCnS,KAAKyM,EAAIpM,EAAO0F,KAAKyP,MAAMxV,KAAKyM,EAAGwF,EAAKE,GACjCnS,MAWXwL,MAAO,SAAUuC,GAWb,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAO2M,MAAMhN,KAAKiG,EAAGjG,KAAKyM,GAIvCsB,EAAOP,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GAGvBsB,GAWXJ,OAAQ,SAAUC,GAKd,MAHAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EAEPmB,GAYXC,SAAU,SAAUD,EAAME,GAEtB,MAAOzN,GAAO2M,MAAMa,SAAS7N,KAAM4N,EAAME,IAW7Cc,OAAQ,SAAUH,GAEd,MAAQA,GAAExI,IAAMjG,KAAKiG,GAAKwI,EAAEhC,IAAMzM,KAAKyM,GAY3CyB,MAAO,SAAUO,EAAGN,GAIhB,MAFkBzE,UAAdyE,IAA2BA,GAAY,GAEvCA,EAEO9N,EAAO0F,KAAK2P,SAAS3P,KAAK+M,MAAMrE,EAAEhC,EAAIzM,KAAKyM,EAAGgC,EAAExI,EAAIjG,KAAKiG,IAIzDF,KAAK+M,MAAMrE,EAAEhC,EAAIzM,KAAKyM,EAAGgC,EAAExI,EAAIjG,KAAKiG,IAgBnDiL,OAAQ,SAAUjL,EAAGwG,EAAGyB,EAAOC,EAAWN,GAEtC,MAAOxN,GAAO2M,MAAMkE,OAAOlR,KAAMiG,EAAGwG,EAAGyB,EAAOC,EAAWN,IAU7D8H,aAAc,WAEV,MAAO5P,MAAKmK,KAAMlQ,KAAKiG,EAAIjG,KAAKiG,EAAMjG,KAAKyM,EAAIzM,KAAKyM,IAUxDmJ,eAAgB,WAEZ,MAAQ5V,MAAKiG,EAAIjG,KAAKiG,EAAMjG,KAAKyM,EAAIzM,KAAKyM,GAW9CoJ,aAAc,SAAUC,GAEpB,MAAO9V,MAAK+V,YAAYV,SAASS,EAAWA,IAUhDC,UAAW,WAEP,IAAK/V,KAAKgW,SACV,CACI,GAAIC,GAAIjW,KAAK2V,cACb3V,MAAKiG,GAAKgQ,EACVjW,KAAKyM,GAAKwJ,EAGd,MAAOjW,OAUXgW,OAAQ,WAEJ,MAAmB,KAAXhW,KAAKiG,GAAsB,IAAXjG,KAAKyM,GAWjCyJ,IAAK,SAAUzH,GAEX,MAASzO,MAAKiG,EAAIwI,EAAExI,EAAMjG,KAAKyM,EAAIgC,EAAEhC,GAWzC0J,MAAO,SAAU1H,GAEb,MAASzO,MAAKiG,EAAIwI,EAAEhC,EAAMzM,KAAKyM,EAAIgC,EAAExI,GAUzCmQ,KAAM,WAEF,MAAOpW,MAAKwN,OAAOxN,KAAKyM,EAAGzM,KAAKiG,IAUpCoQ,MAAO,WAEH,MAAOrW,MAAKwN,MAAMxN,KAAKyM,GAAIzM,KAAKiG,IAUpCqQ,gBAAiB,WAEb,MAAOtW,MAAKwN,MAAMxN,KAAKyM,GAAI,EAAIzM,KAAKiG,IAUxCE,MAAO,WAEH,MAAOnG,MAAKwN,MAAMzH,KAAKI,MAAMnG,KAAKiG,GAAIF,KAAKI,MAAMnG,KAAKyM,KAU1DvG,KAAM,WAEF,MAAOlG,MAAKwN,MAAMzH,KAAKG,KAAKlG,KAAKiG,GAAIF,KAAKG,KAAKlG,KAAKyM,KAUxDjF,SAAU,WAEN,MAAO,cAAgBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,QAMzDpM,EAAO2M,MAAM3G,UAAU8B,YAAc9H,EAAO2M,MAW5C3M,EAAO2M,MAAM6E,IAAM,SAAUpD,EAAGI,EAAG9B,GAO/B,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAaX1M,EAAO2M,MAAMoI,SAAW,SAAU3G,EAAGI,EAAG9B,GAOpC,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAaX1M,EAAO2M,MAAMqI,SAAW,SAAU5G,EAAGI,EAAG9B,GAOpC,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAaX1M,EAAO2M,MAAMsI,OAAS,SAAU7G,EAAGI,EAAG9B,GAOlC,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAYX1M,EAAO2M,MAAM4B,OAAS,SAAUH,EAAGI,GAE/B,MAAQJ,GAAExI,IAAM4I,EAAE5I,GAAKwI,EAAEhC,IAAMoC,EAAEpC,GAYrCpM,EAAO2M,MAAMkB,MAAQ,SAAUO,EAAGI,GAG9B,MAAO9I,MAAK+M,MAAMrE,EAAEhC,EAAIoC,EAAEpC,EAAGgC,EAAExI,EAAI4I,EAAE5I,IAYzC5F,EAAO2M,MAAMuJ,SAAW,SAAU9H,EAAG1B,GAIjC,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,OAAOiB,EAAExI,GAAIwI,EAAEhC,IAc9BpM,EAAO2M,MAAMwJ,YAAc,SAAU/H,EAAGI,EAAG4H,EAAG1J,GAI1C,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAMiB,EAAExI,EAAI4I,EAAE5I,EAAIwQ,EAAGhI,EAAEhC,EAAIoC,EAAEpC,EAAIgK,IAchDpW,EAAO2M,MAAM0J,YAAc,SAAUjI,EAAGI,EAAG3E,EAAG6C,GAI1C,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAMiB,EAAExI,GAAK4I,EAAE5I,EAAIwI,EAAExI,GAAKiE,EAAGuE,EAAEhC,GAAKoC,EAAEpC,EAAIgC,EAAEhC,GAAKvC,IAYhE7J,EAAO2M,MAAMoJ,KAAO,SAAU3H,EAAG1B,GAI7B,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,OAAOiB,EAAEhC,EAAGgC,EAAExI,IAY7B5F,EAAO2M,MAAMqJ,MAAQ,SAAU5H,EAAG1B,GAI9B,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAMiB,EAAEhC,GAAIgC,EAAExI,IAa7B5F,EAAO2M,MAAMa,SAAW,SAAUY,EAAGI,EAAGf,GAEpC,GAAID,GAAWxN,EAAO0F,KAAK8H,SAASY,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EACrD,OAAOqB,GAAQ/H,KAAK+H,MAAMD,GAAYA,GAa1CxN,EAAO2M,MAAM2J,QAAU,SAAUlI,EAAGI,EAAG9B,GAEvBrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAI4J,GAAMnI,EAAEyH,IAAIrH,GAAKA,EAAE+G,gBAOvB,OALY,KAARgB,GAEA7J,EAAIS,MAAMoJ,EAAM/H,EAAE5I,EAAG2Q,EAAM/H,EAAEpC,GAG1BM,GAaX1M,EAAO2M,MAAM6J,YAAc,SAAUpI,EAAGI,EAAG9B,GAE3BrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAI4J,GAAMnI,EAAEyH,IAAIrH,EAOhB,OALY,KAAR+H,GAEA7J,EAAIS,MAAMoJ,EAAM/H,EAAE5I,EAAG2Q,EAAM/H,EAAEpC,GAG1BM,GAYX1M,EAAO2M,MAAMsJ,gBAAkB,SAAU7H,EAAG1B,GAIxC,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAMiB,EAAEhC,GAAI,EAAIgC,EAAExI,IAYjC5F,EAAO2M,MAAM+I,UAAY,SAAUtH,EAAG1B,GAEtBrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIiJ,GAAIxH,EAAEkH,cAOV,OALU,KAANM,GAEAlJ,EAAIS,MAAMiB,EAAExI,EAAIgQ,EAAGxH,EAAEhC,EAAIwJ,GAGtBlJ,GAqBX1M,EAAO2M,MAAMkE,OAAS,SAAUzC,EAAGxI,EAAGwG,EAAGyB,EAAOC,EAAWN,GAIvD,GAFIM,IAAaD,EAAQ7N,EAAO0F,KAAKgJ,SAASb,IAE7BxE,SAAbmE,EACJ,CACIY,EAAE2G,SAASnP,EAAGwG,EAEd,IAAIgK,GAAI1Q,KAAKqH,IAAIc,GACbe,EAAIlJ,KAAKoH,IAAIe,GAEbyD,EAAK1C,EAAIR,EAAExI,EAAIwQ,EAAIhI,EAAEhC,EACrBmF,EAAK6E,EAAIhI,EAAExI,EAAIgJ,EAAIR,EAAEhC,CAEzBgC,GAAExI,EAAI0L,EAAK1L,EACXwI,EAAEhC,EAAImF,EAAKnF,MAGf,CACI,GAAI9E,GAAIuG,EAAQnI,KAAK+M,MAAMrE,EAAEhC,EAAIA,EAAGgC,EAAExI,EAAIA,EAC1CwI,GAAExI,EAAIA,EAAI4H,EAAW9H,KAAKoH,IAAIxF,GAC9B8G,EAAEhC,EAAIA,EAAIoB,EAAW9H,KAAKqH,IAAIzF,GAGlC,MAAO8G,IAYXpO,EAAO2M,MAAM8J,SAAW,SAAUC,EAAQhK,GAItC,GAFYrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEK,mBAA3CzF,OAAOlB,UAAUmB,SAASV,KAAKiQ,GAE/B,KAAM,IAAIC,OAAM,oDAGpB,IAAIC,GAAeF,EAAOlP,MAE1B,IAAIoP,EAAe,EAEf,KAAM,IAAID,OAAM,2DAGpB,IAAqB,IAAjBC,EAGA,MADAlK,GAAIU,SAASsJ,EAAO,IACbhK,CAGX,KAAK,GAAIjF,GAAI,EAAGA,EAAImP,EAAcnP,IAE9BzH,EAAO2M,MAAM6E,IAAI9E,EAAKgK,EAAOjP,GAAIiF,EAKrC,OAFAA,GAAIuI,OAAO2B,EAAcA,GAElBlK,GAeX1M,EAAO2M,MAAMkK,MAAQ,SAASnO,EAAKoO,EAAOC,GAEtCD,EAAQA,GAAS,IACjBC,EAAQA,GAAS,GAEjB,IAAI5I,GAAQ,GAAInO,GAAO2M,KAYvB,OAVIjE,GAAIoO,KAEJ3I,EAAMvI,EAAIoE,SAAStB,EAAIoO,GAAQ,KAG/BpO,EAAIqO,KAEJ5I,EAAM/B,EAAIpC,SAAStB,EAAIqO,GAAQ,KAG5B5I,GAKX1I,KAAKkH,MAAQ3M,EAAO2M,MAyBpB3M,EAAOgX,QAAU,WAKbrX,KAAKsX,KAAO,EAMZtX,KAAKuX,WAEDxQ,UAAUc,OAAS,GAEnB7H,KAAKwN,MAAMvG,MAAMjH,KAAM+G,WAM3B/G,KAAKwX,QAAS,EAKdxX,KAAKyX,WAAY,EAKjBzX,KAAKkI,KAAO7H,EAAOwB,SAIvBxB,EAAOgX,QAAQhR,WASXqR,cAAe,SAAU3J,GAENrE,SAAXqE,IAAwBA,KAE5B,KAAK,GAAIjG,GAAI,EAAGA,EAAI9H,KAAKuX,QAAQ1P,OAAQC,IAEN,gBAApB9H,MAAKuX,QAAQzP,IAEpBiG,EAAO6E,KAAK5S,KAAKuX,QAAQzP,IACzBiG,EAAO6E,KAAK5S,KAAKuX,QAAQzP,EAAI,IAC7BA,MAIAiG,EAAO6E,KAAK5S,KAAKuX,QAAQzP,GAAG7B,GAC5B8H,EAAO6E,KAAK5S,KAAKuX,QAAQzP,GAAG2E,GAIpC,OAAOsB,IAYX4J,QAAS,WAML,MAJA3X,MAAKuX,QAAUvX,KAAK0X,gBAEpB1X,KAAKyX,WAAY,EAEVzX,MAYXwL,MAAO,SAAUuC,GAEb,GAAIgJ,GAAS/W,KAAKuX,QAAQhR,OAW1B,OATemD,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOgX,QAAQN,GAI5BhJ,EAAOP,MAAMuJ,GAGVhJ,GAYXC,SAAU,SAAU/H,EAAGwG,GAInB,GAAImL,IAAS,CAEb,IAAI5X,KAAKyX,UAEL,IAAK,GAAI3P,IAAI,EAAI+P,EAAI7X,KAAKuX,QAAQ1P,OAAS,GAAIC,GAAK,GAAK9H,KAAKuX,QAAQ1P,OAAQgQ,EAAI/P,EAClF,CACI,GAAIgQ,GAAK9X,KAAKuX,QAAQzP,GAClBiQ,EAAK/X,KAAKuX,QAAQzP,EAAI,GAEtBkQ,EAAKhY,KAAKuX,QAAQM,GAClBI,EAAKjY,KAAKuX,QAAQM,EAAI,IAEpBE,GAAMtL,GAAKA,EAAIwL,GAAQA,GAAMxL,GAAKA,EAAIsL,IAAS9R,GAAK+R,EAAKF,IAAOrL,EAAIsL,IAAOE,EAAKF,GAAMD,IAExFF,GAAUA,OAOlB,KAAK,GAAI9P,IAAI,EAAI+P,EAAI7X,KAAKuX,QAAQ1P,OAAS,IAAKC,EAAI9H,KAAKuX,QAAQ1P,OAAQgQ,EAAI/P,EAC7E,CACI,GAAIgQ,GAAK9X,KAAKuX,QAAQzP,GAAG7B,EACrB8R,EAAK/X,KAAKuX,QAAQzP,GAAG2E,EAErBuL,EAAKhY,KAAKuX,QAAQM,GAAG5R,EACrBgS,EAAKjY,KAAKuX,QAAQM,GAAGpL,GAEnBsL,GAAMtL,GAAKA,EAAIwL,GAAQA,GAAMxL,GAAKA,EAAIsL,IAAS9R,GAAK+R,EAAKF,IAAOrL,EAAIsL,IAAOE,EAAKF,GAAMD,IAExFF,GAAUA,GAKtB,MAAOA,IAuBXpK,MAAO,SAAUuJ,GAKb,GAHA/W,KAAKsX,KAAO,EACZtX,KAAKuX,WAEDxQ,UAAUc,OAAS,EACvB,CAESrB,MAAMa,QAAQ0P,KAEfA,EAASvQ,MAAMH,UAAUE,MAAMO,KAAKC,WAMxC,KAAK,GAHDmR,GAAKC,OAAOC,UAGPtQ,EAAI,EAAGF,EAAMmP,EAAOlP,OAAQC,EAAIF,EAAKE,IAC9C,CACI,GAAyB,gBAAdiP,GAAOjP,GAClB,CACI,GAAImI,GAAI,GAAInK,MAAKkH,MAAM+J,EAAOjP,GAAIiP,EAAOjP,EAAI,GAC7CA,SAEC,IAAItB,MAAMa,QAAQ0P,EAAOjP,IAE1B,GAAImI,GAAI,GAAInK,MAAKkH,MAAM+J,EAAOjP,GAAG,GAAIiP,EAAOjP,GAAG,QAI/C,IAAImI,GAAI,GAAInK,MAAKkH,MAAM+J,EAAOjP,GAAG7B,EAAG8Q,EAAOjP,GAAG2E,EAGlDzM,MAAKuX,QAAQ3E,KAAK3C,GAGdA,EAAExD,EAAIyL,IAENA,EAAKjI,EAAExD,GAIfzM,KAAKqY,cAAcH,GAGvB,MAAOlY,OAYXqY,cAAe,SAAUH,GAOrB,IAAK,GALDI,GACAC,EACAC,EACAzI,EAEKjI,EAAI,EAAGF,EAAM5H,KAAKuX,QAAQ1P,OAAQC,EAAIF,EAAKE,IAEhDwQ,EAAKtY,KAAKuX,QAAQzP,GAIdyQ,EAFAzQ,IAAMF,EAAM,EAEP5H,KAAKuX,QAAQ,GAIbvX,KAAKuX,QAAQzP,EAAI,GAG1B0Q,GAAcF,EAAG7L,EAAIyL,GAAOK,EAAG9L,EAAIyL,IAAO,EAC1CnI,EAAQuI,EAAGrS,EAAIsS,EAAGtS,EAClBjG,KAAKsX,MAAQkB,EAAYzI,CAG7B,OAAO/P,MAAKsX,OAMpBjX,EAAOgX,QAAQhR,UAAU8B,YAAc9H,EAAOgX,QAW9C9P,OAAO2E,eAAe7L,EAAOgX,QAAQhR,UAAW,UAE5C2F,IAAK,WACD,MAAOhM,MAAKuX,SAGhBtL,IAAK,SAAS8K,GAEI,MAAVA,EAEA/W,KAAKwN,MAAMuJ,GAKX/W,KAAKwN,WAQjB1H,KAAKuR,QAAUhX,EAAOgX,QAmBtBhX,EAAOkN,UAAY,SAAUtH,EAAGwG,EAAGsD,EAAOC,GAEtC/J,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTsD,EAAQA,GAAS,EACjBC,EAASA,GAAU,EAKnBhQ,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAMdhQ,KAAKkI,KAAO7H,EAAOkC,WAIvBlC,EAAOkN,UAAUlH,WASb+H,OAAQ,SAAUC,EAAIC,GAKlB,MAHAtO,MAAKiG,GAAKoI,EACVrO,KAAKyM,GAAK6B,EAEHtO,MAUXuO,YAAa,SAAUC,GAEnB,MAAOxO,MAAKoO,OAAOI,EAAMvI,EAAGuI,EAAM/B,IAatCe,MAAO,SAAUvH,EAAGwG,EAAGsD,EAAOC,GAO1B,MALAhQ,MAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EACTzM,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEPhQ,MAYX6U,MAAO,SAAU5O,EAAGwG,GAOhB,MALU/C,UAAN+C,IAAmBA,EAAIxG,GAE3BjG,KAAK+P,OAAS9J,EACdjG,KAAKgQ,QAAUvD,EAERzM,MAYX0R,SAAU,SAAUzL,EAAGwG,GAKnB,MAHAzM,MAAKyY,QAAUxS,EACfjG,KAAK0Y,QAAUjM,EAERzM,MAQXmG,MAAO,WAEHnG,KAAKiG,EAAIF,KAAKI,MAAMnG,KAAKiG,GACzBjG,KAAKyM,EAAI1G,KAAKI,MAAMnG,KAAKyM,IAQ7BkM,SAAU,WAEN3Y,KAAKiG,EAAIF,KAAKI,MAAMnG,KAAKiG,GACzBjG,KAAKyM,EAAI1G,KAAKI,MAAMnG,KAAKyM,GACzBzM,KAAK+P,MAAQhK,KAAKI,MAAMnG,KAAK+P,OAC7B/P,KAAKgQ,OAASjK,KAAKI,MAAMnG,KAAKgQ,SAQlC9J,KAAM,WAEFlG,KAAKiG,EAAIF,KAAKG,KAAKlG,KAAKiG,GACxBjG,KAAKyM,EAAI1G,KAAKG,KAAKlG,KAAKyM,IAQ5BmM,QAAS,WAEL5Y,KAAKiG,EAAIF,KAAKG,KAAKlG,KAAKiG,GACxBjG,KAAKyM,EAAI1G,KAAKG,KAAKlG,KAAKyM,GACxBzM,KAAK+P,MAAQhK,KAAKG,KAAKlG,KAAK+P,OAC5B/P,KAAKgQ,OAASjK,KAAKG,KAAKlG,KAAKgQ,SAUjCvC,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,EAAGiB,EAAOqC,MAAOrC,EAAOsC,SAU/DrC,OAAQ,SAAUC,GAOd,MALAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EACdmB,EAAKmC,MAAQ/P,KAAK+P,MAClBnC,EAAKoC,OAAShQ,KAAKgQ,OAEZpC,GAWXiL,QAAS,SAAUxK,EAAIC,GAEnB,MAAOjO,GAAOkN,UAAUsL,QAAQ7Y,KAAMqO,EAAIC,IAU9CtE,KAAM,SAAU+D,GAEZ,MAAO1N,GAAOkN,UAAUvD,KAAKhK,KAAM+N,IAavC+K,OAAQ,SAAU/I,EAAOC,GAKrB,MAHAhQ,MAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEPhQ,MAUXwL,MAAO,SAAUuC,GAEb,MAAO1N,GAAOkN,UAAU/B,MAAMxL,KAAM+N,IAWxCC,SAAU,SAAU/H,EAAGwG,GAEnB,MAAOpM,GAAOkN,UAAUS,SAAShO,KAAMiG,EAAGwG,IAW9CsM,aAAc,SAAUlK,GAEpB,MAAOxO,GAAOkN,UAAUwL,aAAalK,EAAG7O,OAW5C4O,OAAQ,SAAUC,GAEd,MAAOxO,GAAOkN,UAAUqB,OAAO5O,KAAM6O,IAWzCmK,aAAc,SAAUnK,EAAG9B,GAEvB,MAAO1M,GAAOkN,UAAUyL,aAAahZ,KAAM6O,EAAG9B,IAYlD+B,WAAY,SAAUD,GAElB,MAAOxO,GAAOkN,UAAUuB,WAAW9O,KAAM6O,IAe7CoK,cAAe,SAAUpO,EAAMD,EAAO8D,EAAKC,EAAQuK,GAE/C,MAAO7Y,GAAOkN,UAAU0L,cAAcjZ,KAAM6K,EAAMD,EAAO8D,EAAKC,EAAQuK,IAW1EC,MAAO,SAAUtK,EAAG9B,GAEhB,MAAO1M,GAAOkN,UAAU4L,MAAMnZ,KAAM6O,EAAG9B,IAY3CpD,OAAQ,SAAUoD,GAOd,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIjG,KAAKoZ,QACbrM,EAAIN,EAAIzM,KAAKqZ,QAENtM,GAoBXuM,SAAU,SAAUC,EAAUxM,GAI1B,OAFYrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAElCuM,GAEJ,QACA,IAAKlZ,GAAOsD,SACR,MAAOoJ,GAAId,IAAIjM,KAAKiG,EAAGjG,KAAKyM,EAEhC,KAAKpM,GAAOuD,WACR,MAAOmJ,GAAId,IAAIjM,KAAKyY,QAASzY,KAAKyM,EAEtC,KAAKpM,GAAOwD,UACR,MAAOkJ,GAAId,IAAIjM,KAAK4K,MAAO5K,KAAKyM,EAEpC,KAAKpM,GAAO0D,YACR,MAAOgJ,GAAId,IAAIjM,KAAKiG,EAAGjG,KAAK0Y,QAEhC,KAAKrY,GAAO4D,OACR,MAAO8I,GAAId,IAAIjM,KAAKyY,QAASzY,KAAK0Y,QAEtC,KAAKrY,GAAO8D,aACR,MAAO4I,GAAId,IAAIjM,KAAK4K,MAAO5K,KAAK0Y,QAEpC,KAAKrY,GAAOgE,YACR,MAAO0I,GAAId,IAAIjM,KAAKiG,EAAGjG,KAAK2O,OAEhC,KAAKtO,GAAOiE,cACR,MAAOyI,GAAId,IAAIjM,KAAKyY,QAASzY,KAAK2O,OAEtC,KAAKtO,GAAOkE,aACR,MAAOwI,GAAId,IAAIjM,KAAK4K,MAAO5K,KAAK2O,UAU5CnH,SAAU,WAEN,MAAO,kBAAoBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,UAAYzM,KAAK+P,MAAQ,WAAa/P,KAAKgQ,OAAS,UAAYhQ,KAAKwZ,MAAQ,QAW1IjS,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,aAE9C2F,IAAK,WACD,MAAOjG,MAAK+H,MAAM9N,KAAK+P,MAAQ,MAUvCxI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,cAE9C2F,IAAK,WACD,MAAOjG,MAAK+H,MAAM9N,KAAKgQ,OAAS,MAUxCzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,UAE9C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAKgQ,QAGzB/D,IAAK,SAAU1C,GAEPA,GAASvJ,KAAKyM,EAEdzM,KAAKgQ,OAAS,EAIdhQ,KAAKgQ,OAASzG,EAAQvJ,KAAKyM,KAYvClF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,cAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAKiG,EAAGjG,KAAK2O,SAGzC1C,IAAK,SAAU1C,GACXvJ,KAAKiG,EAAIsD,EAAMtD,EACfjG,KAAK2O,OAASpF,EAAMkD,KAU5BlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,eAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAK4K,MAAO5K,KAAK2O,SAG7C1C,IAAK,SAAU1C,GACXvJ,KAAK4K,MAAQrB,EAAMtD,EACnBjG,KAAK2O,OAASpF,EAAMkD,KAU5BlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,QAE9C2F,IAAK,WACD,MAAOhM,MAAKiG,GAGhBgG,IAAK,SAAU1C,GACPA,GAASvJ,KAAK4K,MACd5K,KAAK+P,MAAQ,EAEb/P,KAAK+P,MAAQ/P,KAAK4K,MAAQrB,EAE9BvJ,KAAKiG,EAAIsD,KAUjBhC,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,SAE9C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK+P,OAGzB9D,IAAK,SAAU1C,GACPA,GAASvJ,KAAKiG,EACdjG,KAAK+P,MAAQ,EAEb/P,KAAK+P,MAAQxG,EAAQvJ,KAAKiG,KAYtCsB,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,UAE9C2F,IAAK,WACD,MAAOhM,MAAK+P,MAAQ/P,KAAKgQ,UAWjCzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,aAE9C2F,IAAK,WACD,MAAqB,GAAbhM,KAAK+P,MAA4B,EAAd/P,KAAKgQ,UAUxCzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAKoP,WAGzBnD,IAAK,SAAU1C,GACXvJ,KAAKiG,EAAIsD,EAAQvJ,KAAKoP,aAU9B7H,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAKuP,YAGzBtD,IAAK,SAAU1C,GACXvJ,KAAKyM,EAAIlD,EAAQvJ,KAAKuP,cAW9BhI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WAED,MAAOhM,MAAKiG,EAAKF,KAAK4D,SAAW3J,KAAK+P,SAY9CxI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WAED,MAAOhM,MAAKyM,EAAK1G,KAAK4D,SAAW3J,KAAKgQ,UAY9CzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,OAE9C2F,IAAK,WACD,MAAOhM,MAAKyM,GAGhBR,IAAK,SAAU1C,GACPA,GAASvJ,KAAK2O,QACd3O,KAAKgQ,OAAS,EACdhQ,KAAKyM,EAAIlD,GAETvJ,KAAKgQ,OAAUhQ,KAAK2O,OAASpF,KAWzChC,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAKiG,EAAGjG,KAAKyM,IAGzCR,IAAK,SAAU1C,GACXvJ,KAAKiG,EAAIsD,EAAMtD,EACfjG,KAAKyM,EAAIlD,EAAMkD,KAUvBlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,YAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAKiG,EAAIjG,KAAK+P,MAAO/P,KAAKyM,IAGtDR,IAAK,SAAU1C,GACXvJ,KAAK4K,MAAQrB,EAAMtD,EACnBjG,KAAKyM,EAAIlD,EAAMkD,KAWvBlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,SAE9C2F,IAAK,WACD,OAAShM,KAAK+P,QAAU/P,KAAKgQ,QAGjC/D,IAAK,SAAU1C,GAEPA,KAAU,GAEVvJ,KAAKwN,MAAM,EAAG,EAAG,EAAG,MAOhCnN,EAAOkN,UAAUlH,UAAU8B,YAAc9H,EAAOkN,UAUhDlN,EAAOkN,UAAUsL,QAAU,SAAUpK,EAAGJ,EAAIC,GAOxC,MALAG,GAAExI,GAAKoI,EACPI,EAAEsB,OAAS,EAAI1B,EACfI,EAAEhC,GAAK6B,EACPG,EAAEuB,QAAU,EAAI1B,EAETG,GAWXpO,EAAOkN,UAAUkM,aAAe,SAAUhL,EAAGD,GAEzC,MAAOnO,GAAOkN,UAAUsL,QAAQpK,EAAGD,EAAMvI,EAAGuI,EAAM/B,IAWtDpM,EAAOkN,UAAUvD,KAAO,SAAUyE,EAAGV,GAWjC,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAO2M,MAAMyB,EAAEsB,MAAOtB,EAAEuB,QAIrCjC,EAAOP,MAAMiB,EAAEsB,MAAOtB,EAAEuB,QAGrBjC,GAWX1N,EAAOkN,UAAU/B,MAAQ,SAAUiD,EAAGV,GAWlC,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOkN,UAAUkB,EAAExI,EAAGwI,EAAEhC,EAAGgC,EAAEsB,MAAOtB,EAAEuB,QAInDjC,EAAOP,MAAMiB,EAAExI,EAAGwI,EAAEhC,EAAGgC,EAAEsB,MAAOtB,EAAEuB,QAG/BjC,GAYX1N,EAAOkN,UAAUS,SAAW,SAAUS,EAAGxI,EAAGwG,GAExC,QAAIgC,EAAEsB,OAAS,GAAKtB,EAAEuB,QAAU,KAKxB/J,GAAKwI,EAAExI,GAAKA,EAAIwI,EAAE7D,OAAS6B,GAAKgC,EAAEhC,GAAKA,EAAIgC,EAAEE,SAezDtO,EAAOkN,UAAUmM,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAI7T,EAAGwG,GAExD,MAAQxG,IAAK0T,GAAM1T,EAAK0T,EAAKE,GAAOpN,GAAKmN,GAAMnN,EAAKmN,EAAKE,GAW7DzZ,EAAOkN,UAAUwM,cAAgB,SAAUtL,EAAGD,GAE1C,MAAOnO,GAAOkN,UAAUS,SAASS,EAAGD,EAAMvI,EAAGuI,EAAM/B,IAYvDpM,EAAOkN,UAAUwL,aAAe,SAAUtK,EAAGI,GAGzC,QAAIJ,EAAEuL,OAASnL,EAAEmL,UAKTvL,EAAExI,GAAK4I,EAAE5I,GAAKwI,EAAEhC,GAAKoC,EAAEpC,GAAKgC,EAAE7D,MAAQiE,EAAEjE,OAAS6D,EAAEE,OAASE,EAAEF,SAY1EtO,EAAOkN,UAAUqB,OAAS,SAAUH,EAAGI,GAEnC,MAAQJ,GAAExI,GAAK4I,EAAE5I,GAAKwI,EAAEhC,GAAKoC,EAAEpC,GAAKgC,EAAEsB,OAASlB,EAAEkB,OAAStB,EAAEuB,QAAUnB,EAAEmB,QAW5E3P,EAAOkN,UAAU0M,eAAiB,SAAUxL,EAAGI,GAE3C,MAAQJ,GAAEsB,QAAUlB,EAAEkB,OAAStB,EAAEuB,SAAWnB,EAAEmB,QAYlD3P,EAAOkN,UAAUyL,aAAe,SAAUvK,EAAGI,EAAGd,GAe5C,MAberE,UAAXqE,IAEAA,EAAS,GAAI1N,GAAOkN,WAGpBlN,EAAOkN,UAAUuB,WAAWL,EAAGI,KAE/Bd,EAAO9H,EAAIF,KAAKoM,IAAI1D,EAAExI,EAAG4I,EAAE5I,GAC3B8H,EAAOtB,EAAI1G,KAAKoM,IAAI1D,EAAEhC,EAAGoC,EAAEpC,GAC3BsB,EAAOgC,MAAQhK,KAAKkM,IAAIxD,EAAE7D,MAAOiE,EAAEjE,OAASmD,EAAO9H,EACnD8H,EAAOiC,OAASjK,KAAKkM,IAAIxD,EAAEE,OAAQE,EAAEF,QAAUZ,EAAOtB,GAGnDsB,GAYX1N,EAAOkN,UAAUuB,WAAa,SAAUL,EAAGI,GAEvC,QAAIJ,EAAEsB,OAAS,GAAKtB,EAAEuB,QAAU,GAAKnB,EAAEkB,OAAS,GAAKlB,EAAEmB,QAAU,MAKxDvB,EAAE7D,MAAQiE,EAAE5I,GAAKwI,EAAEE,OAASE,EAAEpC,GAAKgC,EAAExI,EAAI4I,EAAEjE,OAAS6D,EAAEhC,EAAIoC,EAAEF,SAczEtO,EAAOkN,UAAU0L,cAAgB,SAAUxK,EAAG5D,EAAMD,EAAO8D,EAAKC,EAAQuK,GAIpE,MAFkBxP,UAAdwP,IAA2BA,EAAY,KAElCrO,EAAO4D,EAAE7D,MAAQsO,GAAatO,EAAQ6D,EAAE5D,KAAOqO,GAAaxK,EAAMD,EAAEE,OAASuK,GAAavK,EAASF,EAAEC,IAAMwK,IAYxH7Y,EAAOkN,UAAU4L,MAAQ,SAAU1K,EAAGI,EAAGd,GAOrC,MALerE,UAAXqE,IAEAA,EAAS,GAAI1N,GAAOkN,WAGjBQ,EAAOP,MAAMzH,KAAKkM,IAAIxD,EAAExI,EAAG4I,EAAE5I,GAAIF,KAAKkM,IAAIxD,EAAEhC,EAAGoC,EAAEpC,GAAI1G,KAAKoM,IAAI1D,EAAE7D,MAAOiE,EAAEjE,OAAS7E,KAAKkM,IAAIxD,EAAE5D,KAAMgE,EAAEhE,MAAO9E,KAAKoM,IAAI1D,EAAEE,OAAQE,EAAEF,QAAU5I,KAAKkM,IAAIxD,EAAEC,IAAKG,EAAEH,OAaxKrO,EAAOkN,UAAU2M,KAAO,SAASnD,EAAQhK,GAEzBrD,SAARqD,IACAA,EAAM,GAAI1M,GAAOkN,UAGrB,IAAI2E,GAAOiG,OAAOgC,kBACdnI,EAAOmG,OAAOiC,kBACd/H,EAAO8F,OAAOgC,kBACd/H,EAAO+F,OAAOiC,iBAoBlB,OAlBArD,GAAOtP,QAAQ,SAAS+G,GAChBA,EAAMvI,EAAIiM,IACVA,EAAO1D,EAAMvI,GAEbuI,EAAMvI,EAAI+L,IACVA,EAAOxD,EAAMvI,GAGbuI,EAAM/B,EAAI4F,IACVA,EAAO7D,EAAM/B,GAEb+B,EAAM/B,EAAI2F,IACVA,EAAO5D,EAAM/B,KAIrBM,EAAIS,MAAMwE,EAAMI,EAAMF,EAAOF,EAAMK,EAAOD,GAEnCrF,GAIXjH,KAAKyH,UAAYlN,EAAOkN,UACxBzH,KAAKuU,eAAiB,GAAIha,GAAOkN,UAAU,EAAG,EAAG,EAAG,GAqBpDlN,EAAOia,iBAAmB,SAASrU,EAAGwG,EAAGsD,EAAOC,EAAQ3C,GAE1C3D,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ,GACpBrG,SAAXsG,IAAwBA,EAAS,GACtBtG,SAAX2D,IAAwBA,EAAS,IAKrCrN,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAKdhQ,KAAKqN,OAASA,GAAU,GAMxBrN,KAAKkI,KAAO7H,EAAOsC,kBAGvBtC,EAAOia,iBAAiBjU,WASpBmF,MAAO,WAEH,MAAO,IAAInL,GAAOia,iBAAiBta,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,OAAQhQ,KAAKqN,SAYrFW,SAAU,SAAU/H,EAAGwG,GAEnB,GAAIzM,KAAK+P,OAAS,GAAK/P,KAAKgQ,QAAU,EAElC,OAAO,CAGX,IAAIM,GAAKtQ,KAAKiG,CAEd,IAAIA,GAAKqK,GAAMrK,GAAKqK,EAAKtQ,KAAK+P,MAC9B,CACI,GAAIQ,GAAKvQ,KAAKyM,CAEd,IAAIA,GAAK8D,GAAM9D,GAAK8D,EAAKvQ,KAAKgQ,OAE1B,OAAO,EAIf,OAAO,IAMf3P,EAAOia,iBAAiBjU,UAAU8B,YAAc9H,EAAOia,iBAGvDxU,KAAKwU,iBAAmBja,EAAOia,iBAqB/Bja,EAAOka,OAAS,SAAUC,EAAM7F,EAAI1O,EAAGwG,EAAGsD,EAAOC,GAK7ChQ,KAAKwa,KAAOA,EAKZxa,KAAKya,MAAQD,EAAKC,MAMlBza,KAAK2U,GAAK,EASV3U,KAAK0a,KAAO,GAAIra,GAAOkN,UAAUtH,EAAGwG,EAAGsD,EAAOC,GAS9ChQ,KAAK2a,OAAS,GAAIta,GAAOkN,UAAUtH,EAAGwG,EAAGsD,EAAOC,GAKhDhQ,KAAK4a,SAAW,KAMhB5a,KAAK6a,SAAU,EAMf7a,KAAK8a,SAAU,EAKf9a,KAAK+a,SAAY9U,GAAG,EAAOwG,GAAG,GAM9BzM,KAAKgH,OAAS,KAKdhH,KAAKgb,cAAgB,KAKrBhb,KAAK6U,MAAQ,KAMb7U,KAAKib,YAAc,EAWnBjb,KAAKkb,KAAO,GAAI7a,GAAO2M,MAAM,EAAG,GAKhChN,KAAKmb,gBAAkB,GAAI9a,GAAO+a,OAKlCpb,KAAKqb,gBAAkB,GAAIhb,GAAO+a,OASlCpb,KAAKsb,eAAiB,GAAIjb,GAAO+a,OAOjCpb,KAAKub,GAAK,KAMVvb,KAAKwb,gBAAkB,GAAInb,GAAO2M,MAOlChN,KAAKyb,MAAQ,EAObzb,KAAK0b,UAAY,GAAIrb,GAAO2M,MAM5BhN,KAAK2b,QACDC,UAAW,EACXC,SAAU,EACVC,YAAY,EACZC,UAAU,EACVC,aAAa,EACb/V,EAAG,EACHwG,EAAG,GAOPzM,KAAKic,YAAc,EAMnBjc,KAAKkc,QAAU;EAQnB7b,EAAOka,OAAO4B,cAAgB,EAM9B9b,EAAOka,OAAO6B,kBAAoB,EAMlC/b,EAAOka,OAAO8B,eAAiB,EAM/Bhc,EAAOka,OAAO+B,qBAAuB,EAMrCjc,EAAOka,OAAOgC,WAAa,EAM3Blc,EAAOka,OAAOiC,iBAAmB,EAMjCnc,EAAOka,OAAOkC,eAAiB,EAM/Bpc,EAAOka,OAAOmC,WAAY,EAE1Brc,EAAOka,OAAOlU,WAQVsW,KAAM,WAEF3c,KAAKgb,cAAgBhb,KAAKwa,KAAKC,MAE/Bza,KAAK6U,MAAQ7U,KAAKwa,KAAKC,MAAM5F,MAE7B7U,KAAKwa,KAAKoC,OAAS5c,KAEfK,EAAOwc,UAAYxc,EAAOka,OAAOmC,YAEjC1c,KAAKub,GAAK,GAAIlb,GAAOwc,SAAS7c,KAAKwa,MAEnCxa,KAAKwa,KAAKsC,MAAMC,SAAS/c,KAAKub,MAUtCyB,UAAW,WAEPhd,KAAKib,YAAc,GAmBvBgC,OAAQ,SAAUjW,EAAQkW,EAAOC,EAAOC,GAEtB1T,SAAVwT,IAAuBA,EAAQ7c,EAAOka,OAAO4B,eACnCzS,SAAVyT,IAAuBA,EAAQ,GACrBzT,SAAV0T,IAAuBA,EAAQ,GAEnCpd,KAAKgH,OAASA,EACdhH,KAAKkb,KAAKjP,IAAIkR,EAAOC,EAErB,IAAIC,EAEJ,QAAQH,GAEJ,IAAK7c,GAAOka,OAAO6B,kBACf,GAAIkB,GAAItd,KAAK+P,MAAQ,EACjBwN,EAAIvd,KAAKgQ,OAAS,CACtBhQ,MAAK4a,SAAW,GAAIva,GAAOkN,WAAWvN,KAAK+P,MAAQuN,GAAK,GAAItd,KAAKgQ,OAASuN,GAAK,EAAQ,IAAJA,EAAUD,EAAGC,EAChG,MAEJ,KAAKld,GAAOka,OAAO8B,eACfgB,EAAStX,KAAKoM,IAAInS,KAAK+P,MAAO/P,KAAKgQ,QAAU,EAC7ChQ,KAAK4a,SAAW,GAAIva,GAAOkN,WAAWvN,KAAK+P,MAAQsN,GAAU,GAAIrd,KAAKgQ,OAASqN,GAAU,EAAGA,EAAQA,EACpG,MAEJ,KAAKhd,GAAOka,OAAO+B,qBACfe,EAAStX,KAAKoM,IAAInS,KAAK+P,MAAO/P,KAAKgQ,QAAU,EAC7ChQ,KAAK4a,SAAW,GAAIva,GAAOkN,WAAWvN,KAAK+P,MAAQsN,GAAU,GAAIrd,KAAKgQ,OAASqN,GAAU,EAAGA,EAAQA,EACpG,MAEJ,KAAKhd,GAAOka,OAAO4B,cACfnc,KAAK4a,SAAW,IAChB,MAEJ,SACI5a,KAAK4a,SAAW,OAW5B4C,SAAU,WAENxd,KAAKgH,OAAS,MASlByW,QAAS,SAAUzC,GAEfhb,KAAK0d,YAAY3X,KAAK+H,MAAMkN,EAAc/U,EAAIjG,KAAK0a,KAAKtL,WAAYrJ,KAAK+H,MAAMkN,EAAcvO,EAAIzM,KAAK0a,KAAKnL,cAU/GoO,UAAW,SAAU1X,EAAGwG,GAEpBzM,KAAK0d,YAAY3X,KAAK+H,MAAM7H,EAAIjG,KAAK0a,KAAKtL,WAAYrJ,KAAK+H,MAAMrB,EAAIzM,KAAK0a,KAAKnL,cAmBnFqO,MAAO,SAAUhC,EAAWC,EAAUgC,EAAOC,EAAW9B,GAQpD,MANkBtS,UAAdkS,IAA2BA,EAAY,KAC1BlS,SAAbmS,IAA0BA,EAAW,KAC3BnS,SAAVmU,IAAuBA,GAAQ,GACjBnU,SAAdoU,IAA2BA,EAAYzd,EAAOka,OAAOgC,YACrC7S,SAAhBsS,IAA6BA,GAAc,MAE1C6B,GAAS7d,KAAK2b,OAAOE,SAAW,KAMrC7b,KAAK2b,OAAOC,UAAYA,EACxB5b,KAAK2b,OAAOE,SAAWA,EACvB7b,KAAK2b,OAAOK,YAAcA,EAE1Bhc,KAAK2b,OAAO1V,EAAI,EAChBjG,KAAK2b,OAAOlP,EAAI,EAEhBzM,KAAK2b,OAAOG,WAAcgC,IAAczd,EAAOka,OAAOgC,YAAcuB,IAAczd,EAAOka,OAAOiC,iBAChGxc,KAAK2b,OAAOI,SAAY+B,IAAczd,EAAOka,OAAOgC,YAAcuB,IAAczd,EAAOka,OAAOkC,gBAEvF,IAkBXsB,MAAO,SAAUC,EAAOnC,EAAUgC,GAM9B,MAJcnU,UAAVsU,IAAuBA,EAAQ,UAClBtU,SAAbmS,IAA0BA,EAAW,KAC3BnS,SAAVmU,IAAuBA,GAAQ,MAE9B7d,KAAKub,KAAQsC,GAAS7d,KAAKic,YAAc,KAK9Cjc,KAAKub,GAAG0C,QAERje,KAAKub,GAAG2C,UAAUF,GAClBhe,KAAKub,GAAG4C,SAAS,EAAG,EAAGne,KAAK+P,MAAO/P,KAAKgQ,QACxChQ,KAAKub,GAAG6C,UAERpe,KAAKub,GAAG8C,MAAQ,EAEhBre,KAAKic,YAAcJ,EACnB7b,KAAKkc,QAAU,GAER,IAuBXoC,KAAM,SAAUN,EAAOnC,EAAUgC,GAM7B,MAJcnU,UAAVsU,IAAuBA,EAAQ,GAClBtU,SAAbmS,IAA0BA,EAAW,KAC3BnS,SAAVmU,IAAuBA,GAAQ,MAE9B7d,KAAKub,KAAQsC,GAAS7d,KAAKic,YAAc,KAK9Cjc,KAAKub,GAAG0C,QAERje,KAAKub,GAAG2C,UAAUF,GAClBhe,KAAKub,GAAG4C,SAAS,EAAG,EAAGne,KAAK+P,MAAO/P,KAAKgQ,QACxChQ,KAAKub,GAAG6C,UAERpe,KAAKub,GAAG8C,MAAQ,EAEhBre,KAAKic,YAAcJ,EACnB7b,KAAKkc,QAAU,GAER,IAUXqC,OAAQ,WAEAve,KAAKic,YAAc,GAEnBjc,KAAKwe,WAGLxe,KAAK2b,OAAOE,SAAW,GAEvB7b,KAAKye,cAGLze,KAAK2a,QAEL3a,KAAK0e,cAGL1e,KAAK8a,UAEL9a,KAAK0a,KAAKvU,QACVnG,KAAK2b,OAAO1V,EAAIF,KAAKI,MAAMnG,KAAK2b,OAAO1V,GACvCjG,KAAK2b,OAAOlP,EAAI1G,KAAKI,MAAMnG,KAAK2b,OAAOlP,IAG3CzM,KAAKgb,cAAczB,SAAStT,GAAKjG,KAAK0a,KAAKzU,EAC3CjG,KAAKgb,cAAczB,SAAS9M,GAAKzM,KAAK0a,KAAKjO,GAU/C+R,SAAU,WAEe,IAAjBxe,KAAKkc,SAGLlc,KAAKub,GAAG8C,OAASre,KAAKwa,KAAKmE,KAAKC,UAAY5e,KAAKic,YAE7Cjc,KAAKub,GAAG8C,OAAS,IAEjBre,KAAKic,YAAc,EACnBjc,KAAKub,GAAG8C,MAAQ,EAChBre,KAAKqb,gBAAgBwD,cAMzB7e,KAAKub,GAAG8C,OAASre,KAAKwa,KAAKmE,KAAKC,UAAY5e,KAAKic,YAE7Cjc,KAAKub,GAAG8C,OAAS,IAEjBre,KAAKic,YAAc,EACnBjc,KAAKub,GAAG8C,MAAQ,EAChBre,KAAKsb,eAAeuD,cAYhCJ,YAAa,WAETze,KAAK2b,OAAOE,UAAY7b,KAAKwa,KAAKmE,KAAKC,UAEnC5e,KAAK2b,OAAOE,UAAY,GAExB7b,KAAKmb,gBAAgB0D,WACrB7e,KAAK2b,OAAO1V,EAAI,EAChBjG,KAAK2b,OAAOlP,EAAI,IAIZzM,KAAK2b,OAAOG,aAEZ9b,KAAK2b,OAAO1V,EAAIjG,KAAKwa,KAAKsE,IAAIC,OAAS/e,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK3K,MAAQ,EAAI/P,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK3K,OAGvH/P,KAAK2b,OAAOI,WAEZ/b,KAAK2b,OAAOlP,EAAIzM,KAAKwa,KAAKsE,IAAIC,OAAS/e,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK1K,OAAS,EAAIhQ,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK1K,UAYpIgP,aAAc,WAEVhf,KAAKwb,gBAAgBvV,EAAIjG,KAAK0a,KAAKzU,EAAIjG,KAAKgH,OAAOiY,cAAchZ,EACjEjG,KAAKwb,gBAAgB/O,EAAIzM,KAAK0a,KAAKjO,EAAIzM,KAAKgH,OAAOiY,cAAcxS,EAE7DzM,KAAK4a,UAEL5a,KAAKyb,MAAQzb,KAAKwb,gBAAgBvV,EAAIjG,KAAK0a,KAAKzU,EAE5CjG,KAAKyb,MAAQzb,KAAK4a,SAAS/P,KAE3B7K,KAAK0a,KAAKzU,EAAIjG,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKzU,EAAGjG,KAAKwb,gBAAgBvV,EAAIjG,KAAK4a,SAAS/P,KAAM7K,KAAKkb,KAAKjV,GAEnGjG,KAAKyb,MAAQzb,KAAK4a,SAAShQ,QAEhC5K,KAAK0a,KAAKzU,EAAIjG,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKzU,EAAGjG,KAAKwb,gBAAgBvV,EAAIjG,KAAK4a,SAAShQ,MAAO5K,KAAKkb,KAAKjV,IAG7GjG,KAAKyb,MAAQzb,KAAKwb,gBAAgB/O,EAAIzM,KAAK0a,KAAKjO,EAE5CzM,KAAKyb,MAAQzb,KAAK4a,SAASlM,IAE3B1O,KAAK0a,KAAKjO,EAAIzM,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKjO,EAAGzM,KAAKwb,gBAAgB/O,EAAIzM,KAAK4a,SAASlM,IAAK1O,KAAKkb,KAAKzO,GAElGzM,KAAKyb,MAAQzb,KAAK4a,SAASjM,SAEhC3O,KAAK0a,KAAKjO,EAAIzM,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKjO,EAAGzM,KAAKwb,gBAAgB/O,EAAIzM,KAAK4a,SAASjM,OAAQ3O,KAAKkb,KAAKzO,MAK9GzM,KAAK0a,KAAKzU,EAAIjG,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKzU,EAAGjG,KAAKwb,gBAAgBvV,EAAIjG,KAAK0a,KAAKtL,UAAWpP,KAAKkb,KAAKjV,GACzGjG,KAAK0a,KAAKjO,EAAIzM,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKjO,EAAGzM,KAAKwb,gBAAgB/O,EAAIzM,KAAK0a,KAAKnL,WAAYvP,KAAKkb,KAAKzO,IAG1GzM,KAAK2a,QAEL3a,KAAK0e,cAGL1e,KAAK8a,SAEL9a,KAAK0a,KAAKvU,QAGdnG,KAAKgb,cAAczB,SAAStT,GAAKjG,KAAK0a,KAAKzU,EAC3CjG,KAAKgb,cAAczB,SAAS9M,GAAKzM,KAAK0a,KAAKjO,GAS/C2S,iBAAkB,WAEVpf,KAAK2a,QAEL3a,KAAK2a,OAAOlN,SAASzN,KAAKwa,KAAKC,MAAME,SAY7C+D,YAAa,WAET1e,KAAK+a,QAAQ9U,GAAI,EACjBjG,KAAK+a,QAAQtO,GAAI,CAEjB,IAAI4S,GAAKrf,KAAK0a,KAAKzU,EAAIjG,KAAK2b,OAAO1V,EAC/BqZ,EAAKtf,KAAK0a,KAAK9P,MAAQ5K,KAAK2b,OAAO1V,EACnCsZ,EAAKvf,KAAK0a,KAAKjO,EAAIzM,KAAK2b,OAAOlP,EAC/B+S,EAAKxf,KAAK0a,KAAK/L,OAAS3O,KAAK2b,OAAOlP,CAGpC4S,IAAMrf,KAAK2a,OAAO1U,EAAIjG,KAAK6U,MAAM5O,IAEjCjG,KAAK+a,QAAQ9U,GAAI,EACjBjG,KAAK0a,KAAKzU,EAAIjG,KAAK2a,OAAO1U,EAAIjG,KAAK6U,MAAM5O,EAEpCjG,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAO1V,EAAI,IAIpBqZ,GAAMtf,KAAK2a,OAAO/P,MAAQ5K,KAAK6U,MAAM5O,IAErCjG,KAAK+a,QAAQ9U,GAAI,EACjBjG,KAAK0a,KAAKzU,EAAKjG,KAAK2a,OAAO/P,MAAQ5K,KAAK6U,MAAM5O,EAAKjG,KAAK+P,MAEnD/P,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAO1V,EAAI,IAIpBsZ,GAAMvf,KAAK2a,OAAOjM,IAAM1O,KAAK6U,MAAMpI,IAEnCzM,KAAK+a,QAAQtO,GAAI,EACjBzM,KAAK0a,KAAKjO,EAAIzM,KAAK2a,OAAOjM,IAAM1O,KAAK6U,MAAMpI,EAEtCzM,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAOlP,EAAI,IAIpB+S,GAAMxf,KAAK2a,OAAOhM,OAAS3O,KAAK6U,MAAMpI,IAEtCzM,KAAK+a,QAAQtO,GAAI,EACjBzM,KAAK0a,KAAKjO,EAAKzM,KAAK2a,OAAOhM,OAAS3O,KAAK6U,MAAMpI,EAAKzM,KAAKgQ,OAEpDhQ,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAOlP,EAAI,KAc5BiR,YAAa,SAAUzX,EAAGwG,GAEtBzM,KAAK0a,KAAKzU,EAAIA,EACdjG,KAAK0a,KAAKjO,EAAIA,EAEVzM,KAAK2a,QAEL3a,KAAK0e,eAYbe,QAAS,SAAU1P,EAAOC,GAEtBhQ,KAAK0a,KAAK3K,MAAQA,EAClB/P,KAAK0a,KAAK1K,OAASA,GAWvB0P,MAAO,WAEH1f,KAAKgH,OAAS,KAEdhH,KAAK0a,KAAKzU,EAAI,EACdjG,KAAK0a,KAAKjO,EAAI,EAEdzM,KAAK2b,OAAOE,SAAW,EAEvB7b,KAAK2f,WAUTA,QAAS,WAEL3f,KAAKub,GAAG0C,QAERje,KAAKub,GAAG8C,MAAQ,EAEhBre,KAAKic,YAAc,IAM3B5b,EAAOka,OAAOlU,UAAU8B,YAAc9H,EAAOka,OAO7ChT,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAKzU,GAIrBgG,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAKzU,EAAIsD,EAEVvJ,KAAK2a,QAEL3a,KAAK0e,iBAWjBnX,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAKjO,GAIrBR,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAKjO,EAAIlD,EAEVvJ,KAAK2a,QAEL3a,KAAK0e,iBAWjBnX,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,YAE3C2F,IAAK,WAID,MAFAhM,MAAK0b,UAAUzP,IAAIjM,KAAK0a,KAAKzU,EAAGjG,KAAK0a,KAAKjO,GAEnCzM,KAAK0b,WAIhBzP,IAAK,SAAU1C,GAEY,mBAAZA,GAAMtD,IAAqBjG,KAAK0a,KAAKzU,EAAIsD,EAAMtD,GACnC,mBAAZsD,GAAMkD,IAAqBzM,KAAK0a,KAAKjO,EAAIlD,EAAMkD,GAEtDzM,KAAK2a,QAEL3a,KAAK0e,iBAWjBnX,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,SAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAK3K,OAIrB9D,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAK3K,MAAQxG,KAW1BhC,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,UAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAK1K,QAIrB/D,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAK1K,OAASzG,KAY3BhC,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,kBAE3C2F,IAAK,WAED,MAAOhM,MAAK2b,OAAOC,WAIvB3P,IAAK,SAAU1C,GAEXvJ,KAAK2b,OAAOC,UAAYrS,KAmBhClJ,EAAOuf,MAAQ,WAKX5f,KAAKwa,KAAO,KAKZxa,KAAK+L,IAAM,GAKX/L,KAAK6R,IAAM,KAKX7R,KAAK6f,KAAO,KAKZ7f,KAAK4c,OAAS,KAKd5c,KAAK8f,MAAQ,KAKb9f,KAAK+f,MAAQ,KAKb/f,KAAKggB,KAAO,KAKZhgB,KAAKkf,KAAO,KAKZlf,KAAKigB,MAAQ,KAKbjgB,KAAK6U,MAAQ,KAKb7U,KAAK8c,MAAQ,KAKb9c,KAAKkgB,MAAQ,KAKblgB,KAAK2e,KAAO,KAKZ3e,KAAKmgB,OAAS,KAKdngB,KAAKya,MAAQ,KAKbza,KAAKogB,UAAY,KAKjBpgB,KAAKqgB,QAAU,KAKfrgB,KAAK8e,IAAM,MAIfze,EAAOuf,MAAMvZ,WASTia,KAAM,aAUNC,QAAS,aAQTC,WAAY,aASZC,WAAY,aASZC,OAAQ,aAURnC,OAAQ,aAQRoC,UAAW,aAUXC,OAAQ,aAQR9H,OAAQ,aAQR+H,OAAQ,aAQRC,QAAS,aAQTC,YAAa,aAQbC,SAAU,cAKd3gB,EAAOuf,MAAMvZ,UAAU8B,YAAc9H,EAAOuf,MAkB5Cvf,EAAO4gB,aAAe,SAAUzG,EAAM0G,GAKlClhB,KAAKwa,KAAOA,EAKZxa,KAAKmhB,UAMLnhB,KAAKohB,cAAgB,KAEO,mBAAjBF,IAAiD,OAAjBA,IAEvClhB,KAAKohB,cAAgBF,GAOzBlhB,KAAKqhB,aAAc,EAMnBrhB,KAAKshB,aAAc,EAMnBthB,KAAKuhB,UAAW,EAMhBvhB,KAAKwhB,SAMLxhB,KAAKqJ,QAAU,GAcfrJ,KAAKyhB,cAAgB,GAAIphB,GAAO+a,OAMhCpb,KAAK0hB,eAAiB,KAMtB1hB,KAAK2hB,kBAAoB,KAMzB3hB,KAAK4hB,iBAAmB,KAMxB5hB,KAAK6hB,iBAAmB,KAMxB7hB,KAAK8hB,iBAAmB,KAMxB9hB,KAAK+hB,iBAAmB,KAMxB/hB,KAAKgiB,oBAAsB,KAM3BhiB,KAAKiiB,qBAAuB,KAM5BjiB,KAAKkiB,qBAAuB,KAM5BliB,KAAKmiB,iBAAmB,KAMxBniB,KAAKoiB,kBAAoB,KAMzBpiB,KAAKqiB,sBAAwB,KAM7BriB,KAAKsiB,mBAAqB,MAI9BjiB,EAAO4gB,aAAa5a,WAOhBsW,KAAM,WAEF3c,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAKwiB,MAAOxiB,MAClCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAK0iB,OAAQ1iB,MAET,OAAvBA,KAAKohB,eAAwD,gBAAvBphB,MAAKohB,eAE3CphB,KAAK6R,IAAI,UAAW7R,KAAKohB,eAAe,IAehDvP,IAAK,SAAU9F,EAAKmU,EAAOyC,GAELjZ,SAAdiZ,IAA2BA,GAAY,EAE3C,IAAIC,EA8BJ,OA5BI1C,aAAiB7f,GAAOuf,MAExBgD,EAAW1C,EAEW,gBAAVA,IAEZ0C,EAAW1C,EACX0C,EAASpI,KAAOxa,KAAKwa,MAEC,kBAAV0F,KAEZ0C,EAAW,GAAI1C,GAAMlgB,KAAKwa,OAG9Bxa,KAAKmhB,OAAOpV,GAAO6W,EAEfD,IAEI3iB,KAAKwa,KAAKqI,SAEV7iB,KAAK0Q,MAAM3E,GAIX/L,KAAKohB,cAAgBrV,GAItB6W,GASXE,OAAQ,SAAU/W,GAEV/L,KAAKqJ,UAAY0C,IAEjB/L,KAAK+iB,gBAAkB,KAEvB/iB,KAAK0hB,eAAiB,KACtB1hB,KAAKsiB,mBAAqB,KAE1BtiB,KAAK2hB,kBAAoB,KACzB3hB,KAAKkiB,qBAAuB,KAC5BliB,KAAKiiB,qBAAuB,KAC5BjiB,KAAK4hB,iBAAmB,KACxB5hB,KAAK6hB,iBAAmB,KACxB7hB,KAAKgiB,oBAAsB,KAC3BhiB,KAAK8hB,iBAAmB,KACxB9hB,KAAK+hB,iBAAmB,KACxB/hB,KAAKmiB,iBAAmB,KACxBniB,KAAKoiB,kBAAoB,KACzBpiB,KAAKqiB,sBAAwB,YAG1BriB,MAAKmhB,OAAOpV,IAavB2E,MAAO,SAAU3E,EAAKiX,EAAYC,GAEXvZ,SAAfsZ,IAA4BA,GAAa,GAC1BtZ,SAAfuZ,IAA4BA,GAAa,GAEzCjjB,KAAKkjB,WAAWnX,KAGhB/L,KAAKohB,cAAgBrV,EACrB/L,KAAKqhB,YAAc2B,EACnBhjB,KAAKshB,YAAc2B,EAEflc,UAAUc,OAAS,IAEnB7H,KAAKwhB,MAAQhb,MAAMH,UAAU8c,OAAOrc,KAAKC,UAAW,MAchEqc,QAAS,SAAUJ,EAAYC,GAERvZ,SAAfsZ,IAA4BA,GAAa,GAC1BtZ,SAAfuZ,IAA4BA,GAAa,GAG7CjjB,KAAKohB,cAAgBphB,KAAKqJ,QAC1BrJ,KAAKqhB,YAAc2B,EACnBhjB,KAAKshB,YAAc2B,EAEflc,UAAUc,OAAS,IAEnB7H,KAAKwhB,MAAQhb,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KAU3Dsc,MAAO,aAQPrG,UAAW,WAEP,GAAIhd,KAAKohB,eAAiBphB,KAAKwa,KAAKqI,SACpC,CACI,GAAIS,GAAmBtjB,KAAKqJ,OAS5B,IANArJ,KAAKujB,oBAELvjB,KAAKwjB,gBAAgBxjB,KAAKohB,eAE1BphB,KAAKyhB,cAAc5C,SAAS7e,KAAKqJ,QAASia,GAEtCtjB,KAAKqJ,UAAYrJ,KAAKohB,cAEtB,MAIAphB,MAAKohB,cAAgB,KAKrBphB,KAAK2hB,mBAEL3hB,KAAKwa,KAAKwF,KAAKN,OAAM,GACrB1f,KAAK2hB,kBAAkB7a,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAGb,IAAtCxa,KAAKwa,KAAKwF,KAAKyD,oBAAkE,IAAtCzjB,KAAKwa,KAAKwF,KAAK0D,mBAE1D1jB,KAAK2jB,eAKL3jB,KAAKwa,KAAKwF,KAAKtP,SAMnB1Q,KAAK2jB,iBAYjBJ,kBAAmB,WAEXvjB,KAAKqJ,UAEDrJ,KAAKsiB,oBAELtiB,KAAKsiB,mBAAmBxb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAG5Dxa,KAAKwa,KAAK2F,OAAOyD,YAEjB5jB,KAAKwa,KAAKoC,OAAO8C,QAEjB1f,KAAKwa,KAAKuF,MAAML,OAAM,GAEtB1f,KAAKwa,KAAK6F,QAAQpC,QAElBje,KAAKwa,KAAKmE,KAAKiF,YAEf5jB,KAAKwa,KAAK3F,MAAM6K,MAAM1f,KAAKqhB,aAEvBrhB,KAAKwa,KAAKqJ,OAEV7jB,KAAKwa,KAAKqJ,MAAMnE,QAGhB1f,KAAKqhB,cAELrhB,KAAKwa,KAAKC,MAAMuG,WAEZhhB,KAAKshB,aAELthB,KAAKwa,KAAKsF,MAAMgE,aAchCZ,WAAY,SAAUnX,GAElB,MAAI/L,MAAKmhB,OAAOpV,MAER/L,KAAKmhB,OAAOpV,GAAc,SAAK/L,KAAKmhB,OAAOpV,GAAa,QAAK/L,KAAKmhB,OAAOpV,GAAa,QAAK/L,KAAKmhB,OAAOpV,GAAa,UAMpH3D,QAAQG,KAAK,gIACN,IAKXH,QAAQG,KAAK,sDAAwDwD,IAC9D,IAYfgY,KAAM,SAAUhY,GAEZ/L,KAAKmhB,OAAOpV,GAAKyO,KAAOxa,KAAKwa,KAC7Bxa,KAAKmhB,OAAOpV,GAAK8F,IAAM7R,KAAKwa,KAAK3I,IACjC7R,KAAKmhB,OAAOpV,GAAK8T,KAAO7f,KAAKwa,KAAKqF,KAClC7f,KAAKmhB,OAAOpV,GAAK6Q,OAAS5c,KAAKwa,KAAKoC,OACpC5c,KAAKmhB,OAAOpV,GAAK+T,MAAQ9f,KAAKwa,KAAKsF,MACnC9f,KAAKmhB,OAAOpV,GAAKgU,MAAQ/f,KAAKwa,KAAKuF,MACnC/f,KAAKmhB,OAAOpV,GAAKiU,KAAOhgB,KAAKwa,KAAKwF,KAClChgB,KAAKmhB,OAAOpV,GAAKmT,KAAOlf,KAAKwa,KAAK0E,KAClClf,KAAKmhB,OAAOpV,GAAKkU,MAAQjgB,KAAKwa,KAAKyF,MACnCjgB,KAAKmhB,OAAOpV,GAAK8I,MAAQ7U,KAAKwa,KAAK3F,MACnC7U,KAAKmhB,OAAOpV,GAAKmU,MAAQlgB,KACzBA,KAAKmhB,OAAOpV,GAAK+Q,MAAQ9c,KAAKwa,KAAKsC,MACnC9c,KAAKmhB,OAAOpV,GAAK4S,KAAO3e,KAAKwa,KAAKmE,KAClC3e,KAAKmhB,OAAOpV,GAAKoU,OAASngB,KAAKwa,KAAK2F,OACpCngB,KAAKmhB,OAAOpV,GAAK0O,MAAQza,KAAKwa,KAAKC,MACnCza,KAAKmhB,OAAOpV,GAAKqU,UAAYpgB,KAAKwa,KAAK4F,UACvCpgB,KAAKmhB,OAAOpV,GAAK+S,IAAM9e,KAAKwa,KAAKsE,IACjC9e,KAAKmhB,OAAOpV,GAAKsU,QAAUrgB,KAAKwa,KAAK6F,QACrCrgB,KAAKmhB,OAAOpV,GAAKA,IAAMA,GAW3BiY,OAAQ,SAAUjY,GAEV/L,KAAKmhB,OAAOpV,KAEZ/L,KAAKmhB,OAAOpV,GAAKyO,KAAO,KACxBxa,KAAKmhB,OAAOpV,GAAK8F,IAAM,KACvB7R,KAAKmhB,OAAOpV,GAAK8T,KAAO,KACxB7f,KAAKmhB,OAAOpV,GAAK6Q,OAAS,KAC1B5c,KAAKmhB,OAAOpV,GAAK+T,MAAQ,KACzB9f,KAAKmhB,OAAOpV,GAAKgU,MAAQ,KACzB/f,KAAKmhB,OAAOpV,GAAKiU,KAAO,KACxBhgB,KAAKmhB,OAAOpV,GAAKmT,KAAO,KACxBlf,KAAKmhB,OAAOpV,GAAKkU,MAAQ,KACzBjgB,KAAKmhB,OAAOpV,GAAK8I,MAAQ,KACzB7U,KAAKmhB,OAAOpV,GAAKmU,MAAQ,KACzBlgB,KAAKmhB,OAAOpV,GAAK+Q,MAAQ,KACzB9c,KAAKmhB,OAAOpV,GAAK4S,KAAO,KACxB3e,KAAKmhB,OAAOpV,GAAKoU,OAAS,KAC1BngB,KAAKmhB,OAAOpV,GAAK0O,MAAQ,KACzBza,KAAKmhB,OAAOpV,GAAKqU,UAAY,KAC7BpgB,KAAKmhB,OAAOpV,GAAK+S,IAAM,KACvB9e,KAAKmhB,OAAOpV,GAAKsU,QAAU,OAYnCmD,gBAAiB,SAAUzX,GAEvB/L,KAAK+iB,gBAAkB/iB,KAAKmhB,OAAOpV,GAEnC/L,KAAK+jB,KAAKhY,GAGV/L,KAAK0hB,eAAiB1hB,KAAKmhB,OAAOpV,GAAW,MAAK/L,KAAKqjB,MAEvDrjB,KAAK2hB,kBAAoB3hB,KAAKmhB,OAAOpV,GAAc,SAAK,KACxD/L,KAAKkiB,qBAAuBliB,KAAKmhB,OAAOpV,GAAiB,YAAK,KAC9D/L,KAAKiiB,qBAAuBjiB,KAAKmhB,OAAOpV,GAAiB,YAAK,KAC9D/L,KAAK4hB,iBAAmB5hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAK6hB,iBAAmB7hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAKgiB,oBAAsBhiB,KAAKmhB,OAAOpV,GAAgB,WAAK,KAC5D/L,KAAK8hB,iBAAmB9hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAK+hB,iBAAmB/hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAKmiB,iBAAmBniB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAKoiB,kBAAoBpiB,KAAKmhB,OAAOpV,GAAc,SAAK,KACxD/L,KAAKqiB,sBAAwBriB,KAAKmhB,OAAOpV,GAAkB,aAAK,KAGhE/L,KAAKsiB,mBAAqBtiB,KAAKmhB,OAAOpV,GAAe,UAAK/L,KAAKqjB,MAG1C,KAAjBrjB,KAAKqJ,SAELrJ,KAAKwa,KAAK6F,QAAQX,QAGtB1f,KAAKqJ,QAAU0C,EACf/L,KAAKuhB,UAAW,EAGhBvhB,KAAK0hB,eAAeza,MAAMjH,KAAK+iB,gBAAiB/iB,KAAKwhB,OAGjDzV,IAAQ/L,KAAKohB,gBAEbphB,KAAKwhB,UAGTxhB,KAAKwa,KAAKyJ,YAAa,GAW3BC,gBAAiB,WACb,MAAOlkB,MAAKmhB,OAAOnhB,KAAKqJ,UAO5Bsa,aAAc,WAGN3jB,KAAKuhB,YAAa,GAASvhB,KAAKiiB,sBAEhCjiB,KAAKiiB,qBAAqBnb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAG1Dxa,KAAKuhB,YAAa,GAASvhB,KAAK4hB,kBAEhC5hB,KAAKuhB,UAAW,EAChBvhB,KAAK4hB,iBAAiB9a,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAItDxa,KAAKuhB,UAAW,GASxBiB,MAAO,WAECxiB,KAAKuhB,UAAYvhB,KAAKmiB,kBAEtBniB,KAAKmiB,iBAAiBrb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAS9DkI,OAAQ,WAEA1iB,KAAKuhB,UAAYvhB,KAAKoiB,mBAEtBpiB,KAAKoiB,kBAAkBtb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAS/D+D,OAAQ,WAEAve,KAAKuhB,SAEDvhB,KAAK6hB,kBAEL7hB,KAAK6hB,iBAAiB/a,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAKtDxa,KAAKiiB,sBAELjiB,KAAKiiB,qBAAqBnb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAUtEuG,YAAa,WAEL/gB,KAAKuhB,SAEDvhB,KAAKqiB,uBAELriB,KAAKqiB,sBAAsBvb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAK3Dxa,KAAKiiB,sBAELjiB,KAAKiiB,qBAAqBnb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAWtEmG,UAAW,SAAUwD,GAEbnkB,KAAKuhB,UAAYvhB,KAAKgiB,qBAEtBhiB,KAAKgiB,oBAAoBlb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,KAAM2J,IASvErL,OAAQ,SAAU/I,EAAOC,GAEjBhQ,KAAK+hB,kBAEL/hB,KAAK+hB,iBAAiBjb,KAAK9G,KAAK+iB,gBAAiBhT,EAAOC,IAShE4Q,OAAQ,WAEA5gB,KAAKuhB,SAEDvhB,KAAK8hB,mBAED9hB,KAAKwa,KAAK4J,aAAe/jB,EAAOI,QAEhCT,KAAKwa,KAAK6J,QAAQC,OAClBtkB,KAAKwa,KAAK6J,QAAQE,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9CvkB,KAAK8hB,iBAAiBhb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MACtDxa,KAAKwa,KAAK6J,QAAQG,WAIlBxkB,KAAK8hB,iBAAiBhb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAM1Dxa,KAAKkiB,sBAELliB,KAAKkiB,qBAAqBpb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAWtEsJ,QAAS,WAEL9jB,KAAKqhB,aAAc,EACnBrhB,KAAKshB,aAAc,EAEnBthB,KAAKujB,oBAELvjB,KAAK+iB,gBAAkB,KAEvB/iB,KAAK0hB,eAAiB,KACtB1hB,KAAKsiB,mBAAqB,KAE1BtiB,KAAK2hB,kBAAoB,KACzB3hB,KAAKkiB,qBAAuB,KAC5BliB,KAAKiiB,qBAAuB,KAC5BjiB,KAAK4hB,iBAAmB,KACxB5hB,KAAK6hB,iBAAmB,KACxB7hB,KAAK8hB,iBAAmB,KACxB9hB,KAAKmiB,iBAAmB,KACxBniB,KAAKoiB,kBAAoB,KACzBpiB,KAAKqiB,sBAAwB,KAE7BriB,KAAKwa,KAAO,KACZxa,KAAKmhB,UACLnhB,KAAKohB,cAAgB,KACrBphB,KAAKqJ,QAAU,KAMvBhJ,EAAO4gB,aAAa5a,UAAU8B,YAAc9H,EAAO4gB,aAOnD1Z,OAAO2E,eAAe7L,EAAO4gB,aAAa5a,UAAW,WAEjD2F,IAAK,WAED,MAAOhM,MAAKuhB,YAqEpBlhB,EAAO+a,OAAS,aAEhB/a,EAAO+a,OAAO/U,WAMVoe,UAAW,KAMXC,YAAa,KAUbC,UAAU,EAMVC,kBAAkB,EAUlBC,QAAQ,EAMRC,gBAAgB,EAQhBC,iBAAkB,SAAUC,EAAUC,GAElC,GAAwB,kBAAbD,GAEP,KAAM,IAAIhO,OAAM,kFAAkFpL,QAAQ,OAAQqZ,KAc1HC,kBAAmB,SAAUF,EAAUG,EAAQC,EAAiBC,EAAU1e,GAEtE,GACI2e,GADAC,EAAYvlB,KAAKwlB,iBAAiBR,EAAUI,EAGhD,IAAIG,KAAc,GAId,GAFAD,EAAUtlB,KAAKykB,UAAUc,GAErBD,EAAQH,WAAaA,EAErB,KAAM,IAAInO,OAAM,kBAAoBmO,EAAS,GAAK,QAAU,eAAkBA,EAAc,OAAL,IAAe,qEAK1GG,GAAU,GAAIjlB,GAAOolB,cAAczlB,KAAMglB,EAAUG,EAAQC,EAAiBC,EAAU1e,GACtF3G,KAAK0lB,YAAYJ,EAQrB,OALItlB,MAAK2kB,UAAY3kB,KAAK0kB,aAEtBY,EAAQK,QAAQ3lB,KAAK0kB,aAGlBY,GASXI,YAAa,SAAUJ,GAEdtlB,KAAKykB,YAENzkB,KAAKykB,aAIT,IAAImB,GAAI5lB,KAAKykB,UAAU5c,MAEvB,GACI+d,WAEG5lB,KAAKykB,UAAUmB,IAAMN,EAAQO,WAAa7lB,KAAKykB,UAAUmB,GAAGC,UAEnE7lB,MAAKykB,UAAUtB,OAAOyC,EAAI,EAAG,EAAGN,IAWpCE,iBAAkB,SAAUR,EAAUX,GAElC,IAAKrkB,KAAKykB,UAEN,OAAO,CAGK/a,UAAZ2a,IAAyBA,EAAU,KAKvC,KAHA,GACIyB,GADAF,EAAI5lB,KAAKykB,UAAU5c,OAGhB+d,KAIH,GAFAE,EAAM9lB,KAAKykB,UAAUmB,GAEjBE,EAAIC,YAAcf,GAAYc,EAAIzB,UAAYA,EAE9C,MAAOuB,EAIf,QAAO,GAYXI,IAAK,SAAUhB,EAAUX,GAErB,MAAOrkB,MAAKwlB,iBAAiBR,EAAUX,MAAa,GA4BxDxS,IAAK,SAAUmT,EAAUI,EAAiBC,GAEtCrlB,KAAK+kB,iBAAiBC,EAAU,MAEhC,IAAIre,KAEJ,IAAII,UAAUc,OAAS,EAEnB,IAAK,GAAIC,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,GAI5B,OAAO9H,MAAKklB,kBAAkBF,GAAU,EAAOI,EAAiBC,EAAU1e,IAiB9Esf,QAAS,SAAUjB,EAAUI,EAAiBC,GAE1CrlB,KAAK+kB,iBAAiBC,EAAU,UAEhC,IAAIre,KAEJ,IAAII,UAAUc,OAAS,EAEnB,IAAK,GAAIC,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,GAI5B,OAAO9H,MAAKklB,kBAAkBF,GAAU,EAAMI,EAAiBC,EAAU1e,IAY7Emc,OAAQ,SAAUkC,EAAUX,GAExBrkB,KAAK+kB,iBAAiBC,EAAU,SAEhC,IAAIld,GAAI9H,KAAKwlB,iBAAiBR,EAAUX,EAQxC,OANIvc,MAAM,IAEN9H,KAAKykB,UAAU3c,GAAGoe,WAClBlmB,KAAKykB,UAAUtB,OAAOrb,EAAG,IAGtBkd,GAUXpB,UAAW,SAAUS,GAIjB,GAFgB3a,SAAZ2a,IAAyBA,EAAU,MAElCrkB,KAAKykB,UAAV,CAOA,IAFA,GAAImB,GAAI5lB,KAAKykB,UAAU5c,OAEhB+d,KAECvB,EAEIrkB,KAAKykB,UAAUmB,GAAGvB,UAAYA,IAE9BrkB,KAAKykB,UAAUmB,GAAGM,WAClBlmB,KAAKykB,UAAUtB,OAAOyC,EAAG,IAK7B5lB,KAAKykB,UAAUmB,GAAGM,UAIrB7B,KAEDrkB,KAAKykB,UAAU5c,OAAS,KAWhCse,gBAAiB,WAEb,MAAOnmB,MAAKykB,UAAYzkB,KAAKykB,UAAU5c,OAAS,GAYpDue,KAAM,WAEFpmB,KAAK4kB,kBAAmB,GAY5B/F,SAAU,WAEN,GAAK7e,KAAK6kB,QAAW7kB,KAAKykB,UAA1B,CAKA,GAEI4B,GAFAC,EAAY9f,MAAMH,UAAUE,MAAMO,KAAKC,WACvC6e,EAAI5lB,KAAKykB,UAAU5c,MAQvB,IALI7H,KAAK2kB,WAEL3kB,KAAK0kB,YAAc4B,GAGlBV,EAAL,CAMAS,EAAWrmB,KAAKykB,UAAUle,QAC1BvG,KAAK4kB,kBAAmB,CAIxB,GACIgB,WAEGS,EAAST,IAAM5lB,KAAK4kB,kBAAoByB,EAAST,GAAGD,QAAQW,MAAe,MAStFC,OAAQ,WAEAvmB,KAAK0kB,cAEL1kB,KAAK0kB,YAAc,OAa3B8B,QAAS,WAELxmB,KAAK4jB,YAEL5jB,KAAKykB,UAAY,KACbzkB,KAAK0kB,cAEL1kB,KAAK0kB,YAAc,OAW3Bld,SAAU,WAEN,MAAO,yBAA0BxH,KAAK6kB,OAAQ,iBAAkB7kB,KAAKmmB,kBAAmB,MAehG5e,OAAO2E,eAAe7L,EAAO+a,OAAO/U,UAAW,iBAE3C2F,IAAK,WACD,GAAIya,GAAQzmB,IACZ,OAAOA,MAAK8kB,iBAAmB9kB,KAAK8kB,eAAiB,WACjD,MAAO2B,GAAM5H,SAAS5X,MAAMwf,EAAO1f,gBAM/C1G,EAAO+a,OAAO/U,UAAU8B,YAAc9H,EAAO+a,OAuB7C/a,EAAOolB,cAAgB,SAAUiB,EAAQ1B,EAAUG,EAAQC,EAAiBC,EAAU1e,GAMlF3G,KAAK+lB,UAAYf,EAEbG,IAEAnlB,KAAK2mB,SAAU,GAGI,MAAnBvB,IAEAplB,KAAKqkB,QAAUe,GAOnBplB,KAAK4mB,QAAUF,EAEXrB,IAEArlB,KAAK6lB,UAAYR,GAGjB1e,GAAQA,EAAKkB,SAEb7H,KAAKwhB,MAAQ7a,IAKrBtG,EAAOolB,cAAcpf,WAKjBge,QAAS,KAMTsC,SAAS,EAMTd,UAAW,EAMXrE,MAAO,KAKPqF,UAAW,EAOXhC,QAAQ,EAORiC,OAAQ,KASRnB,QAAS,SAASW,GAEd,GAAIS,GAAeD,CAqBnB,OAnBI9mB,MAAK6kB,QAAY7kB,KAAK+lB,YAEtBe,EAAS9mB,KAAK8mB,OAAS9mB,KAAK8mB,OAAOjgB,OAAOyf,GAAaA,EAEnDtmB,KAAKwhB,QAELsF,EAASA,EAAOjgB,OAAO7G,KAAKwhB,QAGhCuF,EAAgB/mB,KAAK+lB,UAAU9e,MAAMjH,KAAKqkB,QAASyC,GAEnD9mB,KAAK6mB,YAED7mB,KAAK2mB,SAEL3mB,KAAKgnB,UAIND,GAUXC,OAAQ,WACJ,MAAOhnB,MAAKinB,UAAYjnB,KAAK4mB,QAAQ9D,OAAO9iB,KAAK+lB,UAAW/lB,KAAKqkB,SAAW,MAOhF4C,QAAS,WACL,QAAUjnB,KAAK4mB,WAAa5mB,KAAK+lB,WAOrCZ,OAAQ,WACJ,MAAOnlB,MAAK2mB,SAOhBO,YAAa,WACT,MAAOlnB,MAAK+lB,WAOhBoB,UAAW,WACP,MAAOnnB,MAAK4mB,SAQhBV,SAAU,iBACClmB,MAAK4mB,cACL5mB,MAAK+lB,gBACL/lB,MAAKqkB,SAOhB7c,SAAU,WACN,MAAO,gCAAkCxH,KAAK2mB,QAAS,aAAc3mB,KAAKinB,UAAW,YAAcjnB,KAAK6kB,OAAS,MAKzHxkB,EAAOolB,cAAcpf,UAAU8B,YAAc9H,EAAOolB,cAoBpDplB,EAAO+mB,OAAS,SAAU5M,EAAM6M,EAAUC,GAKtCtnB,KAAKwa,KAAOA,EAMZxa,KAAKkI,KAAO7H,EAAO2B,aAQnBhC,KAAKunB,QAAUvnB,MAMfA,KAAKwnB,WAMLxnB,KAAKynB,OAAQ,EAMbznB,KAAK0nB,QAAU,EAKf1nB,KAAK2nB,UAAY,GAAItnB,GAAO2M,KAM5B,IAAIiH,GAAI,GAAI2T,KAoBZ,IAfA5nB,KAAKqnB,UAEDQ,YAAc3f,KAAM,KAAMqB,OAAStD,EAAG,IAAKwG,EAAG,MAC9CkS,MAAQzW,KAAM,KAAMqB,MAAO,GAC3Bue,OAAS5f,KAAM,KAAMqB,OAAStD,EAAG,EAAKwG,EAAG,IACzCsb,MAAQ7f,KAAM,MAAOqB,OAAS0K,EAAE+T,cAAgB/T,EAAEgU,WAAahU,EAAEiU,UAAyB,GAAdjU,EAAEkU,WAAiB,GAAsB,GAAjBlU,EAAEmU,aAAoBnU,EAAEoU,eAC5HC,YAAcpgB,KAAM,KAAMqB,MAAO,OACjCgf,WAAargB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,IACpEC,WAAaxgB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,IACpEE,WAAazgB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,IACpEG,WAAa1gB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,KAKpEpB,EAEA,IAAK,GAAItb,KAAOsb,GAEZrnB,KAAKqnB,SAAStb,GAAOsb,EAAStb,EAOtC/L,MAAKsnB,YAAcA,GAAe,IAItCjnB,EAAO+mB,OAAO/gB,WAMVia,KAAM,aAUNuI,cAAe,SAAU9Y,EAAOC,GAE5BhQ,KAAKqnB,SAASQ,WAAWte,MAAMtD,EAAI8J,EACnC/P,KAAKqnB,SAASQ,WAAWte,MAAMkD,EAAIuD,GASvCuO,OAAQ,SAAUuK,GAEd,GAAuB,mBAAZA,GACX,CACI,GAAI7iB,GAAI6iB,EAAQ7iB,EAAIjG,KAAKwa,KAAKzK,MAC1BtD,EAAI,EAAIqc,EAAQrc,EAAIzM,KAAKwa,KAAKxK,MAE9B/J,KAAMjG,KAAK2nB,UAAU1hB,GAAKwG,IAAMzM,KAAK2nB,UAAUlb,IAE/CzM,KAAKqnB,SAASS,MAAMve,MAAMtD,EAAIA,EAAE8iB,QAAQ,GACxC/oB,KAAKqnB,SAASS,MAAMve,MAAMkD,EAAIA,EAAEsc,QAAQ,GACxC/oB,KAAK2nB,UAAU1b,IAAIhG,EAAGwG,IAI9BzM,KAAKqnB,SAAS1I,KAAKpV,MAAQvJ,KAAKwa,KAAKmE,KAAKqK,uBAsB9CC,WAAY,SAAUhjB,EAAGwG,EAAGsD,EAAOC,EAAQkZ,EAASC,GAEhCzf,SAAZwf,IAAyBA,EAAU,GACvBxf,SAAZyf,IAAyBA,EAAU,GAEzBzf,SAAVqG,GAAiC,OAAVA,EAEvB/P,KAAK+P,MAAQA,EAIbA,EAAQ/P,KAAK+P,MAGFrG,SAAXsG,GAAmC,OAAXA,EAExBhQ,KAAKgQ,OAASA,EAIdA,EAAShQ,KAAKgQ,MAGlB,IAAIoZ,GAAQppB,KAAKwa,KAAK3I,IAAIuX,MAAMnjB,EAAGwG,EAAG,YAStC,OAPA2c,GAAMrZ,MAAQA,EACdqZ,EAAMpZ,OAASA,EAEfoZ,EAAMC,OAAOpd,IAAIid,EAASC,GAE1BC,EAAME,SAAYtpB,MAEXopB,GAQXtF,QAAS,WAEL9jB,KAAKwa,KAAO,OAMpBna,EAAO+mB,OAAO/gB,UAAU8B,YAAc9H,EAAO+mB,OAM7C7f,OAAO2E,eAAe7L,EAAO+mB,OAAO/gB,UAAW,SAE3C2F,IAAK,WACD,MAAOhM,MAAKqnB,SAASQ,WAAWte,MAAMtD,GAG1CgG,IAAK,SAAS1C,GACVvJ,KAAKqnB,SAASQ,WAAWte,MAAMtD,EAAIsD,KAS3ChC,OAAO2E,eAAe7L,EAAO+mB,OAAO/gB,UAAW,UAE3C2F,IAAK,WACD,MAAOhM,MAAKqnB,SAASQ,WAAWte,MAAMkD,GAG1CR,IAAK,SAAS1C,GACVvJ,KAAKqnB,SAASQ,WAAWte,MAAMkD,EAAIlD,KAmB3ClJ,EAAOkpB,OAAS,SAAU/O,EAAMgP,GAEb9f,SAAX8f,IAAwBA,EAAS,MAKrCxpB,KAAKwa,KAAOA,EAKZxa,KAAKwpB,OAASA,EAMdxpB,KAAK6kB,QAAS,EAMd7kB,KAAK6a,SAAU,EAMf7a,KAAKypB,cAAe,EAMpBzpB,KAAK0pB,WAAY,EAMjB1pB,KAAK2pB,eAAgB,EAMrB3pB,KAAK4pB,WAAY,EAMjB5pB,KAAK6pB,eAAgB,GAIzBxpB,EAAOkpB,OAAOljB,WAOV2W,UAAW,aAQXuB,OAAQ,aAQRqC,OAAQ,aAQRkJ,WAAY,aAOZhG,QAAS,WAEL9jB,KAAKwa,KAAO,KACZxa,KAAKwpB,OAAS,KACdxpB,KAAK6kB,QAAS,EACd7kB,KAAK6a,SAAU,IAMvBxa,EAAOkpB,OAAOljB,UAAU8B,YAAc9H,EAAOkpB,OAiB7ClpB,EAAO0pB,cAAgB,SAASvP,GAK5Bxa,KAAKwa,KAAOA,EAKZxa,KAAKgqB,WAMLhqB,KAAKiqB,KAAO,EAMZjqB,KAAKkqB,GAAK,GAId7pB,EAAO0pB,cAAc1jB,WAWjBwL,IAAK,SAAUsY,GAEX,GAAIxjB,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAC7CuK,GAAS,CA6Cb,OA1CsB,kBAAX6Y,GAEPA,EAAS,GAAIA,GAAOnqB,KAAKwa,KAAMxa,OAI/BmqB,EAAO3P,KAAOxa,KAAKwa,KACnB2P,EAAOX,OAASxpB,MAIe,kBAAxBmqB,GAAkB,YAEzBA,EAAOV,cAAe,EACtBnY,GAAS,GAGmB,kBAArB6Y,GAAe,SAEtBA,EAAOT,WAAY,EACnBpY,GAAS,GAGuB,kBAAzB6Y,GAAmB,aAE1BA,EAAOR,eAAgB,EACvBrY,GAAS,GAGmB,kBAArB6Y,GAAe,SAEtBA,EAAOP,WAAY,EACnBtY,GAAS,GAGuB,kBAAzB6Y,GAAmB,aAE1BA,EAAON,eAAgB,EACvBvY,GAAS,GAITA,IAEI6Y,EAAOV,cAAgBU,EAAOT,WAAaS,EAAOR,iBAElDQ,EAAOtF,QAAS,IAGhBsF,EAAOP,WAAaO,EAAON,iBAE3BM,EAAOtP,SAAU,GAGrB7a,KAAKiqB,KAAOjqB,KAAKgqB,QAAQpX,KAAKuX,GAGA,kBAAnBA,GAAa,MAEpBA,EAAO7J,KAAKrZ,MAAMkjB,EAAQxjB,GAGvBwjB,GAIA,MAWfrH,OAAQ,SAAUqH,EAAQrG,GAMtB,IAJgBpa,SAAZoa,IAAyBA,GAAU,GAEvC9jB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAER,GAAIlqB,KAAKgqB,QAAQhqB,KAAKkqB,MAAQC,EAS1B,MAPIrG,IAEAqG,EAAOrG,UAGX9jB,KAAKgqB,QAAQ7G,OAAOnjB,KAAKkqB,GAAI,OAC7BlqB,MAAKiqB,QAYjBrG,UAAW,WAIP,IAFA5jB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAERlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIpG,SAG1B9jB,MAAKgqB,QAAQniB,OAAS,EACtB7H,KAAKiqB,KAAO,GAUhBjN,UAAW,WAIP,IAFAhd,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrF,QAAU7kB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIT,cAEtDzpB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIlN,aAYlCuB,OAAQ,WAIJ,IAFAve,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrF,QAAU7kB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIR,WAEtD1pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAI3L,UAalC6L,WAAY,WAIR,IAFApqB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrF,QAAU7kB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIP,eAEtD3pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIE,cAYlCxJ,OAAQ,WAIJ,IAFA5gB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrP,SAAW7a,KAAKgqB,QAAQhqB,KAAKkqB,IAAIN,WAEvD5pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAItJ,UAYlCkJ,WAAY,WAIR,IAFA9pB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrP,SAAW7a,KAAKgqB,QAAQhqB,KAAKkqB,IAAIL,eAEvD7pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIJ,cAWlChG,QAAS,WAEL9jB,KAAK4jB,YAEL5jB,KAAKwa,KAAO,OAMpBna,EAAO0pB,cAAc1jB,UAAU8B,YAAc9H,EAAO0pB,cAiBpD1pB,EAAOgqB,MAAQ,SAAU7P,GAKrBxa,KAAKwa,KAAOA,EAEZ1U,KAAKwkB,uBAAuBxjB,KAAK9G,MAMjCA,KAAKoL,KAAO,cAWZpL,KAAKuqB,yBAA0B,EAM/BvqB,KAAKwqB,QAAS,EAOdxqB,KAAKyqB,eAAiB,GAAI3kB,MAAKkO,OAO/BhU,KAAK8c,MAAQ9c,KAKbA,KAAK0qB,qBAAuB,EAM5B1qB,KAAK2qB,WAAa,SAMlB3qB,KAAK4qB,UAAY,KAMjB5qB,KAAK6qB,UAAa3d,EAAG,EAAG4d,EAAG,EAAGjc,EAAG,EAAGJ,EAAG,EAAGuP,MAAO,EAAG+M,KAAM,WAErD/qB,KAAKwa,KAAKwQ,cAGXhrB,KAAK6qB,SAASpc,EAAI,GAGlB+L,EAAKyQ,QAELjrB,KAAKkrB,YAAY1Q,EAAKyQ,SAK9B5qB,EAAOgqB,MAAMhkB,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACnEhG,EAAOgqB,MAAMhkB,UAAU8B,YAAc9H,EAAOgqB,MAS5ChqB,EAAOgqB,MAAMhkB,UAAU6kB,YAAc,SAAUD,GAEvCA,EAAgC,0BAEhCjrB,KAAKuqB,wBAA0BU,EAAgC,yBAG/DA,EAAwB,iBAExBjrB,KAAKmrB,mBAAmBF,EAAwB,kBAUxD5qB,EAAOgqB,MAAMhkB,UAAUsW,KAAO,WAE1Btc,EAAO+qB,IAAIC,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,QAE5C/N,EAAOkrB,OAAOC,cAAcxrB,KAAKwa,KAAK8Q,OAAQ,QAC9CjrB,EAAOkrB,OAAOE,eAAezrB,KAAKwa,KAAK8Q,OAAQ,QAE/CtrB,KAAK0rB,mBAUTrrB,EAAOgqB,MAAMhkB,UAAU2W,UAAY,WAE/Bhd,KAAK0qB,qBAAuB,CAG5B,KAAK,GAAI5iB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGkV,aAUzB3c,EAAOgqB,MAAMhkB,UAAUkY,OAAS,WAK5B,IAFA,GAAIzW,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEH9H,KAAK2rB,SAAS7jB,GAAGyW,UAYzBle,EAAOgqB,MAAMhkB,UAAU+jB,WAAa,WAGhCpqB,KAAKwa,KAAKoC,OAAO2B,SAGbve,KAAKwa,KAAKoC,OAAO5V,SAEjBhH,KAAKwa,KAAKoC,OAAO5V,OAAOojB,aAExBpqB,KAAK4rB,kBAEL5rB,KAAKwa,KAAKoC,OAAOoC,eAGrB,KAAK,GAAIlX,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGsiB,YAGrBpqB,MAAK4rB,mBAUTvrB,EAAOgqB,MAAMhkB,UAAUulB,gBAAkB,WAErC5rB,KAAK6rB,WAAa,CAElB,KAAK,GAAI/jB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAG8jB,mBAWzBvrB,EAAOgqB,MAAMhkB,UAAUqlB,gBAAkB,WAEPhiB,SAA1BoiB,SAASC,aAET/rB,KAAK2qB,WAAa,yBAEUjhB,SAAvBoiB,SAASE,UAEdhsB,KAAK2qB,WAAa,sBAESjhB,SAAtBoiB,SAASG,SAEdjsB,KAAK2qB,WAAa,qBAEOjhB,SAApBoiB,SAASI,OAEdlsB,KAAK2qB,WAAa,mBAIlB3qB,KAAK2qB,WAAa,IAGtB,IAAIlE,GAAQzmB,IAEZA,MAAK4qB,UAAY,SAAUuB,GACvB,MAAO1F,GAAM2F,iBAAiBD,IAI9BnsB,KAAK2qB,YAELmB,SAASO,iBAAiBrsB,KAAK2qB,WAAY3qB,KAAK4qB,WAAW,GAG/D7iB,OAAOukB,OAAStsB,KAAK4qB,UACrB7iB,OAAOwkB,QAAUvsB,KAAK4qB,UAEtB7iB,OAAOykB,WAAaxsB,KAAK4qB,UACzB7iB,OAAO0kB,WAAazsB,KAAK4qB,UAErB5qB,KAAKwa,KAAKkS,OAAOC,cAEjBC,SAASC,IAAIC,YAAYT,iBAAiB,WACtChsB,EAAOgqB,MAAMhkB,UAAU+lB,iBAAiBtlB,KAAK2f,GAASve,KAAM,YAGhE0kB,SAASC,IAAIE,YAAYV,iBAAiB,WACtChsB,EAAOgqB,MAAMhkB,UAAU+lB,iBAAiBtlB,KAAK2f,GAASve,KAAM,eAYxE7H,EAAOgqB,MAAMhkB,UAAU+lB,iBAAmB,SAAUD,GAEhD,MAAmB,aAAfA,EAAMjkB,MAAsC,SAAfikB,EAAMjkB,MAAkC,aAAfikB,EAAMjkB,MAAsC,UAAfikB,EAAMjkB,UAEtE,aAAfikB,EAAMjkB,MAAsC,SAAfikB,EAAMjkB,KAEnClI,KAAKwa,KAAKwS,UAAUb,GAEA,aAAfA,EAAMjkB,MAAsC,UAAfikB,EAAMjkB,MAExClI,KAAKwa,KAAKyS,UAAUd,SAMxBnsB,KAAKuqB,0BAKLuB,SAASI,QAAUJ,SAASE,WAAaF,SAASG,UAAYH,SAASC,cAA+B,UAAfI,EAAMjkB,KAE7FlI,KAAKwa,KAAK0S,WAAWf,GAIrBnsB,KAAKwa,KAAK2S,YAAYhB,MAiB9B9rB,EAAOgqB,MAAMhkB,UAAU8kB,mBAAqB,SAAUnN,GAE9Che,KAAKwa,KAAKwQ,cAEd3qB,EAAO+sB,MAAMC,aAAarP,EAAOhe,KAAK6qB,UACtCxqB,EAAO+sB,MAAME,YAAYttB,KAAK6qB,UAG9B7qB,KAAK6qB,SAAS3d,GAAK,IACnBlN,KAAK6qB,SAASC,GAAK,IACnB9qB,KAAK6qB,SAAShc,GAAK,IACnB7O,KAAK6qB,SAASpc,EAAI,IAStBpO,EAAOgqB,MAAMhkB,UAAUyd,QAAU,WAEzB9jB,KAAK2qB,YAELmB,SAASyB,oBAAoBvtB,KAAK2qB,WAAY3qB,KAAK4qB,WAAW,GAGlE7iB,OAAOykB,WAAa,KACpBzkB,OAAO0kB,WAAa,KAEpB1kB,OAAOukB,OAAS,KAChBvkB,OAAOwkB,QAAU,MAQrBhlB,OAAO2E,eAAe7L,EAAOgqB,MAAMhkB,UAAW,mBAE1C2F,IAAK,WAED,MAAOhM,MAAK6qB,SAAS7M,OAIzB/R,IAAK,SAAU+R,GAEXhe,KAAKmrB,mBAAmBnN,MAYhCzW,OAAO2E,eAAe7L,EAAOgqB,MAAMhkB,UAAW,YAE1C2F,IAAK,WAED,MAAOlG,MAAKJ,WAAWC,UAAYG,KAAKJ,WAAWE,QAIvDqG,IAAK,SAAU1C,GAEPA,EAEAzD,KAAKJ,WAAWC,QAAUG,KAAKJ,WAAWE,OAI1CE,KAAKJ,WAAWC,QAAUG,KAAKJ,WAAWG,WAgCtDxF,EAAOmtB,MAAQ,SAAUhT,EAAMgP,EAAQpe,EAAMqiB,EAAYC,EAAYC,GAE9CjkB,SAAf+jB,IAA4BA,GAAa,GAC1B/jB,SAAfgkB,IAA4BA,GAAa,GACrBhkB,SAApBikB,IAAiCA,EAAkBttB,EAAOutB,QAAQC,QAOtE7tB,KAAKwa,KAAOA,EAEG9Q,SAAX8f,IAEAA,EAAShP,EAAKC,OAOlBza,KAAKoL,KAAOA,GAAQ,QAQpBpL,KAAK8tB,EAAI,EAEThoB,KAAKwkB,uBAAuBxjB,KAAK9G,MAE7BytB,GAEAztB,KAAKwa,KAAKsC,MAAMC,SAAS/c,MACzBA,KAAK8tB,EAAI9tB,KAAKwa,KAAKsC,MAAM6O,SAAS9jB,QAI9B2hB,IAEAA,EAAOzM,SAAS/c,MAChBA,KAAK8tB,EAAItE,EAAOmC,SAAS9jB,QASjC7H,KAAKkI,KAAO7H,EAAOmB,MAMnBxB,KAAK+tB,YAAc1tB,EAAOmB,MAO1BxB,KAAKguB,OAAQ,EAObhuB,KAAKwqB,QAAS,EAOdxqB,KAAKiuB,eAAgB,EAYrBjuB,KAAKkuB,gBAAiB,EAWtBluB,KAAKmuB,UAAY9tB,EAAO+tB,OAQxBpuB,KAAKquB,OAAS,KAWdruB,KAAKsuB,qBAAsB,EAY3BtuB,KAAKuuB,iBAAmB,GAAIluB,GAAO+a,OAanCpb,KAAKwuB,eAAiB,GAAInuB,GAAO+a,OAYjCpb,KAAKyuB,iBAAmB,GAAIpuB,GAAO+a,OAYnCpb,KAAK0uB,gBAAkB,GAAIruB,GAAO+a,OAUlCpb,KAAK0tB,WAAaA,EASlB1tB,KAAK2uB,iBAAkB,EAQvB3uB,KAAK2tB,gBAAkBA,EAkBvB3tB,KAAK4uB,qBAAuB,KAM5B5uB,KAAK6uB,UAAY,GAAIxuB,GAAO+a,OAM5Bpb,KAAK8uB,YAAc,EAUnB9uB,KAAK+uB,eAAgB,EAOrB/uB,KAAKgvB,aAAe,GAAI3uB,GAAO2M,MAa/BhN,KAAKivB,QAOLjvB,KAAKkvB,cAAgB,KAIzB7uB,EAAOmtB,MAAMnnB,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACnEhG,EAAOmtB,MAAMnnB,UAAU8B,YAAc9H,EAAOmtB,MAO5CntB,EAAOmtB,MAAM2B,YAAc,EAO3B9uB,EAAOmtB,MAAM4B,aAAe,EAO5B/uB,EAAOmtB,MAAM6B,aAAe,EAO5BhvB,EAAOmtB,MAAM8B,WAAa,EAO1BjvB,EAAOmtB,MAAM+B,gBAAiB,EAO9BlvB,EAAOmtB,MAAMgC,gBAAkB,EAwB/BnvB,EAAOmtB,MAAMnnB,UAAUwL,IAAM,SAAU4d,EAAOC,EAAQC,GAIlD,MAFejmB,UAAXgmB,IAAwBA,GAAS,GAEjCD,EAAMjG,SAAWxpB,KAEVyvB,GAGPA,EAAMG,MAAQH,EAAMjG,QAAUiG,EAAMjG,OAAOyF,MAE3CQ,EAAMjG,OAAOqG,eAAeJ,GAGlB/lB,SAAVimB,GAEAF,EAAM3B,EAAI9tB,KAAK2rB,SAAS9jB,OAExB7H,KAAK+c,SAAS0S,KAIdzvB,KAAK8vB,WAAWL,EAAOE,GAEvB3vB,KAAK+vB,WAGL/vB,KAAK0tB,YAAc+B,EAAMzkB,eAAe,SAA0B,OAAfykB,EAAMG,KAEzD5vB,KAAKwa,KAAK6F,QAAQ2P,OAAOP,EAAOzvB,KAAK2tB,iBAEhC8B,EAAMG,MAEX5vB,KAAKiwB,UAAUR,IAGfzvB,KAAKsuB,qBAAyBmB,EAAM1P,QAAS0P,EAAMS,eAEnDT,EAAMS,cAAe,IAGpBR,GAAUD,EAAMU,QAEjBV,EAAMU,OAAOC,wBAAwBX,EAAOzvB,MAG5B,OAAhBA,KAAKquB,SAELruB,KAAKquB,OAASoB,GAGXA,IAmBXpvB,EAAOmtB,MAAMnnB,UAAUgqB,MAAQ,SAAUZ,EAAOE,EAAOD,GAEnD1vB,KAAK6R,IAAI4d,EAAOC,EAAQC,IAY5BtvB,EAAOmtB,MAAMnnB,UAAU4pB,UAAY,SAAUR,GAEzC,GAAIA,EAAMjG,SAAWxpB,KACrB,CACI,GAAI2vB,GAAQ3vB,KAAKivB,KAAKqB,QAAQb,EAE9B,IAAIE,KAAU,EAGV,MADA3vB,MAAKivB,KAAKrc,KAAK6c,IACR,EAIf,OAAO,GAYXpvB,EAAOmtB,MAAMnnB,UAAUwpB,eAAiB,SAAUJ,GAE9C,GAAIA,EACJ,CACI,GAAIE,GAAQ3vB,KAAKivB,KAAKqB,QAAQb,EAE9B,IAAIE,KAAU,EAGV,MADA3vB,MAAKivB,KAAK9L,OAAOwM,EAAO,IACjB,EAIf,OAAO,GAqBXtvB,EAAOmtB,MAAMnnB,UAAUkqB,YAAc,SAAU5E,EAAU+D,GAErD,GAAI/D,YAAoBtrB,GAAOmtB,MAE3B7B,EAAS6E,QAAQxwB,KAAM0vB,OAEtB,IAAIlpB,MAAMa,QAAQskB,GAEnB,IAAK,GAAI7jB,GAAI,EAAGA,EAAI6jB,EAAS9jB,OAAQC,IAEjC9H,KAAK6R,IAAI8Z,EAAS7jB,GAAI4nB,EAI9B,OAAO/D,IAWXtrB,EAAOmtB,MAAMnnB,UAAUoqB,MAAQ,SAAUd,GAErC,MAAIA,GAAQ,GAAKA,GAAS3vB,KAAK2rB,SAAS9jB,QAE7B,EAIA7H,KAAK0wB,WAAWf,IA4B/BtvB,EAAOmtB,MAAMnnB,UAAUqa,OAAS,SAAUza,EAAGwG,EAAGV,EAAK4kB,EAAOnG,EAAQmF,GAEjDjmB,SAAX8gB,IAAwBA,GAAS,EAErC,IAAIiF,GAAQ,GAAIzvB,MAAKmuB,UAAUnuB,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK4kB,EAMrD,OAJAlB,GAAMjF,OAASA,EACfiF,EAAM5U,QAAU2P,EAChBiF,EAAMzB,MAAQxD,EAEPxqB,KAAK6R,IAAI4d,GAAO,EAAOE,IAmDlCtvB,EAAOmtB,MAAMnnB,UAAUuqB,eAAiB,SAAUC,EAAU9kB,EAAK4kB,EAAOnG,GAEtD9gB,SAAVinB,IAAuBA,EAAQ,GACpBjnB,SAAX8gB,IAAwBA,GAAS,GAEhChkB,MAAMa,QAAQ0E,KAEfA,GAAQA,IAGPvF,MAAMa,QAAQspB,KAEfA,GAAUA,GAGd,IAAIlK,GAAQzmB,KACR2rB,IAeJ,OAbA5f,GAAItE,QAAQ,SAASqpB,GAEjBH,EAAMlpB,QAAQ,SAASspB,GAEnB,IAAK,GAAIjpB,GAAI,EAAGA,EAAI+oB,EAAU/oB,IAE1B6jB,EAAS/Y,KAAK6T,EAAM/F,OAAO,EAAG,EAAGoQ,EAAWC,EAAavG,QAO9DmB,GAYXtrB,EAAOmtB,MAAMnnB,UAAU0pB,QAAU,WAI7B,IAFA,GAAIjoB,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEH9H,KAAK2rB,SAAS7jB,GAAGgmB,EAAIhmB,GAwD7BzH,EAAOmtB,MAAMnnB,UAAU2qB,MAAQ,SAAUC,EAAMC,EAASC,EAAWC,EAAY7X,EAAUnL,GAKrF,GAHiB1E,SAAb6P,IAA0BA,EAAWlZ,EAAOsD,UACjC+F,SAAX0E,IAAwBA,EAAS,KAER,IAAzBpO,KAAK2rB,SAAS9jB,QAAgBuG,EAASpO,KAAK2rB,SAAS9jB,QAAWopB,KAAS,GAAMC,KAAY,GAS/F,IAAK,GAJDhkB,GAAI,GAAI7M,GAAOkN,UAAU,EAAG,EAAG4jB,EAAWC,GAC1C9T,EAAK2T,EAAOE,EACZ5T,EAAK2T,EAAUE,EAEVtpB,EAAIsG,EAAQtG,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAC/C,CACI,GAAI2nB,GAAQzvB,KAAK2rB,SAAS7jB,EAE1B,IAAI2nB,EAAe,QASnB,GAPIA,EAAM4B,QAAQnkB,EAAGqM,GAOjB0X,KAAS,EAGT/jB,EAAET,GAAK2kB,EAEHlkB,EAAET,IAAM8Q,IAERrQ,EAAEjH,GAAKkrB,EACPjkB,EAAET,EAAI,OAGT,IAAIykB,KAAY,EAGjBhkB,EAAEjH,GAAKkrB,EAEHjkB,EAAEjH,IAAMqX,IAERpQ,EAAEjH,EAAI,EACNiH,EAAET,GAAK2kB,OAQX,IAFAlkB,EAAEjH,GAAKkrB,EAEHjkB,EAAEjH,IAAMqX,IAERpQ,EAAEjH,EAAI,EACNiH,EAAET,GAAK2kB,EAEHlkB,EAAET,IAAM8Q,GAGR,QAiBpBld,GAAOmtB,MAAMnnB,UAAUirB,YAAc,SAAU3B,GAS3C,GAPcjmB,SAAVimB,IAAuBA,EAAQ,GAE/BA,EAAQ3vB,KAAK2rB,SAAS9jB,OAAS,IAE/B8nB,EAAQ,GAGR3vB,KAAKquB,OAIL,MAFAruB,MAAK8uB,YAAca,EACnB3vB,KAAKquB,OAASruB,KAAK2rB,SAAS3rB,KAAK8uB,aAC1B9uB,KAAKquB,OAapBhuB,GAAOmtB,MAAMnnB,UAAUkrB,KAAO,WAE1B,GAAIvxB,KAAKquB,OAcL,MAXIruB,MAAK8uB,aAAe9uB,KAAK2rB,SAAS9jB,OAAS,EAE3C7H,KAAK8uB,YAAc,EAInB9uB,KAAK8uB,cAGT9uB,KAAKquB,OAASruB,KAAK2rB,SAAS3rB,KAAK8uB,aAE1B9uB,KAAKquB,QAapBhuB,EAAOmtB,MAAMnnB,UAAUmrB,SAAW,WAE9B,GAAIxxB,KAAKquB,OAcL,MAXyB,KAArBruB,KAAK8uB,YAEL9uB,KAAK8uB,YAAc9uB,KAAK2rB,SAAS9jB,OAAS,EAI1C7H,KAAK8uB,cAGT9uB,KAAKquB,OAASruB,KAAK2rB,SAAS3rB,KAAK8uB,aAE1B9uB,KAAKquB,QAcpBhuB,EAAOmtB,MAAMnnB,UAAUorB,KAAO,SAAUC,EAAQC,GAE5C3xB,KAAK4xB,aAAaF,EAAQC,GAC1B3xB,KAAK+vB,WAWT1vB,EAAOmtB,MAAMnnB,UAAUwrB,WAAa,SAAUpC,GAQ1C,MANIA,GAAMjG,SAAWxpB,MAAQA,KAAK8xB,SAASrC,GAASzvB,KAAK2rB,SAAS9jB,SAE9D7H,KAAK8iB,OAAO2M,GAAO,GAAO,GAC1BzvB,KAAK6R,IAAI4d,GAAO,IAGbA,GAWXpvB,EAAOmtB,MAAMnnB,UAAU0rB,WAAa,SAAUtC,GAQ1C,MANIA,GAAMjG,SAAWxpB,MAAQA,KAAK8xB,SAASrC,GAAS,IAEhDzvB,KAAK8iB,OAAO2M,GAAO,GAAO,GAC1BzvB,KAAKqwB,MAAMZ,EAAO,GAAG,IAGlBA,GAWXpvB,EAAOmtB,MAAMnnB,UAAU2rB,OAAS,SAAUvC,GAEtC,GAAIA,EAAMjG,SAAWxpB,MAAQA,KAAK8xB,SAASrC,GAASzvB,KAAK2rB,SAAS9jB,OAAS,EAC3E,CACI,GAAI4G,GAAIzO,KAAK8xB,SAASrC,GAClB5gB,EAAI7O,KAAKywB,MAAMhiB,EAAI,EAEnBI,IAEA7O,KAAKyxB,KAAKhC,EAAO5gB,GAIzB,MAAO4gB,IAWXpvB,EAAOmtB,MAAMnnB,UAAU4rB,SAAW,SAAUxC,GAExC,GAAIA,EAAMjG,SAAWxpB,MAAQA,KAAK8xB,SAASrC,GAAS,EACpD,CACI,GAAIhhB,GAAIzO,KAAK8xB,SAASrC,GAClB5gB,EAAI7O,KAAKywB,MAAMhiB,EAAI,EAEnBI,IAEA7O,KAAKyxB,KAAKhC,EAAO5gB,GAIzB,MAAO4gB,IAYXpvB,EAAOmtB,MAAMnnB,UAAU6rB,GAAK,SAAUvC,EAAO1pB,EAAGwG,GAE5C,MAAIkjB,GAAQ,GAAKA,EAAQ3vB,KAAK2rB,SAAS9jB,QAE5B,GAIP7H,KAAK0wB,WAAWf,GAAO1pB,EAAIA,OAC3BjG,KAAK0wB,WAAWf,GAAOljB,EAAIA,KAYnCpM,EAAOmtB,MAAMnnB,UAAUuC,QAAU,WAE7B5I,KAAK2rB,SAAS/iB,UACd5I,KAAK+vB,WAWT1vB,EAAOmtB,MAAMnnB,UAAUyrB,SAAW,SAAUrC,GAExC,MAAOzvB,MAAK2rB,SAAS2E,QAAQb,IAajCpvB,EAAOmtB,MAAMnnB,UAAU8rB,UAAY,SAAU/mB,GAEzC,IAAK,GAAItD,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC,GAAI9H,KAAK2rB,SAAS7jB,GAAGsD,OAASA,EAE1B,MAAOpL,MAAK2rB,SAAS7jB,EAI7B,OAAO,OAgBXzH,EAAOmtB,MAAMnnB,UAAUuF,QAAU,SAAUwmB,EAAUC,GAEjD,GAAI1C,GAAQ3vB,KAAK8xB,SAASM,EAE1B,IAAIzC,KAAU,EAkBV,MAhBI0C,GAAS7I,SAEL6I,EAAS7I,iBAAkBnpB,GAAOmtB,MAElC6E,EAAS7I,OAAO1G,OAAOuP,GAIvBA,EAAS7I,OAAO8I,YAAYD;AAIpCryB,KAAK8iB,OAAOsP,GAEZpyB,KAAKqwB,MAAMgC,EAAU1C,GAEdyC,GAef/xB,EAAOmtB,MAAMnnB,UAAUksB,YAAc,SAAU9C,EAAO1jB,GAElD,GAAInE,GAAMmE,EAAIlE,MAEd,OAAY,KAARD,GAAamE,EAAI,IAAM0jB,KAIV,IAAR7nB,GAAamE,EAAI,IAAM0jB,IAAS1jB,EAAI,IAAM0jB,GAAM1jB,EAAI,MAI5C,IAARnE,GAAamE,EAAI,IAAM0jB,IAAS1jB,EAAI,IAAM0jB,GAAM1jB,EAAI,KAAOA,EAAI,IAAM0jB,GAAM1jB,EAAI,IAAIA,EAAI,KAI/E,IAARnE,GAAamE,EAAI,IAAM0jB,IAAS1jB,EAAI,IAAM0jB,GAAM1jB,EAAI,KAAOA,EAAI,IAAM0jB,GAAM1jB,EAAI,IAAIA,EAAI,KAAOA,EAAI,IAAM0jB,GAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,OA2B/I1L,EAAOmtB,MAAMnnB,UAAUiD,YAAc,SAAUmmB,EAAO1jB,EAAKxC,EAAOipB,EAAW3U,GAgBzE,GAdcnU,SAAVmU,IAAuBA,GAAQ,GAEnC2U,EAAYA,GAAa,GAYpBxyB,KAAKuyB,YAAY9C,EAAO1jB,MAAU8R,GAAS2U,EAAY,GAExD,OAAO,CAGX,IAAI5qB,GAAMmE,EAAIlE,MAmCd,OAjCY,KAARD,EAEkB,IAAd4qB,EAAmB/C,EAAM1jB,EAAI,IAAMxC,EACjB,GAAbipB,EAAkB/C,EAAM1jB,EAAI,KAAOxC,EACtB,GAAbipB,EAAkB/C,EAAM1jB,EAAI,KAAOxC,EACtB,GAAbipB,EAAkB/C,EAAM1jB,EAAI,KAAOxC,EACtB,GAAbipB,IAAkB/C,EAAM1jB,EAAI,KAAOxC,GAE/B,IAAR3B,EAEa,IAAd4qB,EAAmB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAMxC,EACzB,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,KAAOxC,EAC9B,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,KAAOxC,EAC9B,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,KAAOxC,EAC9B,GAAbipB,IAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,KAAOxC,GAEvC,IAAR3B,EAEa,IAAd4qB,EAAmB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAMxC,EACjC,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EACtC,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EACtC,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EACtC,GAAbipB,IAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,GAE/C,IAAR3B,IAEa,IAAd4qB,EAAmB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAMxC,EACzC,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EAC9C,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EAC9C,GAAbipB,EAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EAC9C,GAAbipB,IAAkB/C,EAAM1jB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,KAGjE,GAcXlJ,EAAOmtB,MAAMnnB,UAAUosB,cAAgB,SAAUhD,EAAO1jB,EAAKxC,EAAOsU,GAKhE,MAHcnU,UAAVmU,IAAuBA,GAAQ,MAG9Bxd,EAAOmI,MAAMM,YAAY2mB,EAAO1jB,IAAQ8R,IAKzCxd,EAAOmI,MAAMM,YAAY2mB,EAAO1jB,KAASxC,GAwBjDlJ,EAAOmtB,MAAMnnB,UAAU4F,IAAM,SAAUwjB,EAAO1jB,EAAKxC,EAAOmpB,EAAYC,EAAcH,EAAW3U,GAS3F,GAPcnU,SAAVmU,IAAuBA,GAAQ,GAEnC9R,EAAMA,EAAIpD,MAAM,KAEGe,SAAfgpB,IAA4BA,GAAa,GACxBhpB,SAAjBipB,IAA8BA,GAAe,IAE5CD,KAAe,GAAUA,GAAcjD,EAAMzB,SAAY2E,KAAiB,GAAUA,GAAgBlD,EAAM5U,SAE3G,MAAO7a,MAAKsJ,YAAYmmB,EAAO1jB,EAAKxC,EAAOipB,EAAW3U,IAqB9Dxd,EAAOmtB,MAAMnnB,UAAUusB,OAAS,SAAU7mB,EAAKxC,EAAOmpB,EAAYC,EAAcH,EAAW3U,GAEpEnU,SAAfgpB,IAA4BA,GAAa,GACxBhpB,SAAjBipB,IAA8BA,GAAe,GACnCjpB,SAAVmU,IAAuBA,GAAQ,GAEnC9R,EAAMA,EAAIpD,MAAM,KAChB6pB,EAAYA,GAAa,CAEzB,KAAK,GAAI1qB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEhC4qB,GAAeA,GAAc1yB,KAAK2rB,SAAS7jB,GAAGkmB,UAAa2E,GAAiBA,GAAgB3yB,KAAK2rB,SAAS7jB,GAAG+S,UAE/G7a,KAAKsJ,YAAYtJ,KAAK2rB,SAAS7jB,GAAIiE,EAAKxC,EAAOipB,EAAW3U,IAsBtExd,EAAOmtB,MAAMnnB,UAAUwsB,eAAiB,SAAU9mB,EAAKxC,EAAOmpB,EAAYC,EAAcH,EAAW3U,GAE5EnU,SAAfgpB,IAA4BA,GAAa,GACxBhpB,SAAjBipB,IAA8BA,GAAe,GACnCjpB,SAAVmU,IAAuBA,GAAQ,GAEnC2U,EAAYA,GAAa,CAEzB,KAAK,GAAI1qB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEhC4qB,GAAeA,GAAc1yB,KAAK2rB,SAAS7jB,GAAGkmB,UAAa2E,GAAiBA,GAAgB3yB,KAAK2rB,SAAS7jB,GAAG+S,WAE3G7a,KAAK2rB,SAAS7jB,YAAczH,GAAOmtB,MAEnCxtB,KAAK2rB,SAAS7jB,GAAG+qB,eAAe9mB,EAAKxC,EAAOmpB,EAAYC,EAAcH,EAAW3U,GAIjF7d,KAAKsJ,YAAYtJ,KAAK2rB,SAAS7jB,GAAIiE,EAAIpD,MAAM,KAAMY,EAAOipB,EAAW3U,KAmBrFxd,EAAOmtB,MAAMnnB,UAAUysB,SAAW,SAAU/mB,EAAKxC,EAAOmpB,EAAYC,EAAc9U,GAE3DnU,SAAfgpB,IAA4BA,GAAa,GACxBhpB,SAAjBipB,IAA8BA,GAAe,GACnCjpB,SAAVmU,IAAuBA,GAAQ,EAEnC,KAAK,GAAI/V,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC,KAAM4qB,GAAeA,GAAc1yB,KAAK2rB,SAAS7jB,GAAGkmB,UAAa2E,GAAiBA,GAAgB3yB,KAAK2rB,SAAS7jB,GAAG+S,WAE1G7a,KAAKyyB,cAAczyB,KAAK2rB,SAAS7jB,GAAIiE,EAAKxC,EAAOsU,GAElD,OAAO,CAKnB,QAAO,GAeXxd,EAAOmtB,MAAMnnB,UAAU0sB,OAAS,SAAUC,EAAUC,EAAQP,EAAYC,GAEpE3yB,KAAK4yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAe5DtyB,EAAOmtB,MAAMnnB,UAAU6sB,OAAS,SAAUF,EAAUC,EAAQP,EAAYC,GAEpE3yB,KAAK4yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAe5DtyB,EAAOmtB,MAAMnnB,UAAU8sB,YAAc,SAAUH,EAAUC,EAAQP,EAAYC,GAEzE3yB,KAAK4yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAe5DtyB,EAAOmtB,MAAMnnB,UAAU+sB,UAAY,SAAUJ,EAAUC,EAAQP,EAAYC,GAEvE3yB,KAAK4yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAc5DtyB,EAAOmtB,MAAMnnB,UAAUgtB,cAAgB,SAAUC,EAAUC,GAEvD,GAAI5sB,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,IAEA,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B,IAAK,GAAIA,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAElC9H,KAAK2rB,SAAS7jB,GAAG0iB,SAAW+I,GAAevzB,KAAK2rB,SAAS7jB,GAAGwrB,IAE5DtzB,KAAK2rB,SAAS7jB,GAAGwrB,GAAUrsB,MAAMjH,KAAK2rB,SAAS7jB,GAAInB,IAe/DtG,EAAOmtB,MAAMnnB,UAAUmtB,kBAAoB,SAAU/D,EAAO6D,EAAUzrB,GAIlE,GAAc,GAAVA,GAEA,GAAI4nB,EAAM6D,EAAS,IAEf,MAAO7D,GAAM6D,EAAS,QAGzB,IAAc,GAAVzrB,GAEL,GAAI4nB,EAAM6D,EAAS,IAAIA,EAAS,IAE5B,MAAO7D,GAAM6D,EAAS,IAAIA,EAAS,QAGtC,IAAc,GAAVzrB,GAEL,GAAI4nB,EAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAEzC,MAAO7D,GAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,QAGnD,IAAc,GAAVzrB,GAEL,GAAI4nB,EAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAEtD,MAAO7D,GAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAAIA,EAAS,QAKjE,IAAI7D,EAAM6D,GAEN,MAAO7D,GAAM6D,EAIrB,QAAO,GAeXjzB,EAAOmtB,MAAMnnB,UAAUotB,QAAU,SAAUC,EAAQrP,GAE/C,GAAe3a,SAAXgqB,EAAJ,CAMAA,EAASA,EAAO/qB,MAAM,IAEtB,IAAIgrB,GAAeD,EAAO7rB,MAE1B,IAAgB6B,SAAZ2a,GAAqC,OAAZA,GAAgC,KAAZA,EAE7CA,EAAU,SAKV,IAAuB,gBAAZA,GACX,CACIA,EAAUA,EAAQ1b,MAAM,IACxB,IAAIirB,GAAgBvP,EAAQxc,OAIpC,GAAIlB,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,IAEA,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAO5B,IAAK,GAHDwrB,GAAW,KACXvQ,EAAkB,KAEbjb,EAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtCwrB,EAAWtzB,KAAKwzB,kBAAkBxzB,KAAK2rB,SAAS7jB,GAAI4rB,EAAQC,GAExDtP,GAAWiP,GAEXvQ,EAAkB/iB,KAAKwzB,kBAAkBxzB,KAAK2rB,SAAS7jB,GAAIuc,EAASuP,GAEhEN,GAEAA,EAASrsB,MAAM8b,EAAiBpc,IAG/B2sB,GAELA,EAASrsB,MAAMjH,KAAK2rB,SAAS7jB,GAAInB,KAW7CtG,EAAOmtB,MAAMnnB,UAAU2W,UAAY,WAE/B,GAAIhd,KAAKkuB,eAGL,MADAluB,MAAK8jB,WACE,CAGX,KAAK9jB,KAAKwqB,SAAWxqB,KAAKwpB,OAAOgB,OAG7B,MADAxqB,MAAK6zB,eAAgB,GACd,CAGX,KAAK,GAAI/rB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGkV,WAGrB,QAAO,GASX3c,EAAOmtB,MAAMnnB,UAAUkY,OAAS,WAK5B,IAFA,GAAIzW,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEH9H,KAAK2rB,SAAS7jB,GAAGyW,UAUzBle,EAAOmtB,MAAMnnB,UAAU+jB,WAAa,WAG5BpqB,KAAK+uB,gBAEL/uB,KAAKiG,EAAIjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,EACrDjG,KAAKyM,EAAIzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,EAGzD,KAAK,GAAI3E,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGsiB,cAsBzB/pB,EAAOmtB,MAAMnnB,UAAUytB,OAAS,SAAUC,EAAWC,GAMjD,IAJA,GAAIrE,IAAQ,EACR9nB,EAAS7H,KAAK2rB,SAAS9jB,OACvB2K,OAEKmd,EAAQ9nB,GACjB,CACI,GAAI4nB,GAAQzvB,KAAK2rB,SAASgE,KAErBqE,GAAgBA,GAAevE,EAAMjF,SAElCuJ,EAAUtE,EAAOE,EAAO3vB,KAAK2rB,WAE7BnZ,EAAQI,KAAK6c,GAKzB,MAAO,IAAIpvB,GAAO4zB,SAASzhB,IAqB/BnS,EAAOmtB,MAAMnnB,UAAUoB,QAAU,SAAU6rB,EAAUvQ,EAAiBiR,GAIlE,GAFoBtqB,SAAhBsqB,IAA6BA,GAAc,GAE3CjtB,UAAUc,QAAU,EAEpB,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEjCksB,GAAgBA,GAAeh0B,KAAK2rB,SAAS7jB,GAAG0iB,SAEjD8I,EAASxsB,KAAKic,EAAiB/iB,KAAK2rB,SAAS7jB,QAKzD,CAKI,IAAK,GAFDnB,IAAQ,MAEHmB,EAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,GAGxB,KAAK,GAAIA,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEjCksB,GAAgBA,GAAeh0B,KAAK2rB,SAAS7jB,GAAG0iB,UAEjD7jB,EAAK,GAAK3G,KAAK2rB,SAAS7jB,GACxBwrB,EAASrsB,MAAM8b,EAAiBpc,MAiBhDtG,EAAOmtB,MAAMnnB,UAAU6tB,cAAgB,SAAUZ,EAAUvQ,GAEvD,GAAIpc,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,GAAQ,KAER,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B9H,KAAKm0B,QAAQ,UAAU,EAAM9zB,EAAOmtB,MAAM4B,aAAckE,EAAUvQ,EAAiBpc,IAcvFtG,EAAOmtB,MAAMnnB,UAAU+tB,aAAe,SAAUd,EAAUvQ,GAEtD,GAAIpc,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,GAAQ,KAER,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B9H,KAAKm0B,QAAQ,SAAS,EAAM9zB,EAAOmtB,MAAM4B,aAAckE,EAAUvQ,EAAiBpc,IActFtG,EAAOmtB,MAAMnnB,UAAUguB,YAAc,SAAUf,EAAUvQ,GAErD,GAAIpc,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,GAAQ,KAER,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B9H,KAAKm0B,QAAQ,SAAS,EAAO9zB,EAAOmtB,MAAM4B,aAAckE,EAAUvQ,EAAiBpc,IAkBvFtG,EAAOmtB,MAAMnnB,UAAUiuB,KAAO,SAAUvoB,EAAKwoB,GAErCv0B,KAAK2rB,SAAS9jB,OAAS,IAMf6B,SAARqC,IAAqBA,EAAM,KACjBrC,SAAV6qB,IAAuBA,EAAQl0B,EAAOmtB,MAAM+B,gBAEhDvvB,KAAKkvB,cAAgBnjB,EAEjBwoB,IAAUl0B,EAAOmtB,MAAM+B,eAEvBvvB,KAAK2rB,SAAS2I,KAAKt0B,KAAKw0B,qBAAqBluB,KAAKtG,OAIlDA,KAAK2rB,SAAS2I,KAAKt0B,KAAKy0B,sBAAsBnuB,KAAKtG,OAGvDA,KAAK+vB,YAcT1vB,EAAOmtB,MAAMnnB,UAAUquB,WAAa,SAAUC,EAAatQ,GAEnDrkB,KAAK2rB,SAAS9jB,OAAS,IAM3B7H,KAAK2rB,SAAS2I,KAAKK,EAAYruB,KAAK+d,IAEpCrkB,KAAK+vB,YAYT1vB,EAAOmtB,MAAMnnB,UAAUmuB,qBAAuB,SAAU/lB,EAAGI,GAEvD,MAAIJ,GAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,gBAExB,EAEFzgB,EAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,eAE7B,EAIHzgB,EAAEqf,EAAIjf,EAAEif,GAED,EAIA,GAcnBztB,EAAOmtB,MAAMnnB,UAAUouB,sBAAwB,SAAUhmB,EAAGI,GAExD,MAAIJ,GAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,eAExB,EAEFzgB,EAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,gBAE7B,EAIA,GAiCf7uB,EAAOmtB,MAAMnnB,UAAU8tB,QAAU,SAAUpoB,EAAKxC,EAAOqrB,EAAYtB,EAAUvQ,EAAiBpc,GAE1F,GAA6B,IAAzB3G,KAAK2rB,SAAS9jB,OAClB,CACI,GAAI+sB,IAAev0B,EAAOmtB,MAAM4B,aAE5B,MAAO,EAEN,IAAIwF,IAAev0B,EAAOmtB,MAAM8B,WAEjC,SAIR,GAAIuF,GAAQ,CAEZ,IAAID,IAAev0B,EAAOmtB,MAAM8B,WAE5B,GAAIvhB,KAGR,KAAK,GAAIjG,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC,GAAI9H,KAAK2rB,SAAS7jB,GAAGiE,KAASxC,EAC9B,CAgBI,GAfAsrB,IAEIvB,IAEI3sB,GAEAA,EAAK,GAAK3G,KAAK2rB,SAAS7jB,GACxBwrB,EAASrsB,MAAM8b,EAAiBpc,IAIhC2sB,EAASxsB,KAAKic,EAAiB/iB,KAAK2rB,SAAS7jB,KAIjD8sB,IAAev0B,EAAOmtB,MAAM6B,aAE5B,MAAOrvB,MAAK2rB,SAAS7jB,EAEhB8sB,KAAev0B,EAAOmtB,MAAM8B,YAEjCvhB,EAAO6E,KAAK5S,KAAK2rB,SAAS7jB,IAKtC,MAAI8sB,KAAev0B,EAAOmtB,MAAM4B,aAErByF,EAEFD,IAAev0B,EAAOmtB,MAAM8B,WAE1BvhB,EAKA,MAwBf1N,EAAOmtB,MAAMnnB,UAAUyuB,eAAiB,SAAUtK,EAAQuK,EAAc9uB,EAAGwG,EAAGV,EAAK4kB,GAE1DjnB,SAAjBqrB,IAA8BA,GAAe,GAE3B,iBAAXvK,KAEPA,GAAS,EAGb,IAAIiF,GAAQzvB,KAAKm0B,QAAQ,SAAU3J,EAAQnqB,EAAOmtB,MAAM6B,aAExD,OAAkB,QAAVI,GAAkBsF,EAAgB/0B,KAAK0gB,OAAOza,EAAGwG,EAAGV,EAAK4kB,GAAS3wB,KAAKg1B,WAAWvF,EAAOxpB,EAAGwG,EAAGV,EAAK4kB,IAwBhHtwB,EAAOmtB,MAAMnnB,UAAU4uB,cAAgB,SAAUF,EAAc9uB,EAAGwG,EAAGV,EAAK4kB,GAEjDjnB,SAAjBqrB,IAA8BA,GAAe,EAEjD,IAAItF,GAAQzvB,KAAKm0B,QAAQ,SAAS,EAAM9zB,EAAOmtB,MAAM6B,aAErD,OAAkB,QAAVI,GAAkBsF,EAAgB/0B,KAAK0gB,OAAOza,EAAGwG,EAAGV,EAAK4kB,GAAS3wB,KAAKg1B,WAAWvF,EAAOxpB,EAAGwG,EAAGV,EAAK4kB,IAwBhHtwB,EAAOmtB,MAAMnnB,UAAU6uB,aAAe,SAAUH,EAAc9uB,EAAGwG,EAAGV,EAAK4kB,GAEhDjnB,SAAjBqrB,IAA8BA,GAAe,EAEjD,IAAItF,GAAQzvB,KAAKm0B,QAAQ,SAAS,EAAO9zB,EAAOmtB,MAAM6B,aAEtD,OAAkB,QAAVI,GAAkBsF,EAAgB/0B,KAAK0gB,OAAOza,EAAGwG,EAAGV,EAAK4kB,GAAS3wB,KAAKg1B,WAAWvF,EAAOxpB,EAAGwG,EAAGV,EAAK4kB,IAmBhHtwB,EAAOmtB,MAAMnnB,UAAU2uB,WAAa,SAAUvF,EAAOxpB,EAAGwG,EAAGV,EAAK4kB,GAE5D,MAAc,QAAVlB,EAEO,MAGD/lB,SAANzD,IAAmBA,EAAI,MACjByD,SAAN+C,IAAmBA,EAAI,MAEjB,OAANxG,GAAoB,OAANwG,GAEdgjB,EAAM/P,MAAMzZ,EAAGwG,GAGP/C,SAARqC,GAEA0jB,EAAM0F,YAAYppB,EAAK4kB,GAGpBlB,IAYXpvB,EAAOmtB,MAAMnnB,UAAU+uB,OAAS,WAE5B,GAAIp1B,KAAK2rB,SAAS9jB,OAAS,EAEvB,MAAO7H,MAAK2rB,SAAS3rB,KAAK2rB,SAAS9jB,OAAS,IAapDxH,EAAOmtB,MAAMnnB,UAAUgvB,UAAY,WAE/B,GAAIr1B,KAAK2rB,SAAS9jB,OAAS,EAEvB,MAAO7H,MAAK2rB,SAAS,IAuB7BtrB,EAAOmtB,MAAMnnB,UAAUivB,aAAe,SAAUC,EAAQjC,EAAUvQ,GAM9D,IAAK,GAJDlV,GAAWsK,OAAOC,UAClBod,EAAe,EACflkB,EAAS,KAEJxJ,EAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAC1C,CACI,GAAI2nB,GAAQzvB,KAAK2rB,SAAS7jB,EAEtB2nB,GAAMjF,SAENgL,EAAezvB,KAAKoJ,IAAI9O,EAAO2M,MAAMa,SAAS0nB,EAAQ9F,IAElD+F,EAAe3nB,KAAcylB,GAAYA,EAASxsB,KAAKic,EAAiB0M,EAAO+F,MAE/E3nB,EAAW2nB,EACXlkB,EAASme,IAKrB,MAAOne,IAsBXjR,EAAOmtB,MAAMnnB,UAAUovB,gBAAkB,SAAUF,EAAQjC,EAAUvQ,GAMjE,IAAK,GAJDlV,GAAW,EACX2nB,EAAe,EACflkB,EAAS,KAEJxJ,EAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAC1C,CACI,GAAI2nB,GAAQzvB,KAAK2rB,SAAS7jB,EAEtB2nB,GAAMjF,SAENgL,EAAezvB,KAAKoJ,IAAI9O,EAAO2M,MAAMa,SAAS0nB,EAAQ9F,IAElD+F,EAAe3nB,KAAcylB,GAAYA,EAASxsB,KAAKic,EAAiB0M,EAAO+F,MAE/E3nB,EAAW2nB,EACXlkB,EAASme,IAKrB,MAAOne,IAUXjR,EAAOmtB,MAAMnnB,UAAUqvB,YAAc,WAEjC,MAAO11B,MAAKm0B,QAAQ,SAAS,EAAM9zB,EAAOmtB,MAAM4B,eAUpD/uB,EAAOmtB,MAAMnnB,UAAUsvB,UAAY,WAE/B,MAAO31B,MAAKm0B,QAAQ,SAAS,EAAO9zB,EAAOmtB,MAAM4B,eAYrD/uB,EAAOmtB,MAAMnnB,UAAUuvB,UAAY,SAAUC,EAAYhuB,GAKrD,MAHmB6B,UAAfmsB,IAA4BA,EAAa,GAC9BnsB,SAAX7B,IAAwBA,EAAS7H,KAAK2rB,SAAS9jB,QAEpC,IAAXA,EAEO,KAGJxH,EAAOy1B,WAAWC,cAAc/1B,KAAK2rB,SAAUkK,EAAYhuB,IAgBtExH,EAAOmtB,MAAMnnB,UAAU2vB,gBAAkB,SAAUH,EAAYI,GAE3D,GAAIC,GAAOl2B,KAAKm2B,OAAO,UAAU,EAAMN,EAAYI,EAEnD,OAAOj2B,MAAKwa,KAAKsE,IAAIsX,KAAKF,IAsB9B71B,EAAOmtB,MAAMnnB,UAAU8vB,OAAS,SAAUnD,EAAUzpB,EAAOssB,EAAYI,GAEhDvsB,SAAfmsB,IAA4BA,EAAa,GAC5BnsB,SAAbusB,IAA0BA,EAAWj2B,KAAK2rB,SAAS9jB,OAIvD,KAAK,GAFDkG,MAEKjG,EAAI+tB,EAAY/tB,EAAImuB,EAAUnuB,IACvC,CACI,GAAI2nB,GAAQzvB,KAAK2rB,SAAS7jB,EAEtBkrB,IAAYvD,EAAMuD,KAAczpB,GAEhCwE,EAAO6E,KAAK6c,GAIpB,MAAO1hB,IAiBX1N,EAAOmtB,MAAMnnB,UAAUyc,OAAS,SAAU2M,EAAO3L,EAAS4L,GAKtD,GAHgBhmB,SAAZoa,IAAyBA,GAAU,GACxBpa,SAAXgmB,IAAwBA,GAAS,GAER,IAAzB1vB,KAAK2rB,SAAS9jB,QAAgB7H,KAAK2rB,SAAS2E,QAAQb,MAAW,EAE/D,OAAO,CAGNC,KAAUD,EAAMU,QAAWV,EAAM4G,cAElC5G,EAAMU,OAAOmG,4BAA4B7G,EAAOzvB,KAGpD,IAAIu2B,GAAUv2B,KAAKsyB,YAAY7C,EAgB/B,OAdAzvB,MAAK6vB,eAAeJ,GAEpBzvB,KAAK+vB,UAED/vB,KAAKquB,SAAWoB,GAEhBzvB,KAAKuxB,OAGLzN,GAAWyS,GAEXA,EAAQzS,SAAQ,IAGb,GAYXzjB,EAAOmtB,MAAMnnB,UAAUmqB,QAAU,SAAUgG,EAAO9G,GAI9C,GAFehmB,SAAXgmB,IAAwBA,GAAS,GAEjC1vB,KAAK2rB,SAAS9jB,OAAS,GAAK2uB,YAAiBn2B,GAAOmtB,MACxD,CACI,EAEIgJ,GAAM3kB,IAAI7R,KAAK2rB,SAAS,GAAI+D,SAEzB1vB,KAAK2rB,SAAS9jB,OAAS,EAE9B7H,MAAKivB,QAELjvB,KAAKquB,OAAS,KAGlB,MAAOmI,IAiBXn2B,EAAOmtB,MAAMnnB,UAAUud,UAAY,SAAUE,EAAS4L,EAAQ+G,GAM1D,GAJgB/sB,SAAZoa,IAAyBA,GAAU,GACxBpa,SAAXgmB,IAAwBA,GAAS,GACdhmB,SAAnB+sB,IAAgCA,GAAiB,GAExB,IAAzBz2B,KAAK2rB,SAAS9jB,OAAlB,CAKA,EACA,EACS6nB,GAAU1vB,KAAK2rB,SAAS,GAAGwE,QAE5BnwB,KAAK2rB,SAAS,GAAGwE,OAAOmG,4BAA4Bt2B,KAAK2rB,SAAS,GAAI3rB,KAG1E,IAAIu2B,GAAUv2B,KAAKsyB,YAAYtyB,KAAK2rB,SAAS,GAE7C3rB,MAAK6vB,eAAe0G,GAEhBzS,GAAWyS,GAEXA,EAAQzS,SAAQ,EAAM2S,SAGvBz2B,KAAK2rB,SAAS9jB,OAAS,EAE9B7H,MAAKivB,QAELjvB,KAAKquB,OAAS,OAalBhuB,EAAOmtB,MAAMnnB,UAAUqwB,cAAgB,SAAUb,EAAYI,EAAUnS,EAAS4L,GAM5E,GAJiBhmB,SAAbusB,IAA0BA,EAAWj2B,KAAK2rB,SAAS9jB,OAAS,GAChD6B,SAAZoa,IAAyBA,GAAU,GACxBpa,SAAXgmB,IAAwBA,GAAS,GAER,IAAzB1vB,KAAK2rB,SAAS9jB,OAAlB,CAKA,GAAIguB,EAAaI,GAAYJ,EAAa,GAAKI,EAAWj2B,KAAK2rB,SAAS9jB,OAEpE,OAAO,CAKX,KAFA,GAAIC,GAAImuB,EAEDnuB,GAAK+tB,GACZ,EACSnG,GAAU1vB,KAAK2rB,SAAS7jB,GAAGqoB,QAE5BnwB,KAAK2rB,SAAS7jB,GAAGqoB,OAAOmG,4BAA4Bt2B,KAAK2rB,SAAS7jB,GAAI9H,KAG1E,IAAIu2B,GAAUv2B,KAAKsyB,YAAYtyB,KAAK2rB,SAAS7jB,GAE7C9H,MAAK6vB,eAAe0G,GAEhBzS,GAAWyS,GAEXA,EAAQzS,SAAQ,GAGhB9jB,KAAKquB,SAAWruB,KAAK2rB,SAAS7jB,KAE9B9H,KAAKquB,OAAS,MAGlBvmB,IAGJ9H,KAAK+vB,YAaT1vB,EAAOmtB,MAAMnnB,UAAUyd,QAAU,SAAU6S,EAAiBC,GAEtC,OAAd52B,KAAKwa,MAAiBxa,KAAKiuB,gBAEPvkB,SAApBitB,IAAiCA,GAAkB,GAC1CjtB,SAATktB,IAAsBA,GAAO,GAEjC52B,KAAK6uB,UAAUhQ,SAAS7e,KAAM22B,EAAiBC,GAE/C52B,KAAK4jB,UAAU+S,GAEf32B,KAAKquB,OAAS,KACdruB,KAAKspB,QAAU,KACftpB,KAAKkuB,gBAAiB,EAEjB0I,IAEG52B,KAAKwpB,QAELxpB,KAAKwpB,OAAO8I,YAAYtyB,MAG5BA,KAAKwa,KAAO,KACZxa,KAAKwqB,QAAS,KAYtBjjB,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,SAE1C2F,IAAK,WAED,MAAOhM,MAAKm0B,QAAQ,UAAU,EAAM9zB,EAAOmtB,MAAM4B,iBAazD7nB,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,UAE1C2F,IAAK,WAED,MAAOhM,MAAK2rB,SAAS9jB,UAiB7BN,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,SAE1C2F,IAAK,WACD,MAAO3L,GAAO0F,KAAK2P,SAAS1V,KAAK62B,WAGrC5qB,IAAK,SAAS1C,GACVvJ,KAAK62B,SAAWx2B,EAAO0F,KAAKgJ,SAASxF,MAmB7ChC,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,WAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYmL,SAI5BxM,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKiG,EAAIiH,EAAEjH,CAExBjG,MAAKiG,EAAKsD,EAAQ6E,EAAUlB,EAAEkC,aAoBtC7H,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,WAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYoL,SAI5BzM,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKyM,EAAIS,EAAET,CAExBzM,MAAKyM,EAAKlD,EAAQ6E,EAAUlB,EAAEqC,cAoBtChI,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,QAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYzC,MAI5BoB,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKiG,EAAIiH,EAAEjH,CAExBjG,MAAKiG,EAAIsD,EAAQ6E,KAoBzB7G,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,SAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAY1C,OAI5BqB,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKiG,EAAIiH,EAAEjH,CAExBjG,MAAKiG,EAAKsD,EAAQ6E,EAAUlB,EAAE6C,SAoBtCxI,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,OAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYoB,KAI5BzC,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKyM,EAAIS,EAAET,CAExBzM,MAAKyM,EAAKlD,EAAQ6E,KAoB1B7G,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,UAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYqB,QAI5B1C,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKyM,EAAIS,EAAET,CAExBzM,MAAKyM,EAAKlD,EAAQ6E,EAAUlB,EAAE8C,UAiKtC3P,EAAOy2B,MAAQ,SAAUtc,GAErBna,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,EAAM,KAAM,WAAW,GAS/Cxa,KAAK2a,OAAS,GAAIta,GAAOkN,UAAU,EAAG,EAAGiN,EAAKzK,MAAOyK,EAAKxK,QAK1DhQ,KAAK4c,OAAS,KAMd5c,KAAK+2B,cAAe,EAKpB/2B,KAAKg3B,OAASxc,EAAKzK,MAKnB/P,KAAKi3B,QAAUzc,EAAKxK,OAEpBhQ,KAAKwa,KAAK0F,MAAMuB,cAAc5P,IAAI7R,KAAKk3B,YAAal3B,OAIxDK,EAAOy2B,MAAMzwB,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACpDhG,EAAOy2B,MAAMzwB,UAAU8B,YAAc9H,EAAOy2B,MAQ5Cz2B,EAAOy2B,MAAMzwB,UAAUsW,KAAO,WAE1B3c,KAAK4c,OAAS,GAAIvc,GAAOka,OAAOva,KAAKwa,KAAM,EAAG,EAAG,EAAGxa,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAE/EhQ,KAAKwa,KAAKsC,MAAMC,SAAS/c,MAEzBA,KAAK4c,OAAOD,QAahBtc,EAAOy2B,MAAMzwB,UAAU6wB,YAAc,WAEjCl3B,KAAKiG,EAAI,EACTjG,KAAKyM,EAAI,EAETzM,KAAK4c,OAAO8C,SAchBrf,EAAOy2B,MAAMzwB,UAAU8wB,UAAY,SAAUlxB,EAAGwG,EAAGsD,EAAOC,GAEtDhQ,KAAK+2B,cAAe,EACpB/2B,KAAKg3B,OAASjnB,EACd/P,KAAKi3B,QAAUjnB,EAEfhQ,KAAK2a,OAAOnN,MAAMvH,EAAGwG,EAAGsD,EAAOC,GAE/BhQ,KAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EAELzM,KAAK4c,OAAOjC,QAGZ3a,KAAK4c,OAAOjC,OAAOnN,MAAMvH,EAAGwG,EAAG1G,KAAKoM,IAAIpC,EAAO/P,KAAKwa,KAAKzK,OAAQhK,KAAKoM,IAAInC,EAAQhQ,KAAKwa,KAAKxK,SAGhGhQ,KAAKwa,KAAK6F,QAAQjB,oBAWtB/e,EAAOy2B,MAAMzwB,UAAUyS,OAAS,SAAU/I,EAAOC,GAIzChQ,KAAK+2B,eAEDhnB,EAAQ/P,KAAKg3B,SAEbjnB,EAAQ/P,KAAKg3B,QAGbhnB,EAAShQ,KAAKi3B,UAEdjnB,EAAShQ,KAAKi3B,UAItBj3B,KAAK2a,OAAO5K,MAAQA,EACpB/P,KAAK2a,OAAO3K,OAASA,EAErBhQ,KAAKwa,KAAKoC,OAAOwC,mBAEjBpf,KAAKwa,KAAK6F,QAAQjB,oBAStB/e,EAAOy2B,MAAMzwB,UAAU2a,SAAW,WAG9BhhB,KAAK8jB,SAAQ,GAAM,IAmBvBzjB,EAAOy2B,MAAMzwB,UAAU0M,KAAO,SAAUqkB,EAAQ1P,EAAS2P,EAAWvb,EAAYC,GAE5DrS,SAAZge,IAAyBA,EAAU,GACrBhe,SAAd2tB,IAA2BA,GAAY,GACxB3tB,SAAfoS,IAA4BA,GAAa,GAC5BpS,SAAbqS,IAA0BA,GAAW,GAEpCsb,GAsBDD,EAAO9pB,YAEHwO,IAEKsb,EAAOnxB,EAAImxB,EAAOE,eAAevnB,MAAS/P,KAAK2a,OAAO1U,EAEvDmxB,EAAOnxB,EAAIjG,KAAK2a,OAAO/P,MAElBwsB,EAAOnxB,EAAIjG,KAAK2a,OAAO/P,QAE5BwsB,EAAOnxB,EAAIjG,KAAK2a,OAAO9P,OAI3BkR,IAEKqb,EAAO3qB,EAAI2qB,EAAOE,eAAetnB,OAAUhQ,KAAK2a,OAAOjM,IAExD0oB,EAAO3qB,EAAIzM,KAAK2a,OAAOhM,OAElByoB,EAAO3qB,EAAIzM,KAAK2a,OAAOhM,SAE5ByoB,EAAO3qB,EAAIzM,KAAK2a,OAAOjM,QA1C3BoN,GAAcsb,EAAOnxB,EAAIyhB,EAAU1nB,KAAK2a,OAAO1U,EAE/CmxB,EAAOnxB,EAAIjG,KAAK2a,OAAO/P,MAAQ8c,EAE1B5L,GAAcsb,EAAOnxB,EAAIyhB,EAAU1nB,KAAK2a,OAAO/P,QAEpDwsB,EAAOnxB,EAAIjG,KAAK2a,OAAO9P,KAAO6c,GAG9B3L,GAAYqb,EAAO3qB,EAAIib,EAAU1nB,KAAK2a,OAAOjM,IAE7C0oB,EAAO3qB,EAAIzM,KAAK2a,OAAOhM,OAAS+Y,EAE3B3L,GAAYqb,EAAO3qB,EAAIib,EAAU1nB,KAAK2a,OAAOhM,SAElDyoB,EAAO3qB,EAAIzM,KAAK2a,OAAOjM,IAAMgZ,KAsCzCngB,OAAO2E,eAAe7L,EAAOy2B,MAAMzwB,UAAW,SAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAO5K,OAGvB9D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKwa,KAAKzK,QAElBxG,EAAQvJ,KAAKwa,KAAKzK,OAGtB/P,KAAK2a,OAAO5K,MAAQxG,EACpBvJ,KAAKg3B,OAASztB,EACdvJ,KAAK+2B,cAAe,KAU5BxvB,OAAO2E,eAAe7L,EAAOy2B,MAAMzwB,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAO3K,QAGvB/D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKwa,KAAKxK,SAElBzG,EAAQvJ,KAAKwa,KAAKxK,QAGtBhQ,KAAK2a,OAAO3K,OAASzG,EACrBvJ,KAAKi3B,QAAU1tB,EACfvJ,KAAK+2B,cAAe,KAW5BxvB,OAAO2E,eAAe7L,EAAOy2B,MAAMzwB,UAAW,WAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAOvL,UAAYpP,KAAK2a,OAAO1U,KAUnDsB,OAAO2E,eAAe7L,EAAOy2B,MAAMzwB,UAAW,WAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAOpL,WAAavP,KAAK2a,OAAOlO,KAUpDlF,OAAO2E,eAAe7L,EAAOy2B,MAAMzwB,UAAW,WAE1C2F,IAAK,WAED,MAAIhM,MAAK2a,OAAO1U,EAAI,EAETjG,KAAKwa,KAAKsE,IAAIyY,QAAQv3B,KAAK2a,OAAO1U,EAAIjG,KAAK2a,OAAO5K,MAAQhK,KAAKoJ,IAAInP,KAAK2a,OAAO1U,IAI/EjG,KAAKwa,KAAKsE,IAAIyY,QAAQv3B,KAAK2a,OAAO1U,EAAGjG,KAAK2a,OAAO5K,UAYpExI,OAAO2E,eAAe7L,EAAOy2B,MAAMzwB,UAAW,WAE1C2F,IAAK,WAED,MAAIhM,MAAK2a,OAAOlO,EAAI,EAETzM,KAAKwa,KAAKsE,IAAIyY,QAAQv3B,KAAK2a,OAAOlO,EAAIzM,KAAK2a,OAAO3K,OAASjK,KAAKoJ,IAAInP,KAAK2a,OAAOlO,IAIhFzM,KAAKwa,KAAKsE,IAAIyY,QAAQv3B,KAAK2a,OAAOlO,EAAGzM,KAAK2a,OAAO3K,WA+BpE3P,EAAOm3B,KAAO,SAAUznB,EAAOC,EAAQynB,EAAUjO,EAAQtJ,EAAO8K,EAAa0M,EAAWC,GAyZpF,MAnZA33B,MAAK2U,GAAKtU,EAAOE,MAAMqS,KAAK5S,MAAQ,EAKpCA,KAAKirB,OAAS,KAKdjrB,KAAK23B,cAAgBA,EAMrB33B,KAAKwpB,OAAS,GAWdxpB,KAAK+P,MAAQ,IAWb/P,KAAKgQ,OAAS,IASdhQ,KAAK6nB,WAAa,EAMlB7nB,KAAKg3B,OAAS,IAMdh3B,KAAKi3B,QAAU,IAMfj3B,KAAKgrB,aAAc,EAMnBhrB,KAAK03B,WAAY,EAMjB13B,KAAK43B,uBAAwB,EAQ7B53B,KAAK63B,mBAAoB,EAMzB73B,KAAKy3B,SAAW,KAMhBz3B,KAAKokB,WAAa/jB,EAAOG,KAKzBR,KAAKkgB,MAAQ,KAMblgB,KAAK6iB,UAAW,EAMhB7iB,KAAK83B,WAAY,EAMjB93B,KAAK+3B,IAAM,KAKX/3B,KAAK6R,IAAM,KAKX7R,KAAK6f,KAAO,KAKZ7f,KAAK8f,MAAQ,KAKb9f,KAAK+f,MAAQ,KAKb/f,KAAKggB,KAAO,KAKZhgB,KAAKkf,KAAO,KAKZlf,KAAKg4B,IAAM,KAKXh4B,KAAK6U,MAAQ,KAKb7U,KAAKigB,MAAQ,KAKbjgB,KAAK8c,MAAQ,KAKb9c,KAAK2e,KAAO,KAKZ3e,KAAKmgB,OAAS,KAKdngB,KAAKya,MAAQ,KAKbza,KAAKqgB,QAAU,KAKfrgB,KAAKgqB,QAAU,KAKfhqB,KAAK8e,IAAM,KAKX9e,KAAK0sB,OAASrsB,EAAO43B,OAKrBj4B,KAAK4c,OAAS,KAKd5c,KAAKsrB,OAAS,KAKdtrB,KAAKqkB,QAAU,KAKfrkB,KAAK6jB,MAAQ,KAKb7jB,KAAKogB,UAAY,KAKjBpgB,KAAK0gB,OAAS,KASd1gB,KAAKk4B,YAAa,EAOlBl4B,KAAKm4B,UAAW,EAOhBn4B,KAAKo4B,aAAc,EAOnBp4B,KAAKq4B,UAAY,EAKjBr4B,KAAKuiB,QAAU,KAKfviB,KAAKyiB,SAAW,KAKhBziB,KAAKs4B,OAAS,KAKdt4B,KAAKu4B,QAAU,KAMfv4B,KAAKw4B,SAAU,EAMfx4B,KAAKy4B,aAAc,EAQnBz4B,KAAK04B,gBAAkB,EAOvB14B,KAAK24B,iBAAmB,EAMxB34B,KAAK44B,WAAa,EAMlB54B,KAAK64B,WAAa,EAMlB74B,KAAK84B,WAAa,EAMlB94B,KAAKikB,YAAa,EAQlBjkB,KAAK+4B,mBAAqB,GAAI14B,GAAO+a,OAKrCpb,KAAKg5B,mBAAoB,EAMzBh5B,KAAKi5B,qBAAuB,EAGH,IAArBlyB,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C/G,KAAKkrB,YAAYnkB,UAAU,KAI3B/G,KAAKirB,QAAWiO,aAAa,GAER,mBAAVnpB,KAEP/P,KAAKg3B,OAASjnB,GAGI,mBAAXC,KAEPhQ,KAAKi3B,QAAUjnB,GAGK,mBAAbynB,KAEPz3B,KAAKokB,WAAaqT,GAGA,mBAAXjO,KAEPxpB,KAAKwpB,OAASA,GAGS,mBAAhBwB,KAEPhrB,KAAKgrB,YAAcA,GAGE,mBAAd0M,KAEP13B,KAAK03B,UAAYA,GAGrB13B,KAAK8e,IAAM,GAAIze,GAAO84B,sBAAsBvR,KAAKwR,MAAQrzB,KAAK4D,UAAUnC,aAExExH,KAAKkgB,MAAQ,GAAI7f,GAAO4gB,aAAajhB,KAAMkgB,IAG/ClgB,KAAK0sB,OAAO2M,UAAUr5B,KAAK2c,KAAM3c,MAE1BA,MAIXK,EAAOm3B,KAAKnxB,WAQR6kB,YAAa,SAAUD,GAEnBjrB,KAAKirB,OAASA,EAEgBvhB,SAA1BuhB,EAAoB,cAEpBjrB,KAAKirB,OAAOiO,aAAc,GAG1BjO,EAAc,QAEdjrB,KAAKg3B,OAAS/L,EAAc,OAG5BA,EAAe,SAEfjrB,KAAKi3B,QAAUhM,EAAe,QAG9BA,EAAiB,WAEjBjrB,KAAKokB,WAAa6G,EAAiB,UAGnCA,EAAe,SAEfjrB,KAAKwpB,OAASyB,EAAe,QAGHvhB,SAA1BuhB,EAAoB,cAEpBjrB,KAAKgrB,YAAcC,EAAoB,aAGfvhB,SAAxBuhB,EAAkB,YAElBjrB,KAAK03B,UAAYzM,EAAkB,WAGnCA,EAAmB,aAEnBjrB,KAAK6nB,WAAaoD,EAAmB,YAGDvhB,SAApCuhB,EAA8B,wBAE9BjrB,KAAK43B,sBAAwB3M,EAA8B,uBAG3DA,EAAsB,gBAEtBjrB,KAAK23B,cAAgB1M,EAAsB,cAG/C,IAAIqO,KAAS1R,KAAKwR,MAAQrzB,KAAK4D,UAAUnC,WAErCyjB,GAAa,OAEbqO,EAAOrO,EAAa,MAGxBjrB,KAAK8e,IAAM,GAAIze,GAAO84B,oBAAoBG,EAE1C,IAAIpZ,GAAQ,IAER+K,GAAc,QAEd/K,EAAQ+K,EAAc,OAG1BjrB,KAAKkgB,MAAQ,GAAI7f,GAAO4gB,aAAajhB,KAAMkgB,IAU/CvD,KAAM,WAEE3c,KAAK6iB,WAKT7iB,KAAKuiB,QAAU,GAAIliB,GAAO+a,OAC1Bpb,KAAKyiB,SAAW,GAAIpiB,GAAO+a,OAC3Bpb,KAAKs4B,OAAS,GAAIj4B,GAAO+a,OACzBpb,KAAKu4B,QAAU,GAAIl4B,GAAO+a,OAE1Bpb,KAAK6iB,UAAW,EAEhB/c,KAAK0U,KAAOxa,KAEZA,KAAKkf,KAAO7e,EAAO0F,KAEnB/F,KAAK6U,MAAQ,GAAIxU,GAAOk5B,aAAav5B,KAAMA,KAAKg3B,OAAQh3B,KAAKi3B,SAC7Dj3B,KAAK8c,MAAQ,GAAIzc,GAAOgqB,MAAMrqB,MAE9BA,KAAKw5B,gBAELx5B,KAAKya,MAAQ,GAAIpa,GAAOy2B,MAAM92B,MAC9BA,KAAK6R,IAAM,GAAIxR,GAAOo5B,kBAAkBz5B,MACxCA,KAAK6f,KAAO,GAAIxf,GAAOq5B,kBAAkB15B,MACzCA,KAAK8f,MAAQ,GAAIzf,GAAOs5B,MAAM35B,MAC9BA,KAAKggB,KAAO,GAAI3f,GAAOu5B,OAAO55B,MAC9BA,KAAK2e,KAAO,GAAIte,GAAOw5B,KAAK75B,MAC5BA,KAAKmgB,OAAS,GAAI9f,GAAOy5B,aAAa95B,MACtCA,KAAK+f,MAAQ,GAAI1f,GAAO05B,MAAM/5B,MAC9BA,KAAKigB,MAAQ,GAAI5f,GAAO25B,aAAah6B,MACrCA,KAAKqgB,QAAU,GAAIhgB,GAAOutB,QAAQ5tB,KAAMA,KAAK23B,eAC7C33B,KAAKogB,UAAY,GAAI/f,GAAO45B,UAAUj6B,MACtCA,KAAK0gB,OAAS,GAAIrgB,GAAO65B,OAAOl6B,MAChCA,KAAKgqB,QAAU,GAAI3pB,GAAO0pB,cAAc/pB,MACxCA,KAAKg4B,IAAM,GAAI33B,GAAO85B,IAAIn6B,MAE1BA,KAAK2e,KAAKhC,OACV3c,KAAK8c,MAAMH,OACX3c,KAAKya,MAAMkC,OACX3c,KAAK6U,MAAM8H,OACX3c,KAAK+f,MAAMpD,OACX3c,KAAKigB,MAAMtD,OACX3c,KAAKkgB,MAAMvD,OAEP3c,KAAKirB,OAAoB,aAEzBjrB,KAAK6jB,MAAQ,GAAIxjB,GAAOmI,MAAM4xB,MAAMp6B,MACpCA,KAAK6jB,MAAMlH,QAIX3c,KAAK6jB,OAAU7G,UAAW,aAAgBuB,OAAQ,aAAgBmB,MAAO,cAG7E1f,KAAKq6B,kBAELr6B,KAAK83B,WAAY,EAEb93B,KAAKirB,QAAUjrB,KAAKirB,OAAwB,gBAE5CjrB,KAAK+3B,IAAM,GAAI13B,GAAOi6B,sBAAsBt6B,KAAMA,KAAKirB,OAAwB,iBAI/EjrB,KAAK+3B,IAAM,GAAI13B,GAAOi6B,sBAAsBt6B,OAAM,IAGtDA,KAAKikB,YAAa,EAEdlc,OAAc,SAETA,OAAqB,cAAMA,OAAqB,eAAMA,OAAqB,aAAEwyB,YAE9ExyB,OAAOyyB,QAIfx6B,KAAK+3B,IAAIrnB,UAUb2pB,gBAAiB,WAEb,IAAItyB,OAAqB,eAAKA,OAAqB,aAAE0yB,WAArD,CAKA,GAAIC,GAAIr6B,EAAOC,QACX4M,EAAI,SACJuB,EAAI,aACJQ,EAAI,CAkBR,IAhBIjP,KAAKokB,aAAe/jB,EAAOK,OAE3BwM,EAAI,QACJ+B,KAEKjP,KAAKokB,YAAc/jB,EAAOM,WAE/BuM,EAAI,YAGJlN,KAAK0sB,OAAOiO,WAEZlsB,EAAI,WACJQ,KAGAjP,KAAK0sB,OAAOkO,OAChB,CAWI,IAAK,GAVDj0B,IACA,oBAAsB+zB,EAAI,gBAAkBxtB,EAAI,MAAQuB,EAAI,wCAC5D,sBACA,sBACA,uCACA,sBACA,sBACA,uBAGK3G,EAAI,EAAGA,EAAI,EAAGA,IAEfA,EAAImH,EAEJtI,EAAKiM,KAAK,oCAIVjM,EAAKiM,KAAK,mCAIlBxK,SAAQC,IAAIpB,MAAMmB,QAASzB,OAEtBoB,QAAgB,SAErBK,QAAQC,IAAI,WAAaqyB,EAAI,cAAgB50B,KAAKxF,QAAU,MAAQ4M,EAAI,MAAQuB,EAAI,yBAW5F+qB,cAAe,WAoBX,GAlBIx5B,KAAKirB,OAAe,OAEpBjrB,KAAKsrB,OAAStrB,KAAKirB,OAAe,OAIlCjrB,KAAKsrB,OAASjrB,EAAOkrB,OAAO7K,OAAO1gB,KAAMA,KAAK+P,MAAO/P,KAAKgQ,OAAQhQ,KAAKirB,OAAiB,UAAG,GAG3FjrB,KAAKirB,OAAoB,YAEzBjrB,KAAKsrB,OAAOpO,MAAQld,KAAKirB,OAAoB,YAI7CjrB,KAAKsrB,OAAOpO,MAAM,uBAAyB,4BAG3Cld,KAAKokB,aAAe/jB,EAAOM,UAAYX,KAAKokB,aAAe/jB,EAAOI,QAAWT,KAAKokB,aAAe/jB,EAAOG,OAASR,KAAK0sB,OAAOmO,MACjI,CACI,IAAI76B,KAAK0sB,OAAOpB,OAWZ,KAAM,IAAItU,OAAM,iEARhBhX,MAAKokB,WAAa/jB,EAAOI,OAEzBT,KAAKy3B,SAAW,GAAI3xB,MAAKg1B,eAAe96B,MAExCA,KAAKqkB,QAAUrkB,KAAKy3B,SAASpT,YAUjCrkB,MAAKokB,WAAa/jB,EAAOK,MAEzBV,KAAKy3B,SAAW,GAAI3xB,MAAKi1B,cAAc/6B,MAEvCA,KAAKqkB,QAAU,KAEfrkB,KAAKsrB,OAAOe,iBAAiB,mBAAoBrsB,KAAKg7B,YAAY10B,KAAKtG,OAAO,GAC9EA,KAAKsrB,OAAOe,iBAAiB,uBAAwBrsB,KAAKi7B,gBAAgB30B,KAAKtG,OAAO,EAGtFA,MAAK0sB,OAAOwO,WAEZl7B,KAAKsrB,OAAO6P,aAAgBn7B,KAAKokB,aAAe/jB,EAAOI,QAGvDT,KAAKokB,aAAe/jB,EAAOM,WAE3BX,KAAK8c,MAAMse,SAAWp7B,KAAK03B,UAE3Br3B,EAAOkrB,OAAO8P,SAASr7B,KAAKsrB,OAAQtrB,KAAKwpB,QAAQ,GACjDnpB,EAAOkrB,OAAOE,eAAezrB,KAAKsrB,UAY1C0P,YAAa,SAAU7O,GAEnBA,EAAMmP,iBAENt7B,KAAKy3B,SAASuD,aAAc,GAUhCC,gBAAiB,WAEbj7B,KAAKy3B,SAAS8D,cAEdv7B,KAAK8f,MAAM0b,kBAEXx7B,KAAKy3B,SAASuD,aAAc,GAWhCzc,OAAQ,SAAUI,GAId,GAFA3e,KAAK2e,KAAKJ,OAAOI,GAEb3e,KAAKikB,WASL,MAPAjkB,MAAKy7B,YAAYz7B,KAAK2e,KAAK+c,gBAG3B17B,KAAK27B,aAAa37B,KAAK2e,KAAKid,WAAa57B,KAAK2e,KAAKkd,iBAEnD77B,KAAKikB,YAAa,EAMtB,IAAIjkB,KAAK84B,WAAa,IAAM94B,KAAKg5B,kBAGzBh5B,KAAK2e,KAAKA,KAAO3e,KAAKi5B,uBAGtBj5B,KAAKi5B,qBAAuBj5B,KAAK2e,KAAKA,KAAO,IAG7C3e,KAAK+4B,mBAAmBla,YAI5B7e,KAAK44B,WAAa,EAClB54B,KAAK84B,WAAa,EAGlB94B,KAAK27B,aAAa37B,KAAK2e,KAAKid,WAAa57B,KAAK2e,KAAKkd,gBAGvD,CAEI,GAAIC,GAAkC,IAAvB97B,KAAK2e,KAAKid,WAAsB57B,KAAK2e,KAAKkd,UAGzD77B,MAAK44B,YAAc7yB,KAAKoM,IAAIpM,KAAKkM,IAAe,EAAX6pB,EAAc97B,KAAK2e,KAAKod,SAAU,EAIvE,IAAIC,GAAQ,CASZ,KAPAh8B,KAAK24B,iBAAmB5yB,KAAKI,MAAMnG,KAAK44B,WAAakD,GAEjD97B,KAAKg5B,oBAELh5B,KAAK24B,iBAAmB5yB,KAAKkM,IAAI,EAAGjS,KAAK24B,mBAGtC34B,KAAK44B,YAAckD,IAEtB97B,KAAK44B,YAAckD,EACnB97B,KAAK04B,gBAAkBsD,EAEvBh8B,KAAKy7B,YAAYz7B,KAAK2e,KAAK+c,gBAE3BM,KAEIh8B,KAAKg5B,mBAA+B,IAAVgD,IAM1Bh8B,KAAK2e,KAAKsd,SAKdD,GAAQh8B,KAAK64B,WAEb74B,KAAK84B,aAEAkD,EAAQh8B,KAAK64B,aAGlB74B,KAAK84B,WAAa,GAGtB94B,KAAK64B,WAAamD,EAGlBh8B,KAAK27B,aAAa37B,KAAK44B,WAAakD,KAY5CL,YAAa,SAAUS,GAEdl8B,KAAKw4B,SAAYx4B,KAAKo4B,aA8BvBp4B,KAAK6U,MAAMkM,cACX/gB,KAAKkgB,MAAMa,cACX/gB,KAAK6jB,MAAM7G,cA9BPhd,KAAKm4B,WAELn4B,KAAKo4B,aAAc,GAGvBp4B,KAAK6U,MAAMmI,YACXhd,KAAK6jB,MAAM7G,YACXhd,KAAK4c,OAAOI,YACZhd,KAAKqgB,QAAQrD,YACbhd,KAAKkgB,MAAMlD,UAAUkf,GACrBl8B,KAAKgqB,QAAQhN,UAAUkf,GACvBl8B,KAAK8c,MAAME,YAEXhd,KAAKkgB,MAAM3B,SACXve,KAAK8c,MAAMyB,SACXve,KAAKmgB,OAAO5B,SACZve,KAAKigB,MAAM1B,SACXve,KAAK+f,MAAMxB,SACXve,KAAKqgB,QAAQ9B,SACbve,KAAKogB,UAAU7B,SACfve,KAAKgqB,QAAQzL,SAEbve,KAAK8c,MAAMsN,aACXpqB,KAAKgqB,QAAQI,cAUjBpqB,KAAK8c,MAAM8O,mBAmBf+P,aAAc,SAAUxX,GAEhBnkB,KAAKk4B,aAKTl4B,KAAKkgB,MAAMS,UAAUwD,GAEjBnkB,KAAKokB,aAAe/jB,EAAOM,WAE3BX,KAAKy3B,SAAS7W,OAAO5gB,KAAK8c,OAE1B9c,KAAKgqB,QAAQpJ,OAAOuD,GAEpBnkB,KAAKkgB,MAAMU,OAAOuD,IAGtBnkB,KAAKgqB,QAAQF,WAAW3F,KAU5BgY,WAAY,WAERn8B,KAAKm4B,UAAW,EAChBn4B,KAAKo4B,aAAc,EACnBp4B,KAAKq4B,UAAY,GASrB+D,YAAa,WAETp8B,KAAKm4B,UAAW,EAChBn4B,KAAKo4B,aAAc,GAUvBiE,KAAM,WAEFr8B,KAAKo4B,aAAc,EACnBp4B,KAAKq4B,aAcTvU,QAAS,WAEL9jB,KAAK+3B,IAAIuE,OAETt8B,KAAKkgB,MAAM4D,UACX9jB,KAAKigB,MAAM6D,UACX9jB,KAAK6U,MAAMiP,UACX9jB,KAAK8c,MAAMgH,UACX9jB,KAAK+f,MAAM+D,UACX9jB,KAAKqgB,QAAQyD,UACb9jB,KAAKgqB,QAAQlG,UAEb9jB,KAAKkgB,MAAQ,KACblgB,KAAKigB,MAAQ,KACbjgB,KAAK6U,MAAQ,KACb7U,KAAK8c,MAAQ,KACb9c,KAAK+f,MAAQ,KACb/f,KAAKqgB,QAAU,KACfrgB,KAAKgqB,QAAU,KAEfhqB,KAAK8f,MAAQ,KACb9f,KAAKggB,KAAO,KACZhgB,KAAK2e,KAAO,KACZ3e,KAAKya,MAAQ,KAEbza,KAAK6iB,UAAW,EAEhB7iB,KAAKy3B,SAAS3T,SAAQ,GAEtBzjB,EAAOkrB,OAAOgR,cAAcv8B,KAAKsrB,QAEjCxlB,KAAK02B,gBAAkB,KAEvBn8B,EAAOE,MAAMP,KAAK2U,IAAM,MAW5BuY,WAAY,SAAUf,GAGbnsB,KAAKw4B,UAENx4B,KAAKw4B,SAAU,EAEfx4B,KAAK2e,KAAKuO,aAENltB,KAAKigB,MAAMwc,aAEXz8B,KAAKigB,MAAMyc,UAGf18B,KAAKuiB,QAAQ1D,SAASsN,GAGlBnsB,KAAK0sB,OAAOiQ,SAAW38B,KAAK0sB,OAAOkQ,MAEnC58B,KAAKk4B,YAAa,KAa9B/K,YAAa,SAAUhB,GAGfnsB,KAAKw4B,UAAYx4B,KAAKy4B,cAEtBz4B,KAAKw4B,SAAU,EAEfx4B,KAAK2e,KAAKwO,cAEVntB,KAAK+f,MAAML,QAEP1f,KAAKigB,MAAMwc,aAEXz8B,KAAKigB,MAAM4c,YAGf78B,KAAKyiB,SAAS5D,SAASsN,GAGnBnsB,KAAK0sB,OAAOiQ,SAAW38B,KAAK0sB,OAAOkQ,MAEnC58B,KAAKk4B,YAAa,KAa9BlL,UAAW,SAAUb,GAEjBnsB,KAAKs4B,OAAOzZ,SAASsN,GAEhBnsB,KAAK8c,MAAMyN,yBAEZvqB,KAAKktB,WAAWf,IAYxBc,UAAW,SAAUd,GAEjBnsB,KAAKu4B,QAAQ1Z,SAASsN,GAEjBnsB,KAAK8c,MAAMyN,yBAEZvqB,KAAKmtB,YAAYhB,KAO7B9rB,EAAOm3B,KAAKnxB,UAAU8B,YAAc9H,EAAOm3B,KAQ3CjwB,OAAO2E,eAAe7L,EAAOm3B,KAAKnxB,UAAW,UAEzC2F,IAAK,WACD,MAAOhM,MAAKw4B,SAGhBvsB,IAAK,SAAU1C,GAEPA,KAAU,GAENvJ,KAAKw4B,WAAY,IAEjBx4B,KAAKw4B,SAAU,EACfx4B,KAAKigB,MAAMyc,UACX18B,KAAK2e,KAAKuO,aACVltB,KAAKuiB,QAAQ1D,SAAS7e,OAE1BA,KAAKy4B,aAAc,IAIfz4B,KAAKw4B,UAELx4B,KAAKw4B,SAAU,EACfx4B,KAAK+f,MAAML,QACX1f,KAAKigB,MAAM4c,YACX78B,KAAK2e,KAAKwO,cACVntB,KAAKyiB,SAAS5D,SAAS7e,OAE3BA,KAAKy4B,aAAc,MA6B/Bp4B,EAAO05B,MAAQ,SAAUvf,GAKrBxa,KAAKwa,KAAOA,EAMZxa,KAAK88B,UAAY,KAMjB98B,KAAK+8B,WAAa,KAQlB/8B,KAAKg9B,iBAMLh9B,KAAKi9B,uBAAyB,KAM9Bj9B,KAAKk9B,8BAAgC,KAMrCl9B,KAAKm9B,SAAW,EAShBn9B,KAAKo9B,SAAU,EAMfp9B,KAAKq9B,mBAAqBh9B,EAAO05B,MAAMuD,oBAMvCt9B,KAAKuZ,SAAW,KAKhBvZ,KAAKu9B,MAAQ,KAObv9B,KAAKw9B,OAAS,KAKdx9B,KAAK6U,MAAQ,KAMb7U,KAAKy9B,aAAc,EAMnBz9B,KAAK09B,QAAU,IAMf19B,KAAK29B,cAAgB,IAMrB39B,KAAK49B,SAAW,IAMhB59B,KAAK69B,gBAAkB,IAMvB79B,KAAK89B,iBAAmB,IASxB99B,KAAK+9B,sBAAuB,EAM5B/9B,KAAKg+B,WAAa,IAQlBh+B,KAAKi+B,YAAc,IAKnBj+B,KAAKk+B,SAAW,KAKhBl+B,KAAKm+B,SAAW,KAKhBn+B,KAAKo+B,SAAW,KAKhBp+B,KAAKq+B,SAAW,KAKhBr+B,KAAKs+B,SAAW,KAKhBt+B,KAAKu+B,SAAW,KAKhBv+B,KAAKw+B,SAAW,KAKhBx+B,KAAKy+B,SAAW,KAKhBz+B,KAAK0+B,SAAW,KAKhB1+B,KAAK2+B,UAAY,KASjB3+B,KAAK4+B,YASL5+B,KAAK6+B,cAAgB,KAOrB7+B,KAAK8+B,aAAe,KAUpB9+B,KAAK8nB,MAAQ,KAOb9nB,KAAK++B,SAAW,KAUhB/+B,KAAKg/B,MAAQ,KAUbh/B,KAAKi/B,UAAY,KAOjBj/B,KAAKk/B,QAAU,KAQfl/B,KAAKm/B,aAAc,EAMnBn/B,KAAKo/B,OAAS,KAMdp/B,KAAKq/B,KAAO,KAMZr/B,KAAKs/B,MAAQ,KAMbt/B,KAAKu/B,OAAS,KAQdv/B,KAAKw/B,cAAgB,EAMrBx/B,KAAKy/B,iBAAmB,GAAIp/B,GAAO4zB,SAMnCj0B,KAAK0/B,YAAc,GAAIr/B,GAAO2M,MAM9BhN,KAAK2/B,aAAe,EAMpB3/B,KAAK4/B,aAAe,KAMpB5/B,KAAK6/B,GAAK,EAMV7/B,KAAK8/B,GAAK,GAQdz/B,EAAO05B,MAAMgG,sBAAwB,EAMrC1/B,EAAO05B,MAAMiG,sBAAwB,EAMrC3/B,EAAO05B,MAAMuD,oBAAsB,EAOnCj9B,EAAO05B,MAAMkG,aAAe,GAE5B5/B,EAAO05B,MAAM1zB,WAQTsW,KAAM,WAEF3c,KAAK8+B,aAAe,GAAIz+B,GAAO6/B,QAAQlgC,KAAKwa,KAAM,EAAGna,EAAO8/B,YAAYC,QACxEpgC,KAAKqgC,aACLrgC,KAAKqgC,aAELrgC,KAAK8nB,MAAQ,GAAIznB,GAAOigC,MAAMtgC,KAAKwa,MACnCxa,KAAKg/B,MAAQ,GAAI3+B,GAAOkgC,MAAMvgC,KAAKwa,MACnCxa,KAAKi/B,UAAY,GAAI5+B,GAAOmgC,UAAUxgC,KAAKwa,MAEvCna,EAAOogC,WAEPzgC,KAAK++B,SAAW,GAAI1+B,GAAOogC,SAASzgC,KAAKwa,OAGzCna,EAAOqgC,UAEP1gC,KAAKk/B,QAAU,GAAI7+B,GAAOqgC,QAAQ1gC,KAAKwa,OAG3Cxa,KAAKo/B,OAAS,GAAI/+B,GAAO+a,OACzBpb,KAAKq/B,KAAO,GAAIh/B,GAAO+a,OACvBpb,KAAKs/B,MAAQ,GAAIj/B,GAAO+a,OACxBpb,KAAKu/B,OAAS,GAAIl/B,GAAO+a,OAEzBpb,KAAK6U,MAAQ,GAAIxU,GAAO2M,MAAM,EAAG,GACjChN,KAAKu9B,MAAQ,GAAIl9B,GAAO2M,MACxBhN,KAAKuZ,SAAW,GAAIlZ,GAAO2M,MAC3BhN,KAAK4/B,aAAe,GAAIv/B,GAAO2M,MAE/BhN,KAAKw9B,OAAS,GAAIn9B,GAAOmM,OAAO,EAAG,EAAG,IAEtCxM,KAAK6+B,cAAgB7+B,KAAK8+B,aAE1B9+B,KAAK88B,UAAYh3B,KAAK66B,WAAWjgB,OAAO1gB,KAAM,EAAG,GACjDA,KAAK+8B,WAAa/8B,KAAK88B,UAAU8D,WAAW,MAE5C5gC,KAAK8nB,MAAMpX,QACX1Q,KAAKg/B,MAAMtuB,QACX1Q,KAAKi/B,UAAUvuB,QACf1Q,KAAK8+B,aAAaja,QAAS,EAEvB7kB,KAAK++B,UAEL/+B,KAAK++B,SAASruB,OAGlB,IAAI+V,GAAQzmB,IAEZA,MAAK6gC,mBAAqB,SAAU1U,GAChC1F,EAAMqa,kBAAkB3U,IAG5BnsB,KAAKwa,KAAK8Q,OAAOe,iBAAiB,QAASrsB,KAAK6gC,oBAAoB,IASxE/c,QAAS,WAEL9jB,KAAK8nB,MAAMwU,OACXt8B,KAAKg/B,MAAM1C,OACXt8B,KAAKi/B,UAAU3C,OAEXt8B,KAAK++B,UAEL/+B,KAAK++B,SAASzC,OAGdt8B,KAAKk/B,SAELl/B,KAAKk/B,QAAQ5C,OAGjBt8B,KAAKg9B,iBAELl3B,KAAK66B,WAAW7d,OAAO9iB,MAEvBA,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,QAASvtB,KAAK6gC,qBA0BvDE,+BAAgC,SAAUzN,EAAUjP,GAEhDrkB,KAAKi9B,uBAAyB3J,EAC9BtzB,KAAKk9B,8BAAgC7Y,GAuBzC2c,gBAAiB,SAAU1N,EAAUjP,GAEjCrkB,KAAKg9B,cAAcpqB,MAAO0gB,SAAUA,EAAUjP,QAASA,KAW3D4c,mBAAoB,SAAU3N,EAAUjP,GAIpC,IAFA,GAAIvc,GAAI9H,KAAKg9B,cAAcn1B,OAEpBC,KAEH,GAAI9H,KAAKg9B,cAAcl1B,GAAGwrB,WAAaA,GAAYtzB,KAAKg9B,cAAcl1B,GAAGuc,UAAYA,EAGjF,WADArkB,MAAKg9B,cAAc7Z,OAAOrb,EAAG,IAezCu4B,WAAY,WAER,GAAIrgC,KAAK4+B,SAAS/2B,QAAUxH,EAAO05B,MAAMkG,aAGrC,MADA73B,SAAQG,KAAK,6CAA+ClI,EAAO05B,MAAMkG,aAAe,sBACjF,IAGX,IAAItrB,GAAK3U,KAAK4+B,SAAS/2B,OAAS,EAC5BihB,EAAU,GAAIzoB,GAAO6/B,QAAQlgC,KAAKwa,KAAM7F,EAAItU,EAAO8/B,YAAYe,MAKnE,OAHAlhC,MAAK4+B,SAAShsB,KAAKkW,GACnB9oB,KAAK,UAAY2U,GAAMmU,EAEhBA,GAUXvK,OAAQ,WAOJ,GALIve,KAAK++B,UAEL/+B,KAAK++B,SAASxgB,SAGdve,KAAKm9B,SAAW,GAAKn9B,KAAK2/B,aAAe3/B,KAAKm9B,SAG9C,WADAn9B,MAAK2/B,cAIT3/B,MAAKu9B,MAAMt3B,EAAIjG,KAAKuZ,SAAStT,EAAIjG,KAAK4/B,aAAa35B,EACnDjG,KAAKu9B,MAAM9wB,EAAIzM,KAAKuZ,SAAS9M,EAAIzM,KAAK4/B,aAAanzB,EAEnDzM,KAAK4/B,aAAanyB,SAASzN,KAAKuZ,UAChCvZ,KAAK8+B,aAAavgB,SAEdve,KAAKk/B,SAAWl/B,KAAKk/B,QAAQra,QAE7B7kB,KAAKk/B,QAAQ3gB,QAGjB,KAAK,GAAIzW,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAEtC9H,KAAK4+B,SAAS92B,GAAGyW,QAGrBve,MAAK2/B,aAAe,GAexBjgB,MAAO,SAAUyhB,GAEb,GAAKnhC,KAAKwa,KAAKqI,WAAY7iB,KAAKm/B,YAAhC,CAKaz1B,SAATy3B,IAAsBA,GAAO,GAEjCnhC,KAAK8+B,aAAapf,QAEd1f,KAAK++B,UAEL/+B,KAAK++B,SAASrf,MAAMyhB,GAGpBnhC,KAAKk/B,SAELl/B,KAAKk/B,QAAQxf,OAGjB,KAAK,GAAI5X,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAEtC9H,KAAK4+B,SAAS92B,GAAG4X,OAGiB,UAAlC1f,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,SAEvBruB,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,WAGhC8S,IAEAnhC,KAAKo/B,OAAO5Y,UACZxmB,KAAKq/B,KAAK7Y,UACVxmB,KAAKs/B,MAAM9Y,UACXxmB,KAAKu/B,OAAO/Y,UACZxmB,KAAKo/B,OAAS,GAAI/+B,GAAO+a,OACzBpb,KAAKq/B,KAAO,GAAIh/B,GAAO+a,OACvBpb,KAAKs/B,MAAQ,GAAIj/B,GAAO+a,OACxBpb,KAAKu/B,OAAS,GAAIl/B,GAAO+a,OACzBpb,KAAKg9B,kBAGTh9B,KAAK2/B,aAAe,IAWxByB,WAAY,SAAUn7B,EAAGwG,GAErBzM,KAAK4/B,aAAapyB,MAAMvH,EAAGwG,GAC3BzM,KAAKu9B,MAAM/vB,MAAM,EAAG,IAaxB6zB,aAAc,SAAUlV,GAEpB,GAAInsB,KAAKy9B,aAAe,GAAKz9B,KAAKshC,oBAAoBthC,KAAKy9B,cAAgBz9B,KAAKy9B,YAE5E,MAAO,KAGX,KAAKz9B,KAAKk+B,SAASrZ,OAEf,MAAO7kB,MAAKk+B,SAASxtB,MAAMyb,EAG/B,KAAKnsB,KAAKm+B,SAAStZ,OAEf,MAAO7kB,MAAKm+B,SAASztB,MAAMyb,EAG/B,KAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAK4+B,SAAS92B,EAE5B,KAAKghB,EAAQjE,OAET,MAAOiE,GAAQpY,MAAMyb,GAI7B,MAAO,OAaXoV,cAAe,SAAUpV,GAErB,GAAInsB,KAAKk+B,SAASrZ,QAAU7kB,KAAKk+B,SAASsD,aAAerV,EAAMqV,WAE3D,MAAOxhC,MAAKk+B,SAASuD,KAAKtV,EAG9B,IAAInsB,KAAKm+B,SAAStZ,QAAU7kB,KAAKm+B,SAASqD,aAAerV,EAAMqV,WAE3D,MAAOxhC,MAAKm+B,SAASsD,KAAKtV,EAG9B,KAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAK4+B,SAAS92B,EAE5B,IAAIghB,EAAQjE,QAAUiE,EAAQ0Y,aAAerV,EAAMqV,WAE/C,MAAO1Y,GAAQ2Y,KAAKtV,GAI5B,MAAO,OAYXuV,YAAa,SAAUvV,GAEnB,GAAInsB,KAAKk+B,SAASrZ,QAAU7kB,KAAKk+B,SAASsD,aAAerV,EAAMqV,WAE3D,MAAOxhC,MAAKk+B,SAAS5B,KAAKnQ,EAG9B,IAAInsB,KAAKm+B,SAAStZ,QAAU7kB,KAAKm+B,SAASqD,aAAerV,EAAMqV,WAE3D,MAAOxhC,MAAKm+B,SAAS7B,KAAKnQ,EAG9B,KAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAK4+B,SAAS92B,EAE5B,IAAIghB,EAAQjE,QAAUiE,EAAQ0Y,aAAerV,EAAMqV,WAE/C,MAAO1Y,GAAQwT,KAAKnQ,GAI5B,MAAO,OAYXmV,oBAAqB,SAAUK,GAEbj4B,SAAVi4B,IAAuBA,EAAQ3hC,KAAK4+B,SAAS/2B,OAIjD,KAAK,GAFDm0B,GAAQ2F,EAEH75B,EAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,QAAUm0B,EAAQ,EAAGl0B,IACvD,CACI,GAAIghB,GAAU9oB,KAAK4+B,SAAS92B,EAExBghB,GAAQjE,QAERmX,IAIR,MAAQ2F,GAAQ3F,GAWpB4F,WAAY,SAAUC,GAEDn4B,SAAbm4B,IAA0BA,GAAW,EAEzC,KAAK,GAAI/5B,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAK4+B,SAAS92B,EAE5B,IAAIghB,EAAQjE,SAAWgd,EAEnB,MAAO/Y,GAIf,MAAO,OAeXgZ,yBAA0B,SAAUN,GAEhC,IAAK,GAAI15B,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAK4+B,SAAS92B,EAE5B,IAAIghB,EAAQ0Y,aAAeA,EAEvB,MAAO1Y,GAIf,MAAO,OAcXiZ,iBAAkB,SAAUC,GAExB,IAAK,GAAIl6B,GAAI,EAAGA,EAAI9H,KAAK4+B,SAAS/2B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAK4+B,SAAS92B,EAE5B,IAAIghB,EAAQkZ,YAAcA,EAEtB,MAAOlZ,GAIf,MAAO,OAYXmZ,iBAAkB,SAAUjnB,EAAe8N,EAAS/a,GAEjCrE,SAAXqE,IAAwBA,EAAS,GAAI1N,GAAO2M,MAEhD,IAAIk1B,GAAKlnB,EAAcyP,eACnB9V,EAAK,GAAKutB,EAAGzzB,EAAIyzB,EAAGjuB,EAAIiuB,EAAGjzB,GAAKizB,EAAGrzB,EAEvC,OAAOd,GAAOP,MACV00B,EAAGjuB,EAAIU,EAAKmU,EAAQ7iB,GAAKi8B,EAAGjzB,EAAI0F,EAAKmU,EAAQrc,GAAKy1B,EAAGtwB,GAAKswB,EAAGjzB,EAAIizB,EAAGvwB,GAAKuwB,EAAGjuB,GAAKU,EACjFutB,EAAGzzB,EAAIkG,EAAKmU,EAAQrc,GAAKy1B,EAAGrzB,EAAI8F,EAAKmU,EAAQ7iB,IAAMi8B,EAAGtwB,GAAKswB,EAAGzzB,EAAIyzB,EAAGvwB,GAAKuwB,EAAGrzB,GAAK8F,IAa1FwtB,QAAS,SAAUnnB,EAAe8N,EAASsZ,GAEvC,IAAKpnB,EAAcqnB,aAEf,OAAO,CAOX,IAJAriC,KAAKiiC,iBAAiBjnB,EAAe8N,EAAS9oB,KAAK0/B,aAEnD0C,EAAW30B,SAASzN,KAAK0/B,aAErB1kB,EAAcsnB,SAAWtnB,EAAcsnB,QAAQt0B,SAE/C,MAAQgN,GAAcsnB,QAAQt0B,SAAShO,KAAK0/B,YAAYz5B,EAAGjG,KAAK0/B,YAAYjzB,EAE3E,IAAIuO,YAAyB3a,GAAOkiC,WACzC,CACI,GAAIxyB,GAAQiL,EAAcjL,MACtBC,EAASgL,EAAchL,OACvBM,GAAMP,EAAQiL,EAAcqO,OAAOpjB,CAEvC,IAAIjG,KAAK0/B,YAAYz5B,GAAKqK,GAAMtQ,KAAK0/B,YAAYz5B,EAAIqK,EAAKP,EAC1D,CACI,GAAIQ,IAAMP,EAASgL,EAAcqO,OAAO5c,CAExC,IAAIzM,KAAK0/B,YAAYjzB,GAAK8D,GAAMvQ,KAAK0/B,YAAYjzB,EAAI8D,EAAKP,EAEtD,OAAO,OAId,IAAIgL,YAAyBlV,MAAKsoB,OACvC,CACI,GAAIre,GAAQiL,EAAcwnB,QAAQ7R,MAAM5gB,MACpCC,EAASgL,EAAcwnB,QAAQ7R,MAAM3gB,OACrCM,GAAMP,EAAQiL,EAAcqO,OAAOpjB,CAEvC,IAAIjG,KAAK0/B,YAAYz5B,GAAKqK,GAAMtQ,KAAK0/B,YAAYz5B,EAAIqK,EAAKP,EAC1D,CACI,GAAIQ,IAAMP,EAASgL,EAAcqO,OAAO5c,CAExC,IAAIzM,KAAK0/B,YAAYjzB,GAAK8D,GAAMvQ,KAAK0/B,YAAYjzB,EAAI8D,EAAKP,EAEtD,OAAO,OAId,IAAIgL,YAAyB3a,GAAOwc,SAErC,IAAK,GAAI/U,GAAI,EAAGA,EAAIkT,EAAcynB,aAAa56B,OAAQC,IACvD,CACI,GAAI46B,GAAO1nB,EAAcynB,aAAa36B,EAEtC,IAAK46B,EAAKC,MAMND,EAAKE,OAASF,EAAKE,MAAM50B,SAAShO,KAAK0/B,YAAYz5B,EAAGjG,KAAK0/B,YAAYjzB,GAEvE,OAAO,EAOnB,IAAK,GAAI3E,GAAI,EAAGA,EAAIkT,EAAc2Q,SAAS9jB,OAAQC,IAE/C,GAAI9H,KAAKmiC,QAAQnnB,EAAc2Q,SAAS7jB,GAAIghB,EAASsZ,GAEjD,OAAO,CAIf,QAAO,GASXtB,kBAAmB,WAIf9gC,KAAK6+B,cAAcgE,4BAM3BxiC,EAAO05B,MAAM1zB,UAAU8B,YAAc9H,EAAO05B,MAQ5CxyB,OAAO2E,eAAe7L,EAAO05B,MAAM1zB,UAAW,KAE1C2F,IAAK,WACD,MAAOhM,MAAK6/B,IAGhB5zB,IAAK,SAAU1C,GACXvJ,KAAK6/B,GAAK95B,KAAKI,MAAMoD,MAW7BhC,OAAO2E,eAAe7L,EAAO05B,MAAM1zB,UAAW,KAE1C2F,IAAK,WACD,MAAOhM,MAAK8/B,IAGhB7zB,IAAK,SAAU1C,GACXvJ,KAAK8/B,GAAK/5B,KAAKI,MAAMoD,MAW7BhC,OAAO2E,eAAe7L,EAAO05B,MAAM1zB,UAAW,cAE1C2F,IAAK,WACD,MAAQhM,MAAKm9B,SAAW,GAAKn9B,KAAK2/B,aAAe3/B,KAAKm9B,YAW9D51B,OAAO2E,eAAe7L,EAAO05B,MAAM1zB,UAAW,yBAE1C2F,IAAK,WACD,MAAOhM,MAAK4+B,SAAS/2B,OAAS7H,KAAKshC,yBAW3C/5B,OAAO2E,eAAe7L,EAAO05B,MAAM1zB,UAAW,uBAE1C2F,IAAK,WACD,MAAOhM,MAAKshC,yBAWpB/5B,OAAO2E,eAAe7L,EAAO05B,MAAM1zB,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKiG,KAW9CsB,OAAO2E,eAAe7L,EAAO05B,MAAM1zB,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKyM,KAyB9CpM,EAAOigC,MAAQ,SAAU9lB,GAKrBxa,KAAKwa,KAAOA,EAMZxa,KAAK+f,MAAQvF,EAAKuF,MAKlB/f,KAAK+iB,gBAAkB/iB,KAAKwa;AAK5Bxa,KAAK8iC,kBAAoB,KAKzB9iC,KAAK+iC,gBAAkB,KAKvB/iC,KAAKgjC,iBAAmB,KAKxBhjC,KAAKijC,kBAAoB,KAKzBjjC,KAAKkjC,mBAAqB,KAK1BljC,KAAKmjC,SAAU,EASfnjC,KAAKojC,QAAS,EAMdpjC,KAAKqjC,WAAa,EAOlBrjC,KAAKo9B,SAAU,EAMfp9B,KAAKsjC,QAAS,EAMdtjC,KAAKujC,eAAgB,EAMrBvjC,KAAKwjC,YAAc,GAAInjC,GAAO+a,OAQ9Bpb,KAAKmsB,MAAQ,KAMbnsB,KAAKyjC,aAAe,KAMpBzjC,KAAK0jC,aAAe,KAMpB1jC,KAAK2jC,WAAa,KAMlB3jC,KAAK4jC,YAAc,KAMnB5jC,KAAK6jC,aAAe,KAMpB7jC,KAAK8jC,cAAgB,KAOrB9jC,KAAK+jC,YAAc,MAQvB1jC,EAAOigC,MAAM0D,WAAY,EAMzB3jC,EAAOigC,MAAM2D,YAAc,EAM3B5jC,EAAOigC,MAAM4D,cAAgB,EAM7B7jC,EAAOigC,MAAM6D,aAAe,EAM5B9jC,EAAOigC,MAAM8D,YAAc,EAM3B/jC,EAAOigC,MAAM+D,eAAiB,EAM9BhkC,EAAOigC,MAAMgE,SAAW,EAMxBjkC,EAAOigC,MAAMiE,YAAa,EAE1BlkC,EAAOigC,MAAMj6B,WAMTqK,MAAO,WAEH,KAAI1Q,KAAKwa,KAAKkS,OAAO8X,SAAWxkC,KAAKwa,KAAKkS,OAAOkO,UAAW,IAMlC,OAAtB56B,KAAKyjC,aAAT,CAMA,GAAIhd,GAAQzmB,IAEZA,MAAKyjC,aAAe,SAAUtX,GAC1B,MAAO1F,GAAMge,YAAYtY,IAG7BnsB,KAAK0jC,aAAe,SAAUvX,GAC1B,MAAO1F,GAAMie,YAAYvY,IAG7BnsB,KAAK2jC,WAAa,SAAUxX,GACxB,MAAO1F,GAAMke,UAAUxY,IAG3BnsB,KAAK4kC,iBAAmB,SAAUzY,GAC9B,MAAO1F,GAAMoe,gBAAgB1Y,IAGjCnsB,KAAK8kC,kBAAoB,SAAU3Y,GAC/B,MAAO1F,GAAMse,iBAAiB5Y,IAGlCnsB,KAAK4jC,YAAc,SAAUzX,GACzB,MAAO1F,GAAMue,WAAW7Y,IAG5BnsB,KAAK6jC,aAAe,SAAU1X,GAC1B,MAAO1F,GAAMwe,YAAY9Y,IAG7BnsB,KAAK8jC,cAAgB,SAAU3X,GAC3B,MAAO1F,GAAMye,aAAa/Y,GAG9B,IAAIb,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOe,iBAAiB,YAAarsB,KAAKyjC,cAAc,GACxDnY,EAAOe,iBAAiB,YAAarsB,KAAK0jC,cAAc,GACxDpY,EAAOe,iBAAiB,UAAWrsB,KAAK2jC,YAAY,GAE/C3jC,KAAKwa,KAAKkS,OAAOwO,WAElBnzB,OAAOskB,iBAAiB,UAAWrsB,KAAK4kC,kBAAkB,GAC1D78B,OAAOskB,iBAAiB,WAAYrsB,KAAK8kC,mBAAmB,GAC5DxZ,EAAOe,iBAAiB,YAAarsB,KAAK6jC,cAAc,GACxDvY,EAAOe,iBAAiB,WAAYrsB,KAAK4jC,aAAa,GAG1D,IAAIuB,GAAanlC,KAAKwa,KAAKkS,OAAOyY,UAE9BA,KAEA7Z,EAAOe,iBAAiB8Y,EAAYnlC,KAAK8jC,eAAe,GAErC,eAAfqB,EAEAnlC,KAAK+jC,YAAc,GAAIlkC,KAAgB,MAAO,GAE1B,mBAAfslC,IAELnlC,KAAK+jC,YAAc,GAAIlkC,GAAgB,EAAG,OAWtD4kC,YAAa,SAAUtY,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGNt7B,KAAK8iC,mBAEL9iC,KAAK8iC,kBAAkBh8B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,UAKjCjR,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM+e,aAAapuB,MAAMyb,KASlCuY,YAAa,SAAUvY,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGNt7B,KAAKolC,mBAELplC,KAAKolC,kBAAkBt+B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,UAKjCjR,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM+e,aAAa2C,KAAKtV,KASjCwY,UAAW,SAAUxY,GAEjBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGNt7B,KAAK+iC,iBAEL/iC,KAAK+iC,gBAAgBj8B,KAAK9G,KAAK+iB,gBAAiBoJ,GAG/CnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,UAKjCjR,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM+e,aAAaxC,KAAKnQ,KAUjC0Y,gBAAiB,SAAU1Y,GAElBnsB,KAAK+f,MAAM+e,aAAauG,aAErBrlC,KAAK+iC,iBAEL/iC,KAAK+iC,gBAAgBj8B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGpDA,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM+e,aAAaxC,KAAKnQ,KAWrC4Y,iBAAkB,SAAU5Y,GAExBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGVt7B,KAAK+f,MAAM+e,aAAauG,YAAa,EAEhCrlC,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,UAajCp9B,KAAK+f,MAAM+e,aAAaxC,KAAKnQ,GAC7BnsB,KAAK+f,MAAM+e,aAAawG,WAAWhJ,KAAKnQ,GACxCnsB,KAAK+f,MAAM+e,aAAayG,YAAYjJ,KAAKnQ,KAU7C6Y,WAAY,SAAU7Y,GAElBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGVt7B,KAAK+f,MAAM+e,aAAauG,YAAa,EAEjCrlC,KAAKgjC,kBAELhjC,KAAKgjC,iBAAiBl8B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGhDnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,SAK7Bp9B,KAAKujC,gBAELpX,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM+e,aAAaxC,KAAKnQ,KAWrC8Y,YAAa,SAAU9Y,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGVt7B,KAAK+f,MAAM+e,aAAauG,YAAa,EAEjCrlC,KAAKijC,mBAELjjC,KAAKijC,kBAAkBn8B,KAAK9G,KAAK+iB,gBAAiBoJ,IAW1D+Y,aAAc,SAAU/Y,GAEhBnsB,KAAK+jC,cACL5X,EAAQnsB,KAAK+jC,YAAYyB,UAAUrZ,IAGvCnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAIVt7B,KAAKqjC,WAAahjC,EAAO0F,KAAKyP,OAAO2W,EAAMsZ,QAAQ,EAAI,GAEnDzlC,KAAKkjC,oBAELljC,KAAKkjC,mBAAmBp8B,KAAK9G,KAAK+iB,gBAAiBoJ,IAW3DuZ,mBAAoB,WAEhB,GAAI1lC,KAAKwa,KAAKkS,OAAO8W,YACrB,CACI,GAAImC,GAAU3lC,KAAKwa,KAAK8Q,MAExBqa,GAAQD,mBAAqBC,EAAQD,oBAAsBC,EAAQC,uBAAyBD,EAAQE,yBAEpGF,EAAQD,oBAER,IAAIjf,GAAQzmB,IAEZA,MAAK8lC,mBAAqB,SAAU3Z,GAChC,MAAO1F,GAAMsf,kBAAkB5Z,IAGnCL,SAASO,iBAAiB,oBAAqBrsB,KAAK8lC,oBAAoB,GACxEha,SAASO,iBAAiB,uBAAwBrsB,KAAK8lC,oBAAoB,GAC3Eha,SAASO,iBAAiB,0BAA2BrsB,KAAK8lC,oBAAoB,KAWtFC,kBAAmB,SAAU5Z,GAEzB,GAAIwZ,GAAU3lC,KAAKwa,KAAK8Q,MAEpBQ,UAASka,qBAAuBL,GAAW7Z,SAASma,wBAA0BN,GAAW7Z,SAASoa,2BAA6BP,GAG/H3lC,KAAKsjC,QAAS,EACdtjC,KAAKwjC,YAAY3kB,UAAS,EAAMsN,KAKhCnsB,KAAKsjC,QAAS,EACdtjC,KAAKwjC,YAAY3kB,UAAS,EAAOsN,KASzCga,mBAAoB,WAEhBra,SAASsa,gBAAkBta,SAASsa,iBAAmBta,SAASua,oBAAsBva,SAASwa,sBAE/Fxa,SAASsa,kBAETta,SAASyB,oBAAoB,oBAAqBvtB,KAAK8lC,oBAAoB,GAC3Eha,SAASyB,oBAAoB,uBAAwBvtB,KAAK8lC,oBAAoB,GAC9Eha,SAASyB,oBAAoB,0BAA2BvtB,KAAK8lC,oBAAoB,IAQrFxJ,KAAM,WAEF,GAAIhR,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOiC,oBAAoB,YAAavtB,KAAKyjC,cAAc,GAC3DnY,EAAOiC,oBAAoB,YAAavtB,KAAK0jC,cAAc,GAC3DpY,EAAOiC,oBAAoB,UAAWvtB,KAAK2jC,YAAY,GACvDrY,EAAOiC,oBAAoB,YAAavtB,KAAK6jC,cAAc,GAC3DvY,EAAOiC,oBAAoB,WAAYvtB,KAAK4jC,aAAa,EAEzD,IAAIuB,GAAanlC,KAAKwa,KAAKkS,OAAOyY,UAE9BA,IAEA7Z,EAAOiC,oBAAoB4X,EAAYnlC,KAAK8jC,eAAe,GAG/D/7B,OAAOwlB,oBAAoB,UAAWvtB,KAAK4kC,kBAAkB,GAC7D78B,OAAOwlB,oBAAoB,WAAYvtB,KAAK8kC,mBAAmB,GAE/DhZ,SAASyB,oBAAoB,oBAAqBvtB,KAAK8lC,oBAAoB,GAC3Eha,SAASyB,oBAAoB,uBAAwBvtB,KAAK8lC,oBAAoB,GAC9Eha,SAASyB,oBAAoB,0BAA2BvtB,KAAK8lC,oBAAoB,KAMzFzlC,EAAOigC,MAAMj6B,UAAU8B,YAAc9H,EAAOigC,MAoC5CzgC,EAAgBwG,aAChBxG,EAAgBwG,UAAU8B,YAActI,EAExCA,EAAgBwG,UAAUm/B,UAAY,SAAUrZ,GAG5C,IAAKtsB,EAAgB0mC,iBAAmBpa,EACxC,CACI,GAAIqa,GAAa,SAAUp7B,GAEvB,MAAO,YACH,GAAIsvB,GAAI16B,KAAKG,cAAciL,EAC3B,OAAoB,kBAANsvB,GAAmBA,EAAIA,EAAEp0B,KAAKtG,KAAKG,gBAKzD,KAAK,GAAI6I,KAAQmjB,GAEPnjB,IAAQnJ,GAAgBwG,WAE1BkB,OAAO2E,eAAerM,EAAgBwG,UAAW2C,GAC7CgD,IAAKw6B,EAAWx9B,IAI5BnJ,GAAgB0mC,iBAAkB,EAItC,MADAvmC,MAAKG,cAAgBgsB,EACdnsB,MAIXuH,OAAOk/B,iBAAiB5mC,EAAgBwG,WACpC6B,MAAUqB,MAAO,SACjBxJ,WAAeiM,IAAK,WAAc,MAAOhM,MAAKE,aAC9CulC,QACIz5B,IAAK,WACD,MAAQhM,MAAKC,cAAgBD,KAAKG,cAAckjC,YAAcrjC,KAAKG,cAAcumC,SAAY,IAGrGC,QACI36B,IAAK,WACD,MAAQhM,MAAKC,aAAeD,KAAKG,cAAcymC,aAAgB,IAGvEC,QAAYt9B,MAAO,KAyBvBlJ,EAAOmgC,UAAY,SAAUhmB,GAKzBxa,KAAKwa,KAAOA,EAMZxa,KAAK+f,MAAQvF,EAAKuF,MAKlB/f,KAAK+iB,gBAAkB/iB,KAAKwa,KAK5Bxa,KAAK8mC,oBAAsB,KAK3B9mC,KAAK+mC,oBAAsB,KAK3B/mC,KAAKgnC,kBAAoB,KAKzBhnC,KAAKmjC,SAAU,EAQfnjC,KAAKojC,QAAS,EAQdpjC,KAAKmsB,MAAQ,KAObnsB,KAAKo9B,SAAU,EAMfp9B,KAAKinC,iBAAmB,KAMxBjnC,KAAKknC,iBAAmB,KAMxBlnC,KAAKmnC,eAAiB,KAMtBnnC,KAAKonC,qBAAuB,KAM5BpnC,KAAKqnC,gBAAkB,KAMvBrnC,KAAKsnC,iBAAmB,MAI5BjnC,EAAOmgC,UAAUn6B,WAMbqK,MAAO,WAEH,GAA8B,OAA1B1Q,KAAKinC,iBAAT,CAMA,GAAIxgB,GAAQzmB,IAEZ,IAAIA,KAAKwa,KAAKkS,OAAOuS,UACrB,CACIj/B,KAAKinC,iBAAmB,SAAU9a,GAC9B,MAAO1F,GAAM8gB,cAAcpb,IAG/BnsB,KAAKknC,iBAAmB,SAAU/a,GAC9B,MAAO1F,GAAM+gB,cAAcrb,IAG/BnsB,KAAKmnC,eAAiB,SAAUhb,GAC5B,MAAO1F,GAAMghB,YAAYtb,IAG7BnsB,KAAKonC,qBAAuB,SAAUjb,GAClC,MAAO1F,GAAMihB,kBAAkBvb,IAGnCnsB,KAAKqnC,gBAAkB,SAAUlb,GAC7B,MAAO1F,GAAMkhB,aAAaxb,IAG9BnsB,KAAKsnC,iBAAmB,SAAUnb,GAC9B,MAAO1F,GAAMmhB,cAAczb,GAG/B,IAAIb,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOe,iBAAiB,gBAAiBrsB,KAAKinC,kBAAkB,GAChE3b,EAAOe,iBAAiB,gBAAiBrsB,KAAKknC,kBAAkB,GAChE5b,EAAOe,iBAAiB,cAAersB,KAAKmnC,gBAAgB,GAG5D7b,EAAOe,iBAAiB,cAAersB,KAAKinC,kBAAkB,GAC9D3b,EAAOe,iBAAiB,cAAersB,KAAKknC,kBAAkB,GAC9D5b,EAAOe,iBAAiB,YAAarsB,KAAKmnC,gBAAgB,GAE1D7b,EAAOpO,MAAM,uBAAyB,OACtCoO,EAAOpO,MAAM,oBAAsB,OAE9Bld,KAAKwa,KAAKkS,OAAOwO,WAElBnzB,OAAOskB,iBAAiB,cAAersB,KAAKonC,sBAAsB,GAClE9b,EAAOe,iBAAiB,gBAAiBrsB,KAAKsnC,kBAAkB,GAChEhc,EAAOe,iBAAiB,eAAgBrsB,KAAKqnC,iBAAiB,GAG9Dt/B,OAAOskB,iBAAiB,YAAarsB,KAAKonC,sBAAsB,GAChE9b,EAAOe,iBAAiB,cAAersB,KAAKsnC,kBAAkB,GAC9Dhc,EAAOe,iBAAiB,aAAcrsB,KAAKqnC,iBAAiB,OAYxEE,cAAe,SAAUpb,GAErBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGNt7B,KAAK8mC,qBAEL9mC,KAAK8mC,oBAAoBhgC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,UAKjCjR,EAAMqV,WAAarV,EAAM6V,UAEC,UAAtB7V,EAAM0b,aAAiD,IAAtB1b,EAAM0b,YAEvC7nC,KAAK+f,MAAM+e,aAAapuB,MAAMyb,GAI9BnsB,KAAK+f,MAAMshB,aAAalV,KAUhCqb,cAAe,SAAUrb,GAErBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGNt7B,KAAK+mC,qBAEL/mC,KAAK+mC,oBAAoBjgC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,UAKjCjR,EAAMqV,WAAarV,EAAM6V,UAEC,UAAtB7V,EAAM0b,aAAiD,IAAtB1b,EAAM0b,YAEvC7nC,KAAK+f,MAAM+e,aAAa2C,KAAKtV,GAI7BnsB,KAAK+f,MAAMwhB,cAAcpV,KAUjCsb,YAAa,SAAUtb,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGNt7B,KAAKgnC,mBAELhnC,KAAKgnC,kBAAkBlgC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,UAKjCjR,EAAMqV,WAAarV,EAAM6V,UAEC,UAAtB7V,EAAM0b,aAAiD,IAAtB1b,EAAM0b,YAEvC7nC,KAAK+f,MAAM+e,aAAaxC,KAAKnQ,GAI7BnsB,KAAK+f,MAAM2hB,YAAYvV,KAW/Bub,kBAAmB,SAAUvb,GAEzB,GAA2B,UAAtBA,EAAM0b,aAAiD,IAAtB1b,EAAM0b,aAAgC7nC,KAAK+f,MAAM+e,aAAauG,WAKpG,CACI,GAAIvc,GAAU9oB,KAAK+f,MAAM+hB,yBAAyB3V,EAAMqV,WAEpD1Y,IAAWA,EAAQuc,YAEnBrlC,KAAKynC,YAAYtb,OARrBnsB,MAAKynC,YAAYtb,IAoBzBwb,aAAc,SAAUxb,GASpB,GAPAnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGgB,UAAtBnP,EAAM0b,aAAiD,IAAtB1b,EAAM0b,YAEvC7nC,KAAK+f,MAAM+e,aAAauG,YAAa,MAGzC,CACI,GAAIvc,GAAU9oB,KAAK+f,MAAM+hB,yBAAyB3V,EAAMqV,WAEpD1Y,KAEAA,EAAQuc,YAAa,GAIzBrlC,KAAK+f,MAAM+H,MAAMkb,kBAEjBhjC,KAAK+f,MAAM+H,MAAMkb,iBAAiBl8B,KAAK9G,KAAK+f,MAAM+H,MAAM/E,gBAAiBoJ,GAGxEnsB,KAAK+f,MAAMqd,SAAYp9B,KAAKo9B,SAK7Bp9B,KAAK+f,MAAM+H,MAAMyb,gBAEjBpX,EAAkB,WAAI,EAElBrD,EAEAA,EAAQwT,KAAKnQ,GAIbnsB,KAAK+f,MAAM+e,aAAaxC,KAAKnQ,KAYzCyb,cAAe,SAAUzb,GASrB,GAPAnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmjC,SAELhX,EAAMmP,iBAGgB,UAAtBnP,EAAM0b,aAAiD,IAAtB1b,EAAM0b,YAEvC7nC,KAAK+f,MAAM+e,aAAauG,YAAa,MAGzC,CACI,GAAIvc,GAAU9oB,KAAK+f,MAAM+hB,yBAAyB3V,EAAMqV,WAEpD1Y,KAEAA,EAAQuc,YAAa,GAIzBrlC,KAAK+f,MAAM+H,MAAMmb,mBAEjBjjC,KAAK+f,MAAM+H,MAAMmb,kBAAkBn8B,KAAK9G,KAAK+f,MAAM+H,MAAM/E,gBAAiBoJ,IASlFmQ,KAAM,WAEF,GAAIhR,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOiC,oBAAoB,gBAAiBvtB,KAAKinC,kBAAkB,GACnE3b,EAAOiC,oBAAoB,gBAAiBvtB,KAAKknC,kBAAkB,GACnE5b,EAAOiC,oBAAoB,cAAevtB,KAAKmnC,gBAAgB,GAG/D7b,EAAOiC,oBAAoB,cAAevtB,KAAKinC,kBAAkB,GACjE3b,EAAOiC,oBAAoB,cAAevtB,KAAKknC,kBAAkB,GACjE5b,EAAOiC,oBAAoB,YAAavtB,KAAKmnC,gBAAgB,GAE7Dp/B,OAAOwlB,oBAAoB,cAAevtB,KAAKonC,sBAAsB,GACrE9b,EAAOiC,oBAAoB,gBAAiBvtB,KAAKsnC,kBAAkB,GACnEhc,EAAOiC,oBAAoB,eAAgBvtB,KAAKqnC,iBAAiB,GAGjEt/B,OAAOwlB,oBAAoB,YAAavtB,KAAKonC,sBAAsB,GACnE9b,EAAOiC,oBAAoB,cAAevtB,KAAKsnC,kBAAkB,GACjEhc,EAAOiC,oBAAoB,aAAcvtB,KAAKqnC,iBAAiB,KAMvEhnC,EAAOmgC,UAAUn6B,UAAU8B,YAAc9H,EAAOmgC,UAgChDngC,EAAOynC,aAAe,SAAUte,EAAQue,GAKpC/nC,KAAKwpB,OAASA,EAKdxpB,KAAKwa,KAAOgP,EAAOhP,KAMnBxa,KAAKmsB,MAAQ,KAMbnsB,KAAKgoC,QAAS,EAMdhoC,KAAKioC,MAAO,EAMZjoC,KAAKkoC,SAAW,EAMhBloC,KAAKmoC,OAAS,EAQdnoC,KAAKooC,QAAU,EAQfpoC,KAAKqoC,QAAS,EAQdroC,KAAKsoC,UAAW,EAQhBtoC,KAAKuoC,SAAU,EAMfvoC,KAAKuJ,MAAQ,EAKbvJ,KAAK+nC,WAAaA,EAQlB/nC,KAAKo/B,OAAS,GAAI/+B,GAAO+a,OAQzBpb,KAAKq/B,KAAO,GAAIh/B,GAAO+a,OAQvBpb,KAAKwoC,QAAU,GAAInoC,GAAO+a,QAI9B/a,EAAOynC,aAAazhC,WAWhBqK,MAAO,SAAUyb,EAAO5iB,GAEhBvJ,KAAKgoC,SAKThoC,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,EACZjoC,KAAKkoC,SAAWloC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAKooC,QAAU,EAEfpoC,KAAKmsB,MAAQA,EACbnsB,KAAKuJ,MAAQA,EAET4iB,IAEAnsB,KAAKqoC,OAASlc,EAAMkc,OACpBroC,KAAKsoC,SAAWnc,EAAMmc,SACtBtoC,KAAKuoC,QAAUpc,EAAMoc,SAGzBvoC,KAAKo/B,OAAOvgB,SAAS7e,KAAMuJ,KAa/B+yB,KAAM,SAAUnQ,EAAO5iB,GAEfvJ,KAAKioC,OAKTjoC,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,EACZjoC,KAAKmoC,OAASnoC,KAAKwa,KAAKmE,KAAKA,KAE7B3e,KAAKmsB,MAAQA,EACbnsB,KAAKuJ,MAAQA,EAET4iB,IAEAnsB,KAAKqoC,OAASlc,EAAMkc,OACpBroC,KAAKsoC,SAAWnc,EAAMmc,SACtBtoC,KAAKuoC,QAAUpc,EAAMoc,SAGzBvoC,KAAKq/B,KAAKxgB,SAAS7e,KAAMuJ,KAW7Bk/B,SAAU,SAAUl/B,GAEhBvJ,KAAKuJ,MAAQA,EAEbvJ,KAAKwoC,QAAQ3pB,SAAS7e,KAAMuJ,IAYhCm/B,YAAa,SAAU7sB,GAInB,MAFAA,GAAWA,GAAY,IAEf7b,KAAKgoC,QAAWhoC,KAAKkoC,SAAWrsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MAYvEgqB,aAAc,SAAU9sB,GAIpB,MAFAA,GAAWA,GAAY,IAEf7b,KAAKioC,MAASjoC,KAAKmoC,OAAStsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MASnEe,MAAO,WAEH1f,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,EAEZjoC,KAAKkoC,SAAWloC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAKooC,QAAU,EAEfpoC,KAAKqoC,QAAS,EACdroC,KAAKsoC,UAAW,EAChBtoC,KAAKuoC,SAAU,GAUnBzkB,QAAS,WAEL9jB,KAAKo/B,OAAO5Y,UACZxmB,KAAKq/B,KAAK7Y,UACVxmB,KAAKwoC,QAAQhiB,UAEbxmB,KAAKwpB,OAAS,KACdxpB,KAAKwa,KAAO,OAMpBna,EAAOynC,aAAazhC,UAAU8B,YAAc9H,EAAOynC,aAUnDvgC,OAAO2E,eAAe7L,EAAOynC,aAAazhC,UAAW,YAEjD2F,IAAK,WAED,MAAIhM,MAAKioC,MAEE,EAGJjoC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKkoC,YAqB1C7nC,EAAO6/B,QAAU,SAAU1lB,EAAM7F,EAAIi0B,GAKjC5oC,KAAKwa,KAAOA,EAKZxa,KAAK2U,GAAKA,EAMV3U,KAAKkI,KAAO7H,EAAO+B,QAMnBpC,KAAKwqB,QAAS,EAMdxqB,KAAKwhC,WAAa,EAMlBxhC,KAAKgiC,UAAY,KAKjBhiC,KAAK4oC,YAAcA,GAAgBvoC,EAAO8/B,YAAYC,OAAS//B,EAAO8/B,YAAY0I,QAMlF7oC,KAAKgH,OAAS,KASdhH,KAAKojC,OAAS,KAWdpjC,KAAKslC,WAAa,GAAIjlC,GAAOynC,aAAa9nC,KAAMK,EAAO6/B,QAAQ+D,aAa/DjkC,KAAK8oC,aAAe,GAAIzoC,GAAOynC,aAAa9nC,KAAMK,EAAO6/B,QAAQgE,eAajElkC,KAAKulC,YAAc,GAAIllC,GAAOynC,aAAa9nC,KAAMK,EAAO6/B,QAAQiE,cAahEnkC,KAAK+oC,WAAa,GAAI1oC,GAAOynC,aAAa9nC,KAAMK,EAAO6/B,QAAQkE,aAa/DpkC,KAAKgpC,cAAgB,GAAI3oC,GAAOynC,aAAa9nC,KAAMK,EAAO6/B,QAAQmE,gBAalErkC,KAAKipC,aAAe,GAAI5oC,GAAOynC,aAAa9nC,KAAMK,EAAO6/B,QAAQgJ,eAOjElpC,KAAKmpC,WAAY,EAMjBnpC,KAAKopC,YAMLppC,KAAKqpC,UAAY,EAMjBrpC,KAAKspC,aAAc,EAKnBtpC,KAAKqlC,YAAa,EAKlBrlC,KAAKupC,SAAU,EAKfvpC,KAAKwpC,SAAU,EAKfxpC,KAAKypC,OAAQ,EAKbzpC,KAAK0pC,OAAQ,EAKb1pC,KAAK2pC,SAAU,EAKf3pC,KAAK4pC,SAAU,EAMf5pC,KAAK6pC,aAAe,EAMpB7pC,KAAK8pC,aAAe,EAMpB9pC,KAAK+pC,UAAY,EAMjB/pC,KAAKgqC,UAAY,EAMjBhqC,KAAKiG,GAAI,EAMTjG,KAAKyM,GAAI,EAKTzM,KAAKiqC,QAAkB,IAAPt1B,EAQhB3U,KAAKgoC,QAAS,EAQdhoC,KAAKioC,MAAO,EAMZjoC,KAAKkoC,SAAW,EAMhBloC,KAAKmoC,OAAS,EAMdnoC,KAAKkqC,gBAAkB,EAMvBlqC,KAAKmqC,aAAe,EAMpBnqC,KAAKoqC,iBAAmBjyB,OAAOC,UAM/BpY,KAAKqqC,aAAe,KAWpBrqC,KAAKsqC,yBAMLtqC,KAAK6kB,QAAS,EAMd7kB,KAAKynB,OAAQ,EAKbznB,KAAKuZ,SAAW,GAAIlZ,GAAO2M,MAK3BhN,KAAKuqC,aAAe,GAAIlqC,GAAO2M,MAK/BhN,KAAKwqC,WAAa,GAAInqC,GAAO2M,MAO7BhN,KAAKw9B,OAAS,GAAIn9B,GAAOmM,OAAO,EAAG,EAAG,IAOtCxM,KAAKyqC,kBAAoB,KAQzBzqC,KAAK0qC,wBAA0B,MASnCrqC,EAAO6/B,QAAQ8D,UAAY,EAO3B3jC,EAAO6/B,QAAQ+D,YAAc,EAO7B5jC,EAAO6/B,QAAQiE,aAAe,EAO9B9jC,EAAO6/B,QAAQgE,cAAgB,EAQ/B7jC,EAAO6/B,QAAQkE,YAAc,EAQ7B/jC,EAAO6/B,QAAQmE,eAAiB,GAOhChkC,EAAO6/B,QAAQgJ,cAAgB,GAE/B7oC,EAAO6/B,QAAQ75B,WAQXskC,aAAc,WAEV3qC,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,EAERjoC,KAAKiqC,UAELjqC,KAAKslC,WAAW5lB,QAChB1f,KAAK8oC,aAAappB,QAClB1f,KAAKulC,YAAY7lB,QACjB1f,KAAK+oC,WAAWrpB,QAChB1f,KAAKgpC,cAActpB,QACnB1f,KAAKipC,aAAavpB,UAa1BkrB,mBAAoB,SAAUC,EAAS1e,GAI/B9rB,EAAO6/B,QAAQ+D,YAAc4G,GAE7B7qC,KAAKslC,WAAW50B,MAAMyb,GAGtB9rB,EAAO6/B,QAAQiE,aAAe0G,GAE9B7qC,KAAKulC,YAAY70B,MAAMyb,GAGvB9rB,EAAO6/B,QAAQgE,cAAgB2G,GAE/B7qC,KAAK8oC,aAAap4B,MAAMyb,GAGxB9rB,EAAO6/B,QAAQkE,YAAcyG,GAE7B7qC,KAAK+oC,WAAWr4B,MAAMyb,GAGtB9rB,EAAO6/B,QAAQmE,eAAiBwG,GAEhC7qC,KAAKgpC,cAAct4B,MAAMyb,GAGzB9rB,EAAO6/B,QAAQgJ,cAAgB2B,GAE/B7qC,KAAKipC,aAAav4B,MAAMyb,IAahC2e,iBAAkB,SAAU1H,EAAQjX,GAI5BiX,IAAW/iC,EAAOigC,MAAM2D,aAExBjkC,KAAKslC,WAAWhJ,KAAKnQ,GAGrBiX,IAAW/iC,EAAOigC,MAAM6D,cAExBnkC,KAAKulC,YAAYjJ,KAAKnQ,GAGtBiX,IAAW/iC,EAAOigC,MAAM4D,eAExBlkC,KAAK8oC,aAAaxM,KAAKnQ,GAGvBiX,IAAW/iC,EAAOigC,MAAM8D,aAExBpkC,KAAK+oC,WAAWzM,KAAKnQ,GAGrBiX,IAAW/iC,EAAOigC,MAAM+D,gBAExBrkC,KAAKgpC,cAAc1M,KAAKnQ,GAGb,IAAXiX,GAEApjC,KAAKipC,aAAa3M,KAAKnQ,IAa/B4e,cAAe,SAAU5e,GAErBnsB,KAAKojC,OAASjX,EAAMiX,MAEpB,IAAI4H,GAAgD,SAAxC7e,EAAMjkB,KAAK+iC,cAAc7gC,QAAO,EAEtBV,UAAlByiB,EAAM0e,QAEFG,EAEAhrC,KAAK4qC,mBAAmBze,EAAM0e,QAAS1e,GAIvCnsB,KAAK8qC,iBAAiB3e,EAAMiX,OAAQjX,GAMpC6e,EAEAhrC,KAAKslC,WAAW50B,MAAMyb,IAItBnsB,KAAKslC,WAAWhJ,KAAKnQ,GACrBnsB,KAAKulC,YAAYjJ,KAAKnQ,IAQR,IAAlBA,EAAM0e,SAAiB1e,EAAMoc,SAAWvoC,KAAKslC,WAAW0C,SAExDhoC,KAAKslC,WAAWhJ,KAAKnQ,GACrBnsB,KAAKulC,YAAY70B,MAAMyb,IAG3BnsB,KAAKioC,MAAO,EACZjoC,KAAKgoC,QAAS,GAEVhoC,KAAKslC,WAAW0C,QAAUhoC,KAAKulC,YAAYyC,QAAUhoC,KAAK8oC,aAAad,QAAUhoC,KAAK+oC,WAAWf,QAAUhoC,KAAKgpC,cAAchB,QAAUhoC,KAAKipC,aAAajB,UAE1JhoC,KAAKioC,MAAO,EACZjoC,KAAKgoC,QAAS,IAUtBt3B,MAAO,SAAUyb,GAEb,GAAIpM,GAAQ/f,KAAKwa,KAAKuF,KA2DtB,OAzDIoM,GAAiB,YAEjBnsB,KAAKgiC,UAAY7V,EAAM6V,WAG3BhiC,KAAKwhC,WAAarV,EAAMqV,WACxBxhC,KAAKgH,OAASmlB,EAAMnlB,OAEhBhH,KAAKiqC,QAELjqC,KAAK+qC,cAAc5e,IAInBnsB,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,GAGhBjoC,KAAK6kB,QAAS,EACd7kB,KAAKqlC,YAAa,EAClBrlC,KAAKynB,OAAQ,EAEbznB,KAAKopC,YACLppC,KAAKyqC,kBAAoB,KACzBzqC,KAAK0qC,wBAA0B,KAG/B1qC,KAAKoqC,iBAAmBpqC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKkoC,SACnDloC,KAAKkoC,SAAWloC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAKmpC,WAAY,EAGjBnpC,KAAKyhC,KAAKtV,GAAO,GAGjBnsB,KAAKuqC,aAAa/8B,MAAMxN,KAAKiG,EAAGjG,KAAKyM,IAEjCsT,EAAMsd,qBAAuBh9B,EAAO05B,MAAMgG,uBAC1ChgB,EAAMsd,qBAAuBh9B,EAAO05B,MAAMuD,qBACzCvd,EAAMsd,qBAAuBh9B,EAAO05B,MAAMiG,uBAAuD,IAA9BjgB,EAAMmrB,uBAE1EnrB,EAAM9Z,EAAIjG,KAAKiG,EACf8Z,EAAMtT,EAAIzM,KAAKyM,EACfsT,EAAMxG,SAAS/L,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GAClCsT,EAAMqf,OAAOvgB,SAAS7e,KAAMmsB,GAC5BpM,EAAMqhB,WAAWphC,KAAKiG,EAAGjG,KAAKyM,IAGlCzM,KAAKspC,aAAc,EAEnBtpC,KAAKmqC,eAEqB,OAAtBnqC,KAAKqqC,cAELrqC,KAAKqqC,aAAac,gBAAgBnrC,MAG/BA,MAQXue,OAAQ,WAEJ,GAAIwB,GAAQ/f,KAAKwa,KAAKuF,KAElB/f,MAAK6kB,SAGD7kB,KAAKynB,QAED1H,EAAM0f,iBAAiB5K,MAAQ,GAE/B70B,KAAKorC,2BAA0B,GAGnCprC,KAAKynB,OAAQ,GAGbznB,KAAKmpC,aAAc,GAASnpC,KAAK6b,UAAYkE,EAAM6d,YAE/C7d,EAAMsd,qBAAuBh9B,EAAO05B,MAAMgG,uBAC1ChgB,EAAMsd,qBAAuBh9B,EAAO05B,MAAMuD,qBACzCvd,EAAMsd,qBAAuBh9B,EAAO05B,MAAMiG,uBAAuD,IAA9BjgB,EAAMmrB,sBAE1EnrB,EAAMwf,OAAO1gB,SAAS7e,MAG1BA,KAAKmpC,WAAY,GAIjBppB,EAAMge,sBAAwB/9B,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAKqpC,YAE1DrpC,KAAKqpC,UAAYrpC,KAAKwa,KAAKmE,KAAKA,KAAOoB,EAAMie,WAE7Ch+B,KAAKopC,SAASx2B,MACV3M,EAAGjG,KAAKuZ,SAAStT,EACjBwG,EAAGzM,KAAKuZ,SAAS9M,IAGjBzM,KAAKopC,SAASvhC,OAASkY,EAAMke,aAE7Bj+B,KAAKopC,SAASiC,WAc9B5J,KAAM,SAAUtV,EAAOmf,GAEnB,GAAIvrB,GAAQ/f,KAAKwa,KAAKuF,KAEtB,KAAIA,EAAMwrB,WAAV,CAyDA,GApDkB7hC,SAAd4hC,IAA2BA,GAAY,GAEtB5hC,SAAjByiB,EAAMiX,SAENpjC,KAAKojC,OAASjX,EAAMiX,QAGpBkI,GAAatrC,KAAKiqC,SAElBjqC,KAAK+qC,cAAc5e,GAGvBnsB,KAAKupC,QAAUpd,EAAMod,QACrBvpC,KAAKwpC,QAAUrd,EAAMqd,QAErBxpC,KAAKypC,MAAQtd,EAAMsd,MACnBzpC,KAAK0pC,MAAQvd,EAAMud,MAEnB1pC,KAAK2pC,QAAUxd,EAAMwd,QACrB3pC,KAAK4pC,QAAUzd,EAAMyd,QAEjB5pC,KAAKiqC,SAAWlqB,EAAM+H,MAAMwb,SAAWgI,IAEvCtrC,KAAK6pC,aAAe1d,EAAM4d,WAAa5d,EAAMqf,cAAgBrf,EAAMsf,iBAAmB,EACtFzrC,KAAK8pC,aAAe3d,EAAM6d,WAAa7d,EAAMuf,cAAgBvf,EAAMwf,iBAAmB,EAEtF3rC,KAAK+pC,WAAa/pC,KAAK6pC,aACvB7pC,KAAKgqC,WAAahqC,KAAK8pC,cAG3B9pC,KAAKiG,GAAKjG,KAAKypC,MAAQzpC,KAAKwa,KAAK3F,MAAMzG,OAAOnI,GAAK8Z,EAAMlL,MAAM5O,EAC/DjG,KAAKyM,GAAKzM,KAAK0pC,MAAQ1pC,KAAKwa,KAAK3F,MAAMzG,OAAO3B,GAAKsT,EAAMlL,MAAMpI,EAE/DzM,KAAKuZ,SAAS/L,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GACjCzM,KAAKw9B,OAAOv3B,EAAIjG,KAAKiG,EACrBjG,KAAKw9B,OAAO/wB,EAAIzM,KAAKyM,GAEjBsT,EAAMsd,qBAAuBh9B,EAAO05B,MAAMgG,uBAC1ChgB,EAAMsd,qBAAuBh9B,EAAO05B,MAAMuD,qBACzCvd,EAAMsd,qBAAuBh9B,EAAO05B,MAAMiG,uBAAuD,IAA9BjgB,EAAMmrB,uBAE1EnrB,EAAM8e,cAAgB7+B,KACtB+f,EAAM9Z,EAAIjG,KAAKiG,EACf8Z,EAAMtT,EAAIzM,KAAKyM,EACfsT,EAAMxG,SAAS/L,MAAMuS,EAAM9Z,EAAG8Z,EAAMtT,GACpCsT,EAAMyd,OAAOv3B,EAAI8Z,EAAM9Z,EACvB8Z,EAAMyd,OAAO/wB,EAAIsT,EAAMtT,GAG3BzM,KAAKqlC,WAAarlC,KAAKwa,KAAK3F,MAAM8F,OAAO3M,SAAShO,KAAKypC,MAAOzpC,KAAK0pC,OAG/D1pC,KAAKwa,KAAKqG,OAEV,MAAO7gB,KAKX,KAFA,GAAI8H,GAAIiY,EAAMid,cAAcn1B,OAErBC,KAEHiY,EAAMid,cAAcl1B,GAAGwrB,SAASxsB,KAAKiZ,EAAMid,cAAcl1B,GAAGuc,QAASrkB,KAAMA,KAAKiG,EAAGjG,KAAKyM,EAAG6+B,EAgB/F,OAZ0B,QAAtBtrC,KAAKqqC,cAAyBrqC,KAAKqqC,aAAauB,aAAc,EAE1D5rC,KAAKqqC,aAAa9rB,OAAOve,SAAU,IAEnCA,KAAKqqC,aAAe,MAGnBtqB,EAAM0f,iBAAiB5K,MAAQ,GAEpC70B,KAAKorC,0BAA0BE,GAG5BtrC,OAYXorC,0BAA2B,SAAUE,GAGjC,GAAIO,GAAuB,EACvBC,GAAyB,EACzBC,EAAkB,KAKlBC,EAAchsC,KAAKwa,KAAKuF,MAAM0f,iBAAiBwM,KAInD,KAFAjsC,KAAKsqC,yBAEE0B,GAGHA,EAAYE,SAAU,EAElBF,EAAYG,cAAcL,EAAwBD,GAAsB,KAGxEG,EAAYE,SAAU,GAEjBZ,GAAaU,EAAYI,iBAAiBpsC,MAAM,KAC/CsrC,GAAaU,EAAYK,iBAAiBrsC,MAAM,MAElD6rC,EAAuBG,EAAY5U,OAAOvD,cAC1CiY,EAAyBE,EAAYM,WACrCP,EAAkBC,EAClBhsC,KAAKsqC,sBAAsB13B,KAAKo5B,KAIxCA,EAAchsC,KAAKwa,KAAKuF,MAAM0f,iBAAiBlO,IASnD,KAFAya,EAAchsC,KAAKwa,KAAKuF,MAAM0f,iBAAiBwM,MAExCD,IAEEA,EAAYE,SACbF,EAAYG,cAAcL,EAAwBD,GAAsB,KAEnEP,GAAaU,EAAYI,iBAAiBpsC,MAAM,KAC/CsrC,GAAaU,EAAYK,iBAAiBrsC,MAAM,MAElD6rC,EAAuBG,EAAY5U,OAAOvD,cAC1CiY,EAAyBE,EAAYM,WACrCP,EAAkBC,EAClBhsC,KAAKsqC,sBAAsB13B,KAAKo5B,IAIxCA,EAAchsC,KAAKwa,KAAKuF,MAAM0f,iBAAiBlO,IAUnD,OAPIvxB,MAAKwa,KAAKuF,MAAMkd,yBAEhB8O,EAAkB/rC,KAAKwa,KAAKuF,MAAMkd,uBAAuBn2B,KAAK9G,KAAKwa,KAAKuF,MAAMmd,8BAA+Bl9B,KAAMA,KAAKsqC,sBAAuByB,IAGnJ/rC,KAAKusC,WAAWR,GAAiB,GAEH,OAAtB/rC,KAAKqqC,cAgBjBkC,WAAY,SAAUC,EAAW9c,GAEdhmB,SAAXgmB,IAAwBA,GAAS,GAGnB,OAAd8c,EAGIxsC,KAAKqqC,eAELrqC,KAAKqqC,aAAaoC,mBAAmBzsC,KAAM0vB,GAC3C1vB,KAAKqqC,aAAe,MAKE,OAAtBrqC,KAAKqqC,cAGLrqC,KAAKqqC,aAAemC,EACpBA,EAAUE,oBAAoB1sC,KAAM0vB,IAKhC1vB,KAAKqqC,eAAiBmC,EAGlBA,EAAUjuB,OAAOve,SAAU,IAE3BA,KAAKqqC,aAAe,OAMxBrqC,KAAKqqC,aAAaoC,mBAAmBzsC,KAAM0vB,GAG3C1vB,KAAKqqC,aAAemC,EACpBxsC,KAAKqqC,aAAaqC,oBAAoB1sC,KAAM0vB,KAa5Did,MAAO,SAAUxgB,GAEbnsB,KAAKqlC,YAAa,EAClBrlC,KAAKyhC,KAAKtV,GAAO,IAUrBmQ,KAAM,SAAUnQ,GAEZ,GAAIpM,GAAQ/f,KAAKwa,KAAKuF,KAEtB,OAAI/f,MAAKspC,aAAetpC,KAAKqlC,eAEzBlZ,GAAMmP,kBAIVt7B,KAAKmoC,OAASnoC,KAAKwa,KAAKmE,KAAKA,MAEzBoB,EAAMsd,qBAAuBh9B,EAAO05B,MAAMgG,uBAC1ChgB,EAAMsd,qBAAuBh9B,EAAO05B,MAAMuD,qBACzCvd,EAAMsd,qBAAuBh9B,EAAO05B,MAAMiG,uBAAuD,IAA9BjgB,EAAMmrB,uBAE1EnrB,EAAMsf,KAAKxgB,SAAS7e,KAAMmsB,GAGtBnsB,KAAK6b,UAAY,GAAK7b,KAAK6b,UAAYkE,EAAM2d,UAGzC19B,KAAKmoC,OAASnoC,KAAKkqC,gBAAkBnqB,EAAM4d,cAG3C5d,EAAMuf,MAAMzgB,SAAS7e,MAAM,GAK3B+f,EAAMuf,MAAMzgB,SAAS7e,MAAM,GAG/BA,KAAKkqC,gBAAkBlqC,KAAKmoC,SAIhCnoC,KAAKiqC,QAELjqC,KAAK+qC,cAAc5e,IAInBnsB,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,GAIZjoC,KAAK2U,GAAK,IAEV3U,KAAK6kB,QAAS,GAGlB7kB,KAAKqlC,WAAarlC,KAAKwa,KAAK3F,MAAM8F,OAAO3M,SAASme,EAAMsd,MAAOtd,EAAMud,OACrE1pC,KAAKgiC,UAAY,KACjBhiC,KAAKwhC,WAAa,KAElBxhC,KAAKwqC,WAAWh9B,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GAE/BzM,KAAKiqC,WAAY,GAEjBlqB,EAAM6sB,kBAGV7sB,EAAM0f,iBAAiBhM,QAAQ,mBAAoBzzB,MAE/CA,KAAKyqC,oBAELzqC,KAAK0qC,wBAA0B1qC,KAAKqqC,cAGxCrqC,KAAKqqC,aAAe,KAEbrqC,OAYX0oC,YAAa,SAAU7sB,GAInB,MAFAA,GAAWA,GAAY7b,KAAKwa,KAAKuF,MAAM8d,gBAE/B79B,KAAKgoC,UAAW,GAAShoC,KAAKkoC,SAAWrsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MAYhFgqB,aAAc,SAAU9sB,GAIpB,MAFAA,GAAWA,GAAY7b,KAAKwa,KAAKuF,MAAM+d,iBAE/B99B,KAAKioC,MAASjoC,KAAKmoC,OAAStsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MAqBnEkuB,mBAAoB,SAAUzhC,EAAMkoB,EAAUvQ,EAAiB+pB,GAE3D,GAAK9sC,KAAKgoC,OAAV,CAOA,IAAK,GAFD+E,GAAe/sC,KAAKyqC,kBAAoBzqC,KAAKyqC,sBAExC3iC,EAAI,EAAGA,EAAIilC,EAAYllC,OAAQC,IAEpC,GAAIilC,EAAYjlC,GAAGsD,OAASA,EAC5B,CACI2hC,EAAY5pB,OAAOrb,EAAG,EACtB,OAIRilC,EAAYn6B,MACRxH,KAAMA,EACNi/B,aAAcrqC,KAAKqqC,aACnB/W,SAAUA,EACVvQ,gBAAiBA,EACjB+pB,aAAcA,MAUtBjK,wBAAyB,WAErB,GAAIkK,GAAc/sC,KAAKyqC,iBAEvB,IAAKsC,EAAL,CAKA,IAAK,GAAIjlC,GAAI,EAAGA,EAAIilC,EAAYllC,OAAQC,IACxC,CACI,GAAIklC,GAAaD,EAAYjlC,EAEzBklC,GAAW3C,eAAiBrqC,KAAK0qC,yBAEjCsC,EAAW1Z,SAASrsB,MAAM+lC,EAAWjqB,gBAAiBiqB,EAAWF,cAIzE9sC,KAAKyqC,kBAAoB,KACzBzqC,KAAK0qC,wBAA0B,OAQnChrB,MAAO,WAEC1f,KAAKiqC,WAAY,IAEjBjqC,KAAK6kB,QAAS,GAGlB7kB,KAAKgiC,UAAY,KACjBhiC,KAAKwhC,WAAa,KAClBxhC,KAAKynB,OAAQ,EACbznB,KAAKmqC,aAAe,EACpBnqC,KAAKmpC,WAAY,EACjBnpC,KAAKopC,SAASvhC,OAAS,EACvB7H,KAAKspC,aAAc,EAEnBtpC,KAAK2qC,eAED3qC,KAAKqqC,cAELrqC,KAAKqqC,aAAa4C,iBAAiBjtC,MAGvCA,KAAKqqC,aAAe,MAQxB6C,cAAe,WAEXltC,KAAK+pC,UAAY,EACjB/pC,KAAKgqC,UAAY,IAMzB3pC,EAAO6/B,QAAQ75B,UAAU8B,YAAc9H,EAAO6/B,QAW9C34B,OAAO2E,eAAe7L,EAAO6/B,QAAQ75B,UAAW,YAE5C2F,IAAK,WAED,MAAIhM,MAAKioC,MAEE,EAGJjoC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKkoC,YAY1C3gC,OAAO2E,eAAe7L,EAAO6/B,QAAQ75B,UAAW,UAE5C2F,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAMmC,OAAO3W,EAAIjG,KAAKiG,KAY/CsB,OAAO2E,eAAe7L,EAAO6/B,QAAQ75B,UAAW,UAE5C2F,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAMmC,OAAOnQ,EAAIzM,KAAKyM,KAgB/CpM,EAAO8/B,aASHC,OAAQ,EAMRyI,QAAS,GAmBbxoC,EAAOkgC,MAAQ,SAAU/lB,GAKrBxa,KAAKwa,KAAOA,EAOZxa,KAAKo9B,SAAU,EASfp9B,KAAKmtC,sBAKLntC,KAAK+iB,gBAAkB/iB,KAAKwa,KAK5Bxa,KAAKotC,mBAAqB,KAK1BptC,KAAKqtC,kBAAoB,KAKzBrtC,KAAKstC,iBAAmB,KAKxBttC,KAAKutC,mBAAqB,KAK1BvtC,KAAKwtC,mBAAqB,KAK1BxtC,KAAKytC,oBAAsB,KAM3BztC,KAAKs7B,gBAAiB,EAMtBt7B,KAAKmsB,MAAQ,KAMbnsB,KAAK0tC,cAAgB,KAMrB1tC,KAAK2tC,aAAe,KAMpB3tC,KAAK4tC,YAAc,KAMnB5tC,KAAK6tC,cAAgB,KAMrB7tC,KAAK8tC,cAAgB,KAMrB9tC,KAAK+tC,eAAiB,KAMtB/tC,KAAK2tC,aAAe,MAIxBttC,EAAOkgC,MAAMl6B,WAMTqK,MAAO,WAEH,GAA2B,OAAvB1Q,KAAK0tC,cAAT,CAMA,GAAIjnB,GAAQzmB,IAERA,MAAKwa,KAAKkS,OAAOsS,QAEjBh/B,KAAK0tC,cAAgB,SAAUvhB,GAC3B,MAAO1F,GAAMunB,aAAa7hB,IAG9BnsB,KAAK2tC,aAAe,SAAUxhB,GAC1B,MAAO1F,GAAMwnB,YAAY9hB,IAG7BnsB,KAAK4tC,YAAc,SAAUzhB,GACzB,MAAO1F,GAAMynB,WAAW/hB,IAG5BnsB,KAAK6tC,cAAgB,SAAU1hB,GAC3B,MAAO1F,GAAM0nB,aAAahiB,IAG9BnsB,KAAK8tC,cAAgB,SAAU3hB,GAC3B,MAAO1F,GAAM2nB,aAAajiB,IAG9BnsB,KAAK+tC,eAAiB,SAAU5hB,GAC5B,MAAO1F,GAAM4nB,cAAcliB,IAG/BnsB,KAAKwa,KAAK8Q,OAAOe,iBAAiB,aAAcrsB,KAAK0tC,eAAe,GACpE1tC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,YAAarsB,KAAK2tC,cAAc,GAClE3tC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,WAAYrsB,KAAK4tC,aAAa,GAChE5tC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,cAAersB,KAAK+tC,gBAAgB,GAEjE/tC,KAAKwa,KAAKkS,OAAOwO,WAElBl7B,KAAKwa,KAAK8Q,OAAOe,iBAAiB,aAAcrsB,KAAK6tC,eAAe,GACpE7tC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,aAAcrsB,KAAK8tC,eAAe,OAUhFQ,uBAAwB,WAEpBtuC,KAAKuuC,mBAAqB,SAAUpiB,GAChCA,EAAMmP,kBAGVxP,SAASO,iBAAiB,YAAarsB,KAAKuuC,oBAAoB,IAkBpEC,qBAAsB,SAAUlb,EAAUjP,EAASoqB,GAEjC/kC,SAAV+kC,IAAuBA,GAAQ,GAEnCzuC,KAAKmtC,mBAAmBv6B,MAAO0gB,SAAUA,EAAUjP,QAASA,EAASoqB,MAAOA,KAYhFC,wBAAyB,SAAUpb,EAAUjP,GAIzC,IAFA,GAAIvc,GAAI9H,KAAKmtC,mBAAmBtlC,OAEzBC,KAEH,GAAI9H,KAAKmtC,mBAAmBrlC,GAAGwrB,WAAaA,GAAYtzB,KAAKmtC,mBAAmBrlC,GAAGuc,UAAYA,EAG3F,MADArkB,MAAKmtC,mBAAmBhqB,OAAOrb,EAAG,IAC3B,CAIf,QAAO,GASXkmC,aAAc,SAAU7hB,GAIpB,IAFA,GAAIrkB,GAAI9H,KAAKmtC,mBAAmBtlC,OAEzBC,KACP,CACI,GAAI6mC,GAAK3uC,KAAKmtC,mBAAmBrlC,IAE5B6mC,EAAGF,OAASE,EAAGrb,SAASxsB,KAAK6nC,EAAGtqB,QAASrkB,KAAMmsB,IAEhDnsB,KAAKmtC,mBAAmBhqB,OAAOrb,EAAG,GAM1C,GAFA9H,KAAKmsB,MAAQA,EAERnsB,KAAKwa,KAAKuF,MAAMqd,SAAYp9B,KAAKo9B,QAAtC,CAKIp9B,KAAKotC,oBAELptC,KAAKotC,mBAAmBtmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAKs7B,gBAELnP,EAAMmP,gBAMV,KAAK,GAAIxzB,GAAI,EAAGA,EAAIqkB,EAAMyiB,eAAe/mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAMshB,aAAalV,EAAMyiB,eAAe9mC,MAW1DumC,cAAe,SAAUliB,GASrB,GAPAnsB,KAAKmsB,MAAQA,EAETnsB,KAAKytC,qBAELztC,KAAKytC,oBAAoB3mC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAKwa,KAAKuF,MAAMqd,SAAYp9B,KAAKo9B,QAAtC,CAKIp9B,KAAKs7B,gBAELnP,EAAMmP,gBAKV,KAAK,GAAIxzB,GAAI,EAAGA,EAAIqkB,EAAMyiB,eAAe/mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAM2hB,YAAYvV,EAAMyiB,eAAe9mC,MAWzDqmC,aAAc,SAAUhiB,GAEpBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKutC,oBAELvtC,KAAKutC,mBAAmBzmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGlDnsB,KAAKwa,KAAKuF,MAAMqd,SAAYp9B,KAAKo9B,SAKlCp9B,KAAKs7B,gBAELnP,EAAMmP,kBAWd8S,aAAc,SAAUjiB,GAEpBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKwtC,oBAELxtC,KAAKwtC,mBAAmB1mC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAKs7B,gBAELnP,EAAMmP,kBAUd2S,YAAa,SAAU9hB,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKqtC,mBAELrtC,KAAKqtC,kBAAkBvmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGlDnsB,KAAKs7B,gBAELnP,EAAMmP,gBAGV,KAAK,GAAIxzB,GAAI,EAAGA,EAAIqkB,EAAMyiB,eAAe/mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAMwhB,cAAcpV,EAAMyiB,eAAe9mC,KAU3DomC,WAAY,SAAU/hB,GAIlB,IAFA,GAAIrkB,GAAI9H,KAAKmtC,mBAAmBtlC,OAEzBC,KACP,CACI,GAAI6mC,GAAK3uC,KAAKmtC,mBAAmBrlC,EAE7B6mC,GAAGF,OAASE,EAAGrb,SAASxsB,KAAK6nC,EAAGtqB,QAASrkB,KAAMmsB,IAE/CnsB,KAAKmtC,mBAAmBhqB,OAAOrb,EAAG,GAI1C9H,KAAKmsB,MAAQA,EAETnsB,KAAKstC,kBAELttC,KAAKstC,iBAAiBxmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAKs7B,gBAELnP,EAAMmP,gBAMV,KAAK,GAAIxzB,GAAI,EAAGA,EAAIqkB,EAAMyiB,eAAe/mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAM2hB,YAAYvV,EAAMyiB,eAAe9mC,KASzDw0B,KAAM,WAEEt8B,KAAKwa,KAAKkS,OAAOsS,QAEjBh/B,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,aAAcvtB,KAAK0tC,eACxD1tC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,YAAavtB,KAAK2tC,cACvD3tC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,WAAYvtB,KAAK4tC,aACtD5tC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,aAAcvtB,KAAK6tC,eACxD7tC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,aAAcvtB,KAAK8tC,eACxD9tC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,cAAevtB,KAAK+tC,mBAOrE1tC,EAAOkgC,MAAMl6B,UAAU8B,YAAc9H,EAAOkgC,MAe5ClgC,EAAOwuC,aAAe,SAAUzX,GAK5Bp3B,KAAKo3B,OAASA,EAKdp3B,KAAKwa,KAAO4c,EAAO5c,KAMnBxa,KAAKo9B,SAAU,EAMfp9B,KAAKksC,SAAU,EASflsC,KAAKssC,WAAa,EAMlBtsC,KAAK8uC,eAAgB,EAMrB9uC,KAAK+uC,gBAAiB,EAMtB/uC,KAAK4rC,WAAY,EAMjB5rC,KAAKgvC,qBAAsB,EAM3BhvC,KAAKivC,mBAAoB,EAMzBjvC,KAAK6xB,YAAa,EAMlB7xB,KAAKkvC,WAAa,KAMlBlvC,KAAKmvC,YAAa,EAMlBnvC,KAAKovC,eAAgB,EAMrBpvC,KAAKqvC,MAAQ,EAMbrvC,KAAKsvC,MAAQ,EAMbtvC,KAAKuvC,YAAc,EAMnBvvC,KAAKwvC,YAAc,EAUnBxvC,KAAKyvC,kBAAmB,EAUxBzvC,KAAK0vC,mBAAoB,EAMzB1vC,KAAK2vC,kBAAoB,IAMzB3vC,KAAK4vC,WAAY,EAMjB5vC,KAAK6vC,WAAa,KAMlB7vC,KAAK8vC,aAAe,KAKpB9vC,KAAK+vC,YAAa,EAKlB/vC,KAAKgwC,WAAa,GAAI3vC,GAAO2M,MAK7BhN,KAAKiwC,gBAAiB,EAKtBjwC,KAAKkwC,uBAAwB,EAK7BlwC,KAAKmwC,eAAiB,GAAI9vC,GAAO2M,MAKjChN,KAAKowC,sBAAwB,EAK7BpwC,KAAKqwC,kBAAoB,EAKzBrwC,KAAKswC,UAAY,GAAIjwC,GAAO2M,MAK5BhN,KAAKuwC,UAAY,GAAIlwC,GAAO2M,MAM5BhN,KAAKwwC,WAAa,GAAInwC,GAAO2M,MAM7BhN,KAAKywC,YAAa,EAMlBzwC,KAAK0wC,cAAe,EAMpB1wC,KAAK2wC,eAAgB,EAMrB3wC,KAAK4wC,mBAAoB,EAMzB5wC,KAAK6wC,aAAc,EAMnB7wC,KAAK8wC,WAAa,GAAIzwC,GAAO2M,MAM7BhN,KAAK+wC,gBAEL/wC,KAAK+wC,aAAan+B,MACd+B,GAAI,EACJ1O,EAAG,EACHwG,EAAG,EACHukC,KAAM,EACNC,KAAM,EACNjJ,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,KAKnBvrC,EAAOwuC,aAAaxoC,WAUhBqK,MAAO,SAAU2U,EAAUypB,GAMvB,GAJAzpB,EAAWA,GAAY,EACD3b,SAAlBolC,IAA+BA,GAAgB,GAG/C9uC,KAAKo9B,WAAY,EACrB,CAEIp9B,KAAKwa,KAAKuF,MAAM0f,iBAAiB5tB,IAAI7R,MACrCA,KAAK8uC,cAAgBA,EACrB9uC,KAAKssC,WAAajnB,CAElB,KAAK,GAAIvd,GAAI,EAAGA,EAAI,GAAIA,IAEpB9H,KAAK+wC,aAAajpC,IACd6M,GAAI7M,EACJ7B,EAAG,EACHwG,EAAG,EACHu7B,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,EAInB5rC,MAAKkvC,WAAa,GAAI7uC,GAAO2M,MAC7BhN,KAAKo9B,SAAU,EACfp9B,KAAK6wC,aAAc,EAOvB,MAHA7wC,MAAKo3B,OAAOjH,OAAOohB,eAAe1/B,IAAI7R,KAAKwxC,aAAcxxC,MACzDA,KAAKo3B,OAAOjH,OAAOshB,mBAAmB5/B,IAAI7R,KAAK0xC,iBAAkB1xC,MAE1DA,KAAKo3B,QAUhBoa,aAAc,WAENxxC,KAAKywC,YAKLzwC,KAAK6wC,cAAgB7wC,KAAKo9B,SAE1Bp9B,KAAK0Q,SAWbghC,iBAAkB,WAEV1xC,KAAKywC,aAKLzwC,KAAKo9B,SAELp9B,KAAK6wC,aAAc,EACnB7wC,KAAKs8B,QAILt8B,KAAK6wC,aAAc,IAS3BnxB,MAAO,WAEH1f,KAAKo9B,SAAU,CAEf,KAAK,GAAIt1B,GAAI,EAAGA,EAAI,GAAIA,IAEpB9H,KAAK+wC,aAAajpC,IACd6M,GAAI7M,EACJ7B,EAAG,EACHwG,EAAG,EACHu7B,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,IASvBtP,KAAM,WAGEt8B,KAAKo9B,WAAY,IAOjBp9B,KAAKo9B,SAAU,EACfp9B,KAAKwa,KAAKuF,MAAM0f,iBAAiB3c,OAAO9iB,QAShD8jB,QAAS,WAED9jB,KAAKo3B,SAEDp3B,KAAK+uC,iBAEL/uC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK+uC,gBAAiB,GAG1B/uC,KAAKo9B,SAAU,EAEfp9B,KAAKwa,KAAKuF,MAAM0f,iBAAiB3c,OAAO9iB,MAExCA,KAAK+wC,aAAalpC,OAAS,EAC3B7H,KAAK6vC,WAAa,KAClB7vC,KAAK8vC,aAAe,KACpB9vC,KAAKo3B,OAAS,OAgBtB+U,cAAe,SAAUwF,EAAWC,EAAiBC,GAIjD,MAF4BnoC,UAAxBmoC,IAAqCA,GAAsB,MAE1D7xC,KAAKo9B,SACkB,IAAxBp9B,KAAKo3B,OAAOviB,MAAM5O,GACM,IAAxBjG,KAAKo3B,OAAOviB,MAAMpI,GAClBzM,KAAKssC,WAAatsC,KAAKwa,KAAKuF,MAAMyf,eACjCx/B,KAAKo3B,OAAO5N,QAAUxpB,KAAKo3B,OAAO5N,OAAOsoB,uBAMzCD,IAAwB7xC,KAAK0vC,mBAAqB1vC,KAAKyvC,qBAKxDzvC,KAAKssC,WAAaqF,GAAc3xC,KAAKssC,aAAeqF,GAAa3xC,KAAKo3B,OAAOvD,cAAgB+d,KAerGG,eAAgB,WAEZ,MAAQ/xC,MAAK0vC,mBAAqB1vC,KAAKyvC,kBAY3CuC,SAAU,SAAUhQ,GAIhB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAW/7B,GAYxCgsC,SAAU,SAAUjQ,GAIhB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAWv1B,GAYxCylC,YAAa,SAAUlQ,GAInB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAWgG,QAYxCmK,UAAW,SAAUnQ,GAIjB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAWiG,MAWxCmK,gBAAiB,SAAUpQ,GAIvB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAWkG,UAWxCmK,cAAe,SAAUrQ,GAIrB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAWmG,QAWxCmK,YAAa,SAAUtQ,GAEnB,IAAKhiC,KAAKo9B,QAEN,OAAO,CAGX,IAAkB1zB,SAAds4B,EACJ,CACI,IAAK,GAAIl6B,GAAI,EAAGA,EAAI,GAAIA,IAEpB,GAAI9H,KAAK+wC,aAAajpC,GAAGopC,OAErB,OAAO,CAIf,QAAO,EAIP,MAAOlxC,MAAK+wC,aAAa/O,GAAWkP,QAY5CqB,WAAY,SAAUvQ,GAElB,IAAKhiC,KAAKo9B,QAEN,OAAO,CAGX,IAAkB1zB,SAAds4B,EAYA,MAAOhiC,MAAK+wC,aAAa/O,GAAWmP,KAVpC,KAAK,GAAIrpC,GAAI,EAAGA,EAAI,GAAIA,IAEpB,GAAI9H,KAAK+wC,aAAajpC,GAAGqpC,MAErB,OAAO,GAkBvBqB,gBAAiB,SAAUxQ,GAIvB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAWoP,UAWxCqB,eAAgB,SAAUzQ,GAItB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAWqP,SAWxCqB,eAAgB,SAAU1Q,GAItB,MAFAA,GAAYA,GAAa,EAElBhiC,KAAK+wC,aAAa/O,GAAW4J,WAaxCQ,iBAAkB,SAAUtjB,EAAS6pB,GAEjC,SAAK7pB,EAAQkf,QACRhoC,KAAKo9B,SACLp9B,KAAKo3B,QACLp3B,KAAKo3B,OAAO5N,QACZxpB,KAAKo3B,OAAOvc,SACZ7a,KAAKo3B,OAAO5N,OAAO3O,SACS,IAA7B7a,KAAKo3B,OAAOwb,WAAW3sC,GACM,IAA7BjG,KAAKo3B,OAAOwb,WAAWnmC,OAMvBzM,KAAKwa,KAAKuF,MAAMoiB,QAAQniC,KAAKo3B,OAAQtO,EAAS9oB,KAAK8wC,cAElCpnC,SAAbipC,IAEAA,GAAW,MAGVA,GAAY3yC,KAAK0vC,oBAEX1vC,KAAK6yC,WAAW7yC,KAAK8wC,WAAW7qC,EAAGjG,KAAK8wC,WAAWrkC,MAqBtE4/B,iBAAkB,SAAUvjB,EAAS6pB,GAEjC,SAAK3yC,KAAKo9B,SACLp9B,KAAKo3B,QACLp3B,KAAKo3B,OAAO5N,QACZxpB,KAAKo3B,OAAOvc,SACZ7a,KAAKo3B,OAAO5N,OAAO3O,SACS,IAA7B7a,KAAKo3B,OAAOwb,WAAW3sC,GACM,IAA7BjG,KAAKo3B,OAAOwb,WAAWnmC,OAMvBzM,KAAKwa,KAAKuF,MAAMoiB,QAAQniC,KAAKo3B,OAAQtO,EAAS9oB,KAAK8wC,cAElCpnC,SAAbipC,IAEAA,GAAW,MAGVA,GAAY3yC,KAAKyvC,mBAEXzvC,KAAK6yC,WAAW7yC,KAAK8wC,WAAW7qC,EAAGjG,KAAK8wC,WAAWrkC,MAsBtEomC,WAAY,SAAU5sC,EAAGwG,EAAGqc,GAGxB,GAAI9oB,KAAKo3B,OAAOoL,QAAQsQ,YAAYplC,OACpC,CACI,GAAU,OAANzH,GAAoB,OAANwG,EAClB,CAEIzM,KAAKwa,KAAKuF,MAAMkiB,iBAAiBjiC,KAAKo3B,OAAQtO,EAAS9oB,KAAK8wC,WAE5D,IAAI7qC,GAAIjG,KAAK8wC,WAAW7qC,EACpBwG,EAAIzM,KAAK8wC,WAAWrkC,EAgB5B,GAb6B,IAAzBzM,KAAKo3B,OAAO/N,OAAOpjB,IAEnBA,IAAMjG,KAAKo3B,OAAOoL,QAAQ7R,MAAM5gB,MAAQ/P,KAAKo3B,OAAO/N,OAAOpjB,GAGlC,IAAzBjG,KAAKo3B,OAAO/N,OAAO5c,IAEnBA,IAAMzM,KAAKo3B,OAAOoL,QAAQ7R,MAAM3gB,OAAShQ,KAAKo3B,OAAO/N,OAAO5c,GAGhExG,GAAKjG,KAAKo3B,OAAOoL,QAAQ7R,MAAM1qB,EAC/BwG,GAAKzM,KAAKo3B,OAAOoL,QAAQ7R,MAAMlkB,EAE3BzM,KAAKo3B,OAAOoL,QAAQuQ,OAEpB9sC,GAAKjG,KAAKo3B,OAAOoL,QAAQuQ,KAAK9sC,EAC9BwG,GAAKzM,KAAKo3B,OAAOoL,QAAQuQ,KAAKtmC,EAG1BxG,EAAIjG,KAAKo3B,OAAOoL,QAAQwQ,KAAK/sC,GAAKA,EAAIjG,KAAKo3B,OAAOoL,QAAQwQ,KAAKpoC,OAAS6B,EAAIzM,KAAKo3B,OAAOoL,QAAQwQ,KAAKvmC,GAAKA,EAAIzM,KAAKo3B,OAAOoL,QAAQwQ,KAAKrkC,QAIvI,MAFA3O,MAAKizC,IAAMhtC,EACXjG,KAAKkzC,IAAMzmC,GACJ,CAIfzM,MAAKizC,IAAMhtC,EACXjG,KAAKkzC,IAAMzmC,EAEXzM,KAAKwa,KAAKuF,MAAMgd,WAAWoW,UAAU,EAAG,EAAG,EAAG,GAC9CnzC,KAAKwa,KAAKuF,MAAMgd,WAAWqW,UAAUpzC,KAAKo3B,OAAOoL,QAAQsQ,YAAYplC,OAAQzH,EAAGwG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAElG,IAAI4mC,GAAMrzC,KAAKwa,KAAKuF,MAAMgd,WAAWuW,aAAa,EAAG,EAAG,EAAG,EAE3D,IAAID,EAAI3Q,KAAK,IAAM1iC,KAAK2vC,kBAEpB,OAAO,EAIf,OAAO,GAaXpxB,OAAQ,SAAUuK,GAEd,GAAoB,OAAhB9oB,KAAKo3B,QAA0C1tB,SAAvB1J,KAAKo3B,OAAO5N,OAMxC,MAAKxpB,MAAKo9B,SAAYp9B,KAAKo3B,OAAOvc,SAAY7a,KAAKo3B,OAAO5N,OAAO3O,QAM7D7a,KAAK0wC,cAEA1wC,KAAK4wC,oBAEN5wC,KAAK4wC,kBAAqBvwC,EAAO0F,KAAK8H,SAASib,EAAQ7iB,EAAG6iB,EAAQrc,EAAGzM,KAAKswC,UAAUrqC,EAAGjG,KAAKswC,UAAU7jC,IAAMzM,KAAKowC;AAGjHpwC,KAAK4wC,mBAAqB5wC,KAAK2wC,eAE/B3wC,KAAKuzC,UAAUzqB,IAGZ,GAEF9oB,KAAK4vC,WAAa5vC,KAAKwzC,oBAAsB1qB,EAAQnU,GAEnD3U,KAAKyzC,WAAW3qB,GAAS,GAE3B9oB,KAAK+wC,aAAajoB,EAAQnU,IAAIu8B,OAE/BlxC,KAAKqsC,iBAAiBvjB,IAEtB9oB,KAAK+wC,aAAajoB,EAAQnU,IAAI1O,EAAI6iB,EAAQ7iB,EAAIjG,KAAKo3B,OAAOnxB,EAC1DjG,KAAK+wC,aAAajoB,EAAQnU,IAAIlI,EAAIqc,EAAQrc,EAAIzM,KAAKo3B,OAAO3qB,GACnD,IAIPzM,KAAKysC,mBAAmB3jB,IACjB,GAXV,QAtBD9oB,KAAKysC,mBAAmB3jB,IACjB,IA6Cf4jB,oBAAqB,SAAU5jB,EAAS4G,GAEpC,GAAoB,OAAhB1vB,KAAKo3B,OAAT,CAMA,GAAIsL,GAAO1iC,KAAK+wC,aAAajoB,EAAQnU,GAErC,IAAI+tB,EAAKwO,UAAW,GAASpoB,EAAQrB,MACrC,CACI,GAAIisB,GAAahR,EAAKwO,UAAW,CAEjCxO,GAAKwO,QAAS,EACdxO,EAAKyO,OAAQ,EACbzO,EAAK0O,SAAWpxC,KAAKwa,KAAKmE,KAAKA,KAC/B+jB,EAAKz8B,EAAI6iB,EAAQ7iB,EAAIjG,KAAKo3B,OAAOnxB,EACjCy8B,EAAKj2B,EAAIqc,EAAQrc,EAAIzM,KAAKo3B,OAAO3qB,EAE7BzM,KAAK8uC,eAAiBpM,EAAKkJ,aAAc,IAEzC5rC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK+uC,gBAAiB,IAGrBrf,GAAUgkB,GAAa1zC,KAAKo3B,QAAUp3B,KAAKo3B,OAAOjH,QAEnDnwB,KAAKo3B,OAAOjH,OAAOwjB,qBAAqB3zC,KAAKo3B,OAAQtO,GAGrD9oB,KAAKo3B,OAAO5N,QAAUxpB,KAAKo3B,OAAO5N,OAAOthB,OAAS7H,EAAOmB,OAEzDxB,KAAKo3B,OAAO5N,OAAOiF,iBAAiB5P,SAAS7e,KAAKo3B,OAAQtO,MActE2jB,mBAAoB,SAAU3jB,EAAS4G,GAEnC,GAAoB,OAAhB1vB,KAAKo3B,OAAT,CAMA,GAAIsL,GAAO1iC,KAAK+wC,aAAajoB,EAAQnU,GAErC+tB,GAAKwO,QAAS,EACdxO,EAAKyO,OAAQ,EACbzO,EAAK2O,QAAUrxC,KAAKwa,KAAKmE,KAAKA,KAE1B3e,KAAK8uC,eAAiBpM,EAAKkJ,aAAc,IAEzC5rC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK+uC,gBAAiB,IAGrBrf,GAAU1vB,KAAKo3B,QAAUp3B,KAAKo3B,OAAOjH,SAEtCnwB,KAAKo3B,OAAOjH,OAAOyjB,oBAAoB5zC,KAAKo3B,OAAQtO,GAEhD9oB,KAAKo3B,QAAUp3B,KAAKo3B,OAAO5N,QAAUxpB,KAAKo3B,OAAO5N,OAAOthB,OAAS7H,EAAOmB,OAExExB,KAAKo3B,OAAO5N,OAAOkF,gBAAgB7P,SAAS7e,KAAKo3B,OAAQtO,MAarEqiB,gBAAiB,SAAUriB,GAEvB,GAAoB,OAAhB9oB,KAAKo3B,OAAT,CAMA,GAAIsL,GAAO1iC,KAAK+wC,aAAajoB,EAAQnU,GAErC,KAAK+tB,EAAKsF,QAAUtF,EAAKwO,OACzB,CACI,GAAIlxC,KAAK0vC,oBAAsB1vC,KAAK6yC,WAAW,KAAM,KAAM/pB,GAEvD,MAYJ,IATA4Z,EAAKsF,QAAS,EACdtF,EAAKuF,MAAO,EACZvF,EAAKwF,SAAWloC,KAAKwa,KAAKmE,KAAKA,KAE/B3e,KAAKswC,UAAUrkC,IAAI6c,EAAQ7iB,EAAG6iB,EAAQrc,GAGtCqc,EAAQrB,OAAQ,EAEZznB,KAAKo3B,QAAUp3B,KAAKo3B,OAAOjH,SAE3BnwB,KAAKo3B,OAAOjH,OAAO0jB,qBAAqB7zC,KAAKo3B,OAAQtO,GAGjD9oB,KAAKo3B,QAAUp3B,KAAKo3B,OAAO5N,QAAUxpB,KAAKo3B,OAAO5N,OAAOthB,OAAS7H,EAAOmB,OAExExB,KAAKo3B,OAAO5N,OAAO+E,iBAAiB1P,SAAS7e,KAAKo3B,OAAQtO,GAI1C,OAAhB9oB,KAAKo3B,QAEL,MAKJp3B,MAAK4vC,WAAa5vC,KAAK4rC,aAAc,IAEN,IAA3B5rC,KAAKqwC,mBAA0D,IAA/BrwC,KAAKowC,sBAErCpwC,KAAKuzC,UAAUzqB,IAIf9oB,KAAK0wC,cAAe,EAEpB1wC,KAAK4wC,kBAAoD,IAA/B5wC,KAAKowC,sBAE3BpwC,KAAKqwC,kBAAoB,GAEzBrwC,KAAK2wC,eAAgB,EACrB3wC,KAAKwa,KAAKmE,KAAKwR,OAAOte,IAAI7R,KAAKqwC,kBAAmBrwC,KAAK8zC,gBAAiB9zC,KAAM8oB,IAI9E9oB,KAAK2wC,eAAgB,IAK7B3wC,KAAK6xB,YAEL7xB,KAAKo3B,OAAOvF,gBAaxBiiB,gBAAiB,SAAUhrB,GAEvB9oB,KAAK2wC,eAAgB,EAEjB3wC,KAAK0wC,cAAgB1wC,KAAKo3B,QAEtBp3B,KAAK4wC,mBAEL5wC,KAAKuzC,UAAUzqB,IAY3BmkB,iBAAkB,SAAUnkB,GAExB,GAAoB,OAAhB9oB,KAAKo3B,OAAT,CAMA,GAAIsL,GAAO1iC,KAAK+wC,aAAajoB,EAAQnU,GAGrC,IAAI+tB,EAAKsF,QAAUlf,EAAQmf,KAC3B,CACIvF,EAAKsF,QAAS,EACdtF,EAAKuF,MAAO,EACZvF,EAAKyF,OAASnoC,KAAKwa,KAAKmE,KAAKA,KAC7B+jB,EAAK4O,aAAe5O,EAAKyF,OAASzF,EAAKwF,QAGvC,IAAIgJ,GAASlxC,KAAKqsC,iBAAiBvjB,EAE/B9oB,MAAKo3B,QAAUp3B,KAAKo3B,OAAOjH,SAEtBnwB,KAAKkwC,yBACNlwC,KAAKkwC,uBAA2BlwC,KAAK4vC,WAAa5vC,KAAK4rC,WAAa5rC,KAAKwzC,oBAAsB1qB,EAAQnU,KAEvG3U,KAAKo3B,OAAOjH,OAAO4jB,mBAAmB/zC,KAAKo3B,OAAQtO,EAASooB,GAG5DlxC,KAAKo3B,QAAUp3B,KAAKo3B,OAAO5N,QAAUxpB,KAAKo3B,OAAO5N,OAAOthB,OAAS7H,EAAOmB,OAExExB,KAAKo3B,OAAO5N,OAAOgF,eAAe3P,SAAS7e,KAAKo3B,OAAQtO,EAASooB,GAIjEA,IAEAA,EAASlxC,KAAKqsC,iBAAiBvjB,KAIvC4Z,EAAKwO,OAASA,GAETA,GAAUlxC,KAAK8uC,gBAEhB9uC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK+uC,gBAAiB,GAI1BjmB,EAAQrB,OAAQ,EAEhBznB,KAAK0wC,cAAe,EAGhB1wC,KAAK4vC,WAAa5vC,KAAK4rC,WAAa5rC,KAAKwzC,oBAAsB1qB,EAAQnU,IAEvE3U,KAAKg0C,SAASlrB,MAe1B2qB,WAAY,SAAU3qB,EAASmrB,GAI3B,GAFkBvqC,SAAduqC,IAA2BA,GAAY,GAEvCnrB,EAAQmf,KAGR,MADAjoC,MAAKg0C,SAASlrB,IACP,CAGX,IAAI3e,GAAKnK,KAAKk0C,eAAeprB,EAAQ7iB,GAAKjG,KAAKwwC,WAAWvqC,EAAIjG,KAAKgwC,WAAW/pC,EAC1EkuC,EAAKn0C,KAAKo0C,eAAetrB,EAAQrc,GAAKzM,KAAKwwC,WAAW/jC,EAAIzM,KAAKgwC,WAAWvjC,CAE9E,IAAIzM,KAAKo3B,OAAOrI,cAER/uB,KAAKgvC,sBAELhvC,KAAKo3B,OAAOpI,aAAa/oB,EAAIkE,GAG7BnK,KAAKivC,oBAELjvC,KAAKo3B,OAAOpI,aAAaviB,EAAI0nC,GAG7Bn0C,KAAK6vC,YAEL7vC,KAAKq0C,kBAGLr0C,KAAK8vC,cAEL9vC,KAAKs0C,oBAGLt0C,KAAKmvC,aAELnvC,KAAKo3B,OAAOpI,aAAa/oB,EAAIF,KAAK+H,OAAO9N,KAAKo3B,OAAOpI,aAAa/oB,EAAKjG,KAAKuvC,YAAcvvC,KAAKqvC,OAAUrvC,KAAKqvC,OAASrvC,KAAKqvC,MAASrvC,KAAKuvC,YAAcvvC,KAAKqvC,MAC7JrvC,KAAKo3B,OAAOpI,aAAaviB,EAAI1G,KAAK+H,OAAO9N,KAAKo3B,OAAOpI,aAAaviB,EAAKzM,KAAKwvC,YAAcxvC,KAAKsvC,OAAUtvC,KAAKsvC,OAAStvC,KAAKsvC,MAAStvC,KAAKwvC,YAAcxvC,KAAKsvC,MAC7JtvC,KAAKuwC,UAAUtkC,IAAIjM,KAAKo3B,OAAOpI,aAAa/oB,EAAGjG,KAAKo3B,OAAOpI,aAAaviB,QAIhF,CACI,GAAIyC,GAAKlP,KAAKwa,KAAKoC,OAAO3W,EAAIjG,KAAK+wC,aAAajoB,EAAQnU,IAAIq8B,KACxD1hC,EAAKtP,KAAKwa,KAAKoC,OAAOnQ,EAAIzM,KAAK+wC,aAAajoB,EAAQnU,IAAIs8B,IAExDjxC,MAAKgvC,sBAELhvC,KAAKo3B,OAAOnxB,EAAIkE,EAAK+E,GAGrBlP,KAAKivC,oBAELjvC,KAAKo3B,OAAO3qB,EAAI0nC,EAAK7kC,GAGrBtP,KAAK6vC,YAEL7vC,KAAKq0C,kBAGLr0C,KAAK8vC,cAEL9vC,KAAKs0C,oBAGLt0C,KAAKmvC,aAELnvC,KAAKo3B,OAAOnxB,EAAIF,KAAK+H,OAAO9N,KAAKo3B,OAAOnxB,EAAKjG,KAAKuvC,YAAcvvC,KAAKqvC,OAAUrvC,KAAKqvC,OAASrvC,KAAKqvC,MAASrvC,KAAKuvC,YAAcvvC,KAAKqvC,MACnIrvC,KAAKo3B,OAAO3qB,EAAI1G,KAAK+H,OAAO9N,KAAKo3B,OAAO3qB,EAAKzM,KAAKwvC,YAAcxvC,KAAKsvC,OAAUtvC,KAAKsvC,OAAStvC,KAAKsvC,MAAStvC,KAAKwvC,YAAcxvC,KAAKsvC,MACnItvC,KAAKuwC,UAAUtkC,IAAIjM,KAAKo3B,OAAOnxB,EAAGjG,KAAKo3B,OAAO3qB,IAMtD,MAFAzM,MAAKo3B,OAAOjH,OAAOokB,aAAa11B,SAAS7e,KAAKo3B,OAAQtO,EAAS3e,EAAIgqC,EAAIn0C,KAAKuwC,UAAW0D,IAEhF,GAYXO,SAAU,SAAUxS,EAAWyS,GAK3B,MAHAzS,GAAYA,GAAa,EACzByS,EAAQA,GAAS,IAETz0C,KAAK+wC,aAAa/O,GAAWkP,QAAUlxC,KAAK00C,aAAa1S,GAAayS,GAYlFE,QAAS,SAAU3S,EAAWyS,GAK1B,MAHAzS,GAAYA,GAAa,EACzByS,EAAQA,GAAS,IAETz0C,KAAK+wC,aAAa/O,GAAWmP,OAAUnxC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK+wC,aAAa/O,GAAWqP,QAAUoD,GAYhH/L,YAAa,SAAU1G,EAAWyS,GAK9B,MAHAzS,GAAYA,GAAa,EACzByS,EAAQA,GAAS,IAETz0C,KAAK+wC,aAAa/O,GAAWgG,QAAUhoC,KAAKsxC,aAAatP,GAAayS,GAYlF9L,aAAc,SAAU3G,EAAWyS,GAK/B,MAHAzS,GAAYA,GAAa,EACzByS,EAAQA,GAAS,IAETz0C,KAAK+wC,aAAa/O,GAAWiG,MAASjoC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK+wC,aAAa/O,GAAWmG,OAASsM,GAW9GC,aAAc,SAAU1S,GAIpB,MAFAA,GAAYA,GAAa,EAErBhiC,KAAK+wC,aAAa/O,GAAWkP,OAEtBlxC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK+wC,aAAa/O,GAAWoP,UAGvD,GAWXE,aAAc,SAAUtP,GAIpB,MAFAA,GAAYA,GAAa,EAErBhiC,KAAK+wC,aAAa/O,GAAWgG,OAEtBhoC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK+wC,aAAa/O,GAAWkG,UAGvD,GAgCX0M,WAAY,SAAUC,EAAYhjB,EAAYijB,EAAcC,EAAgBlF,EAAYC,GAEjEpmC,SAAfmrC,IAA4BA,GAAa,GAC1BnrC,SAAfmoB,IAA4BA,GAAa,GACxBnoB,SAAjBorC,IAA8BA,GAAe,GAC1BprC,SAAnBqrC,IAAgCA,EAAiB,KAClCrrC,SAAfmmC,IAA4BA,EAAa,MACxBnmC,SAAjBomC,IAA8BA,EAAe,MAEjD9vC,KAAKwwC,WAAa,GAAInwC,GAAO2M,MAC7BhN,KAAK4vC,WAAY,EACjB5vC,KAAK6xB,WAAaA,EAClB7xB,KAAKgwC,WAAa,GAAI3vC,GAAO2M,MAC7BhN,KAAKiwC,eAAiB4E,EAEtB70C,KAAK0vC,kBAAoBoF,EACzB90C,KAAK2vC,kBAAoBoF,EAErBlF,IAEA7vC,KAAK6vC,WAAaA,GAGlBC,IAEA9vC,KAAK8vC,aAAeA,IAW5BkF,YAAa,WAET,GAAIh1C,KAAK+wC,aAEL,IAAK,GAAIjpC,GAAI,EAAGA,EAAI,GAAIA,IAEpB9H,KAAK+wC,aAAajpC,GAAG8jC,WAAY,CAIzC5rC,MAAK4vC,WAAY,EACjB5vC,KAAK4rC,WAAY,EACjB5rC,KAAKwzC,mBAAoB,EACzBxzC,KAAK0wC,cAAe,GAUxB6C,UAAW,SAAUzqB,GAEjB,GAAI7iB,GAAIjG,KAAKo3B,OAAOnxB,EAChBwG,EAAIzM,KAAKo3B,OAAO3qB,CAUpB,IARAzM,KAAK4rC,WAAY,EACjB5rC,KAAKwzC,kBAAoB1qB,EAAQnU,GAEjC3U,KAAK+wC,aAAajoB,EAAQnU,IAAIq8B,KAAOhxC,KAAKwa,KAAKoC,OAAO3W,EACtDjG,KAAK+wC,aAAajoB,EAAQnU,IAAIs8B,KAAOjxC,KAAKwa,KAAKoC,OAAOnQ,EAEtDzM,KAAK+wC,aAAajoB,EAAQnU,IAAIi3B,WAAY,EAEtC5rC,KAAKo3B,OAAOrI,cAChB,CACI,GAAI/uB,KAAKiwC,eACT,CACI,GAAIt1B,GAAS3a,KAAKo3B,OAAO9pB,WAEzBtN,MAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAKk0C,eAAeprB,EAAQ7iB,IAAMjG,KAAKo3B,OAAOpI,aAAa/oB,EAAI0U,EAAOlC,SACnGzY,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAKo0C,eAAetrB,EAAQrc,IAAMzM,KAAKo3B,OAAOpI,aAAaviB,EAAIkO,EAAOjC,SAGvG1Y,KAAKwwC,WAAWhjC,MAAMxN,KAAKo3B,OAAOpI,aAAa/oB,EAAI6iB,EAAQ7iB,EAAGjG,KAAKo3B,OAAOpI,aAAaviB,EAAIqc,EAAQrc,OAGvG,CACI,GAAIzM,KAAKiwC,eACT,CACI,GAAIt1B,GAAS3a,KAAKo3B,OAAO9pB,WAEzBtN,MAAKo3B,OAAOnxB,EAAIjG,KAAKk0C,eAAeprB,EAAQ7iB,IAAMjG,KAAKo3B,OAAOnxB,EAAI0U,EAAOlC,SACzEzY,KAAKo3B,OAAO3qB,EAAIzM,KAAKo0C,eAAetrB,EAAQrc,IAAMzM,KAAKo3B,OAAO3qB,EAAIkO,EAAOjC,SAG7E1Y,KAAKwwC,WAAWhjC,MAAMxN,KAAKo3B,OAAOnxB,EAAIjG,KAAKk0C,eAAeprB,EAAQ7iB,GAAIjG,KAAKo3B,OAAO3qB,EAAIzM,KAAKo0C,eAAetrB,EAAQrc,IAGtHzM,KAAKyzC,WAAW3qB,GAAS,GAErB9oB,KAAK6xB,aAEL7xB,KAAKywC,YAAa,EAClBzwC,KAAKo3B,OAAOvF,cAGhB7xB,KAAKmwC,eAAelkC,IAAIhG,EAAGwG,GAE3BzM,KAAKo3B,OAAOjH,OAAO8kB,qBAAqBj1C,KAAKo3B,OAAQtO,EAAS7iB,EAAGwG,GAEjEzM,KAAK0wC,cAAe,GAUxBwD,eAAgB,SAAUjuC,GAQtB,MANIjG,MAAK+vC,aAEL9pC,GAAKjG,KAAKwa,KAAK3F,MAAMqgC,KAAKC,YAAYlvC,EACtCA,GAAKjG,KAAKwa,KAAK3F,MAAMqgC,KAAKE,mBAAmBnvC,GAG1CA,GAUXmuC,eAAgB,SAAU3nC,GAQtB,MANIzM,MAAK+vC,aAELtjC,GAAKzM,KAAKwa,KAAK3F,MAAMqgC,KAAKC,YAAY1oC,EACtCA,GAAKzM,KAAKwa,KAAK3F,MAAMqgC,KAAKE,mBAAmB3oC,GAG1CA,GAUXunC,SAAU,SAAUlrB,GAEhB9oB,KAAK4rC,WAAY,EACjB5rC,KAAKwzC,mBAAoB,EACzBxzC,KAAK+wC,aAAajoB,EAAQnU,IAAIi3B,WAAY,EAC1C5rC,KAAKywC,YAAa,EAClBzwC,KAAK0wC,cAAe,EAEhB1wC,KAAKovC,gBAEDpvC,KAAKo3B,OAAOrI,eAEZ/uB,KAAKo3B,OAAOpI,aAAa/oB,EAAIF,KAAK+H,OAAO9N,KAAKo3B,OAAOpI,aAAa/oB,EAAKjG,KAAKuvC,YAAcvvC,KAAKqvC,OAAUrvC,KAAKqvC,OAASrvC,KAAKqvC,MAASrvC,KAAKuvC,YAAcvvC,KAAKqvC,MAC7JrvC,KAAKo3B,OAAOpI,aAAaviB,EAAI1G,KAAK+H,OAAO9N,KAAKo3B,OAAOpI,aAAaviB,EAAKzM,KAAKwvC,YAAcxvC,KAAKsvC,OAAUtvC,KAAKsvC,OAAStvC,KAAKsvC,MAAStvC,KAAKwvC,YAAcxvC,KAAKsvC,QAI7JtvC,KAAKo3B,OAAOnxB,EAAIF,KAAK+H,OAAO9N,KAAKo3B,OAAOnxB,EAAKjG,KAAKuvC,YAAcvvC,KAAKqvC,OAAUrvC,KAAKqvC,OAASrvC,KAAKqvC,MAASrvC,KAAKuvC,YAAcvvC,KAAKqvC,MACnIrvC,KAAKo3B,OAAO3qB,EAAI1G,KAAK+H,OAAO9N,KAAKo3B,OAAO3qB,EAAKzM,KAAKwvC,YAAcxvC,KAAKsvC,OAAUtvC,KAAKsvC,OAAStvC,KAAKsvC,MAAStvC,KAAKwvC,YAAcxvC,KAAKsvC,QAI3ItvC,KAAKo3B,OAAOjH,OAAOklB,oBAAoBr1C,KAAKo3B,OAAQtO,GAEhD9oB,KAAKqsC,iBAAiBvjB,MAAa,GAEnC9oB,KAAKysC,mBAAmB3jB,IAYhCwsB,YAAa,SAAUC,EAAiBC,GAEZ9rC,SAApB6rC,IAAiCA,GAAkB,GACjC7rC,SAAlB8rC,IAA+BA,GAAgB,GAEnDx1C,KAAKgvC,oBAAsBuG,EAC3Bv1C,KAAKivC,kBAAoBuG,GAgB7BC,WAAY,SAAUpG,EAAOC,EAAOoG,EAAQC,EAAWpG,EAAaC,GAEjD9lC,SAAXgsC,IAAwBA,GAAS,GACnBhsC,SAAdisC,IAA2BA,GAAY,GACvBjsC,SAAhB6lC,IAA6BA,EAAc,GAC3B7lC,SAAhB8lC,IAA6BA,EAAc,GAE/CxvC,KAAKqvC,MAAQA,EACbrvC,KAAKsvC,MAAQA,EACbtvC,KAAKuvC,YAAcA,EACnBvvC,KAAKwvC,YAAcA,EACnBxvC,KAAKmvC,WAAauG,EAClB11C,KAAKovC,cAAgBuG,GASzBC,YAAa,WAET51C,KAAKmvC,YAAa,EAClBnvC,KAAKovC,eAAgB,GASzBiF,gBAAiB,WAETr0C,KAAKo3B,OAAOrI,eAER/uB,KAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAK6vC,WAAWhlC,KAE7C7K,KAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAK6vC,WAAWhlC,KAEvC7K,KAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAKo3B,OAAOrnB,MAAS/P,KAAK6vC,WAAWjlC,QAExE5K,KAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAK6vC,WAAWjlC,MAAQ5K,KAAKo3B,OAAOrnB,OAGjE/P,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAK6vC,WAAWnhC,IAE7C1O,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAK6vC,WAAWnhC,IAEvC1O,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAKo3B,OAAOpnB,OAAUhQ,KAAK6vC,WAAWlhC,SAEzE3O,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAK6vC,WAAWlhC,OAAS3O,KAAKo3B,OAAOpnB,UAKlEhQ,KAAKo3B,OAAOvsB,KAAO7K,KAAK6vC,WAAWhlC,KAEnC7K,KAAKo3B,OAAOnxB,EAAIjG,KAAK6vC,WAAW5pC,EAAIjG,KAAKo3B,OAAOye,QAE3C71C,KAAKo3B,OAAOxsB,MAAQ5K,KAAK6vC,WAAWjlC,QAEzC5K,KAAKo3B,OAAOnxB,EAAIjG,KAAK6vC,WAAWjlC,OAAS5K,KAAKo3B,OAAOrnB,MAAQ/P,KAAKo3B,OAAOye,UAGzE71C,KAAKo3B,OAAO1oB,IAAM1O,KAAK6vC,WAAWnhC,IAElC1O,KAAKo3B,OAAO3qB,EAAIzM,KAAK6vC,WAAWnhC,IAAM1O,KAAKo3B,OAAO0e,QAE7C91C,KAAKo3B,OAAOzoB,OAAS3O,KAAK6vC,WAAWlhC,SAE1C3O,KAAKo3B,OAAO3qB,EAAIzM,KAAK6vC,WAAWlhC,QAAU3O,KAAKo3B,OAAOpnB,OAAShQ,KAAKo3B,OAAO0e,YAWvFxB,kBAAmB,WAEXt0C,KAAKo3B,OAAOrI,eAAiB/uB,KAAK8vC,aAAa/gB,eAE3C/uB,KAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAK8vC,aAAa9gB,aAAa/oB,EAE5DjG,KAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAK8vC,aAAa9gB,aAAa/oB,EAEtDjG,KAAKo3B,OAAOpI,aAAa/oB,EAAIjG,KAAKo3B,OAAOrnB,MAAU/P,KAAK8vC,aAAa9gB,aAAa/oB,EAAIjG,KAAK8vC,aAAa//B,QAE9G/P,KAAKo3B,OAAOpI,aAAa/oB,EAAKjG,KAAK8vC,aAAa9gB,aAAa/oB,EAAIjG,KAAK8vC,aAAa//B,MAAS/P,KAAKo3B,OAAOrnB,OAGxG/P,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAK8vC,aAAa9gB,aAAaviB,EAE5DzM,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAK8vC,aAAa9gB,aAAaviB,EAEtDzM,KAAKo3B,OAAOpI,aAAaviB,EAAIzM,KAAKo3B,OAAOpnB,OAAWhQ,KAAK8vC,aAAa9gB,aAAaviB,EAAIzM,KAAK8vC,aAAa9/B,SAE/GhQ,KAAKo3B,OAAOpI,aAAaviB,EAAKzM,KAAK8vC,aAAa9gB,aAAaviB,EAAIzM,KAAK8vC,aAAa9/B,OAAUhQ,KAAKo3B,OAAOpnB,UAKzGhQ,KAAKo3B,OAAOvsB,KAAO7K,KAAK8vC,aAAajlC,KAErC7K,KAAKo3B,OAAOnxB,EAAIjG,KAAK8vC,aAAajlC,KAAO7K,KAAKo3B,OAAOye,QAEhD71C,KAAKo3B,OAAOxsB,MAAQ5K,KAAK8vC,aAAallC,QAE3C5K,KAAKo3B,OAAOnxB,EAAIjG,KAAK8vC,aAAallC,OAAS5K,KAAKo3B,OAAOrnB,MAAQ/P,KAAKo3B,OAAOye,UAG3E71C,KAAKo3B,OAAO1oB,IAAM1O,KAAK8vC,aAAaphC,IAEpC1O,KAAKo3B,OAAO3qB,EAAIzM,KAAK8vC,aAAaphC,IAAM1O,KAAKo3B,OAAO0e,QAE/C91C,KAAKo3B,OAAOzoB,OAAS3O,KAAK8vC,aAAanhC,SAE5C3O,KAAKo3B,OAAO3qB,EAAIzM,KAAK8vC,aAAanhC,QAAU3O,KAAKo3B,OAAOpnB,OAAShQ,KAAKo3B,OAAO0e,aAQ7Fz1C,EAAOwuC,aAAaxoC,UAAU8B,YAAc9H,EAAOwuC,aAsBnDxuC,EAAOqgC,QAAU,SAAUlmB,GAKvBxa,KAAKwa,KAAOA,EAMZxa,KAAK+1C,oBAML/1C,KAAKg2C,YAOLh2C,KAAKi2C,SAAU,EAOfj2C,KAAKo9B,SAAU,EAOfp9B,KAAKk2C,2BAA6BC,UAAUC,qBAAuBD,UAAUE,gBAAmBF,UAAUG,UAAUhmB,QAAQ,cAAe,KAAS6lB,UAAUI,YAQ9Jv2C,KAAKw2C,wBAQLx2C,KAAKy2C,mBAKLz2C,KAAK+iB,gBAAkB/iB,KAKvBA,KAAK02C,kBAAoB,KAKzB12C,KAAK22C,qBAAuB,KAK5B32C,KAAK42C,eAAiB,KAKtB52C,KAAK62C,aAAe,KAKpB72C,KAAK82C,eAAiB,KAKtB92C,KAAK+2C,gBAAkB,KAMvB/2C,KAAKg3C,oBAAsB,KAM3Bh3C,KAAKi3C,qBAAuB,KAM5Bj3C,KAAKk3C,WACD,GAAI72C,GAAO82C,UAAU38B,EAAMxa,MAC3B,GAAIK,GAAO82C,UAAU38B,EAAMxa,MAC3B,GAAIK,GAAO82C,UAAU38B,EAAMxa,MAC3B,GAAIK,GAAO82C,UAAU38B,EAAMxa,QAKnCK,EAAOqgC,QAAQr6B,WAUX+wC,aAAc,SAAU/yB,EAASgzB,GAEJ,mBAAdA,KAEPr3C,KAAK02C,kBAAoD,kBAAxBW,GAAUC,UAA4BD,EAAUC,UAAYt3C,KAAK02C,kBAClG12C,KAAK22C,qBAA0D,kBAA3BU,GAAUE,aAA+BF,EAAUE,aAAev3C,KAAK22C,qBAC3G32C,KAAK42C,eAA8C,kBAArBS,GAAUjY,OAAyBiY,EAAUjY,OAASp/B,KAAK42C,eACzF52C,KAAK62C,aAA0C,kBAAnBQ,GAAUhY,KAAuBgY,EAAUhY,KAAOr/B,KAAK62C,aACnF72C,KAAK82C,eAA8C,kBAArBO,GAAUG,OAAyBH,EAAUG,OAASx3C,KAAK82C,eACzF92C,KAAK+2C,gBAAgD,kBAAtBM,GAAU7O,QAA0B6O,EAAU7O,QAAUxoC,KAAK+2C,gBAC5F/2C,KAAK+iB,gBAAkBsB,IAW/B3T,MAAO,WAEH,IAAI1Q,KAAKi2C,QAAT,CAMAj2C,KAAKi2C,SAAU,CAEf,IAAIxvB,GAAQzmB,IAEZA,MAAKy3C,oBAAsB,SAAUtrB,GACjC,MAAO1F,GAAMixB,mBAAmBvrB,IAGpCnsB,KAAK23C,uBAAyB,SAAUxrB,GACpC,MAAO1F,GAAMmxB,sBAAsBzrB,IAGvCpkB,OAAOskB,iBAAiB,mBAAoBrsB,KAAKy3C,qBAAqB,GACtE1vC,OAAOskB,iBAAiB,sBAAuBrsB,KAAK23C,wBAAwB,KAWhFD,mBAAoB,SAAUvrB,GAE1B,GAAI0rB,GAAS1rB,EAAM+S,OACnBl/B,MAAKg2C,SAASpjC,KAAKilC,GACnB73C,KAAKk3C,UAAUW,EAAOloB,OAAOmoB,QAAQD,IAWzCD,sBAAuB,SAAUzrB,GAE7B,GAAI4rB,GAAa5rB,EAAM+S,OAEvB,KAAK,GAAIp3B,KAAK9H,MAAKg2C,SAEXh2C,KAAKg2C,SAASluC,GAAG6nB,QAAUooB,EAAWpoB,OAEtC3vB,KAAKg2C,SAAS7yB,OAAOrb,EAAE,EAI/B9H,MAAKk3C,UAAUa,EAAWpoB,OAAOqoB,cASrCz5B,OAAQ,WAEJve,KAAKi4C,gBAELj4C,KAAKk4C,KAAKC,aACVn4C,KAAKo4C,KAAKD,aACVn4C,KAAKq4C,KAAKF,aACVn4C,KAAKs4C,KAAKH,cAUdF,cAAe,WAEX,GAAKj4C,KAAKi2C,QAAV,CAKA,GAAIE,UAAuB,YAEvB,GAAIoC,GAAcpC,UAAUI,kBAE3B,IAAIJ,UAA6B,kBAElC,GAAIoC,GAAcpC,UAAUC,wBAE3B,IAAID,UAA0B,eAE/B,GAAIoC,GAAcpC,UAAUE,gBAGhC,IAAIkC,EACJ,CACIv4C,KAAKg2C,WAIL,KAAK,GAFDwC,IAAkB,EAEb1wC,EAAI,EAAGA,EAAIywC,EAAY1wC,eAEjB0wC,GAAYzwC,KAAO9H,KAAKw2C,qBAAqB1uC,KAEpD0wC,GAAkB,EAClBx4C,KAAKw2C,qBAAqB1uC,SAAYywC,GAAYzwC,IAGlDywC,EAAYzwC,IAEZ9H,KAAKg2C,SAASpjC,KAAK2lC,EAAYzwC,IAIzB,IAANA,GAdgCA,KAoBxC,IAAK,GAAIgjB,GAAI,EAAGA,EAAI9qB,KAAKk3C,UAAUrvC,OAAQijB,IAEvC9qB,KAAKk3C,UAAUpsB,GAAG2tB,QAAUz4C,KAAKg2C,SAASlrB,EAG9C,IAAI0tB,EACJ,CAII,IAAK,GAFDE,GADAC,GAAqBC,cAAgBC,eAGhChhC,EAAI,EAAGA,EAAI7X,KAAKk3C,UAAUrvC,OAAQgQ,IAIvC,GAFA6gC,EAAY14C,KAAKk3C,UAAUr/B,GAEvB6gC,EAAUI,UAEV,IAAK,GAAIC,GAAI,EAAGA,EAAI/4C,KAAKg2C,SAASnuC,OAAQkxC,IAElC/4C,KAAKg2C,SAAS+C,GAAGppB,QAAU+oB,EAAU/oB,QAErCgpB,EAAiBC,WAAWF,EAAU/oB,QAAS,EAC/CgpB,EAAiBE,WAAWhhC,IAAK,EAMjD,KAAK,GAAIzO,GAAI,EAAGA,EAAIpJ,KAAKk3C,UAAUrvC,OAAQuB,IAIvC,GAFAsvC,EAAY14C,KAAKk3C,UAAU9tC,IAEvBuvC,EAAiBE,WAAWzvC,GAAhC,CAKIpJ,KAAKg2C,SAASnuC,OAAS,GAEvB6wC,EAAUV,YAGd,KAAK,GAAI/hC,GAAI,EAAGA,EAAIjW,KAAKg2C,SAASnuC,SAE1B8wC,EAAiBE,WAAWzvC,GAFM6M,IAC1C,CAMI,GAAI+iC,GAASh5C,KAAKg2C,SAAS//B,EAE3B,IAAI+iC,EACJ,CACI,GAAIL,EAAiBC,WAAWI,EAAOrpB,OACvC,CACI+oB,EAAUV,YACV,UAIAU,EAAUZ,QAAQkB,GAClBL,EAAiBC,WAAWI,EAAOrpB,QAAS,EAC5CgpB,EAAiBE,WAAWzvC,IAAK,MAKrCsvC,GAAUV,mBAYlCiB,aAAc,SAAU1vC,GAEpB,IAAK,GAAIzB,GAAI,EAAGA,EAAI9H,KAAKk3C,UAAUrvC,OAAQC,IAEvC9H,KAAKk3C,UAAUpvC,GAAGoxC,SAAW3vC,GAUrC+yB,KAAM,WAEFt8B,KAAKi2C,SAAU,EAEfluC,OAAOwlB,oBAAoB,mBAAoBvtB,KAAKy3C,qBACpD1vC,OAAOwlB,oBAAoB,sBAAuBvtB,KAAK23C,yBAQ3Dj4B,MAAO,WAEH1f,KAAKue,QAEL,KAAK,GAAIzW,GAAI,EAAGA,EAAI9H,KAAKk3C,UAAUrvC,OAAQC,IAEvC9H,KAAKk3C,UAAUpvC,GAAG4X,SAY1BgpB,YAAa,SAAUX,EAAYlsB,GAE/B,IAAK,GAAI/T,GAAI,EAAGA,EAAI9H,KAAKk3C,UAAUrvC,OAAQC,IAEvC,GAAI9H,KAAKk3C,UAAUpvC,GAAG4gC,YAAYX,EAAYlsB,MAAc,EAExD,OAAO,CAIf,QAAO,GAWX8sB,aAAc,SAAUZ,EAAYlsB,GAEhC,IAAK,GAAI/T,GAAI,EAAGA,EAAI9H,KAAKk3C,UAAUrvC,OAAQC,IAEvC,GAAI9H,KAAKk3C,UAAUpvC,GAAG6gC,aAAaZ,EAAYlsB,MAAc,EAEzD,OAAO,CAIf,QAAO,GAUXmsB,OAAQ,SAAUD,GAEd,IAAK,GAAIjgC,GAAI,EAAGA,EAAI9H,KAAKk3C,UAAUrvC,OAAQC,IAEvC,GAAI9H,KAAKk3C,UAAUpvC,GAAGkgC,OAAOD,MAAgB,EAEzC,OAAO,CAIf,QAAO,GAQXjkB,QAAS,WAEL9jB,KAAKs8B,MAEL,KAAK,GAAIx0B,GAAI,EAAGA,EAAI9H,KAAKk3C,UAAUrvC,OAAQC,IAEvC9H,KAAKk3C,UAAUpvC,GAAGgc,YAO9BzjB,EAAOqgC,QAAQr6B,UAAU8B,YAAc9H,EAAOqgC,QAQ9Cn5B,OAAO2E,eAAe7L,EAAOqgC,QAAQr6B,UAAW,UAE5C2F,IAAK,WACD,MAAOhM,MAAKi2C,WAWpB1uC,OAAO2E,eAAe7L,EAAOqgC,QAAQr6B,UAAW,aAE5C2F,IAAK,WACD,MAAOhM,MAAKk2C,4BAWpB3uC,OAAO2E,eAAe7L,EAAOqgC,QAAQr6B,UAAW,iBAE5C2F,IAAK,WACD,MAAOhM,MAAKg2C,SAASnuC,UAW7BN,OAAO2E,eAAe7L,EAAOqgC,QAAQr6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAKk3C,UAAU,MAW9B3vC,OAAO2E,eAAe7L,EAAOqgC,QAAQr6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAKk3C,UAAU,MAW9B3vC,OAAO2E,eAAe7L,EAAOqgC,QAAQr6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAKk3C,UAAU,MAW9B3vC,OAAO2E,eAAe7L,EAAOqgC,QAAQr6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAKk3C,UAAU,MAK9B72C,EAAOqgC,QAAQyY,SAAW,EAC1B94C,EAAOqgC,QAAQ0Y,SAAW,EAC1B/4C,EAAOqgC,QAAQ2Y,SAAW,EAC1Bh5C,EAAOqgC,QAAQ4Y,SAAW,EAC1Bj5C,EAAOqgC,QAAQ6Y,SAAW,EAC1Bl5C,EAAOqgC,QAAQ8Y,SAAW,EAC1Bn5C,EAAOqgC,QAAQ+Y,SAAW,EAC1Bp5C,EAAOqgC,QAAQgZ,SAAW,EAC1Br5C,EAAOqgC,QAAQiZ,SAAW,EAC1Bt5C,EAAOqgC,QAAQkZ,SAAW,EAC1Bv5C,EAAOqgC,QAAQmZ,UAAY,GAC3Bx5C,EAAOqgC,QAAQoZ,UAAY,GAC3Bz5C,EAAOqgC,QAAQqZ,UAAY,GAC3B15C,EAAOqgC,QAAQsZ,UAAY,GAC3B35C,EAAOqgC,QAAQuZ,UAAY,GAC3B55C,EAAOqgC,QAAQwZ,UAAY,GAE3B75C,EAAOqgC,QAAQyZ,OAAS,EACxB95C,EAAOqgC,QAAQ0Z,OAAS,EACxB/5C,EAAOqgC,QAAQ2Z,OAAS,EACxBh6C,EAAOqgC,QAAQ4Z,OAAS,EACxBj6C,EAAOqgC,QAAQ6Z,OAAS,EACxBl6C,EAAOqgC,QAAQ8Z,OAAS,EACxBn6C,EAAOqgC,QAAQ+Z,OAAS,EACxBp6C,EAAOqgC,QAAQga,OAAS,EACxBr6C,EAAOqgC,QAAQia,OAAS,EACxBt6C,EAAOqgC,QAAQka,OAAS,EAMxBv6C,EAAOqgC,QAAQma,UAAY,EAC3Bx6C,EAAOqgC,QAAQoa,UAAY,EAC3Bz6C,EAAOqgC,QAAQqa,UAAY,EAC3B16C,EAAOqgC,QAAQsa,UAAY,EAC3B36C,EAAOqgC,QAAQua,oBAAsB,EACrC56C,EAAOqgC,QAAQwa,qBAAuB,EACtC76C,EAAOqgC,QAAQya,qBAAuB,EACtC96C,EAAOqgC,QAAQ0a,sBAAwB,EACvC/6C,EAAOqgC,QAAQ2a,aAAe,EAC9Bh7C,EAAOqgC,QAAQ4a,cAAgB,EAC/Bj7C,EAAOqgC,QAAQ6a,0BAA4B,GAC3Cl7C,EAAOqgC,QAAQ8a,2BAA6B,GAE5Cn7C,EAAOqgC,QAAQ+a,kBAAoB,GACnCp7C,EAAOqgC,QAAQgb,mBAAqB,GACpCr7C,EAAOqgC,QAAQib,gBAAkB,GACjCt7C,EAAOqgC,QAAQkb,kBAAoB,GAGnCv7C,EAAOqgC,QAAQmb,qBAAuB,EACtCx7C,EAAOqgC,QAAQob,qBAAuB,EACtCz7C,EAAOqgC,QAAQqb,sBAAwB,EACvC17C,EAAOqgC,QAAQsb,sBAAwB,EAIvC37C,EAAOqgC,QAAQub,QAAU,EACzB57C,EAAOqgC,QAAQwb,aAAe,EAC9B77C,EAAOqgC,QAAQyb,aAAe,CAC9B97C,GAAOqgC,QAAQ0b,eAAiB,CAChC/7C,GAAOqgC,QAAQ2b,SAAW,EAC1Bh8C,EAAOqgC,QAAQ4b,SAAW,EAC1Bj8C,EAAOqgC,QAAQ6b,SAAW,EAC1Bl8C,EAAOqgC,QAAQ8b,SAAW,EAC1Bn8C,EAAOqgC,QAAQ+b,aAAe,EAC9Bp8C,EAAOqgC,QAAQgc,YAAc,EAC7Br8C,EAAOqgC,QAAQic,wBAA0B,GACzCt8C,EAAOqgC,QAAQkc,yBAA2B,GAC1Cv8C,EAAOqgC,QAAQmc,cAAgB,GAC/Bx8C,EAAOqgC,QAAQoc,gBAAkB,GACjCz8C,EAAOqgC,QAAQqc,gBAAkB,GACjC18C,EAAOqgC,QAAQsc,iBAAmB,GAClC38C,EAAOqgC,QAAQuc,mBAAqB,EACpC58C,EAAOqgC,QAAQwc,mBAAqB,EACpC78C,EAAOqgC,QAAQyc,oBAAsB,EACrC98C,EAAOqgC,QAAQ0c,oBAAsB,EAiBrC/8C,EAAO82C,UAAY,SAAU38B,EAAM6iC,GAK/Br9C,KAAKwa,KAAOA,EAMZxa,KAAK2vB,MAAQ,KAMb3vB,KAAK84C,WAAY,EAKjB94C,KAAK+iB,gBAAkB/iB,KAKvBA,KAAK02C,kBAAoB,KAKzB12C,KAAK22C,qBAAuB,KAK5B32C,KAAK42C,eAAiB,KAKtB52C,KAAK62C,aAAe,KAKpB72C,KAAK82C,eAAiB,KAKtB92C,KAAK+2C,gBAAkB,KAKvB/2C,KAAKk5C,SAAW,IAMhBl5C,KAAKs9C,WAAaD,EAMlBr9C,KAAKy4C,QAAU,KAMfz4C,KAAKu9C,eAAiB,KAMtBv9C,KAAKw9C,YAMLx9C,KAAKy9C,YAAc,EAMnBz9C,KAAK09C,SAML19C,KAAK29C,SAAW,GAIpBt9C,EAAO82C,UAAU9wC,WAUb+wC,aAAc,SAAU/yB,EAASgzB,GAEJ,mBAAdA,KAEPr3C,KAAK02C,kBAAoD,kBAAxBW,GAAUC,UAA4BD,EAAUC,UAAYt3C,KAAK02C,kBAClG12C,KAAK22C,qBAA0D,kBAA3BU,GAAUE,aAA+BF,EAAUE,aAAev3C,KAAK22C,qBAC3G32C,KAAK42C,eAA8C,kBAArBS,GAAUjY,OAAyBiY,EAAUjY,OAASp/B,KAAK42C,eACzF52C,KAAK62C,aAA0C,kBAAnBQ,GAAUhY,KAAuBgY,EAAUhY,KAAOr/B,KAAK62C,aACnF72C,KAAK82C,eAA8C,kBAArBO,GAAUG,OAAyBH,EAAUG,OAASx3C,KAAK82C,eACzF92C,KAAK+2C,gBAAgD,kBAAtBM,GAAU7O,QAA0B6O,EAAU7O,QAAUxoC,KAAK+2C,gBAE5F/2C,KAAK+iB,gBAAkBsB,IAY/Bu5B,UAAW,SAAU7V,GAEjB,MAAI/nC,MAAKw9C,SAASzV,GAEP/nC,KAAKw9C,SAASzV,GAId,MAUfoQ,WAAY,WAER,GAAKn4C,KAAK84C,WAAc94C,KAAKwa,KAAKuF,MAAMqd,SAAYp9B,KAAKwa,KAAKuF,MAAMmf,QAAQ9B,WAAYp9B,KAAKy4C,QAAQoF,WAAc79C,KAAKy4C,QAAQoF,YAAc79C,KAAKu9C,gBAAnJ,CAKA,IAAK,GAAIz1C,GAAI,EAAGA,EAAI9H,KAAKy9C,YAAa31C,IACtC,CACI,GAAIg2C,GAAeC,MAAM/9C,KAAKy4C,QAAQ5N,QAAQ/iC,IAAM9H,KAAKy4C,QAAQ5N,QAAQ/iC,GAAGyB,MAAQvJ,KAAKy4C,QAAQ5N,QAAQ/iC,EAErGg2C,KAAiB99C,KAAKw9C,SAAS11C,GAAGyB,QAEb,IAAjBu0C,EAEA99C,KAAKg+C,kBAAkBl2C,EAAGg2C,GAEJ,IAAjBA,EAEL99C,KAAKi+C,gBAAgBn2C,EAAGg2C,GAIxB99C,KAAKk+C,mBAAmBp2C,EAAGg2C,IAKvC,IAAK,GAAInuB,GAAQ,EAAGA,EAAQ3vB,KAAK29C,SAAUhuB,IAC3C,CACI,GAAIpmB,GAAQvJ,KAAKy4C,QAAQ0F,KAAKxuB,EAEzBpmB,GAAQ,GAAKA,EAAQvJ,KAAKk5C,UAAc3vC,EAAQ,GAAKA,GAASvJ,KAAKk5C,SAEpEl5C,KAAKo+C,kBAAkBzuB,EAAOpmB,GAI9BvJ,KAAKo+C,kBAAkBzuB,EAAO,GAItC3vB,KAAKu9C,eAAiBv9C,KAAKy4C,QAAQoF,YAUvC/F,QAAS,SAAUkB,GAEf,GAAIqF,IAAmBr+C,KAAK84C,SAE5B94C,MAAK84C,WAAY,EACjB94C,KAAK2vB,MAAQqpB,EAAOrpB,MAEpB3vB,KAAKy4C,QAAUO,EAEfh5C,KAAKw9C,YACLx9C,KAAKy9C,YAAczE,EAAOnO,QAAQhjC,OAElC7H,KAAK09C,SACL19C,KAAK29C,SAAW3E,EAAOmF,KAAKt2C,MAE5B,KAAK,GAAI4G,GAAI,EAAGA,EAAIzO,KAAK29C,SAAUlvC,IAE/BzO,KAAK09C,MAAMjvC,GAAKuqC,EAAOmF,KAAK1vC,EAGhC,KAAK,GAAIs5B,KAAciR,GAAOnO,QAE1B9C,EAAa19B,SAAS09B,EAAY,IAClC/nC,KAAKw9C,SAASzV,GAAc,GAAI1nC,GAAOynC,aAAa9nC,KAAM+nC,EAG1DsW,IAAmBr+C,KAAKs9C,WAAW5G,mBAEnC12C,KAAKs9C,WAAW5G,kBAAkB5vC,KAAK9G,KAAKs9C,WAAWv6B,gBAAiB/iB,KAAK2vB,OAG7E0uB,GAAmBr+C,KAAK02C,mBAExB12C,KAAK02C,kBAAkB5vC,KAAK9G,KAAK+iB,kBAUzCi1B,WAAY,WAER,GAAIqG,GAAkBr+C,KAAK84C,UACvBwF,EAAqBt+C,KAAK2vB,KAE9B3vB,MAAK84C,WAAY,EACjB94C,KAAK2vB,MAAQ,KAEb3vB,KAAKy4C,QAAU/uC,MAEf,KAAK,GAAI5B,GAAI,EAAGA,EAAI9H,KAAKy9C,YAAa31C,IAElC9H,KAAKw9C,SAAS11C,GAAGgc,SAGrB9jB,MAAKw9C,YACLx9C,KAAKy9C,YAAc,EAEnBz9C,KAAK09C,SACL19C,KAAK29C,SAAW,EAEZU,GAAmBr+C,KAAKs9C,WAAW3G,sBAEnC32C,KAAKs9C,WAAW3G,qBAAqB7vC,KAAK9G,KAAKs9C,WAAWv6B,gBAAiBu7B,GAG3ED,GAAmBr+C,KAAK22C,sBAExB32C,KAAK22C,qBAAqB7vC,KAAK9G,KAAK+iB,kBAU5Ce,QAAS,WAEL9jB,KAAKy4C,QAAU/uC,MAEf,KAAK,GAAI5B,GAAI,EAAGA,EAAI9H,KAAKy9C,YAAa31C,IAElC9H,KAAKw9C,SAAS11C,GAAGgc,SAGrB9jB,MAAKw9C,YACLx9C,KAAKy9C,YAAc,EAEnBz9C,KAAK09C,SACL19C,KAAK29C,SAAW,EAEhB39C,KAAK02C,kBAAoB,KACzB12C,KAAK22C,qBAAuB,KAC5B32C,KAAK42C,eAAiB,KACtB52C,KAAK62C,aAAe,KACpB72C,KAAK82C,eAAiB,KACtB92C,KAAK+2C,gBAAkB,MAU3BqH,kBAAmB,SAAUzuB,EAAOpmB,GAE5BvJ,KAAK09C,MAAM/tB,KAAWpmB,IAK1BvJ,KAAK09C,MAAM/tB,GAASpmB,EAEhBvJ,KAAKs9C,WAAWxG,gBAEhB92C,KAAKs9C,WAAWxG,eAAehwC,KAAK9G,KAAKs9C,WAAWv6B,gBAAiB/iB,KAAM2vB,EAAOpmB,GAGlFvJ,KAAK82C,gBAEL92C,KAAK82C,eAAehwC,KAAK9G,KAAK+iB,gBAAiB/iB,KAAM2vB,EAAOpmB,KAYpEy0C,kBAAmB,SAAUjW,EAAYx+B,GAEjCvJ,KAAKw9C,SAASzV,IAEd/nC,KAAKw9C,SAASzV,GAAYr3B,MAAM,KAAMnH,GAGtCvJ,KAAKs9C,WAAW1G,gBAEhB52C,KAAKs9C,WAAW1G,eAAe9vC,KAAK9G,KAAKs9C,WAAWv6B,gBAAiBglB,EAAYx+B,EAAOvJ,KAAK2vB,OAG7F3vB,KAAK42C,gBAEL52C,KAAK42C,eAAe9vC,KAAK9G,KAAK+iB,gBAAiBglB,EAAYx+B,IAYnE00C,gBAAiB,SAAUlW,EAAYx+B,GAE/BvJ,KAAKs9C,WAAWzG,cAEhB72C,KAAKs9C,WAAWzG,aAAa/vC,KAAK9G,KAAKs9C,WAAWv6B,gBAAiBglB,EAAYx+B,EAAOvJ,KAAK2vB,OAG3F3vB,KAAK62C,cAEL72C,KAAK62C,aAAa/vC,KAAK9G,KAAK+iB,gBAAiBglB,EAAYx+B,GAGzDvJ,KAAKw9C,SAASzV,IAEd/nC,KAAKw9C,SAASzV,GAAYzL,KAAK,KAAM/yB,IAY7C20C,mBAAoB,SAAUnW,EAAYx+B,GAElCvJ,KAAKs9C,WAAWvG,iBAEhB/2C,KAAKs9C,WAAWvG,gBAAgBjwC,KAAK9G,KAAKs9C,WAAWv6B,gBAAiBglB,EAAYx+B,EAAOvJ,KAAK2vB,OAG9F3vB,KAAK+2C,iBAEL/2C,KAAK+2C,gBAAgBjwC,KAAK9G,KAAK+iB,gBAAiBglB,EAAYx+B,GAG5DvJ,KAAKw9C,SAASzV,IAEd/nC,KAAKw9C,SAASzV,GAAYU,SAASl/B,IAY3Cg1C,KAAM,SAAUC,GAEZ,QAAIx+C,KAAK09C,MAAMc,IAEJx+C,KAAK09C,MAAMc,IAc1BxW,OAAQ,SAAUD,GAEd,QAAI/nC,KAAKw9C,SAASzV,IAEP/nC,KAAKw9C,SAASzV,GAAYC,QAczCC,KAAM,SAAUF,GAEZ,QAAI/nC,KAAKw9C,SAASzV,IAEP/nC,KAAKw9C,SAASzV,GAAYE,MAezCU,aAAc,SAAUZ,EAAYlsB,GAEhC,GAAI7b,KAAKw9C,SAASzV,GAEd,MAAO/nC,MAAKw9C,SAASzV,GAAYY,aAAa9sB,IAatD6sB,YAAa,SAAUX,EAAYlsB,GAE/B,GAAI7b,KAAKw9C,SAASzV,GAEd,MAAO/nC,MAAKw9C,SAASzV,GAAYW,YAAY7sB,IAarD4iC,YAAa,SAAU1W,GAEnB,MAAI/nC,MAAKw9C,SAASzV,GAEP/nC,KAAKw9C,SAASzV,GAAYx+B,MAG9B,MASXmW,MAAO,WAEH,IAAK,GAAI7H,GAAI,EAAGA,EAAI7X,KAAK09C,MAAM71C,OAAQgQ,IAEnC7X,KAAK09C,MAAM7lC,GAAK,IAO5BxX,EAAO82C,UAAU9wC,UAAU8B,YAAc9H,EAAO82C,UAgBhD92C,EAAOq+C,IAAM,SAAUlkC,EAAMmkC,GAKzB3+C,KAAKwa,KAAOA,EAOZxa,KAAK4+C,UAAW,EAMhB5+C,KAAKmsB,MAAQ,KAMbnsB,KAAKgoC,QAAS,EAMdhoC,KAAKioC,MAAO,EAMZjoC,KAAKqoC,QAAS,EAMdroC,KAAKuoC,SAAU,EAMfvoC,KAAKsoC,UAAW,EAKhBtoC,KAAKkoC,SAAW,EAQhBloC,KAAK6b,SAAW,EAMhB7b,KAAKmoC,QAAS,KAMdnoC,KAAKooC,QAAU,EAKfpoC,KAAK6+C,QAAUF,EAKf3+C,KAAKo/B,OAAS,GAAI/+B,GAAO+a,OAKzBpb,KAAK8+C,eAAiB,KAKtB9+C,KAAK++C,cAAgB,KAKrB/+C,KAAKq/B,KAAO,GAAIh/B,GAAO+a,OAMvBpb,KAAKg/C,WAAY,EAMjBh/C,KAAKi/C,SAAU,GAInB5+C,EAAOq+C,IAAIr4C,WAQPkY,OAAQ,WAECve,KAAK4+C,UAEN5+C,KAAKgoC,SAELhoC,KAAK6b,SAAW7b,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKkoC,SAC3CloC,KAAKooC,UAEDpoC,KAAK8+C,gBAEL9+C,KAAK8+C,eAAeh4C,KAAK9G,KAAK++C,cAAe/+C,QAazDk/C,eAAgB,SAAU/yB,GAEjBnsB,KAAK4+C,WAEV5+C,KAAKmsB,MAAQA,EAGTnsB,KAAKgoC,SAKThoC,KAAKqoC,OAASlc,EAAMkc,OACpBroC,KAAKuoC,QAAUpc,EAAMoc,QACrBvoC,KAAKsoC,SAAWnc,EAAMmc,SAEtBtoC,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,EACZjoC,KAAKkoC,SAAWloC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAK6b,SAAW,EAChB7b,KAAKooC,QAAU,EAIfpoC,KAAKg/C,WAAY,EAEjBh/C,KAAKo/B,OAAOvgB,SAAS7e,SAWzBm/C,aAAc,SAAUhzB,GAEfnsB,KAAK4+C,WAEV5+C,KAAKmsB,MAAQA,EAETnsB,KAAKioC,OAKTjoC,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,EACZjoC,KAAKmoC,OAASnoC,KAAKwa,KAAKmE,KAAKA,KAC7B3e,KAAK6b,SAAW7b,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKkoC,SAI3CloC,KAAKi/C,SAAU,EAEfj/C,KAAKq/B,KAAKxgB,SAAS7e,SAavB0f,MAAO,SAAUyhB,GAEAz3B,SAATy3B,IAAsBA,GAAO,GAEjCnhC,KAAKgoC,QAAS,EACdhoC,KAAKioC,MAAO,EACZjoC,KAAKmoC,OAASnoC,KAAKwa,KAAKmE,KAAKA,KAC7B3e,KAAK6b,SAAW,EAChB7b,KAAK4+C,UAAW,EAChB5+C,KAAKg/C,WAAY,EACjBh/C,KAAKi/C,SAAU,EAEX9d,IAEAnhC,KAAKo/B,OAAOxb,YACZ5jB,KAAKq/B,KAAKzb,YACV5jB,KAAK8+C,eAAiB,KACtB9+C,KAAK++C,cAAgB,OAa7BzN,aAAc,SAAUz1B,GAIpB,MAFiBnS,UAAbmS,IAA0BA,EAAW,IAEjC7b,KAAKgoC,QAAUhoC,KAAK6b,SAAWA,GAY3CujC,WAAY,SAAUvjC,GAIlB,MAFiBnS,UAAbmS,IAA0BA,EAAW,KAEhC7b,KAAKgoC,QAAYhoC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKmoC,OAAUtsB,IAgBvEtU,OAAO2E,eAAe7L,EAAOq+C,IAAIr4C,UAAW,YAExC2F,IAAK,WAED,GAAI3C,GAAUrJ,KAAKg/C,SAEnB,OADAh/C,MAAKg/C,WAAY,EACV31C,KAgBf9B,OAAO2E,eAAe7L,EAAOq+C,IAAIr4C,UAAW,UAExC2F,IAAK,WAED,GAAI3C,GAAUrJ,KAAKi/C,OAEnB,OADAj/C,MAAKi/C,SAAU,EACR51C,KAcf9B,OAAO2E,eAAe7L,EAAOq+C,IAAIr4C,UAAW,WAExC2F,IAAK,WAED,MAAOhM,MAAK4+C,UAIhB3yC,IAAK,SAAU1C,GAEXA,IAAUA,EAENA,IAAUvJ,KAAK4+C,WAEVr1C,GAEDvJ,KAAK0f,OAAM,GAGf1f,KAAK4+C,SAAWr1C,MAM5BlJ,EAAOq+C,IAAIr4C,UAAU8B,YAAc9H,EAAOq+C,IAsB1Cr+C,EAAOogC,SAAW,SAAUjmB,GAKxBxa,KAAKwa,KAAOA,EAOZxa,KAAKo9B,SAAU,EAKfp9B,KAAKmsB,MAAQ,KAKbnsB,KAAKq/C,WAAa,KAKlBr/C,KAAK+iB,gBAAkB/iB,KAKvBA,KAAK42C,eAAiB,KAKtB52C,KAAKs/C,gBAAkB,KAKvBt/C,KAAK62C,aAAe,KAMpB72C,KAAKu/C,SAMLv/C,KAAKw/C,YAOLx/C,KAAKy/C,WAAa,KAOlBz/C,KAAK0/C,YAAc,KAOnB1/C,KAAK2/C,SAAW,KAMhB3/C,KAAKkqB,GAAK,EAMVlqB,KAAK4/C,GAAK,GAIdv/C,EAAOogC,SAASp6B,WAWZ+wC,aAAc,SAAU/yB,EAAS+a,EAAQC,EAAMwgB,GAE3C7/C,KAAK+iB,gBAAkBsB,EAER3a,SAAX01B,GAAmC,OAAXA,IAExBp/B,KAAK42C,eAAiBxX,GAGb11B,SAAT21B,GAA+B,OAATA,IAEtBr/B,KAAK62C,aAAexX,GAGR31B,SAAZm2C,GAAqC,OAAZA,IAEzB7/C,KAAKs/C,gBAAkBO,IAa/BC,OAAQ,SAAUnB,GASd,MAPK3+C,MAAKu/C,MAAMZ,KAEZ3+C,KAAKu/C,MAAMZ,GAAW,GAAIt+C,GAAOq+C,IAAI1+C,KAAKwa,KAAMmkC,GAEhD3+C,KAAK+/C,cAAcpB,IAGhB3+C,KAAKu/C,MAAMZ,IAiBtBqB,QAAS,SAAUl0C,GAEf,GAAIiC,KAEJ,KAAK,GAAIhC,KAAOD,GAEZiC,EAAOhC,GAAO/L,KAAK8/C,OAAOh0C,EAAKC,GAGnC,OAAOgC,IAUXkyC,UAAW,SAAUtB,GAEb3+C,KAAKu/C,MAAMZ,KAEX3+C,KAAKu/C,MAAMZ,GAAW,KAEtB3+C,KAAKkgD,iBAAiBvB,KAW9BwB,iBAAkB,WAEd,MAAOngD,MAAKggD,SAAUI,GAAM//C,EAAOggD,QAAQt/C,GAAIiqC,KAAQ3qC,EAAOggD,QAAQr/C,KAAM6J,KAAQxK,EAAOggD,QAAQx/C,KAAM+J,MAASvK,EAAOggD,QAAQv/C,SAWrI4P,MAAO,WAEH,IAAI1Q,KAAKwa,KAAKkS,OAAOwO,UAKG,OAApBl7B,KAAKy/C,WAAT,CAMA,GAAIh5B,GAAQzmB,IAEZA,MAAKy/C,WAAa,SAAUtzB,GACxB,MAAO1F,GAAMy4B,eAAe/yB,IAGhCnsB,KAAK2/C,SAAW,SAAUxzB,GACtB,MAAO1F,GAAM04B,aAAahzB,IAG9BnsB,KAAK0/C,YAAc,SAAUvzB,GACzB,MAAO1F,GAAM65B,gBAAgBn0B,IAGjCpkB,OAAOskB,iBAAiB,UAAWrsB,KAAKy/C,YAAY,GACpD13C,OAAOskB,iBAAiB,QAASrsB,KAAK2/C,UAAU,GAChD53C,OAAOskB,iBAAiB,WAAYrsB,KAAK0/C,aAAa,KAS1DpjB,KAAM,WAEFv0B,OAAOwlB,oBAAoB,UAAWvtB,KAAKy/C,YAC3C13C,OAAOwlB,oBAAoB,QAASvtB,KAAK2/C,UACzC53C,OAAOwlB,oBAAoB,WAAYvtB,KAAK0/C,aAE5C1/C,KAAKy/C,WAAa,KAClBz/C,KAAK2/C,SAAW,KAChB3/C,KAAK0/C,YAAc,MAUvB57B,QAAS,WAEL9jB,KAAKs8B,OAELt8B,KAAKugD,gBAELvgD,KAAKu/C,MAAM13C,OAAS,EACpB7H,KAAKkqB,GAAK,GAgBd61B,cAAe,SAAUpB,GAErB,GAAuB,gBAAZA,GAEP,IAAK,GAAI5yC,KAAO4yC,GAEZ3+C,KAAKw/C,SAASb,EAAQ5yC,KAAQ,MAKlC/L,MAAKw/C,SAASb,IAAW,GAUjCuB,iBAAkB,SAAUvB,SAEjB3+C,MAAKw/C,SAASb,IASzB4B,cAAe,WAEXvgD,KAAKw/C,aASTjhC,OAAQ,WAIJ,IAFAve,KAAKkqB,GAAKlqB,KAAKu/C,MAAM13C,OAEd7H,KAAKkqB,MAEJlqB,KAAKu/C,MAAMv/C,KAAKkqB,KAEhBlqB,KAAKu/C,MAAMv/C,KAAKkqB,IAAI3L,UAahC2gC,eAAgB,SAAU/yB,GAItB,GAFAnsB,KAAKmsB,MAAQA,EAERnsB,KAAKwa,KAAKuF,MAAMqd,SAAYp9B,KAAKo9B,QAAtC,CAKA,GAAIrxB,GAAMogB,EAAM0yB,OAGZ7+C,MAAKw/C,SAASzzC,IAEdogB,EAAMmP,iBAGLt7B,KAAKu/C,MAAMxzC,KAEZ/L,KAAKu/C,MAAMxzC,GAAO,GAAI1L,GAAOq+C,IAAI1+C,KAAKwa,KAAMzO,IAGhD/L,KAAKu/C,MAAMxzC,GAAKmzC,eAAe/yB,GAE/BnsB,KAAK4/C,GAAK7zC,EAEN/L,KAAK42C,gBAEL52C,KAAK42C,eAAe9vC,KAAK9G,KAAK+iB,gBAAiBoJ,KAYvDm0B,gBAAiB,SAAUn0B,GAEvBnsB,KAAKq/C,WAAalzB,EAEbnsB,KAAKwa,KAAKuF,MAAMqd,SAAYp9B,KAAKo9B,SAKlCp9B,KAAKs/C,iBAELt/C,KAAKs/C,gBAAgBx4C,KAAK9G,KAAK+iB,gBAAiBy9B,OAAOC,aAAat0B,EAAMu0B,UAAWv0B,IAY7FgzB,aAAc,SAAUhzB,GAIpB,GAFAnsB,KAAKmsB,MAAQA,EAERnsB,KAAKwa,KAAKuF,MAAMqd,SAAYp9B,KAAKo9B,QAAtC,CAKA,GAAIrxB,GAAMogB,EAAM0yB,OAEZ7+C,MAAKw/C,SAASzzC,IAEdogB,EAAMmP,iBAGLt7B,KAAKu/C,MAAMxzC,KAEZ/L,KAAKu/C,MAAMxzC,GAAO,GAAI1L,GAAOq+C,IAAI1+C,KAAKwa,KAAMzO,IAGhD/L,KAAKu/C,MAAMxzC,GAAKozC,aAAahzB,GAEzBnsB,KAAK62C,cAEL72C,KAAK62C,aAAa/vC,KAAK9G,KAAK+iB,gBAAiBoJ,KAWrDzM,MAAO,SAAUyhB,GAEAz3B,SAATy3B,IAAsBA,GAAO,GAEjCnhC,KAAKmsB,MAAQ,IAIb,KAFA,GAAIrkB,GAAI9H,KAAKu/C,MAAM13C,OAEZC,KAEC9H,KAAKu/C,MAAMz3C,IAEX9H,KAAKu/C,MAAMz3C,GAAG4X,MAAMyhB,IAehCmQ,aAAc,SAAUqN,EAAS9iC,GAE7B,MAAI7b,MAAKu/C,MAAMZ,GAEJ3+C,KAAKu/C,MAAMZ,GAASrN,aAAaz1B,GAIjC,MAcfujC,WAAY,SAAUT,EAAS9iC,GAE3B,MAAI7b,MAAKu/C,MAAMZ,GAEJ3+C,KAAKu/C,MAAMZ,GAASS,WAAWvjC,GAI/B,MAYfmsB,OAAQ,SAAU2W,GAEd,MAAI3+C,MAAKu/C,MAAMZ,GAEJ3+C,KAAKu/C,MAAMZ,GAAS3W,OAIpB,OAanBzgC,OAAO2E,eAAe7L,EAAOogC,SAASp6B,UAAW,YAE7C2F,IAAK,WAED,MAA4B,MAAxBhM,KAAKmsB,MAAMu0B,SAEJ,GAIAF,OAAOC,aAAazgD,KAAKq/C,WAAWqB,aAavDn5C,OAAO2E,eAAe7L,EAAOogC,SAASp6B,UAAW,WAE7C2F,IAAK,WAED,MAAOhM,MAAKu/C,MAAMv/C,KAAK4/C,OAM/Bv/C,EAAOogC,SAASp6B,UAAU8B,YAAc9H,EAAOogC,SAiB/CpgC,EAAOggD,SAEHM,EAAG,IAAIC,WAAW,GAElBC,EAAG,IAAID,WAAW,GAElBE,EAAG,IAAIF,WAAW,GAElBG,EAAG,IAAIH,WAAW,GAElBI,EAAG,IAAIJ,WAAW,GAElBz5C,EAAG,IAAIy5C,WAAW,GAElBK,EAAG,IAAIL,WAAW,GAElBM,EAAG,IAAIN,WAAW,GAElBO,EAAG,IAAIP,WAAW,GAElBQ,EAAG,IAAIR,WAAW,GAElBS,EAAG,IAAIT,WAAW,GAElBU,EAAG,IAAIV,WAAW,GAElBW,EAAG,IAAIX,WAAW,GAElBY,EAAG,IAAIZ,WAAW,GAElBa,EAAG,IAAIb,WAAW,GAElBc,EAAG,IAAId,WAAW,GAElBe,EAAG,IAAIf,WAAW,GAElBgB,EAAG,IAAIhB,WAAW,GAElBiB,EAAG,IAAIjB,WAAW,GAElBkB,EAAG,IAAIlB,WAAW,GAElBmB,EAAG,IAAInB,WAAW,GAElBoB,EAAG,IAAIpB,WAAW,GAElBqB,EAAG,IAAIrB,WAAW,GAElBsB,EAAG,IAAItB,WAAW,GAElBuB,EAAG,IAAIvB,WAAW,GAElBwB,EAAG,IAAIxB,WAAW,GAElByB,KAAM,IAAIzB,WAAW,GAErB0B,IAAK,IAAI1B,WAAW,GAEpB2B,IAAK,IAAI3B,WAAW,GAEpB4B,MAAO,IAAI5B,WAAW,GAEtB6B,KAAM,IAAI7B,WAAW,GAErB8B,KAAM,IAAI9B,WAAW,GAErB+B,IAAK,IAAI/B,WAAW,GAEpBgC,MAAO,IAAIhC,WAAW,GAEtBiC,MAAO,IAAIjC,WAAW,GAEtBkC,KAAM,IAAIlC,WAAW,GAErBmC,SAAU,GAEVC,SAAU,GAEVC,SAAU,GAEVC,SAAU,GAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,gBAAiB,IAEjBC,WAAY,IAEZC,aAAc,IAEdC,gBAAiB,IAEjBC,eAAgB,IAEhBC,cAAe,IAEfC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,MAAO,IAEPC,OAAQ,IAERC,MAAO,IAEPC,WAAY,IAEZC,OAAQ,IAERC,cAAe,IAEfC,MAAO,IAEPC,aAAc,IAEdC,eAAgB,IAEhBC,eAAgB,IAEhBC,OAAQ,IAERC,UAAW,EAEXC,IAAK,EAELC,MAAO,GAEPC,MAAO,GAEPC,MAAO,GAEPC,QAAS,GAETC,IAAK,GAELC,UAAW,GAEXC,IAAK,GAELC,SAAU,GAEVC,QAAS,GAETC,UAAW,GAEXC,IAAK,GAELC,KAAM,GAENzlD,KAAM,GAENE,GAAI,GAEJD,MAAO,GAEPE,KAAM,GAENulD,KAAM,GAENC,MAAO,GAEPC,OAAQ,GAERC,OAAQ,GAERC,KAAM,GAENC,SAAU,IAId,KAAK,GAAI76C,KAAO1L,GAAOggD,QACfhgD,EAAOggD,QAAQr1C,eAAee,KAASA,EAAI86C,MAAM,WACjDxmD,EAAOogC,SAAS10B,GAAO1L,EAAOggD,QAAQt0C,GAU9C1L,GAAOymD,UAAY,aAanBzmD,EAAOymD,UAAUC,MAAQ,aAEzB1mD,EAAOymD,UAAUC,MAAM1gD,WAenB6H,OAEIlC,IAAK,WAED,MAAO3L,GAAO0F,KAAKihD,UAAU3mD,EAAO0F,KAAK2P,SAAS1V,KAAK62B,YAI3D5qB,IAAK,SAAS1C,GAEVvJ,KAAK62B,SAAWx2B,EAAO0F,KAAKgJ,SAAS1O,EAAO0F,KAAKihD,UAAUz9C,OAmBvElJ,EAAOymD,UAAUG,UAAY,aAE7B5mD,EAAOymD,UAAUG,UAAU5gD,WAiBvB6gD,KAAM,SAAU97C,EAAM+7C,EAAWC,EAAMC,GAEnC,GAAIrnD,KAAKsnD,WAEL,MAAOtnD,MAAKsnD,WAAWJ,KAAK97C,EAAM+7C,EAAWC,EAAMC,KAmB/DhnD,EAAOymD,UAAUS,SAAW,aAE5BlnD,EAAOymD,UAAUS,SAASlhD,WAatBmhD,UAAU,EASVC,UAEIz7C,IAAK,WASD,MAPKhM,MAAKwnD,UAAaxnD,KAAK0nD,mBAExB1nD,KAAK2nD,QAAQl6C,SAASzN,KAAKsN,aAC3BtN,KAAK2nD,QAAQ1hD,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EACxCjG,KAAK2nD,QAAQl7C,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,GAGrCzM,KAAKwa,KAAKC,MAAMmC,OAAOlC,KAAK5L,WAAW9O,KAAK2nD,YAmB/DtnD,EAAOymD,UAAUc,OAAS,aAE1BvnD,EAAOymD,UAAUc,OAAOvhD,WAUpBwvC,SAEI7pC,IAAK,WAED,MAAOhM,MAAKqpB,OAAOpjB,EAAIjG,KAAK+P,QAcpC+lC,SAEI9pC,IAAK,WAED,MAAOhM,MAAKqpB,OAAO5c,EAAIzM,KAAKgQ,SAYpCyI,SAEIzM,IAAK,WAED,MAAQhM,MAAKiG,EAAIjG,KAAK61C,QAAyB,GAAb71C,KAAK+P,OAI3C9D,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAKsD,EAAQvJ,KAAK61C,QAAyB,GAAb71C,KAAK+P,QAYhD2I,SAEI1M,IAAK,WAED,MAAQhM,MAAKyM,EAAIzM,KAAK81C,QAA0B,GAAd91C,KAAKgQ,QAI3C/D,IAAK,SAAU1C,GAEXvJ,KAAKyM,EAAKlD,EAAQvJ,KAAK81C,QAA0B,GAAd91C,KAAKgQ,SAYhDnF,MAEImB,IAAK,WAED,MAAOhM,MAAKiG,EAAIjG,KAAK61C,SAIzB5pC,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAIsD,EAAQvJ,KAAK61C,UAY9BjrC,OAEIoB,IAAK,WAED,MAAQhM,MAAKiG,EAAIjG,KAAK+P,MAAS/P,KAAK61C,SAIxC5pC,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAIsD,EAASvJ,KAAU,MAAIA,KAAK61C,UAY7CnnC,KAEI1C,IAAK,WAED,MAAOhM,MAAKyM,EAAIzM,KAAK81C,SAIzB7pC,IAAK,SAAU1C,GAEXvJ,KAAKyM,EAAIlD,EAAQvJ,KAAK81C,UAY9BnnC,QAEI3C,IAAK,WAED,MAAQhM,MAAKyM,EAAIzM,KAAKgQ,OAAUhQ,KAAK81C,SAIzC7pC,IAAK,SAAU1C,GAEXvJ,KAAKyM,EAAIlD,EAASvJ,KAAW,OAAIA,KAAK81C,UA6C9CzkB,QAAS,SAAUw2B,EAAWtuC,EAAUs8B,EAASC,GAK7C,OAHgBpsC,SAAZmsC,IAAyBA,EAAU,GACvBnsC,SAAZosC,IAAyBA,EAAU,GAE/Bv8B,GAEJ,QACA,IAAKlZ,GAAOsD,SACR3D,KAAK6K,KAAOg9C,EAAUh9C,KAAOgrC,EAC7B71C,KAAK0O,IAAMm5C,EAAUn5C,IAAMonC,CAC3B,MAEJ,KAAKz1C,GAAOuD,WACR5D,KAAKyY,QAAUovC,EAAUpvC,QAAUo9B,EACnC71C,KAAK0O,IAAMm5C,EAAUn5C,IAAMonC,CAC3B,MAEJ,KAAKz1C,GAAOwD,UACR7D,KAAK4K,MAAQi9C,EAAUj9C,MAAQirC,EAC/B71C,KAAK0O,IAAMm5C,EAAUn5C,IAAMonC,CAC3B,MAEJ,KAAKz1C,GAAO0D,YACR/D,KAAK6K,KAAOg9C,EAAUh9C,KAAOgrC,EAC7B71C,KAAK0Y,QAAUmvC,EAAUnvC,QAAUo9B,CACnC,MAEJ,KAAKz1C,GAAO4D,OACRjE,KAAKyY,QAAUovC,EAAUpvC,QAAUo9B,EACnC71C,KAAK0Y,QAAUmvC,EAAUnvC,QAAUo9B,CACnC,MAEJ,KAAKz1C,GAAO8D,aACRnE,KAAK4K,MAAQi9C,EAAUj9C,MAAQirC,EAC/B71C,KAAK0Y,QAAUmvC,EAAUnvC,QAAUo9B,CACnC,MAEJ,KAAKz1C,GAAOgE,YACRrE,KAAK6K,KAAOg9C,EAAUh9C,KAAOgrC,EAC7B71C,KAAK2O,OAASk5C,EAAUl5C,OAASmnC,CACjC,MAEJ,KAAKz1C,GAAOiE,cACRtE,KAAKyY,QAAUovC,EAAUpvC,QAAUo9B,EACnC71C,KAAK2O,OAASk5C,EAAUl5C,OAASmnC,CACjC,MAEJ,KAAKz1C,GAAOkE,aACRvE,KAAK4K,MAAQi9C,EAAUj9C,MAAQirC,EAC/B71C,KAAK2O,OAASk5C,EAAUl5C,OAASmnC,EAIzC,MAAO91C,OA4CX8nD,QAAS,SAAUt+B,EAAQjQ,EAAUs8B,EAASC,GAK1C,OAHgBpsC,SAAZmsC,IAAyBA,EAAU,GACvBnsC,SAAZosC,IAAyBA,EAAU,GAE/Bv8B,GAEJ,QACA,IAAKlZ,GAAOsD,SACR3D,KAAK6K,KAAO2e,EAAO3e,KAAOgrC,EAC1B71C,KAAK2O,OAAS6a,EAAO9a,IAAMonC,CAC3B,MAEJ,KAAKz1C,GAAOuD,WACR5D,KAAKyY,QAAU+Q,EAAO/Q,QAAUo9B,EAChC71C,KAAK2O,OAAS6a,EAAO9a,IAAMonC,CAC3B,MAEJ,KAAKz1C,GAAOwD,UACR7D,KAAK4K,MAAQ4e,EAAO5e,MAAQirC,EAC5B71C,KAAK2O,OAAS6a,EAAO9a,IAAMonC,CAC3B,MAEJ,KAAKz1C,GAAOyD,SACR9D,KAAK4K,MAAQ4e,EAAO3e,KAAOgrC,EAC3B71C,KAAK0O,IAAM8a,EAAO9a,IAAMonC,CACxB,MAEJ,KAAKz1C,GAAO0D,YACR/D,KAAK4K,MAAQ4e,EAAO3e,KAAOgrC,EAC3B71C,KAAK0Y,QAAU8Q,EAAO9Q,QAAUo9B,CAChC,MAEJ,KAAKz1C,GAAO2D,YACRhE,KAAK4K,MAAQ4e,EAAO3e,KAAOgrC,EAC3B71C,KAAK2O,OAAS6a,EAAO7a,OAASmnC,CAC9B,MAEJ,KAAKz1C,GAAO6D,UACRlE,KAAK6K,KAAO2e,EAAO5e,MAAQirC,EAC3B71C,KAAK0O,IAAM8a,EAAO9a,IAAMonC,CACxB,MAEJ,KAAKz1C,GAAO8D,aACRnE,KAAK6K,KAAO2e,EAAO5e,MAAQirC,EAC3B71C,KAAK0Y,QAAU8Q,EAAO9Q,QAAUo9B,CAChC,MAEJ,KAAKz1C,GAAO+D,aACRpE,KAAK6K,KAAO2e,EAAO5e,MAAQirC,EAC3B71C,KAAK2O,OAAS6a,EAAO7a,OAASmnC,CAC9B,MAEJ,KAAKz1C,GAAOgE,YACRrE,KAAK6K,KAAO2e,EAAO3e,KAAOgrC,EAC1B71C,KAAK0O,IAAM8a,EAAO7a,OAASmnC,CAC3B,MAEJ,KAAKz1C,GAAOiE,cACRtE,KAAKyY,QAAU+Q,EAAO/Q,QAAUo9B,EAChC71C,KAAK0O,IAAM8a,EAAO7a,OAASmnC,CAC3B,MAEJ,KAAKz1C,GAAOkE,aACRvE,KAAK4K,MAAQ4e,EAAO5e,MAAQirC,EAC5B71C,KAAK0O,IAAM8a,EAAO7a,OAASmnC,EAInC,MAAO91C,QAQfK,EAAOmtB,MAAMnnB,UAAUgrB,QAAUhxB,EAAOymD,UAAUc,OAAOvhD,UAAUgrB,QACnEhxB,EAAOmtB,MAAMnnB,UAAUyhD,QAAUznD,EAAOymD,UAAUc,OAAOvhD,UAAUyhD,QAanEznD,EAAOymD,UAAUiB,WAAa,aAY9B1nD,EAAOymD,UAAUiB,WAAW1hD,UAAUwrB,WAAa,WAO/C,MALI7xB,MAAKwpB,QAELxpB,KAAKwpB,OAAOqI,WAAW7xB,MAGpBA,MAcXK,EAAOymD,UAAUiB,WAAW1hD,UAAU0rB,WAAa;AAO/C,MALI/xB,MAAKwpB,QAELxpB,KAAKwpB,OAAOuI,WAAW/xB,MAGpBA,MAcXK,EAAOymD,UAAUiB,WAAW1hD,UAAU2rB,OAAS,WAO3C,MALIhyB,MAAKwpB,QAELxpB,KAAKwpB,OAAOwI,OAAOhyB,MAGhBA,MAcXK,EAAOymD,UAAUiB,WAAW1hD,UAAU4rB,SAAW,WAO7C,MALIjyB,MAAKwpB,QAELxpB,KAAKwpB,OAAOyI,SAASjyB,MAGlBA,MAeXK,EAAOymD,UAAUkB,KAAO,aAUxB3nD,EAAOymD,UAAUkB,KAAKC,QAAU,SAAUC,GAGtC7nD,EAAOmI,MAAMkD,eAAe1L,KAAMK,EAAOymD,UAAUkB,KAAK3hD,WAExDrG,KAAKkoD,aAEL,KAAK,GAAIpgD,GAAI,EAAGA,EAAIogD,EAAWrgD,OAAQC,IACvC,CACI,GAAI6M,GAAKuzC,EAAWpgD,GAChB8D,GAAU,CAEH,aAAP+I,IAEA/I,GAAU,GAGdvL,EAAOmI,MAAMkD,eAAe1L,KAAMK,EAAOymD,UAAUnyC,GAAItO,UAAWuF,GAElE5L,KAAKkoD,WAAWvzC,IAAM,IAa9BtU,EAAOymD,UAAUkB,KAAK1nC,KAAO,SAAU9F,EAAMvU,EAAGwG,EAAGV,EAAK4kB,GAEpD3wB,KAAKwa,KAAOA,EAEZxa,KAAK+L,IAAMA,EAEX/L,KAAK0iC,QAEL1iC,KAAKuZ,SAAStN,IAAIhG,EAAGwG,GACrBzM,KAAKya,MAAQ,GAAIpa,GAAO2M,MAAM/G,EAAGwG,GACjCzM,KAAKmoD,iBAAmB,GAAI9nD,GAAO2M,MAAM/G,EAAGwG,GAE5CzM,KAAKmwB,OAAS,GAAI9vB,GAAO+nD,OAAOpoD,MAEhCA,KAAK2nD,QAAU,GAAItnD,GAAOkN,UAEtBvN,KAAKkoD,WAAWG,cAGhBroD,KAAK4vB,KAAO5vB,KAAK4vB,MAGjB5vB,KAAKkoD,WAAWjB,YAEhBjnD,KAAKsnD,WAAa,GAAIjnD,GAAOioD,iBAAiBtoD,OAG9CA,KAAKkoD,WAAWK,aAAuB,OAARx8C,GAE/B/L,KAAKm1B,YAAYppB,EAAK4kB,GAGtB3wB,KAAKkoD,WAAWM,gBAEhBxoD,KAAKgvB,aAAe,GAAI3uB,GAAO2M,MAAM/G,EAAGwG,KAKhDpM,EAAOymD,UAAUkB,KAAKhrC,UAAY,WAE9B,GAAIhd,KAAKkuB,eAGL,WADAluB,MAAK8jB,SAOT,IAHA9jB,KAAKmoD,iBAAiBl8C,IAAIjM,KAAKya,MAAMxU,EAAGjG,KAAKya,MAAMhO,GACnDzM,KAAKyoD,iBAAmBzoD,KAAK62B,UAExB72B,KAAKwqB,SAAWxqB,KAAKwpB,OAAOgB,OAG7B,MADAxqB,MAAK6zB,eAAgB,GACd,CAGX7zB,MAAKya,MAAMjN,MAAMxN,KAAKwa,KAAKoC,OAAO3W,EAAIjG,KAAKyqB,eAAe9Y,GAAI3R,KAAKwa,KAAKoC,OAAOnQ,EAAIzM,KAAKyqB,eAAe7Y,IAEnG5R,KAAK6a,UAEL7a,KAAK6zB,cAAgB7zB,KAAKwa,KAAKsC,MAAM4N,wBAGrC1qB,KAAKsnD,YAELtnD,KAAKsnD,WAAW/oC,SAGhBve,KAAK4vB,MAEL5vB,KAAK4vB,KAAK5S,WAGd,KAAK,GAAIlV,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGkV,WAGrB,QAAO,GAIX3c,EAAOymD,UAAUkB,KAAK3hD,WAMlBmU,KAAM,KAQNpP,KAAM,GAUNs3B,QAOAwlB,cAUAp6B,EAAG,EAQHqC,OAAQzmB,OAQR49C,WAAY59C,OAUZqC,IAAK,GAQL0O,MAAO,KAOPoJ,OAAO,EAOPskC,iBAAkB,KAOlBM,iBAAkB,EAQlB50B,cAAe,EAQf60B,OAAO,EAWPx6B,gBAAgB,EAMhBy5B,QAAS,KAMTgB,SAAS,EAaTn+B,QAEIxe,IAAK,WAED,MAAOhM,MAAK2oD,SAIhB18C,IAAK,SAAU1C,GAEPA,GAEAvJ,KAAK2oD,SAAU,EAEX3oD,KAAK4vB,MAAQ5vB,KAAK4vB,KAAK1nB,OAAS7H,EAAOutB,QAAQg7B,MAE/C5oD,KAAK4vB,KAAK3G,aAGdjpB,KAAK6a,SAAU,IAIf7a,KAAK2oD,SAAU,EAEX3oD,KAAK4vB,MAAQ5vB,KAAK4vB,KAAK1nB,OAAS7H,EAAOutB,QAAQg7B,MAE/C5oD,KAAK4vB,KAAKi5B,kBAGd7oD,KAAK6a,SAAU,KAc3B0D,OAAQ,aAUR6L,WAAY,WAEJpqB,KAAK8oD,cAEL9oD,KAAK+L,IAAI6U,SAGT5gB,KAAKkoD,WAAWG,aAEhBhoD,EAAOymD,UAAUuB,YAAYj+B,WAAWtjB,KAAK9G,MAG7CA,KAAKkoD,WAAWM,eAEhBnoD,EAAOymD,UAAU0B,cAAcp+B,WAAWtjB,KAAK9G,KAGnD,KAAK,GAAI8H,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGsiB,eAmB7B/pB,EAAOymD,UAAUiC,KAAO,aAExB1oD,EAAOymD,UAAUiC,KAAK1iD,WASlB2iD,SAAU,KAMVC,MAAO,KAmBPjW,KAAM,SAASt/B,EAAMpI,GAEJ5B,SAAT4B,IAAsBA,GAAO,GAE7BoI,GAEIpI,GAA0B,OAAlBtL,KAAKgpD,SAEbhpD,KAAKgpD,SAASx7C,MAAMkG,EAAKzN,EAAGyN,EAAKjH,EAAGiH,EAAK3D,MAAO2D,EAAK1D,QAEhD1E,GAA0B,OAAlBtL,KAAKgpD,SAElBhpD,KAAKgpD,SAAW,GAAI3oD,GAAOkN,UAAUmG,EAAKzN,EAAGyN,EAAKjH,EAAGiH,EAAK3D,MAAO2D,EAAK1D,QAItEhQ,KAAKgpD,SAAWt1C,EAGpB1T,KAAKkpD,eAILlpD,KAAKipD,MAAQ,KACbjpD,KAAKgpD,SAAW,KAEhBhpD,KAAKmpD,eAWbD,WAAY,WAER,GAAKlpD,KAAKgpD,SAAV,CAKAhpD,KAAKipD,MAAQ5oD,EAAOkN,UAAU/B,MAAMxL,KAAKgpD,SAAUhpD,KAAKipD,OACxDjpD,KAAKipD,MAAMhjD,GAAKjG,KAAKopD,OAAOnjD,EAC5BjG,KAAKipD,MAAMx8C,GAAKzM,KAAKopD,OAAO38C,CAE5B,IAAIyC,GAAKnJ,KAAKoM,IAAInS,KAAKopD,OAAOnjD,EAAGjG,KAAKipD,MAAMhjD,GACxCqJ,EAAKvJ,KAAKoM,IAAInS,KAAKopD,OAAO38C,EAAGzM,KAAKipD,MAAMx8C,GACxC48C,EAAKtjD,KAAKkM,IAAIjS,KAAKopD,OAAOx+C,MAAO5K,KAAKipD,MAAMr+C,OAASsE,EACrDo6C,EAAKvjD,KAAKkM,IAAIjS,KAAKopD,OAAOz6C,OAAQ3O,KAAKipD,MAAMt6C,QAAUW,CAE3DtP,MAAKwiC,QAAQwQ,KAAK/sC,EAAIiJ,EACtBlP,KAAKwiC,QAAQwQ,KAAKvmC,EAAI6C,EACtBtP,KAAKwiC,QAAQwQ,KAAKjjC,MAAQs5C,EAC1BrpD,KAAKwiC,QAAQwQ,KAAKhjC,OAASs5C,EAE3BtpD,KAAKwiC,QAAQ7R,MAAM5gB,MAAQhK,KAAKkM,IAAIo3C,EAAIrpD,KAAKgpD,SAASj5C,OACtD/P,KAAKwiC,QAAQ7R,MAAM3gB,OAASjK,KAAKkM,IAAIq3C,EAAItpD,KAAKgpD,SAASh5C,QAEvDhQ,KAAKwiC,QAAQzyB,MAAQ/P,KAAKwiC,QAAQ7R,MAAM5gB,MACxC/P,KAAKwiC,QAAQxyB,OAAShQ,KAAKwiC,QAAQ7R,MAAM3gB,OAEzChQ,KAAKwiC,QAAQ+mB,gBAiBrBlpD,EAAOymD,UAAU0C,MAAQ,aAEzBnpD,EAAOymD,UAAU0C,MAAMnjD,WAUnBsgC,QAEI36B,IAAK,WAED,MAAOhM,MAAKya,MAAMxU,EAAIjG,KAAKmoD,iBAAiBliD,IAcpDw/B,QAEIz5B,IAAK,WAED,MAAOhM,MAAKya,MAAMhO,EAAIzM,KAAKmoD,iBAAiB17C,IAYpDo6B,QAEI76B,IAAK,WAED,MAAOhM,MAAK62B,SAAW72B,KAAKyoD,oBAmBxCpoD,EAAOymD,UAAU2C,QAAU,aAE3BppD,EAAOymD,UAAU2C,QAAQpjD,WAQrBgwB,cAAc,EAedvS,QAAS,SAAU6S,EAAiBF,GAEhC,GAAkB,OAAdz2B,KAAKwa,OAAiBxa,KAAKq2B,aAA/B,CAEwB3sB,SAApBitB,IAAiCA,GAAkB,GAChCjtB,SAAnB+sB,IAAgCA,GAAiB,GAErDz2B,KAAKq2B,cAAe,EAEhBr2B,KAAKmwB,QAELnwB,KAAKmwB,OAAOu5B,mBAAmB1pD,MAG/BA,KAAKwpB,SAEDxpB,KAAKwpB,iBAAkBnpB,GAAOmtB,MAE9BxtB,KAAKwpB,OAAO1G,OAAO9iB,MAInBA,KAAKwpB,OAAO8I,YAAYtyB,OAI5BA,KAAK+f,OAEL/f,KAAK+f,MAAM+D,UAGX9jB,KAAKsnD,YAELtnD,KAAKsnD,WAAWxjC,UAGhB9jB,KAAK4vB,MAEL5vB,KAAK4vB,KAAK9L,UAGV9jB,KAAKmwB,QAELnwB,KAAKmwB,OAAOrM,UAGhB9jB,KAAKwa,KAAK2F,OAAOwpC,WAAW3pD,KAE5B,IAAI8H,GAAI9H,KAAK2rB,SAAS9jB,MAEtB,IAAI8uB,EAEA,KAAO7uB,KAEH9H,KAAK2rB,SAAS7jB,GAAGgc,QAAQ6S,OAK7B,MAAO7uB,KAEH9H,KAAKsyB,YAAYtyB,KAAK2rB,SAAS7jB,GAInC9H,MAAKipD,QAELjpD,KAAKipD,MAAQ,MAGbjpD,KAAKopD,SAELppD,KAAKopD,OAAS,MAGd/oD,EAAOupD,OAAS5pD,KAAK+L,cAAe1L,GAAOupD,OAE3C5pD,KAAK+L,IAAI89C,eAAe/mC,OAAO9iB,KAAK8pD,YAAa9pD,MAGjDK,EAAO0pD,YAAc/pD,KAAKgqD,UAE1BhqD,KAAKgqD,YAGThqD,KAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEf7a,KAAKspB,QAAU,KACftpB,KAAKiqD,KAAO,KACZjqD,KAAKwa,KAAO,KAEZxa,KAAK0iC,QAGL1iC,KAAKkqD,YAAa,EAEdlqD,KAAKmqD,oBAELnqD,KAAKmqD,kBAAoB,KACzBnqD,KAAKoqD,yBAA2B,MAIpCpqD,KAAKsiC,QAAU,KACftiC,KAAKwpB,OAAS,KACdxpB,KAAK8c,MAAQ,KACb9c,KAAKyqB,eAAiB,KACtBzqB,KAAKqqD,WAAa,KAClBrqD,KAAK2nD,QAAU,KACf3nD,KAAKs3B,eAAiB,KACtBt3B,KAAKsqD,MAAQ,KAEbtqD,KAAKuqD,uBAGD9zB,GAEAz2B,KAAKwiC,QAAQ1e,SAAQ,GAGzB9jB,KAAKq2B,cAAe,EACpBr2B,KAAKkuB,gBAAiB,KAmC9B7tB,EAAO+nD,OAAS,SAAUhxB,GAKtBp3B,KAAKwpB,OAAS4N,GAMlB/2B,EAAO+nD,OAAO/hD,WAOVyd,QAAS,WAEL9jB,KAAKwqD,QAAU,KAEXxqD,KAAKyqD,YAAwBzqD,KAAKyqD,WAAWjkC,UAC7CxmB,KAAK0qD,iBAAwB1qD,KAAK0qD,gBAAgBlkC,UAClDxmB,KAAK2qD,qBAAwB3qD,KAAK2qD,oBAAoBnkC,UACtDxmB,KAAK4qD,qBAAwB5qD,KAAK4qD,oBAAoBpkC,UACtDxmB,KAAK6qD,WAAwB7qD,KAAK6qD,UAAUrkC,UAC5CxmB,KAAK8qD,YAAwB9qD,KAAK8qD,WAAWtkC,UAC7CxmB,KAAK+qD,gBAAwB/qD,KAAK+qD,eAAevkC,UACjDxmB,KAAKgrD,gBAAwBhrD,KAAKgrD,eAAexkC,UAEjDxmB,KAAKirD,cAAwBjrD,KAAKirD,aAAazkC,UAC/CxmB,KAAKkrD,aAAwBlrD,KAAKkrD,YAAY1kC,UAC9CxmB,KAAKmrD,cAAwBnrD,KAAKmrD,aAAa3kC,UAC/CxmB,KAAKorD,YAAwBprD,KAAKorD,WAAW5kC,UAC7CxmB,KAAKqrD,cAAwBrrD,KAAKqrD,aAAa7kC,UAC/CxmB,KAAKsrD,eAAwBtrD,KAAKsrD,cAAc9kC,UAChDxmB,KAAKurD,aAAwBvrD,KAAKurD,YAAY/kC,UAE9CxmB,KAAKwrD,mBAAwBxrD,KAAKwrD,kBAAkBhlC,UACpDxmB,KAAKyrD,sBAAwBzrD,KAAKyrD,qBAAqBjlC,UACvDxmB,KAAK0rD,kBAAwB1rD,KAAK0rD,iBAAiBllC,WAa3D+qB,eAAgB,KAShBE,mBAAoB,KAOpBka,mBAAoB,KASpB98B,UAAW,KAUX+8B,SAAU,KASVC,UAAW,KASXC,cAAe,KASfC,cAAe,KAUfC,YAAa,KAUbC,WAAY,KAWZC,YAAa,KAYbC,UAAW,KAaXC,YAAa,KAeb7X,aAAc,KAUd8X,WAAY,KAWZC,iBAAkB,KAWlBC,oBAAqB,KAWrBC,gBAAiB,MAIrBnsD,EAAO+nD,OAAO/hD,UAAU8B,YAAc9H,EAAO+nD,MAK7C,KAAK,GAAIp/C,KAAQ3I,GAAO+nD,OAAO/hD,UAEtBhG,EAAO+nD,OAAO/hD,UAAU2E,eAAehC,IACjB,IAAvBA,EAAKsnB,QAAQ,OACqB,OAAlCjwB,EAAO+nD,OAAO/hD,UAAU2C,KAK5B,SAAWA,EAAMyjD,GACb,YAGAllD,QAAO2E,eAAe7L,EAAO+nD,OAAO/hD,UAAW2C,GAC3CgD,IAAK,WACD,MAAOhM,MAAKysD,KAAazsD,KAAKysD,GAAW,GAAIpsD,GAAO+a,WAK5D/a,EAAO+nD,OAAO/hD,UAAU2C,EAAO,aAAe,WAC1C,MAAOhJ,MAAKysD,GAAWzsD,KAAKysD,GAAS5tC,SAAS5X,MAAMjH,KAAKysD,GAAU1lD,WAAa,OAGrFiC,EAAM,IAAMA,EAgBnB3I,GAAOymD,UAAU0B,cAAgB,aAQjCnoD,EAAOymD,UAAU0B,cAAcp+B,WAAa,WAEpCpqB,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,IAKnGpM,EAAOymD,UAAU0B,cAAcniD,WAM3BqmD,gBAAgB,EAmBhB39B,eAEI/iB,IAAK,WAED,MAAOhM,MAAK0sD,gBAIhBzgD,IAAK,SAAU1C,GAEPA,GAEAvJ,KAAK0sD,gBAAiB,EACtB1sD,KAAKgvB,aAAa/iB,IAAIjM,KAAKiG,EAAGjG,KAAKyM,IAInCzM,KAAK0sD,gBAAiB,IAalC19B,aAAc,GAAI3uB,GAAO2M,OAiB7B3M,EAAOymD,UAAU6F,OAAS,aAE1BtsD,EAAOymD,UAAU6F,OAAOtmD,WAUpBumD,OAAQ,EASRC,UAAW,IAWXC,OAAQ,SAAU75B,GAYd,MAVIjzB,MAAKguB,QAELhuB,KAAK4sD,QAAU35B,EAEXjzB,KAAK4sD,QAAU,GAEf5sD,KAAK+sD,QAIN/sD,MAYXgtD,UAAW,SAAU/5B,GASjB,MAPAjzB,MAAK4sD,OAAS35B,EAEVjzB,KAAK4sD,OAAS5sD,KAAK6sD,YAEnB7sD,KAAK4sD,OAAS5sD,KAAK6sD,WAGhB7sD,MAWXitD,KAAM,SAAUh6B,GAYZ,MAVIjzB,MAAKguB,QAELhuB,KAAK4sD,QAAU35B,EAEXjzB,KAAK4sD,OAAS5sD,KAAK6sD,YAEnB7sD,KAAK4sD,OAAS5sD,KAAK6sD,YAIpB7sD,OAiBfK,EAAOymD,UAAUoG,SAAW,aAE5B7sD,EAAOymD,UAAUoG,SAAS7mD,WAYtBohD,UAEIz7C,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAMmC,OAAOlC,KAAK5L,WAAW9O,KAAK2nD,YAmB/DtnD,EAAOymD,UAAUqG,aAAe,aAEhC9sD,EAAOymD,UAAUqG,aAAa9mD,WAU1B0Z,MAAO,KAkBPmQ,cAEIlkB,IAAK,WAED,MAAQhM,MAAK+f,OAAS/f,KAAK+f,MAAMqd,SAIrCnxB,IAAK,SAAU1C,GAEPA,EAEmB,OAAfvJ,KAAK+f,OAEL/f,KAAK+f,MAAQ,GAAI1f,GAAOwuC,aAAa7uC,MACrCA,KAAK+f,MAAMrP,SAEN1Q,KAAK+f,QAAU/f,KAAK+f,MAAMqd,SAE/Bp9B,KAAK+f,MAAMrP,QAKX1Q,KAAK+f,OAAS/f,KAAK+f,MAAMqd,SAEzBp9B,KAAK+f,MAAMuc,UAuB/Bj8B,EAAOymD,UAAUsG,QAAU,aAQ3B/sD,EAAOymD,UAAUsG,QAAQpwC,UAAY,WAGjC,GAAIhd,KAAKwnD,UAAYxnD,KAAK0nD,iBAC1B,CAMI,GALA1nD,KAAK2nD,QAAQl6C,SAASzN,KAAKsN,aAE3BtN,KAAK2nD,QAAQ1hD,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EACxCjG,KAAK2nD,QAAQl7C,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAEpCzM,KAAKwnD,SAGL,GAAIxnD,KAAKwa,KAAKC,MAAMmC,OAAOlC,KAAK5L,WAAW9O,KAAK2nD,SAE5C3nD,KAAKkqD,YAAa,EAClBlqD,KAAKwa,KAAKC,MAAMmC,OAAO3B,kBAMvB,IAFAjb,KAAKkqD,YAAa,EAEdlqD,KAAKqtD,sBAGL,MADArtD,MAAK+sD,QACE,CAKnB,IAAI/sD,KAAK0nD,iBAGL,GAAI1nD,KAAKstD,mBAAqBttD,KAAKwa,KAAKC,MAAME,OAAO7L,WAAW9O,KAAK2nD,SAEjE3nD,KAAKstD,mBAAoB,EACzBttD,KAAKmwB,OAAOo9B,uBAAuBvtD,UAElC,KAAKA,KAAKstD,oBAAsBttD,KAAKwa,KAAKC,MAAME,OAAO7L,WAAW9O,KAAK2nD,WAGxE3nD,KAAKstD,mBAAoB,EACzBttD,KAAKmwB,OAAOq9B,uBAAuBxtD,MAE/BA,KAAKytD,iBAGL,MADAztD,MAAK+sD,QACE,EAMvB,OAAO,GAIX1sD,EAAOymD,UAAUsG,QAAQ/mD,WAmBrBqhD,kBAAkB,EAQlB+F,iBAAiB,EASjBJ,uBAAuB,EAMvBC,mBAAmB,EAQnBI,SAEI1hD,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAME,OAAO7L,WAAW9O,KAAKsN,gBAmB1DjN,EAAOymD,UAAU6G,SAAW,aAQ5BttD,EAAOymD,UAAU6G,SAAS3wC,UAAY,WAElC,QAAIhd,KAAK4tD,SAAW,IAEhB5tD,KAAK4tD,UAAY5tD,KAAKwa,KAAKmE,KAAKkvC,iBAE5B7tD,KAAK4tD,UAAY,MAEjB5tD,KAAK+sD,QACE,IAQnB1sD,EAAOymD,UAAU6G,SAAStnD,WAatB2nB,OAAO,EAeP4/B,SAAU,EAaVE,OAAQ,SAAUlB,GAkBd,MAhBeljD,UAAXkjD,IAAwBA,EAAS,KAErC5sD,KAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEe,kBAAnB7a,MAAKgtD,WAEZhtD,KAAKgtD,UAAUJ,GAGf5sD,KAAKmwB,QAELnwB,KAAKmwB,OAAO49B,mBAAmB/tD,MAG5BA,MAiBX+sD,KAAM,WAWF,MATA/sD,MAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEX7a,KAAKmwB,QAELnwB,KAAKmwB,OAAO69B,kBAAkBhuD,MAG3BA,OAiBfK,EAAOymD,UAAUyB,YAAc,aAE/BloD,EAAOymD,UAAUyB,YAAYliD,WAMzByiD,cAAc,EAMdM,OAAQ,KAyBRj0B,YAAa,SAAUppB,EAAK4kB,EAAOs9B,GAE3BliD,IAAQ1L,EAAOyC,eAEfiJ,EAAM4kB,EACNA,EAAQ,GAIRA,EAAQA,GAAS,GAGhBs9B,GAAmCvkD,SAAlBukD,IAAgCjuD,KAAKsnD,YAEvDtnD,KAAKsnD,WAAWhrB,OAGpBt8B,KAAK+L,IAAMA,EACX/L,KAAK8oD,cAAe,CACpB,IAAIhpC,GAAQ9f,KAAKwa,KAAKsF,MAElBouC,GAAW,EACX9yB,GAAYp7B,KAAKwiC,QAAQsQ,YAAYqb,SAEzC,IAAI9tD,EAAO+tD,eAAiBriD,YAAe1L,GAAO+tD,cAE9CpuD,KAAK+L,IAAMA,EAAIA,IACf/L,KAAKquD,WAAWtiD,OAEf,IAAI1L,EAAOiuD,YAAcviD,YAAe1L,GAAOiuD,WAEhDtuD,KAAK8oD,cAAe,EAEpB9oD,KAAKquD,WAAWtiD,EAAIy2B,SAIhB0rB,EAFApuC,EAAMyuC,aAAaxiD,EAAIA,IAAK1L,EAAOs5B,MAAM73B,aAE7B9B,KAAKsnD,WAAWkH,cAAc1uC,EAAM2uC,aAAa1iD,EAAIA,IAAK1L,EAAOs5B,MAAM73B,YAAa6uB,IAIpF3wB,KAAKsnD,WAAWkH,cAAcziD,EAAI2iD,UAAW,OAG5D,IAAIruD,EAAOupD,OAAS79C,YAAe1L,GAAOupD,MAC/C,CACI5pD,KAAK8oD,cAAe,CAGpB,IAAI6F,GAAQ5iD,EAAIy2B,QAAQmsB,KACxB3uD,MAAKquD,WAAWtiD,EAAIy2B,SACpBxiC,KAAKkuD,SAASniD,EAAIy2B,QAAQ7R,MAAMnlB,SAChCO,EAAI89C,eAAeh4C,IAAI7R,KAAK8pD,YAAa9pD,MACzCA,KAAKwiC,QAAQmsB,MAAQA,MAEpB,IAAItuD,EAAOuuD,SAAW7iD,YAAe1L,GAAOwuD,aAI7C7uD,KAAKquD,WAAWvoD,KAAKgpD,QAAQC,WAAWhjD,EAAIuf,aAE3C,IAAIvf,YAAejG,MAAKgpD,QAEzB9uD,KAAKquD,WAAWtiD,OAGpB,CACI,GAAIijD,GAAMlvC,EAAMmvC,SAASljD,GAAK,EAE9B/L,MAAK+L,IAAMijD,EAAIjjD,IACf/L,KAAKquD,WAAW,GAAIvoD,MAAKgpD,QAAQE,EAAIE,OAEzB,cAARnjD,EAEA/L,KAAKwiC,QAAQsQ,YAAYqc,YAAa,EAItCnvD,KAAKwiC,QAAQsQ,YAAYqc,YAAa,EAG1CjB,GAAYluD,KAAKsnD,WAAWkH,cAAcQ,EAAIN,UAAW/9B,GAGzDu9B,IAEAluD,KAAKopD,OAAS/oD,EAAOkN,UAAU/B,MAAMxL,KAAKwiC,QAAQ7R,QAGjDyK,IAEDp7B,KAAKwiC,QAAQsQ,YAAYqb,UAAY,IAa7CD,SAAU,SAAUv9B,GAEhB3wB,KAAKopD,OAASz4B,EAEd3wB,KAAKwiC,QAAQ7R,MAAM1qB,EAAI0qB,EAAM1qB,EAC7BjG,KAAKwiC,QAAQ7R,MAAMlkB,EAAIkkB,EAAMlkB,EAC7BzM,KAAKwiC,QAAQ7R,MAAM5gB,MAAQ4gB,EAAM5gB,MACjC/P,KAAKwiC,QAAQ7R,MAAM3gB,OAAS2gB,EAAM3gB,OAElChQ,KAAKwiC,QAAQwQ,KAAK/sC,EAAI0qB,EAAM1qB,EAC5BjG,KAAKwiC,QAAQwQ,KAAKvmC,EAAIkkB,EAAMlkB,EAC5BzM,KAAKwiC,QAAQwQ,KAAKjjC,MAAQ4gB,EAAM5gB,MAChC/P,KAAKwiC,QAAQwQ,KAAKhjC,OAAS2gB,EAAM3gB,OAE7B2gB,EAAMy+B,SAEFpvD,KAAKwiC,QAAQuQ,MAEb/yC,KAAKwiC,QAAQuQ,KAAK9sC,EAAI0qB,EAAM0+B,kBAC5BrvD,KAAKwiC,QAAQuQ,KAAKtmC,EAAIkkB,EAAM2+B,kBAC5BtvD,KAAKwiC,QAAQuQ,KAAKhjC,MAAQ4gB,EAAM4+B,YAChCvvD,KAAKwiC,QAAQuQ,KAAK/iC,OAAS2gB,EAAM6+B,aAIjCxvD,KAAKwiC,QAAQuQ,MAAS9sC,EAAG0qB,EAAM0+B,kBAAmB5iD,EAAGkkB,EAAM2+B,kBAAmBv/C,MAAO4gB,EAAM4+B,YAAav/C,OAAQ2gB,EAAM6+B,aAG1HxvD,KAAKwiC,QAAQzyB,MAAQ4gB,EAAM4+B,YAC3BvvD,KAAKwiC,QAAQxyB,OAAS2gB,EAAM6+B,YAC5BxvD,KAAKwiC,QAAQ7R,MAAM5gB,MAAQ4gB,EAAM4+B,YACjCvvD,KAAKwiC,QAAQ7R,MAAM3gB,OAAS2gB,EAAM6+B,cAE5B7+B,EAAMy+B,SAAWpvD,KAAKwiC,QAAQuQ,OAEpC/yC,KAAKwiC,QAAQuQ,KAAO,MAGpB/yC,KAAKgpD,UAELhpD,KAAKkpD,aAGTlpD,KAAKwiC,QAAQitB,gBAAiB,EAE9BzvD,KAAKwiC,QAAQ+mB,aAETvpD,KAAK0vD,gBAEL1vD,KAAK2vD,gBAAiB,IAgB9B7F,YAAa,SAAUtgC,EAAQzZ,EAAOC,GAElChQ,KAAKwiC,QAAQ7R,MAAM7X,OAAO/I,EAAOC,GACjChQ,KAAKwiC,QAAQ0rB,SAASluD,KAAKwiC,QAAQ7R,QASvCw4B,WAAY,WAEJnpD,KAAKopD,QAELppD,KAAKkuD,SAASluD,KAAKopD,SAkB3Bz4B,OAEI3kB,IAAK,WACD,MAAOhM,MAAKsnD,WAAW32B,OAG3B1kB,IAAK,SAAU1C,GACXvJ,KAAKsnD,WAAW32B,MAAQpnB,IAkBhCqmD,WAEI5jD,IAAK,WACD,MAAOhM,MAAKsnD,WAAWsI,WAG3B3jD,IAAK,SAAU1C,GACXvJ,KAAKsnD,WAAWsI,UAAYrmD,KAkBxClJ,EAAOymD,UAAU+I,QAAU,aAE3BxvD,EAAOymD,UAAU+I,QAAQxpD,WAerBypD,QAAS,SAAU90C,GAEf,MAAO3a,GAAOkN,UAAUuB,WAAW9O,KAAKsN,YAAa0N,EAAc1N,eAkB3EjN,EAAOymD,UAAUuB,YAAc,aAQ/BhoD,EAAOymD,UAAUuB,YAAYrrC,UAAY,WAErC,MAAIhd,MAAK0oD,OAAS1oD,KAAKwqB,QAEnBxqB,KAAKya,MAAMjN,MAAMxN,KAAKwpB,OAAOjQ,SAAStT,EAAIjG,KAAKuZ,SAAStT,EAAGjG,KAAKwpB,OAAOjQ,SAAS9M,EAAIzM,KAAKuZ,SAAS9M,GAClGzM,KAAKyqB,eAAe9Y,GAAK3R,KAAKya,MAAMxU,EACpCjG,KAAKyqB,eAAe7Y,GAAK5R,KAAKya,MAAMhO,EAEpCzM,KAAKmoD,iBAAiBl8C,IAAIjM,KAAKya,MAAMxU,EAAGjG,KAAKya,MAAMhO,GACnDzM,KAAKyoD,iBAAmBzoD,KAAK62B,SAEzB72B,KAAK4vB,MAEL5vB,KAAK4vB,KAAK5S,YAGdhd,KAAK0oD,OAAQ,GAEN,IAGX1oD,KAAKmoD,iBAAiBl8C,IAAIjM,KAAKya,MAAMxU,EAAGjG,KAAKya,MAAMhO,GACnDzM,KAAKyoD,iBAAmBzoD,KAAK62B,YAExB72B,KAAK2oD,UAAY3oD,KAAKwpB,OAAOgB,UAE9BxqB,KAAK6zB,eAAgB,GACd,KAafxzB,EAAOymD,UAAUuB,YAAYj+B,WAAa,WAElCpqB,KAAKwqB,QAAUxqB,KAAK4vB,MAEpB5vB,KAAK4vB,KAAKxF,cAKlB/pB,EAAOymD,UAAUuB,YAAYhiD,WAqBzBupB,KAAM,KAON3pB,GAEI+F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,GAIzBgG,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAStT,EAAIsD,EAEdvJ,KAAK4vB,OAAS5vB,KAAK4vB,KAAKnI,QAExBznB,KAAK4vB,KAAKmgC,QAAS,KAY/BtjD,GAEIT,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,GAIzBR,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAS9M,EAAIlD,EAEdvJ,KAAK4vB,OAAS5vB,KAAK4vB,KAAKnI,QAExBznB,KAAK4vB,KAAKmgC,QAAS,MAoBnC1vD,EAAOymD,UAAUkJ,MAAQ,aAkBzB3vD,EAAOymD,UAAUkJ,MAAM3pD,UAAUqZ,MAAQ,SAAUzZ,EAAGwG,EAAGmgD,GA+BrD,MA7BeljD,UAAXkjD,IAAwBA,EAAS,GAErC5sD,KAAKya,MAAMxO,IAAIhG,EAAGwG,GAClBzM,KAAKuZ,SAAStN,IAAIhG,EAAGwG,GAErBzM,KAAK0oD,OAAQ,EACb1oD,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EACf7a,KAAKkqD,YAAa,EAEdlqD,KAAKkoD,WAAWkF,UAEhBptD,KAAKstD,mBAAoB,GAGzBttD,KAAKkoD,WAAWyF,WAEhB3tD,KAAKguB,OAAQ,EACbhuB,KAAK4sD,OAASA,GAGd5sD,KAAKkoD,WAAWG,aAEZroD,KAAK4vB,MAEL5vB,KAAK4vB,KAAKlQ,MAAMzZ,EAAGwG,GAAG,GAAO,GAI9BzM,MAeXK,EAAOymD,UAAUmJ,YAAc,aAE/B5vD,EAAOymD,UAAUmJ,YAAY5pD,WAMzB8jD,kBAAmB,KAMnBC,yBAA0BpqD,KAU1BkwD,SAAU,KAUVC,SAAU,KASVC,eAAgB,SAAUluB,GAElBliC,KAAKkwD,WAEDhuB,EAAGzzB,EAAIzO,KAAKkwD,SAASjqD,IAErBi8B,EAAGzzB,EAAIzO,KAAKkwD,SAASjqD,GAGrBi8B,EAAGjuB,EAAIjU,KAAKkwD,SAASzjD,IAErBy1B,EAAGjuB,EAAIjU,KAAKkwD,SAASzjD,IAIzBzM,KAAKmwD,WAEDjuB,EAAGzzB,EAAIzO,KAAKmwD,SAASlqD,IAErBi8B,EAAGzzB,EAAIzO,KAAKmwD,SAASlqD,GAGrBi8B,EAAGjuB,EAAIjU,KAAKmwD,SAAS1jD,IAErBy1B,EAAGjuB,EAAIjU,KAAKmwD,SAAS1jD,KA+BjC4jD,eAAgB,SAAUC,EAAMC,EAAMC,EAAMC,GAE3B/mD,SAAT6mD,EAGAA,EAAOC,EAAOC,EAAOH,EAEP5mD,SAAT8mD,IAGLA,EAAOC,EAAOF,EACdA,EAAOD,GAGE,OAATA,EAEAtwD,KAAKkwD,SAAW,KAIZlwD,KAAKkwD,SAELlwD,KAAKkwD,SAASjkD,IAAIqkD,EAAMC,GAIxBvwD,KAAKkwD,SAAW,GAAI7vD,GAAO2M,MAAMsjD,EAAMC,GAIlC,OAATC,EAEAxwD,KAAKmwD,SAAW,KAIZnwD,KAAKmwD,SAELnwD,KAAKmwD,SAASlkD,IAAIukD,EAAMC,GAIxBzwD,KAAKmwD,SAAW,GAAI9vD,GAAO2M,MAAMwjD,EAAMC,GAIzB,OAAlBzwD,KAAKkwD,SAELlwD,KAAKmqD,kBAAoB,MAIzBnqD,KAAKmqD,kBAAoBnqD,KAAKowD,eAC9BpwD,KAAKoqD,yBAA2BpqD,QAiB5CK,EAAOymD,UAAU4J,SAAW,aAE5BrwD,EAAOymD,UAAU4J,SAASrqD,WAWtB+0B,UAEIpvB,IAAK,WAED,OAAQhM,KAAKwiC,QAAQsQ,YAAYqb,WAIrCliD,IAAK,SAAU1C,GAEPA,EAEIvJ,KAAKwiC,UAELxiC,KAAKwiC,QAAQsQ,YAAYqb,UAAY,GAKrCnuD,KAAKwiC,UAELxiC,KAAKwiC,QAAQsQ,YAAYqb,UAAY,MAyBzD9tD,EAAOo5B,kBAAoB,SAAUjf,GAMjCxa,KAAKwa,KAAOA,EAMZxa,KAAKya,MAAQza,KAAKwa,KAAKC,OAI3Bpa,EAAOo5B,kBAAkBpzB,WASrBsqD,SAAU,SAAUp7B,GAEhB,MAAOv1B,MAAKya,MAAM5I,IAAI0jB,IAwB1Bq7B,OAAQ,SAAU//B,EAAU9kB,EAAK4kB,EAAO6F,GAEpC,GAAIo6B,GAAS5wD,KAAKwa,KAAKwP,QAAQnY,IAAIxR,EAAOwwD,OAI1C,OAFAD,GAAOE,cAAcjgC,EAAU9kB,EAAK4kB,EAAO6F,GAEpCo6B,GAoBXxnC,MAAO,SAAUnjB,EAAGwG,EAAGV,EAAK4kB,EAAO6F,GAI/B,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM3kB,IAAI,GAAIxR,GAAO0wD,MAAM/wD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK4kB,KAmB5DyG,OAAQ,SAAUnxB,EAAGwG,EAAGV,EAAK4kB,EAAO6F,GAIhC,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM9V,OAAOza,EAAGwG,EAAGV,EAAK4kB,IAyBnCqgC,SAAU,SAAU/qD,EAAGwG,EAAGV,EAAKklD,EAAMz6B,GAEnB9sB,SAAV8sB,IAAuBA,EAAQx2B,KAAKya,MAExC,IAAI1R,GAAM,GAAI1I,GAAO6wD,SAASlxD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAKklD,EAIpD,OAFAz6B,GAAM3kB,IAAI9I,GAEHA,GAaXooD,MAAO,SAAU57B,GAEb,MAAOv1B,MAAKwa,KAAK2F,OAAOO,OAAO6U,IAenCiB,MAAO,SAAUhN,EAAQpe,EAAMqiB,EAAYC,EAAYC,GAEnD,MAAO,IAAIttB,GAAOmtB,MAAMxtB,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,EAAYC,EAAYC,IAiB7EyjC,aAAc,SAAUzjC,EAAiBnE,EAAQpe,EAAMqiB,GAEnD,MAAO,IAAIptB,GAAOmtB,MAAMxtB,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,IAAY,GAAME,IAevE0jC,YAAa,SAAU7nC,EAAQpe,EAAMqiB,GAMjC,MAJe/jB,UAAX8f,IAAwBA,EAAS,MACxB9f,SAAT0B,IAAsBA,EAAO,SACd1B,SAAf+jB,IAA4BA,GAAa,GAEtC,GAAIptB,GAAOixD,YAAYtxD,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,IAc3D8jC,MAAO,SAAUxlD,EAAKiO,EAAQotC,EAAMtP,GAEhC,MAAO93C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQotC,EAAMtP,IAclD73B,MAAO,SAAUlU,EAAKiO,EAAQotC,EAAMtP,GAEhC,MAAO93C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQotC,EAAMtP,IAWlD0Z,YAAa,SAAUzlD,GAEnB,MAAO/L,MAAKwa,KAAKyF,MAAMwxC,UAAU1lD,IAiBrC2lD,WAAY,SAAUzrD,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK4kB,EAAO6F,GAInD,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM3kB,IAAI,GAAIxR,GAAOkiC,WAAWviC,KAAKwa,KAAMvU,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK4kB,KAkBhFghC,KAAM,SAAU1rD,EAAGwG,EAAGV,EAAK4kB,EAAO5Z,EAAQyf,GAItC,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM3kB,IAAI,GAAIxR,GAAOuxD,KAAK5xD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK4kB,EAAO5Z,KAelE86C,KAAM,SAAU5rD,EAAGwG,EAAGolD,EAAM30C,EAAOsZ,GAI/B,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM3kB,IAAI,GAAIxR,GAAOyxD,KAAK9xD,KAAKwa,KAAMvU,EAAGwG,EAAGolD,EAAM30C,KAoB5DkmB,OAAQ,SAAUn9B,EAAGwG,EAAGV,EAAKunB,EAAUvQ,EAAiBgvC,EAAWC,EAAUC,EAAWC,EAAS17B,GAI7F,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM3kB,IAAI,GAAIxR,GAAO8xD,OAAOnyD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAKunB,EAAUvQ,EAAiBgvC,EAAWC,EAAUC,EAAWC,KAaxHE,SAAU,SAAUnsD,EAAGwG,EAAG+pB,GAItB,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM3kB,IAAI,GAAIxR,GAAOwc,SAAS7c,KAAKwa,KAAMvU,EAAGwG,KAiBvD4lD,QAAS,SAAUpsD,EAAGwG,EAAG6lD,GAErB,MAAOtyD,MAAKwa,KAAK4F,UAAUvO,IAAI,GAAIxR,GAAO45B,UAAUs4B,OAAOC,QAAQxyD,KAAKwa,KAAMvU,EAAGwG,EAAG6lD,KA0BxFG,UAAW,SAAUC,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEzG,MAAO,IAAI7yD,GAAO8yD,UAAUnzD,KAAKwa,KAAMk4C,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,IAgCnIE,WAAY,SAAUntD,EAAGwG,EAAGimD,EAAMb,EAAM7nD,EAAMwsB,GAI1C,MAFc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKya,OAEjC+b,EAAM3kB,IAAI,GAAIxR,GAAO0pD,WAAW/pD,KAAKwa,KAAMvU,EAAGwG,EAAGimD,EAAMb,EAAM7nD,KAqBxEqpD,QAAS,SAAUtnD,EAAKunD,EAAWC,EAAYxjD,EAAOC,GAElD,MAAO,IAAI3P,GAAOuuD,QAAQ5uD,KAAKwa,KAAMzO,EAAKunD,EAAWC,EAAYxjD,EAAOC,IAc5EwjD,cAAe,SAAUzjD,EAAOC,EAAQjE,EAAK0nD,GAE7B/pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAI40C,QACxChqD,SAAf+pD,IAA4BA,GAAa,EAE7C,IAAIjxB,GAAU,GAAIniC,GAAO+tD,cAAcpuD,KAAKwa,KAAMzK,EAAOC,EAAQjE,EAOjE,OALI0nD,IAEAzzD,KAAKwa,KAAKsF,MAAM6zC,iBAAiB5nD,EAAKy2B,GAGnCA,GAcXoxB,MAAO,SAAU7nD,EAAK8nD,GAElB,MAAO,IAAIxzD,GAAOupD,MAAM5pD,KAAKwa,KAAMzO,EAAK8nD,IAgB5CC,WAAY,SAAU/jD,EAAOC,EAAQjE,EAAK0nD,GAEnB/pD,SAAf+pD,IAA4BA,GAAa,GACjC/pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAI40C,OAE3D,IAAIlxB,GAAU,GAAIniC,GAAOiuD,WAAWtuD,KAAKwa,KAAMzO,EAAKgE,EAAOC,EAO3D,OALIyjD,IAEAzzD,KAAKwa,KAAKsF,MAAMi0C,cAAchoD,EAAKy2B,GAGhCA,GAYX1O,OAAQ,SAAUA,GAEd,GAAIntB,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAE7C+sB,EAAS,GAAIzzB,GAAO+mB,OAAO0M,GAAQ9zB,KAAKwa,KAI5C,OAFAsZ,GAAOxT,KAAKrZ,MAAM6sB,EAAQntB,GAEnBmtB,GAcX3J,OAAQ,SAAUA,GAEd,MAAOnqB,MAAKwa,KAAKwP,QAAQnY,IAAIsY,KAMrC9pB,EAAOo5B,kBAAkBpzB,UAAU8B,YAAc9H,EAAOo5B,kBAgBxDp5B,EAAOq5B,kBAAoB,SAAUlf,GAMjCxa,KAAKwa,KAAOA,EAMZxa,KAAKya,MAAQza,KAAKwa,KAAKC,OAI3Bpa,EAAOq5B,kBAAkBrzB,WAerB+iB,MAAO,SAAUnjB,EAAGwG,EAAGV,EAAK4kB,GAExB,MAAO,IAAItwB,GAAO0wD,MAAM/wD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK4kB,IAclDyG,OAAQ,SAAUnxB,EAAGwG,EAAGV,EAAK4kB,GAEzB,MAAO,IAAItwB,GAAO+tB,OAAOpuB,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK4kB,IAanDwgC,MAAO,SAAUpoD,GAEb,MAAO,IAAI1I,GAAO2zD,MAAMjrD,EAAK/I,KAAKwa,KAAMxa,KAAKwa,KAAK2F,SAetDqW,MAAO,SAAUhN,EAAQpe,EAAMqiB,EAAYC,EAAYC,GAEnD,MAAO,IAAIttB,GAAOmtB,MAAMxtB,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,EAAYC,EAAYC,IAa7E0jC,YAAa,SAAU7nC,EAAQpe,EAAMqiB,GAKjC,MAHa/jB,UAAT0B,IAAsBA,EAAO,SACd1B,SAAf+jB,IAA4BA,GAAa,GAEtC,GAAIptB,GAAOixD,YAAYtxD,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,IAc3D8jC,MAAO,SAAUxlD,EAAKiO,EAAQotC,EAAMtP,GAEhC,MAAO93C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQotC,EAAMtP,IAWlD0Z,YAAa,SAAUzlD,GAEnB,MAAO/L,MAAKwa,KAAKyF,MAAMwxC,UAAU1lD,IAcrCkU,MAAO,SAAUlU,EAAKiO,EAAQotC,EAAMtP,GAEhC,MAAO93C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQotC,EAAMtP,IAgBlD4Z,WAAY,SAAUzrD,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK4kB,GAE5C,MAAO,IAAItwB,GAAOkiC,WAAWviC,KAAKwa,KAAMvU,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK4kB,IAgBtEghC,KAAM,SAAU1rD,EAAGwG,EAAGV,EAAK4kB,EAAO5Z,GAE9B,MAAO,IAAI1W,GAAOuxD,KAAK5xD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK4kB,EAAO5Z,IAcxD86C,KAAM,SAAU5rD,EAAGwG,EAAGolD,EAAM30C,GAExB,MAAO,IAAI7c,GAAOyxD,KAAK9xD,KAAKwa,KAAMvU,EAAGwG,EAAGolD,EAAM30C,IAmBlDkmB,OAAQ,SAAUn9B,EAAGwG,EAAGV,EAAKunB,EAAUvQ,EAAiBgvC,EAAWC,EAAUC,EAAWC,GAEpF,MAAO,IAAI7xD,GAAO8xD,OAAOnyD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAKunB,EAAUvQ,EAAiBgvC,EAAWC,EAAUC,EAAWC,IAY9GE,SAAU,SAAUnsD,EAAGwG,GAEnB,MAAO,IAAIpM,GAAOwc,SAAS7c,KAAKwa,KAAMvU,EAAGwG,IAiB7C4lD,QAAS,SAAUpsD,EAAGwG,EAAG6lD,GAErB,MAAO,IAAIjyD,GAAO45B,UAAUs4B,OAAOC,QAAQxyD,KAAKwa,KAAMvU,EAAGwG,EAAG6lD,IA0BhEG,UAAW,SAAUC,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEzG,MAAO,IAAI7yD,GAAO8yD,UAAUnzD,KAAKwa,KAAMk4C,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,IAgCnIE,WAAY,SAAUntD,EAAGwG,EAAGimD,EAAMb,EAAM7nD,EAAMgnB,GAE1C,MAAO,IAAI3wB,GAAO0pD,WAAW/pD,KAAKwa,KAAMvU,EAAGwG,EAAGimD,EAAMb,EAAM7nD,EAAMgnB,IAoBpEqiC,QAAS,SAAUtnD,EAAKunD,EAAWC,EAAYxjD,EAAOC,GAElD,MAAO,IAAI3P,GAAOuuD,QAAQ5uD,KAAKwa,KAAMzO,EAAKunD,EAAWC,EAAYxjD,EAAOC,IAc5EwjD,cAAe,SAAUzjD,EAAOC,EAAQjE,EAAK0nD,GAE7B/pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAI40C,QACxChqD,SAAf+pD,IAA4BA,GAAa,EAE7C,IAAIjxB,GAAU,GAAIniC,GAAO+tD,cAAcpuD,KAAKwa,KAAMzK,EAAOC,EAAQjE,EAOjE,OALI0nD,IAEAzzD,KAAKwa,KAAKsF,MAAM6zC,iBAAiB5nD,EAAKy2B,GAGnCA,GAgBXsxB,WAAY,SAAU/jD,EAAOC,EAAQjE,EAAK0nD,GAEnB/pD,SAAf+pD,IAA4BA,GAAa,GACjC/pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAI40C,OAE3D,IAAIlxB,GAAU,GAAIniC,GAAOiuD,WAAWtuD,KAAKwa,KAAMzO,EAAKgE,EAAOC,EAO3D,OALIyjD,IAEAzzD,KAAKwa,KAAKsF,MAAMi0C,cAAchoD,EAAKy2B,GAGhCA,GAYX1O,OAAQ,SAAUA,GAEd,GAAIntB,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAE7C+sB,EAAS,GAAIzzB,GAAO+mB,OAAO0M,GAAQ9zB,KAAKwa,KAI5C,OAFAsZ,GAAOxT,KAAKrZ,MAAM6sB,EAAQntB,GAEnBmtB,IAMfzzB,EAAOq5B,kBAAkBrzB,UAAU8B,YAAc9H,EAAOq5B,kBA6CxDr5B,EAAO+tB,OAAS,SAAU5T,EAAMvU,EAAGwG,EAAGV,EAAK4kB,GAEvC1qB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACb4kB,EAAQA,GAAS,KAMjB3wB,KAAKkI,KAAO7H,EAAOY,OAMnBjB,KAAK+tB,YAAc1tB,EAAOY,OAE1B6E,KAAKsoB,OAAOtnB,KAAK9G,KAAMK,EAAOs5B,MAAMh0B,SAEpCtF,EAAOymD,UAAUkB,KAAK1nC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK4kB,IAI3DtwB,EAAO+tB,OAAO/nB,UAAYkB,OAAOmZ,OAAO5a,KAAKsoB,OAAO/nB,WACpDhG,EAAO+tB,OAAO/nB,UAAU8B,YAAc9H,EAAO+tB,OAE7C/tB,EAAOymD,UAAUkB,KAAKC,QAAQnhD,KAAKzG,EAAO+tB,OAAO/nB,WAC7C,QACA,YACA,WACA,SACA,aACA,OACA,QACA,UACA,gBACA,SACA,WACA,eACA,UACA,WACA,cACA,UACA,cACA,QACA,cACA,aAGJhG,EAAO+tB,OAAO/nB,UAAU4tD,iBAAmB5zD,EAAOymD,UAAUuB,YAAYrrC,UACxE3c,EAAO+tB,OAAO/nB,UAAU6tD,kBAAoB7zD,EAAOymD,UAAU6G,SAAS3wC,UACtE3c,EAAO+tB,OAAO/nB,UAAU8tD,iBAAmB9zD,EAAOymD,UAAUsG,QAAQpwC,UACpE3c,EAAO+tB,OAAO/nB,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UAS9D3c,EAAO+tB,OAAO/nB,UAAU2W,UAAY,WAEhC,SAAKhd,KAAKi0D,oBAAuBj0D,KAAKk0D,qBAAwBl0D,KAAKm0D,qBAK5Dn0D,KAAKo0D,iBAsChB/zD,EAAO0wD,MAAQ,SAAUv2C,EAAMvU,EAAGwG,EAAGV,EAAK4kB,GAEtC1qB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACb4kB,EAAQA,GAAS,KAMjB3wB,KAAKkI,KAAO7H,EAAOc,MAEnB2E,KAAKsoB,OAAOtnB,KAAK9G,KAAMK,EAAOs5B,MAAMh0B,SAEpCtF,EAAOymD,UAAUkB,KAAK1nC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK4kB,IAI3DtwB,EAAO0wD,MAAM1qD,UAAYkB,OAAOmZ,OAAO5a,KAAKsoB,OAAO/nB,WACnDhG,EAAO0wD,MAAM1qD,UAAU8B,YAAc9H,EAAO0wD,MAE5C1wD,EAAOymD,UAAUkB,KAAKC,QAAQnhD,KAAKzG,EAAO0wD,MAAM1qD,WAC5C,QACA,YACA,WACA,SACA,aACA,OACA,UACA,gBACA,eACA,WACA,cACA,UACA,QACA,aAGJhG,EAAO0wD,MAAM1qD,UAAU8tD,iBAAmB9zD,EAAOymD,UAAUsG,QAAQpwC,UACnE3c,EAAO0wD,MAAM1qD,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UAQ7D3c,EAAO0wD,MAAM1qD,UAAU2W,UAAY,WAE/B,QAAKhd,KAAKm0D,oBAKHn0D,KAAKo0D,iBAsChB/zD,EAAO8xD,OAAS,SAAU33C,EAAMvU,EAAGwG,EAAGV,EAAKunB,EAAUvQ,EAAiBgvC,EAAWC,EAAUC,EAAWC,GAElGjsD,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACbunB,EAAWA,GAAY,KACvBvQ,EAAkBA,GAAmB/iB,KAErCK,EAAO0wD,MAAMjqD,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAKimD,GAOzChyD,KAAKkI,KAAO7H,EAAOa,OAMnBlB,KAAK+tB,YAAc1tB,EAAOY,OAO1BjB,KAAKq0D,aAAe,KAOpBr0D,KAAKs0D,YAAc,KAOnBt0D,KAAKu0D,aAAe,KAOpBv0D,KAAKw0D,WAAa,KAOlBx0D,KAAKy0D,YAAc,KAOnBz0D,KAAK00D,WAAa,KAOlB10D,KAAK20D,YAAc,KAOnB30D,KAAK40D,UAAY,KAOjB50D,KAAK60D,kBAAoB,GAOzB70D,KAAK80D,iBAAmB,GAOxB90D,KAAK+0D,kBAAoB,GAOzB/0D,KAAKg1D,gBAAkB,GAMvBh1D,KAAKgsD,YAAc,GAAI3rD,GAAO+a,OAM9Bpb,KAAKisD,WAAa,GAAI5rD,GAAO+a,OAM7Bpb,KAAKksD,YAAc,GAAI7rD,GAAO+a,OAM9Bpb,KAAKmsD,UAAY,GAAI9rD,GAAO+a,OAS5Bpb,KAAKi1D,iBAAkB,EASvBj1D,KAAKk1D,yBAA2B70D,EAAO8/B,YAAYe,MAOnDlhC,KAAKm1D,cAAe,EAUpBn1D,KAAKo1D,UAAW,EAEhBp1D,KAAKkwB,cAAe,EAEpBlwB,KAAK+f,MAAMrP,MAAM,GAAG,GAEpB1Q,KAAK+f,MAAM+uB,eAAgB,EAE3B9uC,KAAKq1D,UAAUtD,EAAWC,EAAUC,EAAWC,GAE9B,OAAb5+B,GAEAtzB,KAAKmsD,UAAUt6C,IAAIyhB,EAAUvQ,GAIjC/iB,KAAKmwB,OAAO67B,YAAYn6C,IAAI7R,KAAKs1D,mBAAoBt1D,MACrDA,KAAKmwB,OAAO87B,WAAWp6C,IAAI7R,KAAKu1D,kBAAmBv1D,MACnDA,KAAKmwB,OAAO+7B,YAAYr6C,IAAI7R,KAAKw1D,mBAAoBx1D,MACrDA,KAAKmwB,OAAOg8B,UAAUt6C,IAAI7R,KAAKy1D,iBAAkBz1D,MAEjDA,KAAKmwB,OAAOw7B,mBAAmB95C,IAAI7R,KAAK01D,iBAAkB11D,OAI9DK,EAAO8xD,OAAO9rD,UAAYkB,OAAOmZ,OAAOrgB,EAAO0wD,MAAM1qD,WACrDhG,EAAO8xD,OAAO9rD,UAAU8B,YAAc9H,EAAO8xD,MAG7C,IAAIwD,GAAa,OACbC,EAAY,MACZC,EAAa,OACbC,EAAW,IAOfz1D,GAAO8xD,OAAO9rD,UAAU0vD,YAAc,WAElC/1D,KAAKq1D,UAAU,KAAM,KAAM,KAAM,OAUrCh1D,EAAO8xD,OAAO9rD,UAAUqvD,iBAAmB,WAEvC11D,KAAKkwB,cAAe,GAaxB7vB,EAAO8xD,OAAO9rD,UAAU2vD,cAAgB,SAAU91C,EAAOyQ,EAAOslC,GAE5D,GAAIC,GAAW,MAAQh2C,EAAQ,OAEjB,QAAVyQ,GAEA3wB,KAAKk2D,GAAYvlC,EAEbslC,GAEAj2D,KAAKm2D,iBAAiBj2C,IAK1BlgB,KAAKk2D,GAAY,MAazB71D,EAAO8xD,OAAO9rD,UAAU8vD,iBAAmB,SAAUj2C,GAEjD,GAAIlgB,KAAKm1D,aAEL,OAAO,CAGX,IAAIe,GAAW,MAAQh2C,EAAQ,QAC3ByQ,EAAQ3wB,KAAKk2D,EAEjB,OAAqB,gBAAVvlC,IAEP3wB,KAAK4vD,UAAYj/B,GACV,GAEe,gBAAVA,KAEZ3wB,KAAK2wB,MAAQA,GACN,IAqBftwB,EAAO8xD,OAAO9rD,UAAUgvD,UAAY,SAAUtD,EAAWC,EAAUC,EAAWC,GAE1ElyD,KAAKg2D,cAAcL,EAAY5D,EAAW/xD,KAAK+f,MAAMuyB,eACrDtyC,KAAKg2D,cAAcJ,EAAW5D,GAAWhyD,KAAK+f,MAAMuyB,eACpDtyC,KAAKg2D,cAAcH,EAAY5D,EAAWjyD,KAAK+f,MAAMmyB,eACrDlyC,KAAKg2D,cAAcF,EAAU5D,EAASlyD,KAAK+f,MAAMoyB,cAarD9xC,EAAO8xD,OAAO9rD,UAAU+vD,cAAgB,SAAUl2C,EAAOD,EAAOo2C,GAE5D,GAAIC,GAAW,KAAOp2C,EAAQ,QAC1Bq2C,EAAY,KAAOr2C,EAAQ,aAE3BD,aAAiB5f,GAAOm2D,OAASv2C,YAAiB5f,GAAOo2D,aAEzDz2D,KAAKs2D,GAAYr2C,EACjBjgB,KAAKu2D,GAA+B,gBAAXF,GAAsBA,EAAS,KAIxDr2D,KAAKs2D,GAAY,KACjBt2D,KAAKu2D,GAAa,KAa1Bl2D,EAAO8xD,OAAO9rD,UAAUqwD,eAAiB,SAAUx2C,GAE/C,GAAIo2C,GAAW,KAAOp2C,EAAQ,QAC1BD,EAAQjgB,KAAKs2D,EAEjB,IAAIr2C,EACJ,CACI,GAAIs2C,GAAY,KAAOr2C,EAAQ,cAC3Bm2C,EAASr2D,KAAKu2D,EAGlB,OADAt2C,GAAMinC,KAAKmP,IACJ,EAIP,OAAO,GAsBfh2D,EAAO8xD,OAAO9rD,UAAUswD,UAAY,SAAUC,EAAWC,EAAYC,EAAWC,EAAYC,EAAUC,EAAWC,EAASC,GAEtHn3D,KAAKo2D,cAAcT,EAAYiB,EAAWC,GAC1C72D,KAAKo2D,cAAcR,EAAWoB,EAAUC,GACxCj3D,KAAKo2D,cAAcP,EAAYiB,EAAWC,GAC1C/2D,KAAKo2D,cAAcN,EAAUoB,EAASC,IAY1C92D,EAAO8xD,OAAO9rD,UAAU+wD,aAAe,SAAUn3C,EAAOo2C,GAEpDr2D,KAAKo2D,cAAcT,EAAY11C,EAAOo2C,IAY1Ch2D,EAAO8xD,OAAO9rD,UAAUgxD,YAAc,SAAUp3C,EAAOo2C,GAEnDr2D,KAAKo2D,cAAcR,EAAW31C,EAAOo2C,IAYzCh2D,EAAO8xD,OAAO9rD,UAAUixD,aAAe,SAAUr3C,EAAOo2C,GAEpDr2D,KAAKo2D,cAAcP,EAAY51C,EAAOo2C,IAY1Ch2D,EAAO8xD,OAAO9rD,UAAUkxD,WAAa,SAAUt3C,EAAOo2C,GAElDr2D,KAAKo2D,cAAcN,EAAU71C,EAAOo2C,IAYxCh2D,EAAO8xD,OAAO9rD,UAAUivD,mBAAqB,SAAUl+B,EAAQtO,GAEvDA,EAAQ6f,iBACP3oC,KAAKk1D,yBAA2BpsC,EAAQ8f,eAAiB9f,EAAQ8f,cAMtE5oC,KAAKm2D,iBAAiBR,GAElB31D,KAAKi1D,kBAAoBnsC,EAAQmhB,UAKrCjqC,KAAK02D,eAAef,GAEhB31D,KAAKgsD,aAELhsD,KAAKgsD,YAAYntC,SAAS7e,KAAM8oB,MAaxCzoB,EAAO8xD,OAAO9rD,UAAUkvD,kBAAoB,SAAUn+B,EAAQtO,GAE1D9oB,KAAKm2D,iBAAiBP,GAEtB51D,KAAK02D,eAAed,GAEhB51D,KAAKisD,YAELjsD,KAAKisD,WAAWptC,SAAS7e,KAAM8oB,IAYvCzoB,EAAO8xD,OAAO9rD,UAAUmvD,mBAAqB,SAAUp+B,EAAQtO,GAE3D9oB,KAAKm2D,iBAAiBN,GAEtB71D,KAAK02D,eAAeb,GAEhB71D,KAAKksD,aAELlsD,KAAKksD,YAAYrtC,SAAS7e,KAAM8oB,IAYxCzoB,EAAO8xD,OAAO9rD,UAAUovD,iBAAmB,SAAUr+B,EAAQtO,EAASooB,GAUlE,GARAlxC,KAAK02D,eAAeZ,GAGhB91D,KAAKmsD,WAELnsD,KAAKmsD,UAAUttC,SAAS7e,KAAM8oB,EAASooB,IAGvClxC,KAAKm1D,aAKT,GAAIn1D,KAAKo1D,YAAa,IAASp1D,KAAKo1D,SAAWtsC,EAAQ8f,eAAiB9f,EAAQ8f,YAE5E5oC,KAAKm2D,iBAAiBP,OAG1B,CACI,GAAI4B,GAAYx3D,KAAKm2D,iBAAiBL,EACjC0B,KAGGtmB,EAEAlxC,KAAKm2D,iBAAiBR,GAItB31D,KAAKm2D,iBAAiBP,MA6BtCv1D,EAAOixD,YAAc,SAAU92C,EAAMgP,EAAQpe,EAAMqiB,GAEhC/jB,SAAX8f,GAAmC,OAAXA,IAAmBA,EAAShP,EAAKC,OAE7D3U,KAAKwrD,YAAYxqD,KAAK9G,MAEtBK,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,EAAMgP,EAAQpe,EAAMqiB,GAM5CztB,KAAKkI,KAAO7H,EAAO6B,aAIvB7B,EAAOixD,YAAYjrD,UAAYhG,EAAOmI,MAAM0C,QAAO,EAAM7K,EAAOixD,YAAYjrD,UAAWP,KAAKwrD,YAAYjrD,UAAWhG,EAAOmtB,MAAMnnB,WAEhIhG,EAAOixD,YAAYjrD,UAAU8B,YAAc9H,EAAOixD,YAyBlDjxD,EAAOiuD,WAAa,SAAU9zC,EAAMzO,EAAKgE,EAAOC,EAAQynD,GAEtC/tD,SAAVqG,GAAiC,IAAVA,IAAeA,EAAQ,KACnCrG,SAAXsG,GAAmC,IAAXA,IAAgBA,EAAS,KACpCtG,SAAb+tD,IAA0BA,GAAW,GAKzCz3D,KAAKwa,KAAOA,EAKZxa,KAAK+L,IAAMA,EAKX/L,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAMdhQ,KAAKsrB,OAASjrB,EAAOkrB,OAAO7K,OAAO1gB,KAAM+P,EAAOC,EAAQ,KAAMynD,GAM9Dz3D,KAAKqkB,QAAUrkB,KAAKsrB,OAAOsV,WAAW,MAAQviB,OAAO,IAKrDre,KAAK03D,IAAM13D,KAAKqkB,QAKhBrkB,KAAK23D,eAAkBn9C,EAAK4J,aAAe/jB,EAAOI,OAAU+Z,EAAKid,SAASmgC,cAAcD,eAAiBt3D,EAAOkrB,OAAOssC,mBAAmB73D,KAAKqkB,SAO/IrkB,KAAK83D,UAAY93D,KAAKqkB,QAAQivB,aAAa,EAAG,EAAGvjC,EAAOC,GAOxDhQ,KAAK0iC,KAAO,KAER1iC,KAAK83D,YAEL93D,KAAK0iC,KAAO1iC,KAAK83D,UAAUp1B,MAM/B1iC,KAAK+3D,OAAS,KAKV/3D,KAAK0iC,OAED1iC,KAAK83D,UAAUp1B,KAAKs1B,QAEpBh4D,KAAKg4D,OAASh4D,KAAK83D,UAAUp1B,KAAKs1B,OAClCh4D,KAAK+3D,OAAS,GAAI/vD,aAAYhI,KAAKg4D,SAI/BjwD,OAAoB,aAEpB/H,KAAKg4D,OAAS,GAAIC,aAAYj4D,KAAK83D,UAAUp1B,KAAK76B,QAClD7H,KAAK+3D,OAAS,GAAI/vD,aAAYhI,KAAKg4D,SAInCh4D,KAAK+3D,OAAS/3D,KAAK83D,UAAUp1B,MASzC1iC,KAAK8yC,YAAc,GAAIhtC,MAAKoyD,YAAYl4D,KAAKsrB,QAM7CtrB,KAAKwiC,QAAU,GAAI18B,MAAKgpD,QAAQ9uD,KAAK8yC,aAKrC9yC,KAAK0uD,UAAY,GAAIruD,GAAO83D,UAM5Bn4D,KAAKo4D,aAAep4D,KAAK0uD,UAAU2J,SAAS,GAAIh4D,GAAOi4D,MAAM,EAAG,EAAG,EAAGvoD,EAAOC,EAAQ,eAErFhQ,KAAKwiC,QAAQ7R,MAAQ3wB,KAAKo4D,aAM1Bp4D,KAAKkI,KAAO7H,EAAOyB,WAKnB9B,KAAKu4D,sBAAuB,EAK5Bv4D,KAAKynB,OAAQ,EAGbznB,KAAKw4D,IAAMx4D,KAAKie,MAMhBje,KAAKy4D,OAAS,KAMdz4D,KAAK04D,KAAO,GAAIr4D,GAAO2M,MAMvBhN,KAAK24D,MAAQ,GAAIt4D,GAAO2M,MAMxBhN,KAAK44D,OAAS,GAAIv4D,GAAO2M,MAMzBhN,KAAK64D,QAAU,EAMf74D,KAAK84D,QAAWC,KAAM,EAAG1vD,QAAS,GAMlCrJ,KAAKg5D,QAAU,GAAI34D,GAAO2M,MAM1BhN,KAAKi5D,OAAS,EAMdj5D,KAAKk5D,OAAS,EAMdl5D,KAAKm5D,OAAS,EAMdn5D,KAAKo5D,QAAU,GAAI/4D,GAAOmM,OAM1BxM,KAAKq5D,YAAc3vD,QAIvBrJ,EAAOiuD,WAAWjoD,WAado7B,KAAM,SAAUx7B,EAAGwG,EAAGsG,GAYlB,MAVU,KAAN9M,GAEAjG,KAAKs5D,MAAMrzD,EAAG8M,GAGR,IAANtG,GAEAzM,KAAKu5D,MAAM9sD,EAAGsG,GAGX/S,MAcXs5D,MAAO,SAAUzrD,EAAUkF,GAEVrJ,SAATqJ,IAAsBA,GAAO,GAERrJ,SAArB1J,KAAKq5D,cAELr5D,KAAKq5D,YAAcvzD,KAAK66B,WAAWjgB,OAAO1gB,KAAMA,KAAK+P,MAAO/P,KAAKgQ,QAGrE,IAAIf,GAAIjP,KAAKq5D,YACT3B,EAAMzoD,EAAE2xB,WAAW,MACnBrjB,EAAIvd,KAAKgQ,OACT3E,EAAMrL,KAAKsrB,MAIf,IAFAosC,EAAIvkB,UAAU,EAAG,EAAGnzC,KAAK+P,MAAO/P,KAAKgQ,QAEjCnC,EAAW,EACf,CACIA,EAAW9H,KAAKoJ,IAAItB,EAGpB,IAAIyP,GAAItd,KAAK+P,MAAQlC,CAGjBkF,IAEA2kD,EAAItkB,UAAU/nC,EAAK,EAAG,EAAGwC,EAAU0P,EAAGD,EAAG,EAAGzP,EAAU0P,GAI1Dm6C,EAAItkB,UAAU/nC,EAAKwC,EAAU,EAAGyP,EAAGC,EAAG,EAAG,EAAGD,EAAGC,OAGnD,CAEI,GAAID,GAAItd,KAAK+P,MAAQlC,CAGjBkF,IAEA2kD,EAAItkB,UAAU/nC,EAAKiS,EAAG,EAAGzP,EAAU0P,EAAG,EAAG,EAAG1P,EAAU0P,GAI1Dm6C,EAAItkB,UAAU/nC,EAAK,EAAG,EAAGiS,EAAGC,EAAG1P,EAAU,EAAGyP,EAAGC,GAKnD,MAFAvd,MAAKie,QAEEje,KAAKsL,KAAKtL,KAAKq5D,cAc1BE,MAAO,SAAU1rD,EAAUkF,GAEVrJ,SAATqJ,IAAsBA,GAAO,GAERrJ,SAArB1J,KAAKq5D,cAELr5D,KAAKq5D,YAAcvzD,KAAK66B,WAAWjgB,OAAO1gB,KAAMA,KAAK+P,MAAO/P,KAAKgQ,QAGrE,IAAIf,GAAIjP,KAAKq5D,YACT3B,EAAMzoD,EAAE2xB,WAAW,MACnBtjB,EAAItd,KAAK+P,MACT1E,EAAMrL,KAAKsrB,MAIf,IAFAosC,EAAIvkB,UAAU,EAAG,EAAGnzC,KAAK+P,MAAO/P,KAAKgQ,QAEjCnC,EAAW,EACf,CACIA,EAAW9H,KAAKoJ,IAAItB,EAGpB,IAAI0P,GAAIvd,KAAKgQ,OAASnC,CAGlBkF,IAEA2kD,EAAItkB,UAAU/nC,EAAK,EAAG,EAAGiS,EAAGzP,EAAU,EAAG0P,EAAGD,EAAGzP,GAInD6pD,EAAItkB,UAAU/nC,EAAK,EAAGwC,EAAUyP,EAAGC,EAAG,EAAG,EAAGD,EAAGC,OAGnD,CAEI,GAAIA,GAAIvd,KAAKgQ,OAASnC,CAGlBkF,IAEA2kD,EAAItkB,UAAU/nC,EAAK,EAAGkS,EAAGD,EAAGzP,EAAU,EAAG,EAAGyP,EAAGzP,GAInD6pD,EAAItkB,UAAU/nC,EAAK,EAAG,EAAGiS,EAAGC,EAAG,EAAG1P,EAAUyP,EAAGC,GAKnD,MAFAvd,MAAKie,QAEEje,KAAKsL,KAAKtL,KAAKq5D,cAY1BxnD,IAAK,SAAU0jB,GAEX,GAAI/uB,MAAMa,QAAQkuB,GAEd,IAAK,GAAIztB,GAAI,EAAGA,EAAIytB,EAAO1tB,OAAQC,IAE3BytB,EAAOztB,GAAgB,aAEvBytB,EAAOztB,GAAGqtB,YAAYn1B,UAM9Bu1B,GAAOJ,YAAYn1B,KAGvB,OAAOA,OAcXggB,KAAM,SAAUtS,GAOZ,GALsB,gBAAXA,KAEPA,EAAS1N,KAAKwa,KAAKsF,MAAMmvC,SAASvhD,IAGlCA,EAcJ,MAZI1N,MAAK8Y,OAAOpL,EAAOqC,MAAOrC,EAAOsC,QACjChQ,KAAKw4D,MAOTx4D,KAAKw5D,KAAK9rD,GAEV1N,KAAKue,SAEEve,MA0BXie,MAAO,SAAUhY,EAAGwG,EAAGsD,EAAOC,GAW1B,MATUtG,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,QAE1ChQ,KAAKqkB,QAAQ8uB,UAAUltC,EAAGwG,EAAGsD,EAAOC,GAEpChQ,KAAKynB,OAAQ,EAENznB,MAcX2iC,KAAM,SAAUz1B,EAAG4d,EAAGjc,EAAGJ,GAQrB,MANU/E,UAAN+E,IAAmBA,EAAI,GAE3BzO,KAAKqkB,QAAQo1C,UAAY,QAAUvsD,EAAI,IAAM4d,EAAI,IAAMjc,EAAI,IAAMJ,EAAI,IACrEzO,KAAKqkB,QAAQq1C,SAAS,EAAG,EAAG15D,KAAK+P,MAAO/P,KAAKgQ,QAC7ChQ,KAAKynB,OAAQ,EAENznB,MA4BX25D,gBAAiB,SAAU5tD,GAEvB,GAAIqd,GAAQ,GAAI2nC,MAEhB3nC,GAAM/d,IAAMrL,KAAKsrB,OAAOsuC,UAAU,YAElC,IAAI7wD,GAAM/I,KAAKwa,KAAKsF,MAAM+5C,SAAS9tD,EAAK,GAAIqd,EAE5C,OAAO,IAAItjB,MAAKgpD,QAAQ/lD,EAAImmD,OAYhCp2C,OAAQ,SAAU/I,EAAOC,GAgCrB,MA9BID,KAAU/P,KAAK+P,OAASC,IAAWhQ,KAAKgQ,SAExChQ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAKsrB,OAAOvb,MAAQA,EACpB/P,KAAKsrB,OAAOtb,OAASA,EAEItG,SAArB1J,KAAKq5D,cAELr5D,KAAKq5D,YAAYtpD,MAAQA,EACzB/P,KAAKq5D,YAAYrpD,OAASA,GAG9BhQ,KAAK8yC,YAAY/iC,MAAQA,EACzB/P,KAAK8yC,YAAY9iC,OAASA,EAE1BhQ,KAAKo4D,aAAaroD,MAAQA,EAC1B/P,KAAKo4D,aAAapoD,OAASA,EAE3BhQ,KAAKwiC,QAAQzyB,MAAQA,EACrB/P,KAAKwiC,QAAQxyB,OAASA,EAEtBhQ,KAAKwiC,QAAQwQ,KAAKjjC,MAAQA,EAC1B/P,KAAKwiC,QAAQwQ,KAAKhjC,OAASA,EAE3BhQ,KAAKue,SACLve,KAAKynB,OAAQ,GAGVznB,MAkBXue,OAAQ,SAAUtY,EAAGwG,EAAGsD,EAAOC,GA4B3B,MA1BUtG,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQhK,KAAKoM,IAAI,EAAGnS,KAAK+P,QACrCrG,SAAXsG,IAAwBA,EAASjK,KAAKoM,IAAI,EAAGnS,KAAKgQ,SAEtDhQ,KAAK83D,UAAY93D,KAAKqkB,QAAQivB,aAAartC,EAAGwG,EAAGsD,EAAOC,GACxDhQ,KAAK0iC,KAAO1iC,KAAK83D,UAAUp1B,KAEvB1iC,KAAK83D,UAAUp1B,KAAKs1B,QAEpBh4D,KAAKg4D,OAASh4D,KAAK83D,UAAUp1B,KAAKs1B,OAClCh4D,KAAK+3D,OAAS,GAAI/vD,aAAYhI,KAAKg4D,SAI/BjwD,OAAoB,aAEpB/H,KAAKg4D,OAAS,GAAIC,aAAYj4D,KAAK83D,UAAUp1B,KAAK76B,QAClD7H,KAAK+3D,OAAS,GAAI/vD,aAAYhI,KAAKg4D,SAInCh4D,KAAK+3D,OAAS/3D,KAAK83D,UAAUp1B,KAI9B1iC,MAuBX85D,gBAAiB,SAAUxmC,EAAUvQ,EAAiB9c,EAAGwG,EAAGsD,EAAOC,GAErDtG,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,OAQ1C,KAAK,GANDsN,GAAIrX,EAAI8J,EACRwN,EAAI9Q,EAAIuD,EACR+pD,EAAQ15D,EAAO+sB,MAAM4sC,cACrB1oD,GAAWpE,EAAG,EAAG4d,EAAG,EAAGjc,EAAG,EAAGJ,EAAG,GAChCgZ,GAAQ,EAEH7V,EAAKnF,EAAGmF,EAAK2L,EAAG3L,IAErB,IAAK,GAAID,GAAK1L,EAAG0L,EAAK2L,EAAG3L,IAErBtR,EAAO+sB,MAAM6sC,YAAYj6D,KAAKk6D,WAAWvoD,EAAIC,GAAKmoD,GAElDzoD,EAASgiB,EAASxsB,KAAKic,EAAiBg3C,EAAOpoD,EAAIC,GAE/CN,KAAW,GAAoB,OAAXA,GAA8B5H,SAAX4H,IAEvCtR,KAAKm6D,WAAWxoD,EAAIC,EAAIN,EAAOpE,EAAGoE,EAAOwZ,EAAGxZ,EAAOzC,EAAGyC,EAAO7C,GAAG,GAChEgZ,GAAQ,EAWpB,OANIA,KAEAznB,KAAKqkB,QAAQ+1C,aAAap6D,KAAK83D,UAAW,EAAG,GAC7C93D,KAAKynB,OAAQ,GAGVznB,MAoBXq6D,aAAc,SAAU/mC,EAAUvQ,EAAiB9c,EAAGwG,EAAGsD,EAAOC,GAElDtG,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,OAQ1C,KAAK,GANDsN,GAAIrX,EAAI8J,EACRwN,EAAI9Q,EAAIuD,EACR+pD,EAAQ,EACRzoD,EAAS,EACTmW,GAAQ,EAEH7V,EAAKnF,EAAGmF,EAAK2L,EAAG3L,IAErB,IAAK,GAAID,GAAK1L,EAAG0L,EAAK2L,EAAG3L,IAErBooD,EAAQ/5D,KAAKk6D,WAAWvoD,EAAIC,GAC5BN,EAASgiB,EAASxsB,KAAKic,EAAiBg3C,EAAOpoD,EAAIC,GAE/CN,IAAWyoD,IAEX/5D,KAAK+3D,OAAOnmD,EAAK5R,KAAK+P,MAAQ4B,GAAML,EACpCmW,GAAQ,EAWpB,OANIA,KAEAznB,KAAKqkB,QAAQ+1C,aAAap6D,KAAK83D,UAAW,EAAG,GAC7C93D,KAAKynB,OAAQ,GAGVznB,MAoBXs6D,WAAY,SAAUC,EAAIC,EAAItnD,EAAIF,EAAIynD,EAAIC,EAAIvnD,EAAIF,EAAI0nD,GAElD,GAAIloD,GAAK,EACLC,EAAK,EACL4K,EAAItd,KAAK+P,MACTwN,EAAIvd,KAAKgQ,OACTtC,EAASrN,EAAO+sB,MAAMwtC,UAAUL,EAAIC,EAAItnD,EAAIF,EAEjCtJ,UAAXixD,GAAwBA,YAAkBt6D,GAAOkN,YAEjDkF,EAAKkoD,EAAO10D,EACZyM,EAAKioD,EAAOluD,EACZ6Q,EAAIq9C,EAAO5qD,MACXwN,EAAIo9C,EAAO3qD,OAGf,KAAK,GAAIvD,GAAI,EAAGA,EAAI8Q,EAAG9Q,IAEnB,IAAK,GAAIxG,GAAI,EAAGA,EAAIqX,EAAGrX,IAEfjG,KAAKk6D,WAAWznD,EAAKxM,EAAGyM,EAAKjG,KAAOiB,GAEpC1N,KAAKm6D,WAAW1nD,EAAKxM,EAAGyM,EAAKjG,EAAGguD,EAAIC,EAAIvnD,EAAIF,GAAI,EAQ5D,OAHAjT,MAAKqkB,QAAQ+1C,aAAap6D,KAAK83D,UAAW,EAAG,GAC7C93D,KAAKynB,OAAQ,EAENznB,MAcX66D,OAAQ,SAAUt9C,EAAG9G,EAAGrN,EAAGuxD,GAEvB,GAAIG,GAASv9C,GAAW,IAANA,EACdw9C,EAAStkD,GAAW,IAANA,EACdukD,EAAS5xD,GAAW,IAANA,CAElB,IAAK0xD,GAAWC,GAAWC,EAA3B,CAKetxD,SAAXixD,IAEAA,EAAS,GAAIt6D,GAAOkN,UAAU,EAAG,EAAGvN,KAAK+P,MAAO/P,KAAKgQ,QAKzD,KAAK,GAFD+pD,GAAQ15D,EAAO+sB,MAAM4sC,cAEhBvtD,EAAIkuD,EAAOluD,EAAGA,EAAIkuD,EAAOhsD,OAAQlC,IAEtC,IAAK,GAAIxG,GAAI00D,EAAO10D,EAAGA,EAAI00D,EAAO/vD,MAAO3E,IAErC5F,EAAO+sB,MAAM6sC,YAAYj6D,KAAKk6D,WAAWj0D,EAAGwG,GAAIstD,GAAO,GAEnDe,IAEAf,EAAMx8C,EAAIA,GAGVw9C,IAEAhB,EAAMtjD,EAAIA,GAGVukD,IAEAjB,EAAM3wD,EAAIA,GAGd/I,EAAO+sB,MAAM6tC,SAASlB,EAAMx8C,EAAGw8C,EAAMtjD,EAAGsjD,EAAM3wD,EAAG2wD,GACjD/5D,KAAKm6D,WAAWl0D,EAAGwG,EAAGstD,EAAM7sD,EAAG6sD,EAAMjvC,EAAGivC,EAAMlrD,EAAGkrD,EAAMtrD,GAAG,EAOlE,OAHAzO,MAAKqkB,QAAQ+1C,aAAap6D,KAAK83D,UAAW,EAAG,GAC7C93D,KAAKynB,OAAQ,EAENznB,OAgBXk7D,SAAU,SAAU39C,EAAG9G,EAAGrN,EAAGuxD,GAMzB,GAJUjxD,SAAN6T,GAAyB,OAANA,IAAcA,GAAI,GAC/B7T,SAAN+M,GAAyB,OAANA,IAAcA,GAAI,GAC/B/M,SAANN,GAAyB,OAANA,IAAcA,GAAI,GAEpCmU,GAAM9G,GAAMrN,EAAjB,CAKeM,SAAXixD,IAEAA,EAAS,GAAIt6D,GAAOkN,UAAU,EAAG,EAAGvN,KAAK+P,MAAO/P,KAAKgQ,QAKzD,KAAK,GAFD+pD,GAAQ15D,EAAO+sB,MAAM4sC,cAEhBvtD,EAAIkuD,EAAOluD,EAAGA,EAAIkuD,EAAOhsD,OAAQlC,IAEtC,IAAK,GAAIxG,GAAI00D,EAAO10D,EAAGA,EAAI00D,EAAO/vD,MAAO3E,IAErC5F,EAAO+sB,MAAM6sC,YAAYj6D,KAAKk6D,WAAWj0D,EAAGwG,GAAIstD,GAAO,GAEnDx8C,IAEAw8C,EAAMx8C,EAAIvd,KAAKwa,KAAK0E,KAAKnM,KAAKgnD,EAAMx8C,EAAIA,EAAG,EAAG,IAG9C9G,IAEAsjD,EAAMtjD,EAAIzW,KAAKwa,KAAK0E,KAAK1J,MAAMukD,EAAMtjD,EAAIA,EAAG,EAAG,IAG/CrN,IAEA2wD,EAAM3wD,EAAIpJ,KAAKwa,KAAK0E,KAAK1J,MAAMukD,EAAM3wD,EAAIA,EAAG,EAAG,IAGnD/I,EAAO+sB,MAAM6tC,SAASlB,EAAMx8C,EAAGw8C,EAAMtjD,EAAGsjD,EAAM3wD,EAAG2wD,GACjD/5D,KAAKm6D,WAAWl0D,EAAGwG,EAAGstD,EAAM7sD,EAAG6sD,EAAMjvC,EAAGivC,EAAMlrD,EAAGkrD,EAAMtrD,GAAG,EAOlE,OAHAzO,MAAKqkB,QAAQ+1C,aAAap6D,KAAK83D,UAAW,EAAG,GAC7C93D,KAAKynB,OAAQ,EAENznB,OAiBXm6D,WAAY,SAAUl0D,EAAGwG,EAAG0uD,EAAKC,EAAOC,EAAMh9C,EAAOi9C,GAsBjD,MApBkB5xD,UAAd4xD,IAA2BA,GAAY,GAEvCr1D,GAAK,GAAKA,GAAKjG,KAAK+P,OAAStD,GAAK,GAAKA,GAAKzM,KAAKgQ,SAE7C3P,EAAO43B,OAAOsjC,cAEdv7D,KAAK+3D,OAAOtrD,EAAIzM,KAAK+P,MAAQ9J,GAAMoY,GAAS,GAAOg9C,GAAQ,GAAOD,GAAS,EAAKD,EAIhFn7D,KAAK+3D,OAAOtrD,EAAIzM,KAAK+P,MAAQ9J,GAAMk1D,GAAO,GAAOC,GAAS,GAAOC,GAAQ,EAAKh9C,EAG9Ei9C,IAEAt7D,KAAKqkB,QAAQ+1C,aAAap6D,KAAK83D,UAAW,EAAG,GAC7C93D,KAAKynB,OAAQ,IAIdznB,MAgBXw7D,SAAU,SAAUv1D,EAAGwG,EAAG0uD,EAAKC,EAAOC,EAAMC,GAExC,MAAOt7D,MAAKm6D,WAAWl0D,EAAGwG,EAAG0uD,EAAKC,EAAOC,EAAM,IAAKC,IAexDG,SAAU,SAAUx1D,EAAGwG,EAAGM,GAEjBA,IAEDA,EAAM1M,EAAO+sB,MAAM4sC,cAGvB,IAAIrqC,MAAW1pB,EAAKwG,EAAIzM,KAAK+P,MAS7B,OAPA4f,IAAS,EAET5iB,EAAIG,EAAIlN,KAAK0iC,KAAK/S,GAClB5iB,EAAI+d,EAAI9qB,KAAK0iC,OAAO/S;AACpB5iB,EAAI8B,EAAI7O,KAAK0iC,OAAO/S,GACpB5iB,EAAI0B,EAAIzO,KAAK0iC,OAAO/S,GAEb5iB,GAeXmtD,WAAY,SAAUj0D,EAAGwG,GAErB,GAAIxG,GAAK,GAAKA,GAAKjG,KAAK+P,OAAStD,GAAK,GAAKA,GAAKzM,KAAKgQ,OAEjD,MAAOhQ,MAAK+3D,OAAOtrD,EAAIzM,KAAK+P,MAAQ9J,IAkB5Cy1D,YAAa,SAAUz1D,EAAGwG,EAAGM,EAAK4uD,EAAKC,GAEnC,MAAOv7D,GAAO+sB,MAAM6sC,YAAYj6D,KAAKk6D,WAAWj0D,EAAGwG,GAAIM,EAAK4uD,EAAKC,IAWrEC,UAAW,SAAUnoD,GAEjB,MAAO1T,MAAKqkB,QAAQivB,aAAa5/B,EAAKzN,EAAGyN,EAAKjH,EAAGiH,EAAK3D,MAAO2D,EAAK1D,SAmBtE8rD,cAAe,SAAUh+C,GAEHpU,SAAdoU,IAA2BA,EAAY,EAE3C,IAAIi8C,GAAQ15D,EAAO+sB,MAAM4sC,cAErB/zD,EAAI,EACJwG,EAAI,EACJiuB,EAAI,EACJqhC,GAAO,CAEO,KAAdj+C,GAEA4c,GAAI,EACJjuB,EAAIzM,KAAKgQ,QAEU,IAAd8N,IAEL4c,GAAI,EACJz0B,EAAIjG,KAAK+P,MAGb,GAEI1P,GAAO+sB,MAAM6sC,YAAYj6D,KAAKk6D,WAAWj0D,EAAGwG,GAAIstD,GAE9B,IAAdj8C,GAAiC,IAAdA,GAGnB7X,IAEIA,IAAMjG,KAAK+P,QAEX9J,EAAI,EACJwG,GAAKiuB,GAEDjuB,GAAKzM,KAAKgQ,QAAUvD,GAAK,KAEzBsvD,GAAO,KAII,IAAdj+C,GAAiC,IAAdA,IAGxBrR,IAEIA,IAAMzM,KAAKgQ,SAEXvD,EAAI,EACJxG,GAAKy0B,GAEDz0B,GAAKjG,KAAK+P,OAAS9J,GAAK,KAExB81D,GAAO,WAKJ,IAAZhC,EAAMtrD,IAAYstD,EAKzB,OAHAhC,GAAM9zD,EAAIA,EACV8zD,EAAMttD,EAAIA,EAEHstD,GAYXzsD,UAAW,SAAUoG,GAOjB,MALahK,UAATgK,IAAsBA,EAAO,GAAIrT,GAAOkN,WAE5CmG,EAAKzN,EAAIjG,KAAK87D,cAAc,GAAG71D,EAG3ByN,EAAKzN,IAAMjG,KAAK+P,MAET2D,EAAKlG,MAAM,EAAG,EAAG,EAAG,IAG/BkG,EAAKjH,EAAIzM,KAAK87D,cAAc,GAAGrvD,EAC/BiH,EAAK3D,MAAS/P,KAAK87D,cAAc,GAAG71D,EAAIyN,EAAKzN,EAAK,EAClDyN,EAAK1D,OAAUhQ,KAAK87D,cAAc,GAAGrvD,EAAIiH,EAAKjH,EAAK,EAE5CiH,IAgBXuV,WAAY,SAAUhjB,EAAGwG,EAAGyc,EAASC,EAAS6yC,EAAQC,GAElDD,EAASA,GAAU,EACnBC,EAASA,GAAU,CAEnB,IAAI7yC,GAAQppB,KAAKwa,KAAK3I,IAAIuX,MAAMnjB,EAAGwG,EAAGzM,KAKtC,OAHAopB,GAAMC,OAAOpd,IAAIid,EAASC,GAC1BC,EAAMvU,MAAM5I,IAAI+vD,EAAQC,GAEjB7yC,GAuCX9d,KAAM,SAAUoC,EAAQzH,EAAGwG,EAAGsD,EAAOC,EAAQ2B,EAAIC,EAAIsqD,EAAUC,EAAWjrD,EAAQgY,EAASC,EAAS6yC,EAAQC,EAAQ59C,EAAO+9C,EAAWthD,GAWlI,GATepR,SAAXgE,GAAmC,OAAXA,IAAmBA,EAAS1N,OAEpD0N,YAAkBrN,GAAO+tD,eAAiB1gD,YAAkB5H,MAAKsoD,iBAEjE1gD,EAASA,EAAO2uD,aAGpBr8D,KAAKy4D,OAAS/qD,EAEVA,YAAkBrN,GAAO+tB,QAAU1gB,YAAkBrN,GAAO0wD,OAASrjD,YAAkBrN,GAAOyxD,MAAQpkD,YAAkB5H,MAAKsoB,OAG7HpuB,KAAK04D,KAAKzsD,IAAIyB,EAAO80B,QAAQwQ,KAAK/sC,EAAGyH,EAAO80B,QAAQwQ,KAAKvmC,GACzDzM,KAAK24D,MAAM1sD,IAAIyB,EAAO80B,QAAQwQ,KAAKjjC,MAAOrC,EAAO80B,QAAQwQ,KAAKhjC,QAC9DhQ,KAAK44D,OAAO3sD,IAAIyB,EAAOmH,MAAM5O,EAAGyH,EAAOmH,MAAMpI,GAC7CzM,KAAKg5D,QAAQ/sD,IAAIyB,EAAO2b,OAAOpjB,EAAGyH,EAAO2b,OAAO5c,GAChDzM,KAAK64D,QAAUnrD,EAAOmpB,SACtB72B,KAAK84D,OAAOzvD,QAAUqE,EAAO2Q,MAEzB3Q,EAAO80B,kBAAmBniC,GAAO+tD,eAAiB1gD,EAAO80B,kBAAmB18B,MAAKsoD,cAEjFpuD,KAAKy4D,OAAS/qD,EAAO80B,QAAQ65B,YAI7Br8D,KAAKy4D,OAAS/qD,EAAO80B,QAAQsQ,YAAYplC,OAGlChE,SAAPiI,GAA2B,OAAPA,IAAeA,EAAKjE,EAAOzH,GACxCyD,SAAPkI,GAA2B,OAAPA,IAAeA,EAAKlE,EAAOjB,GAE/CiB,EAAO80B,QAAQuQ,OAGfphC,GAAMjE,EAAO80B,QAAQuQ,KAAK9sC,EAAIyH,EAAO2b,OAAOpjB,EAAIyH,EAAO80B,QAAQuQ,KAAKhjC,MACpE6B,GAAMlE,EAAO80B,QAAQuQ,KAAKtmC,EAAIiB,EAAO2b,OAAO5c,EAAIiB,EAAO80B,QAAQuQ,KAAK/iC,QAGpD,WAAhBtC,EAAO4uD,OAEH5uD,EAAO6uD,aAAe7uD,EAAO4uD,OAE7B5uD,EAAO6uD,WAAa7uD,EAAO4uD,KAC3B5uD,EAAO8uD,cAAgB12D,KAAK22D,aAAaC,iBAAiBhvD,EAAQA,EAAO4uD,OAG7Et8D,KAAKy4D,OAAS/qD,EAAO8uD,cACrBx8D,KAAK04D,KAAKzsD,IAAI,QAItB,CAQI,GANAjM,KAAK04D,KAAKzsD,IAAI,GACdjM,KAAK44D,OAAO3sD,IAAI,GAChBjM,KAAKg5D,QAAQ/sD,IAAI,GACjBjM,KAAK64D,QAAU,EACf74D,KAAK84D,OAAOzvD,QAAU,EAElBqE,YAAkBrN,GAAOiuD,WAEzBtuD,KAAKy4D,OAAS/qD,EAAO4d,WAEpB,IAAsB,gBAAX5d,GAChB,CAGI,GAFAA,EAAS1N,KAAKwa,KAAKsF,MAAMmvC,SAASvhD,GAEnB,OAAXA,EAEA,MAIA1N,MAAKy4D,OAAS/qD,EAItB1N,KAAK24D,MAAM1sD,IAAIjM,KAAKy4D,OAAO1oD,MAAO/P,KAAKy4D,OAAOzoD,QA6DlD,GAzDUtG,SAANzD,GAAyB,OAANA,IAAcA,EAAI,GAC/ByD,SAAN+C,GAAyB,OAANA,IAAcA,EAAI,GAGrCsD,IAEA/P,KAAK24D,MAAM1yD,EAAI8J,GAGfC,IAEAhQ,KAAK24D,MAAMlsD,EAAIuD,GAIRtG,SAAPiI,GAA2B,OAAPA,IAAeA,EAAK1L,GACjCyD,SAAPkI,GAA2B,OAAPA,IAAeA,EAAKnF,GAC3B/C,SAAbwyD,GAAuC,OAAbA,IAAqBA,EAAWl8D,KAAK24D,MAAM1yD,GACvDyD,SAAdyyD,GAAyC,OAAdA,IAAsBA,EAAYn8D,KAAK24D,MAAMlsD,GAGtD,gBAAXyE,KAEPlR,KAAK64D,QAAU3nD,GAII,gBAAZgY,KAEPlpB,KAAKg5D,QAAQ/yD,EAAIijB,GAGE,gBAAZC,KAEPnpB,KAAKg5D,QAAQvsD,EAAI0c,GAIC,gBAAX6yC,KAEPh8D,KAAK44D,OAAO3yD,EAAI+1D,GAGE,gBAAXC,KAEPj8D,KAAK44D,OAAOnsD,EAAIwvD,GAIC,gBAAV59C,KAEPre,KAAK84D,OAAOzvD,QAAUgV,GAGR3U,SAAd0yD,IAA2BA,EAAY,MAC3B1yD,SAAZoR,IAAyBA,GAAU,KAEnC9a,KAAK84D,OAAOzvD,SAAW,GAAuB,IAAlBrJ,KAAK44D,OAAO3yD,GAA6B,IAAlBjG,KAAK44D,OAAOnsD,GAA4B,IAAjBzM,KAAK24D,MAAM1yD,GAA4B,IAAjBjG,KAAK24D,MAAMlsD,GAA/G,CAMA,GAAIirD,GAAM13D,KAAKqkB,OAoCf,OAlCArkB,MAAK84D,OAAOC,KAAOrB,EAAIiF,YAEvBjF,EAAIpzC,OAEJozC,EAAIiF,YAAc38D,KAAK84D,OAAOzvD,QAE1B+yD,IAEAp8D,KAAK48D,GAAKR,GAGVthD,IAEAnJ,GAAM,EACNC,GAAM,GAIV8lD,EAAI9iD,UAAUjD,EAAIC,GAElB8lD,EAAI7iD,MAAM7U,KAAK44D,OAAO3yD,EAAGjG,KAAK44D,OAAOnsD,GAErCirD,EAAIxmD,OAAOlR,KAAK64D,SAEhBnB,EAAItkB,UAAUpzC,KAAKy4D,OAAQz4D,KAAK04D,KAAKzyD,EAAIA,EAAGjG,KAAK04D,KAAKjsD,EAAIA,EAAGzM,KAAK24D,MAAM1yD,EAAGjG,KAAK24D,MAAMlsD,GAAIyvD,EAAWl8D,KAAKg5D,QAAQ/yD,GAAIk2D,EAAYn8D,KAAKg5D,QAAQvsD,EAAGyvD,EAAUC,GAI5JzE,EAAIlzC,UAEJkzC,EAAIiF,YAAc38D,KAAK84D,OAAOC,KAE9B/4D,KAAKynB,OAAQ,EAENznB,OAiBX68D,cAAe,SAAUnvD,EAAQ0uD,EAAWthD,GAKxC,GAHkBpR,SAAd0yD,IAA2BA,EAAY,MAC3B1yD,SAAZoR,IAAyBA,GAAU,IAElCpN,EAAO1C,eAAe,oBAAsB0C,EAAO20B,cAAsC,IAAtB30B,EAAOme,WAE3E,MAAO7rB,KAGX,IAAIkiC,GAAKx0B,EAAO+c,cAKhB,IAHAzqB,KAAK04D,KAAKzsD,IAAIyB,EAAO80B,QAAQwQ,KAAK/sC,EAAGyH,EAAO80B,QAAQwQ,KAAKvmC,GACzDzM,KAAK24D,MAAM1sD,IAAIyB,EAAO80B,QAAQwQ,KAAKjjC,MAAOrC,EAAO80B,QAAQwQ,KAAKhjC,QAEjD,IAATkyB,EAAGzzB,GAAoB,IAATyzB,EAAGjuB,GAA4B,IAAjBjU,KAAK24D,MAAM1yD,GAA4B,IAAjBjG,KAAK24D,MAAMlsD,EAG7D,MAAOzM,KAGP0N,GAAO80B,kBAAmBniC,GAAO+tD,eAAiB1gD,EAAO80B,kBAAmB18B,MAAKsoD,cAEjFpuD,KAAKy4D,OAAS/qD,EAAO80B,QAAQ65B,YAI7Br8D,KAAKy4D,OAAS/qD,EAAO80B,QAAQsQ,YAAYplC,MAG7C,IAAIiE,GAAKuwB,EAAGvwB,GACRC,EAAKswB,EAAGtwB,EAERlE,GAAO80B,QAAQuQ,OAGfphC,GAAMjE,EAAO80B,QAAQuQ,KAAK9sC,EAAIyH,EAAO2b,OAAOpjB,EAAIyH,EAAO80B,QAAQuQ,KAAKhjC,MACpE6B,GAAMlE,EAAO80B,QAAQuQ,KAAKtmC,EAAIiB,EAAO2b,OAAO5c,EAAIiB,EAAO80B,QAAQuQ,KAAK/iC,QAGpD,WAAhBtC,EAAO4uD,OAEH5uD,EAAO6uD,aAAe7uD,EAAO4uD,OAE7B5uD,EAAO6uD,WAAa7uD,EAAO4uD,KAC3B5uD,EAAO8uD,cAAgB12D,KAAK22D,aAAaC,iBAAiBhvD,EAAQA,EAAO4uD,OAG7Et8D,KAAKy4D,OAAS/qD,EAAO8uD,cACrBx8D,KAAK04D,KAAKzsD,IAAI,IAGd6O,IAEAnJ,GAAM,EACNC,GAAM,EAGV,IAAI8lD,GAAM13D,KAAKqkB,OAiCf,OA/BArkB,MAAK84D,OAAOC,KAAOrB,EAAIiF,YAEvBjF,EAAIpzC,OAEJozC,EAAIiF,YAAc38D,KAAK84D,OAAOzvD,QAE1B+yD,IAEAp8D,KAAK48D,GAAKR,GAGd1E,EAAI13D,KAAK23D,gBAAmBjqD,EAAO80B,QAAQsQ,YAAYqb,YAAcroD,KAAKJ,WAAWE,OAErF8xD,EAAInzC,aAAa2d,EAAGzzB,EAAGyzB,EAAGrzB,EAAGqzB,EAAGjzB,EAAGizB,EAAGjuB,EAAGtC,EAAIC,GAE7C8lD,EAAItkB,UAAUpzC,KAAKy4D,OACfz4D,KAAK04D,KAAKzyD,EACVjG,KAAK04D,KAAKjsD,EACVzM,KAAK24D,MAAM1yD,EACXjG,KAAK24D,MAAMlsD,GACVzM,KAAK24D,MAAM1yD,EAAIyH,EAAO2b,OAAOpjB,GAC7BjG,KAAK24D,MAAMlsD,EAAIiB,EAAO2b,OAAO5c,EAC9BzM,KAAK24D,MAAM1yD,EACXjG,KAAK24D,MAAMlsD,GAEfirD,EAAIlzC,UAEJkzC,EAAIiF,YAAc38D,KAAK84D,OAAOC,KAE9B/4D,KAAKynB,OAAQ,EAENznB,MAiBX88D,SAAU,SAAUpvD,EAAQ4J,EAAMrR,EAAGwG,EAAG4R,EAAO+9C,EAAWthD,GAEtD,MAAO9a,MAAKsL,KAAKoC,EAAQ4J,EAAKrR,EAAGqR,EAAK7K,EAAG6K,EAAKvH,MAAOuH,EAAKtH,OAAQ/J,EAAGwG,EAAG6K,EAAKvH,MAAOuH,EAAKtH,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAGqO,EAAO+9C,EAAWthD,IAyBtI0+C,KAAM,SAAU9rD,EAAQzH,EAAGwG,EAAGsD,EAAOC,EAAQosD,EAAWthD,GAGpD,MAAO9a,MAAKsL,KAAKoC,EAAQ,KAAM,KAAM,KAAM,KAAMzH,EAAGwG,EAAGsD,EAAOC,EAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAMosD,EAAWthD,IAwBzHiiD,UAAW,SAAUvmC,EAAO4lC,EAAWthD,GAOnC,MALI0b,GAAM3B,MAAQ,GAEd2B,EAAMtC,cAAcl0B,KAAKg9D,eAAgBh9D,KAAMo8D,EAAWthD,GAGvD9a,MAaXg9D,eAAgB,SAAUvtC,EAAO2sC,EAAWthD,GAOxC,GALI2U,EAAMzkB,eAAe,YAErBhL,KAAK68D,cAAcptC,EAAO2sC,EAAWthD,GAGrC2U,EAAMvnB,OAAS7H,EAAOmB,OAASiuB,EAAMjF,OAErCxqB,KAAK+8D,UAAUttC,EAAO2sC,EAAWthD,OAIjC,IAAI2U,EAAMzkB,eAAe,aAAeykB,EAAM9D,SAAS9jB,OAAS,EAE5D,IAAK,GAAIC,GAAI,EAAGA,EAAI2nB,EAAM9D,SAAS9jB,OAAQC,IAEnC2nB,EAAM9D,SAAS7jB,GAAG0iB,QAElBxqB,KAAK68D,cAAcptC,EAAM9D,SAAS7jB,GAAIs0D,EAAWthD,IA+BrEmiD,SAAU,SAAUzzC,EAAQ4yC,EAAWthD,GAEnC,GAAI0O,EAAO6Y,gBAAiB,GAA+B,IAAtB7Y,EAAOqC,YAAqBrC,EAAOxe,eAAe,WAAawe,EAAOgB,UAAW,EAElH,MAAOxqB,KAGX,IAAIwpB,EAAOthB,OAAS7H,EAAOmB,OAASgoB,EAAOthB,OAAS7H,EAAOuB,SAAW4nB,EAAOthB,OAAS7H,EAAOkB,WAEzF,GAAIioB,EAAOthB,OAAS7H,EAAOe,SAC3B,CACI,GAAIuZ,GAAS6O,EAAOlc,WACpBtN,MAAK03D,IAAIpzC,OACTtkB,KAAK03D,IAAI9iD,UAAU+F,EAAO1U,EAAG0U,EAAOlO,GACpC3G,KAAKo3D,eAAeC,eAAe3zC,EAAQxpB,KAAK03D,KAChD13D,KAAK03D,IAAIlzC,cAITxkB,MAAKsL,KAAKke,EAAQ,KAAM,KAAM,KAAM,KAAMA,EAAOvK,cAAchZ,EAAGujB,EAAOvK,cAAcxS,EAAG,KAAM,KAAM+c,EAAO4zC,cAAe,KAAM,KAAM5zC,EAAOopB,WAAW3sC,EAAGujB,EAAOopB,WAAWnmC,EAAG+c,EAAOqC,WAAYuwC,EAAWthD,EAIxN,IAAI0O,EAAOmC,SAEP,IAAK,GAAI7jB,GAAI,EAAGA,EAAI0hB,EAAOmC,SAAS9jB,OAAQC,IAExC9H,KAAKi9D,SAASzzC,EAAOmC,SAAS7jB,GAAIs0D,EAAWthD,EAIrD,OAAO9a,OAgBXq9D,OAAQ,SAAUr/C,EAAOs/C,EAAMr3D,EAAGwG,GAE9B,GAAIirD,GAAM13D,KAAKqkB,OAcf,OAZc3a,UAAVsU,GAAiC,OAAVA,EAEvB05C,EAAI6F,YAAc,iBAIlB7F,EAAI6F,YAAcv/C,EAClB05C,EAAI8F,WAAaF,GAAQ,EACzB5F,EAAI+F,cAAgBx3D,GAAK,GACzByxD,EAAIgG,cAAgBjxD,GAAK,IAGtBzM,MAcX29D,UAAW,SAAUjwD,EAAQu8C,EAAM2T,EAAYC,GAoB3C,MAlBiBn0D,UAAbm0D,GAAuC,OAAbA,EAE1B79D,KAAKw5D,KAAKvP,GAAM6T,kBAIhB99D,KAAKw5D,KAAKvP,EAAM4T,EAAS53D,EAAG43D,EAASpxD,EAAGoxD,EAAS9tD,MAAO8tD,EAAS7tD,QAAQ8tD,kBAG1Dp0D,SAAfk0D,GAA2C,OAAfA,EAE5B59D,KAAKw5D,KAAK9rD,GAAQqwD,aAIlB/9D,KAAKw5D,KAAK9rD,EAAQkwD,EAAW33D,EAAG23D,EAAWnxD,EAAGmxD,EAAW7tD,MAAO6tD,EAAW5tD,QAAQ+tD,aAGhF/9D,MA0BXg+D,QAAS,SAAUC,EAAa/wD,EAAG4d,EAAGjc,EAAGJ,EAAGqK,EAAQ2hD,EAAIC,EAAIvnD,GA2BxD,MAzBUzJ,UAAN+E,IAAmBA,EAAI,KACZ/E,SAAXoP,IAAwBA,GAAS,GAC1BpP,SAAP+wD,IAAoBA,EAAKvtD,GAClBxD,SAAPgxD,IAAoBA,EAAK5vC,GAClBphB,SAAPyJ,IAAoBA,EAAKtE,GAEzBiK,GAEAmlD,EAAYnlD,OAAO9Y,KAAK+P,MAAO/P,KAAKgQ,QAGxChQ,KAAK85D,gBACD,SAAUC,EAAO9zD,EAAGwG,GAMhB,MAJIstD,GAAM7sD,IAAMA,GAAK6sD,EAAMjvC,IAAMA,GAAKivC,EAAMlrD,IAAMA,GAE9CovD,EAAY9D,WAAWl0D,EAAGwG,EAAGguD,EAAIC,EAAIvnD,EAAI1E,GAAG,IAEzC,GAEXzO,MAEJi+D,EAAY55C,QAAQ+1C,aAAa6D,EAAYnG,UAAW,EAAG,GAC3DmG,EAAYx2C,OAAQ,EAEbw2C,GAeXvqD,KAAM,SAAUzN,EAAGwG,EAAGsD,EAAOC,EAAQypD,GASjC,MAPyB,mBAAdA,KAEPz5D,KAAKqkB,QAAQo1C,UAAYA,GAG7Bz5D,KAAKqkB,QAAQq1C,SAASzzD,EAAGwG,EAAGsD,EAAOC,GAE5BhQ,MAkBX6xD,KAAM,SAAUA,EAAM5rD,EAAGwG,EAAGimD,EAAM10C,EAAOq/C,GAE3B3zD,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACd/C,SAATgpD,IAAsBA,EAAO,gBACnBhpD,SAAVsU,IAAuBA,EAAQ,oBACpBtU,SAAX2zD,IAAwBA,GAAS,EAErC,IAAI3F,GAAM13D,KAAKqkB,QACX65C,EAAWxG,EAAIhF,IAenB,OAbAgF,GAAIhF,KAAOA,EAEP2K,IAEA3F,EAAI+B,UAAY,aAChB/B,EAAIyG,SAAStM,EAAM5rD,EAAI,EAAGwG,EAAI,IAGlCirD,EAAI+B,UAAYz7C,EAChB05C,EAAIyG,SAAStM,EAAM5rD,EAAGwG,GAEtBirD,EAAIhF,KAAOwL,EAEJl+D,MAcXw9B,OAAQ,SAAUv3B,EAAGwG,EAAGY,EAAQosD,GAE5B,GAAI/B,GAAM13D,KAAKqkB,OAaf,OAXkB3a,UAAd+vD,IAEA/B,EAAI+B,UAAYA,GAGpB/B,EAAI0G,YACJ1G,EAAI2G,IAAIp4D,EAAGwG,EAAGY,EAAQ,EAAa,EAAVtH,KAAK+G,IAAQ,GACtC4qD,EAAI4G,YAEJ5G,EAAI/0B,OAEG3iC,MAgBXoR,KAAM,SAAUd,EAAIC,EAAIC,EAAIC,EAAIuN,EAAOjO,GAErBrG,SAAVsU,IAAuBA,EAAQ,QACrBtU,SAAVqG,IAAuBA,EAAQ,EAEnC,IAAI2nD,GAAM13D,KAAKqkB,OAaf,OAXAqzC,GAAI0G,YAEJ1G,EAAI6G,OAAOjuD,EAAIC,GACfmnD,EAAI8G,OAAOhuD,EAAIC,GAEfinD,EAAI+G,UAAY1uD,EAChB2nD,EAAIgH,YAAc1gD,EAClB05C,EAAIiH,SAEJjH,EAAI4G,YAEGt+D,MAaX4+D,YAAa,SAAUxtD,EAAMgY,EAAOX,GAIhC,GAFe/e,SAAX+e,IAAwBA,EAAS,YAEhB,gBAAVW,KAEPA,EAAQppB,KAAKwa,KAAKsF,MAAMmvC,SAAS7lC,IAFrC,CAUA,GAAIrZ,GAAQqB,EAAKvJ,MAEF,eAAX4gB,GAA0B1Y,EAAQqZ,EAAMrZ,QAExCA,EAAQqZ,EAAMrZ,MAGlB,IAAI2nD,GAAM13D,KAAKqkB,OAgBf,OAdAqzC,GAAI+B,UAAY/B,EAAImH,cAAcz1C,EAAOX,GAEzCzoB,KAAKo5D,QAAU,GAAI/4D,GAAOmM,OAAO4E,EAAKV,MAAMzK,EAAGmL,EAAKV,MAAMjE,EAAG2c,EAAMpZ,QAEnEhQ,KAAKo5D,QAAQnrD,mBAAmBmD,EAAKlD,MAAQ,oBAAoB,EAAOlO,KAAK04D,MAE7EhB,EAAIpzC,OACJozC,EAAI9iD,UAAU5U,KAAK04D,KAAKzyD,EAAGjG,KAAK04D,KAAKjsD,GACrCirD,EAAIxmD,OAAOE,EAAKlD,OAChBwpD,EAAIgC,SAAS,EAAG,EAAG3pD,EAAOqZ,EAAMpZ,QAChC0nD,EAAIlzC,UAEJxkB,KAAKynB,OAAQ,EAENznB,OAYX4gB,OAAQ,WAQJ,OANK5gB,KAAKu4D,sBAAwBv4D,KAAKynB,QAEnCznB,KAAK8yC,YAAYrrB,QACjBznB,KAAKynB,OAAQ,GAGVznB,MASX8jB,QAAS,WAEL9jB,KAAK0uD,UAAU5qC,UAEf9jB,KAAKwiC,QAAQ1e,SAAQ,GAErBhe,KAAK66B,WAAW7d,OAAO9iB,OAU3B+9D,WAAY,WAGR,MADA/9D,MAAK48D,GAAK,cACH58D,MAUX8+D,gBAAiB,WAGb,MADA9+D,MAAK48D,GAAK,cACH58D,MAUX++D,cAAe,WAGX,MADA/+D,MAAK48D,GAAK,YACH58D,MAUXg/D,eAAgB,WAGZ,MADAh/D,MAAK48D,GAAK,aACH58D,MAUX89D,gBAAiB,WAGb,MADA99D,MAAK48D,GAAK,cACH58D,MAUXi/D,qBAAsB,WAGlB,MADAj/D,MAAK48D,GAAK,mBACH58D,MAUXk/D,mBAAoB,WAGhB,MADAl/D,MAAK48D,GAAK,iBACH58D,MAUXm/D,oBAAqB,WAGjB,MADAn/D,MAAK48D,GAAK,kBACH58D,MAUXo/D,qBAAsB,WAGlB,MADAp/D,MAAK48D,GAAK,mBACH58D,MAUXq/D,SAAU,WAGN,MADAr/D,MAAK48D,GAAK,MACH58D,MAUXs/D,SAAU,WAGN,MADAt/D,MAAK48D,GAAK,UACH58D,MAUXu/D,cAAe,WAGX,MADAv/D,MAAK48D,GAAK,WACH58D,MAUXw/D,YAAa,WAGT,MADAx/D,MAAK48D,GAAK,SACH58D,MAUXy/D,aAAc,WAGV,MADAz/D,MAAK48D,GAAK,UACH58D,MAUX0/D,YAAa,WAGT,MADA1/D,MAAK48D,GAAK,SACH58D,MAUX2/D,aAAc,WAGV,MADA3/D,MAAK48D,GAAK,UACH58D,MAUX4/D,gBAAiB,WAGb,MADA5/D,MAAK48D,GAAK,cACH58D,MAUX6/D,eAAgB,WAGZ,MADA7/D,MAAK48D,GAAK,aACH58D,MAUX8/D,eAAgB,WAGZ,MADA9/D,MAAK48D,GAAK,aACH58D,MAUX+/D,eAAgB,WAGZ,MADA//D,MAAK48D,GAAK,aACH58D,MAUXggE,gBAAiB,WAGb,MADAhgE,MAAK48D,GAAK,aACH58D,MAUXigE,eAAgB,WAGZ,MADAjgE,MAAK48D,GAAK,YACH58D,MAUXkgE,SAAU,WAGN,MADAlgE,MAAK48D,GAAK,MACH58D,MAUXmgE,gBAAiB,WAGb,MADAngE,MAAK48D,GAAK,aACH58D,MAUXogE,WAAY,WAGR,MADApgE,MAAK48D,GAAK,QACH58D,MAUXqgE,gBAAiB,WAGb,MADArgE,MAAK48D,GAAK,aACH58D,OAUfuH,OAAO2E,eAAe7L,EAAOiuD,WAAWjoD,UAAW,YAE/C2F,IAAK,WAED3L,EAAOkrB,OAAO+0C,oBAAoBtgE,KAAKqkB,UAI3CpY,IAAK,SAAU1C,GAEXlJ,EAAOkrB,OAAOg1C,oBAAoBvgE,KAAKqkB,QAAS9a,MAUxDhC,OAAO2E,eAAe7L,EAAOiuD,WAAWjoD,UAAW,MAE/C2F,IAAK,WAED,MAAOhM,MAAKqkB,QAAQm8C,0BAIxBv0D,IAAK,SAAU1C,GAEXvJ,KAAKqkB,QAAQm8C,yBAA2Bj3D,KAkBhDlJ,EAAOiuD,WAAWmS,aAAe,SAAUC,EAAYC,EAAY3E,EAAQC,EAAQ2E,EAAOC,GAStF,MAP0B,gBAAfH,KAA2BA,EAAa,GACzB,gBAAfC,KAA2BA,EAAa,GAC7B,gBAAX3E,KAAuBA,EAAS,GACrB,gBAAXC,KAAuBA,EAAS,GACtB,gBAAV2E,KAAsBA,EAAQ,GACpB,gBAAVC,KAAsBA,EAAQ,IAEhCpuD,GAAIupD,EAAQtpD,GAAIupD,EAAQD,OAAQA,EAAQC,OAAQA,EAAQ2E,MAAOA,EAAOC,MAAOA,EAAOH,WAAYA,EAAYC,WAAYA,EAAYhvD,GAAI+uD,EAAY9uD,GAAI+uD,IAIrKtgE,EAAOiuD,WAAWjoD,UAAU8B,YAAc9H,EAAOiuD,WAajDxoD,KAAK+W,SAAW,WAEZ/W,KAAKwkB,uBAAuBxjB,KAAK9G,MAEjCA,KAAKkqD,YAAa,EAQlBlqD,KAAK8gE,UAAY,EAQjB9gE,KAAKy+D,UAAY,EASjBz+D,KAAK+gE,UAAY,EASjB/gE,KAAKyiC,gBASLziC,KAAKs8D,KAAO,SASZt8D,KAAKo8D,UAAYt2D,KAAKtB,WAAWC,OASjCzE,KAAKghE,YAAc,KASnBhhE,KAAKihE,UAQLjhE,KAAKkhE,QAAS,EAQdlhE,KAAKmhE,cAAgB,EAErBnhE,KAAKohE,aAAe,GAAIt7D,MAAKyH,UAAU,EAAE,EAAE,EAAE,GAS7CvN,KAAKynB,OAAQ,EASbznB,KAAKqhE,YAAa,EASlBrhE,KAAKshE,mBAAoB,GAK7Bx7D,KAAK+W,SAASxW,UAAYkB,OAAOmZ,OAAQ5a,KAAKwkB,uBAAuBjkB,WACrEP,KAAK+W,SAASxW,UAAU8B,YAAcrC,KAAK+W,SAW3C/W,KAAK+W,SAASxW,UAAUk7D,UAAY,SAAS9C,EAAWzgD,EAAOK,GAsB3D,MApBAre,MAAKy+D,UAAYA,GAAa,EAC9Bz+D,KAAK+gE,UAAY/iD,GAAS,EAC1Bhe,KAAKwhE,UAAuB93D,SAAV2U,EAAuB,EAAIA,EAEzCre,KAAKghE,cAEDhhE,KAAKghE,YAAYp+B,MAAM7rB,OAAOlP,OAG9B7H,KAAKyhE,UAAU,GAAI37D,MAAKuR,QAAQrX,KAAKghE,YAAYp+B,MAAM7rB,OAAOxQ,OAAM,MAKpEvG,KAAKghE,YAAYvC,UAAYz+D,KAAKy+D,UAClCz+D,KAAKghE,YAAYD,UAAY/gE,KAAK+gE,UAClC/gE,KAAKghE,YAAYQ,UAAYxhE,KAAKwhE,YAInCxhE,MAWX8F,KAAK+W,SAASxW,UAAUk4D,OAAS,SAASt4D,EAAGwG,GAIzC,MAFAzM,MAAKyhE,UAAU,GAAI37D,MAAKuR,SAASpR,EAAGwG,KAE7BzM,MAYX8F,KAAK+W,SAASxW,UAAUm4D,OAAS,SAASv4D,EAAGwG,GAWzC,MATKzM,MAAKghE,aAENhhE,KAAKu+D,OAAO,EAAG,GAGnBv+D,KAAKghE,YAAYp+B,MAAM7rB,OAAOnE,KAAK3M,EAAGwG,GACtCzM,KAAKynB,OAAQ,EACbznB,KAAK0hE,oBAEE1hE,MAcX8F,KAAK+W,SAASxW,UAAUs7D,iBAAmB,SAASC,EAAKC,EAAKC,EAAKC,GAE3D/hE,KAAKghE,YAEwC,IAAzChhE,KAAKghE,YAAYp+B,MAAM7rB,OAAOlP,SAE9B7H,KAAKghE,YAAYp+B,MAAM7rB,QAAU,EAAG,IAKxC/W,KAAKu+D,OAAO,EAAE,EAGlB,IAAIyD,GACAC,EACAr8C,EAAI,GACJ7O,EAAS/W,KAAKghE,YAAYp+B,MAAM7rB,MAEd,KAAlBA,EAAOlP,QAEP7H,KAAKu+D,OAAO,EAAG,EAMnB,KAAK,GAHD2D,GAAQnrD,EAAOA,EAAOlP,OAAS,GAC/Bs6D,EAAQprD,EAAOA,EAAOlP,OAAS,GAC/BgQ,EAAI,EACC/P,EAAI,EAAGA,GAAK8d,IAAK9d,EAEtB+P,EAAI/P,EAAI8d,EAERo8C,EAAKE,GAAWN,EAAMM,GAASrqD,EAC/BoqD,EAAKE,GAAWN,EAAMM,GAAStqD,EAE/Bd,EAAOnE,KAAMovD,GAASJ,GAASE,EAAMF,GAAO/pD,EAAOmqD,GAAMnqD,EAC5CoqD,GAASJ,GAASE,EAAMF,GAAOhqD,EAAOoqD,GAAMpqD,EAM7D,OAHA7X,MAAKynB,OAAQ,EACbznB,KAAK0hE,oBAEE1hE,MAeX8F,KAAK+W,SAASxW,UAAU+7D,cAAgB,SAASR,EAAKC,EAAKQ,EAAMC,EAAMR,EAAKC,GAEpE/hE,KAAKghE,YAEwC,IAAzChhE,KAAKghE,YAAYp+B,MAAM7rB,OAAOlP,SAE9B7H,KAAKghE,YAAYp+B,MAAM7rB,QAAU,EAAG,IAKxC/W,KAAKu+D,OAAO,EAAE,EAelB,KAAK,GAXDgE,GACAC,EACAC,EACAC,EACAC,EALA/8C,EAAI,GAMJ7O,EAAS/W,KAAKghE,YAAYp+B,MAAM7rB,OAEhCmrD,EAAQnrD,EAAOA,EAAOlP,OAAO,GAC7Bs6D,EAAQprD,EAAOA,EAAOlP,OAAO,GAC7BgQ,EAAI,EAEC/P,EAAI,EAAGA,GAAK8d,IAAK9d,EAEtB+P,EAAI/P,EAAI8d,EAER28C,EAAM,EAAI1qD,EACV2qD,EAAMD,EAAKA,EACXE,EAAMD,EAAMD,EAEZG,EAAK7qD,EAAIA,EACT8qD,EAAKD,EAAK7qD,EAEVd,EAAOnE,KAAM6vD,EAAMP,EAAQ,EAAIM,EAAM3qD,EAAI+pD,EAAM,EAAIW,EAAKG,EAAKL,EAAOM,EAAKb,EAC5DW,EAAMN,EAAQ,EAAIK,EAAM3qD,EAAIgqD,EAAM,EAAIU,EAAKG,EAAKJ,EAAOK,EAAKZ,EAM7E,OAHA/hE,MAAKynB,OAAQ,EACbznB,KAAK0hE,oBAEE1hE,MAgBX8F,KAAK+W,SAASxW,UAAUu8D,MAAQ,SAAStyD,EAAIC,EAAIC,EAAIC,EAAIpD,GAEjDrN,KAAKghE,YAEwC,IAAzChhE,KAAKghE,YAAYp+B,MAAM7rB,OAAOlP,QAE9B7H,KAAKghE,YAAYp+B,MAAM7rB,OAAOnE,KAAKtC,EAAIC,GAK3CvQ,KAAKu+D,OAAOjuD,EAAIC,EAGpB,IAAIwG,GAAS/W,KAAKghE,YAAYp+B,MAAM7rB,OAChCmrD,EAAQnrD,EAAOA,EAAOlP,OAAO,GAC7Bs6D,EAAQprD,EAAOA,EAAOlP,OAAO,GAC7BmL,EAAKmvD,EAAQ5xD,EACb2C,EAAKgvD,EAAQ5xD,EACb2C,EAAKxC,EAAOF,EACZ4C,EAAK3C,EAAOF,EACZuyD,EAAK98D,KAAKoJ,IAAI6D,EAAKG,EAAKD,EAAKD,EAEjC,IAAI4vD,EAAK,MAAqB,IAAXx1D,EAEX0J,EAAOA,EAAOlP,OAAO,KAAOyI,GAAMyG,EAAOA,EAAOlP,OAAO,KAAO0I,GAE9DwG,EAAOnE,KAAKtC,EAAIC,OAIxB,CACI,GAAIuyD,GAAK9vD,EAAKA,EAAKE,EAAKA,EACpB6vD,EAAK9vD,EAAKA,EAAKE,EAAKA,EACpB6vD,EAAKhwD,EAAKC,EAAKC,EAAKC,EACpB8vD,EAAK51D,EAAStH,KAAKmK,KAAK4yD,GAAMD,EAC9BK,EAAK71D,EAAStH,KAAKmK,KAAK6yD,GAAMF,EAC9BM,EAAKF,EAAKD,EAAKF,EACfM,EAAKF,EAAKF,EAAKD,EACf7zD,EAAK+zD,EAAK9vD,EAAK+vD,EAAKhwD,EACpB5D,EAAK2zD,EAAKhwD,EAAKiwD,EAAKlwD,EACpB7I,EAAK+I,GAAMgwD,EAAKC,GAChBhvB,EAAKnhC,GAAMkwD,EAAKC,GAChBE,EAAKlwD,GAAM8vD,EAAKG,GAChBE,EAAKrwD,GAAMgwD,EAAKG,GAChBG,EAAax9D,KAAK+M,MAAMqhC,EAAK7kC,EAAInF,EAAK+E,GACtCs0D,EAAaz9D,KAAK+M,MAAMwwD,EAAKh0D,EAAI+zD,EAAKn0D,EAE1ClP,MAAKq+D,IAAInvD,EAAKoB,EAAIhB,EAAKiB,EAAIlD,EAAQk2D,EAAYC,EAAUtwD,EAAKD,EAAKE,EAAKH,GAM5E,MAHAhT,MAAKynB,OAAQ,EACbznB,KAAK0hE,oBAEE1hE,MAgBX8F,KAAK+W,SAASxW,UAAUg4D,IAAM,SAASnvD,EAAII,EAAIjC,EAAQk2D,EAAYC,EAAUC,EAAeC,GAGxF,GAAIH,IAAeC,EAEf,MAAOxjE,KAGW0J,UAAlB+5D,IAA+BA,GAAgB,GAClC/5D,SAAbg6D,IAA0BA,EAAW,KAEpCD,GAAiBD,GAAYD,EAE9BC,GAAsB,EAAVz9D,KAAK+G,GAEZ22D,GAAiBF,GAAcC,IAEpCD,GAAwB,EAAVx9D,KAAK+G,GAGvB,IAAI62D,GAAQF,GAAiBF,EAAaC,IAAY,EAAMA,EAAWD,EACnEK,EAAQ79D,KAAKG,KAAKH,KAAKoJ,IAAIw0D,IAAoB,EAAV59D,KAAK+G,KAAW42D,CAGzD,IAAc,IAAVC,EAEA,MAAO3jE,KAGX,IAAI6jE,GAAS30D,EAAKnJ,KAAKoH,IAAIo2D,GAAcl2D,EACrCy2D,EAASx0D,EAAKvJ,KAAKqH,IAAIm2D,GAAcl2D,CAErCo2D,IAAiBzjE,KAAK+jE,QAEtB/jE,KAAKu+D,OAAOrvD,EAAII,GAIhBtP,KAAKu+D,OAAOsF,EAAQC,EAgBxB,KAAK,GAZD/sD,GAAS/W,KAAKghE,YAAYp+B,MAAM7rB,OAEhCitD,EAAQL,GAAgB,EAAPC,GACjBK,EAAiB,EAARD,EAETE,EAASn+D,KAAKoH,IAAI62D,GAClBG,EAASp+D,KAAKqH,IAAI42D,GAElBI,EAAWR,EAAO,EAElBS,EAAaD,EAAW,EAAKA,EAExBt8D,EAAI,EAAGA,GAAKs8D,EAAUt8D,IAC/B,CACI,GAAIw8D,GAAQx8D,EAAIu8D,EAAYv8D,EAExBoG,EAAS,EAAUq1D,EAAcU,EAASK,EAE1Cr1D,EAAIlJ,KAAKoH,IAAIe,GACbuI,GAAK1Q,KAAKqH,IAAIc,EAElB6I,GAAOnE,MAAQsxD,EAAUj1D,EAAMk1D,EAAS1tD,GAAOpJ,EAAS6B,GACzCg1D,GAAUztD,EAAM0tD,EAASl1D,GAAO5B,EAASiC,GAM5D,MAHAtP,MAAKynB,OAAQ,EACbznB,KAAK0hE,oBAEE1hE,MAYX8F,KAAK+W,SAASxW,UAAU6X,UAAY,SAASF,EAAOK,GAgBhD,MAdAre,MAAK+jE,SAAU,EACf/jE,KAAKukE,UAAYvmD,GAAS,EAC1Bhe,KAAK8gE,UAAuBp3D,SAAV2U,EAAuB,EAAIA,EAEzCre,KAAKghE,aAEDhhE,KAAKghE,YAAYp+B,MAAM7rB,OAAOlP,QAAU,IAExC7H,KAAKghE,YAAYr+B,KAAO3iC,KAAK+jE,QAC7B/jE,KAAKghE,YAAYuD,UAAYvkE,KAAKukE,UAClCvkE,KAAKghE,YAAYF,UAAY9gE,KAAK8gE,WAInC9gE,MASX8F,KAAK+W,SAASxW,UAAU+X,QAAU,WAM9B,MAJApe,MAAK+jE,SAAU,EACf/jE,KAAKukE,UAAY,KACjBvkE,KAAK8gE,UAAY,EAEV9gE,MAYX8F,KAAK+W,SAASxW,UAAU8X,SAAW,SAASlY,EAAGwG,EAAGsD,EAAOC,GAIrD,MAFAhQ,MAAKyhE,UAAU,GAAI37D,MAAKyH,UAAUtH,EAAGwG,EAAGsD,EAAOC,IAExChQ,MAWX8F,KAAK+W,SAASxW,UAAUm+D,gBAAkB,SAASv+D,EAAGwG,EAAGsD,EAAOC,EAAQ3C,GAIpE,MAFArN,MAAKyhE,UAAU,GAAI37D,MAAKwU,iBAAiBrU,EAAGwG,EAAGsD,EAAOC,EAAQ3C,IAEvDrN,MAYX8F,KAAK+W,SAASxW,UAAUo+D,WAAa,SAASx+D,EAAGwG,EAAGC,GAIhD,MAFA1M,MAAKyhE,UAAU,GAAI37D,MAAK0G,OAAOvG,EAAGwG,EAAGC,IAE9B1M,MAaX8F,KAAK+W,SAASxW,UAAUq+D,YAAc,SAASz+D,EAAGwG,EAAGsD,EAAOC,GAIxD,MAFAhQ,MAAKyhE,UAAU,GAAI37D,MAAKgK,QAAQ7J,EAAGwG,EAAGsD,EAAOC,IAEtChQ,MAUX8F,KAAK+W,SAASxW,UAAUs+D,YAAc,SAASC,IAEvCA,YAAgBvkE,GAAOgX,SAAWutD,YAAgB9+D,MAAKuR,WAEvDutD,EAAOA,EAAK7tD,OAKhB,IAAIA,GAAS6tD,CAEb,KAAKp+D,MAAMa,QAAQ0P,GACnB,CAGIA,EAAS,GAAIvQ,OAAMO,UAAUc,OAE7B,KAAK,GAAIC,GAAI,EAAGA,EAAIiP,EAAOlP,SAAUC,EAEjCiP,EAAOjP,GAAKf,UAAUe,GAM9B,MAFA9H,MAAKyhE,UAAU,GAAIphE,GAAOgX,QAAQN,IAE3B/W,MASX8F,KAAK+W,SAASxW,UAAU4X,MAAQ,WAW5B,MATAje,MAAKy+D,UAAY,EACjBz+D,KAAK+jE,SAAU,EAEf/jE,KAAKynB,OAAQ,EACbznB,KAAK6kE,YAAa,EAClB7kE,KAAKyiC,gBAELziC,KAAK0hE,oBAEE1hE,MAaX8F,KAAK+W,SAASxW,UAAUszD,gBAAkB,SAAS9xC,EAAYsmC,EAAWzmC,GAEnDhe,SAAfme,IAA4BA,EAAa,GAC3Bne,SAAdykD,IAA2BA,EAAYroD,KAAKJ,WAAWC,SAC3C+D,SAAZge,IAAyBA,EAAU,EAEvC,IAAI/M,GAAS3a,KAAKsN,WAElBqN,GAAO5K,OAAS2X,EAChB/M,EAAO3K,QAAU0X,CAEjB,IAAIo9C,GAAe,GAAIh/D,MAAKi/D,aAAapqD,EAAO5K,MAAQ8X,EAAYlN,EAAO3K,OAAS6X,GAEhF2a,EAAU18B,KAAKgpD,QAAQC,WAAW+V,EAAax5C,OAAQ6iC,EAU3D,OARA3rB,GAAQsQ,YAAYjrB,WAAaA,EAEjCi9C,EAAazgD,QAAQxP,MAAMgT,EAAYA,GAEvCi9C,EAAazgD,QAAQzP,WAAW+F,EAAO1U,GAAI0U,EAAOlO,GAElD3G,KAAKo3D,eAAeC,eAAen9D,KAAM8kE,EAAazgD,SAE/Cme,GAUX18B,KAAK+W,SAASxW,UAAU2+D,aAAe,SAASpN,GAG5C,GAAI53D,KAAK6a,WAAY,GAAwB,IAAf7a,KAAKqe,OAAere,KAAKkhE,UAAW,EAAlE,CAEA,GAAIlhE,KAAKilE,eAiBL,OAfIjlE,KAAKynB,OAASznB,KAAKshE,qBAEnBthE,KAAKklE,wBAGLllE,KAAKmlE,4BAELnlE,KAAKshE,mBAAoB,EACzBthE,KAAKynB,OAAQ,GAGjBznB,KAAKolE,cAAcv5C,WAAa7rB,KAAK6rB,eAErC/lB,MAAKsoB,OAAO/nB,UAAU2+D,aAAal+D,KAAK9G,KAAKolE,cAAexN,EAa5D,IAPAA,EAAcvG,YAAY/0B,OAC1Bs7B,EAAcyN,iBAAiBC,aAAatlE,KAAKo8D,WAE7Cp8D,KAAKsqD,OAAOsN,EAAc2N,YAAYC,SAASxlE,KAAKsqD,MAAOsN,GAC3D53D,KAAKylE,UAAU7N,EAAc8N,cAAcC,WAAW3lE,KAAK4lE,cAG3D5lE,KAAKo8D,YAAcxE,EAAcvG,YAAYwU,iBACjD,CACIjO,EAAcvG,YAAYwU,iBAAmB7lE,KAAKo8D,SAClD,IAAI0J,GAAiBhgE,KAAKigE,gBAAgBnO,EAAcvG,YAAYwU,iBACpEjO,GAAcvG,YAAY2U,GAAGC,UAAUH,EAAe,GAAIA,EAAe,IAa7E,GATI9lE,KAAKqhE,aAELrhE,KAAKynB,OAAQ,EACbznB,KAAKqhE,YAAa,GAGtBv7D,KAAKogE,cAAc/I,eAAen9D,KAAM43D,GAGpC53D,KAAK2rB,SAAS9jB,OAClB,CACI+vD,EAAcvG,YAAY3gD,OAG1B,KAAK,GAAI5I,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGk9D,aAAapN,EAGlCA,GAAcvG,YAAY/0B,OAG1Bt8B,KAAKylE,UAAU7N,EAAc8N,cAAcS,YAC3CnmE,KAAKsqD,OAAOsN,EAAc2N,YAAYa,QAAQpmE,KAAKiqD,KAAM2N,GAE7DA,EAAcyO,YAEdzO,EAAcvG,YAAY3gD,UAWlC5K,KAAK+W,SAASxW,UAAUigE,cAAgB,SAAS1O,GAG7C,GAAI53D,KAAK6a,WAAY,GAAwB,IAAf7a,KAAKqe,OAAere,KAAKkhE,UAAW,EAAlE,CAQA,GALIlhE,KAAKumE,YAAcvmE,KAAKs8D,OACxBt8D,KAAKynB,OAAQ,EACbznB,KAAKumE,UAAYvmE,KAAKs8D,MAGtBt8D,KAAKilE,eAiBL,OAfIjlE,KAAKynB,OAASznB,KAAKshE,qBAEnBthE,KAAKklE,wBAGLllE,KAAKmlE,4BAELnlE,KAAKshE,mBAAoB,EACzBthE,KAAKynB,OAAQ,GAGjBznB,KAAKolE,cAAc/mD,MAAQre,KAAKqe,UAEhCvY,MAAKsoB,OAAO/nB,UAAUigE,cAAcx/D,KAAK9G,KAAKolE,cAAexN,EAM7D,IAAIvzC,GAAUuzC,EAAcvzC,QACxBmiD,EAAYxmE,KAAKyqB,cAEjBzqB,MAAKo8D,YAAcxE,EAAciO,mBAEjCjO,EAAciO,iBAAmB7lE,KAAKo8D,UACtC/3C,EAAQm8C,yBAA2B16D,KAAK2gE,iBAAiB7O,EAAciO,mBAGvE7lE,KAAKsqD,OAELsN,EAAc2N,YAAYC,SAASxlE,KAAKsqD,MAAOsN,EAGnD,IAAI/vC,GAAa+vC,EAAc/vC,WAC3BlW,EAAM60D,EAAU70D,GAAKimD,EAAc/vC,WAAc+vC,EAAc8O,OAC/D90D,EAAM40D,EAAU50D,GAAKgmD,EAAc/vC,WAAc+vC,EAAc+O,MAEnEtiD,GAAQE,aAAaiiD,EAAU/3D,EAAIoZ,EACd2+C,EAAU33D,EAAIgZ,EACd2+C,EAAUv3D,EAAI4Y,EACd2+C,EAAUvyD,EAAI4T,EACdlW,EACAC,GAErB9L,KAAKo3D,eAAeC,eAAen9D,KAAMqkB,EAGzC,KAAK,GAAIvc,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGw+D,cAAc1O,EAG/B53D,MAAKsqD,OAELsN,EAAc2N,YAAYa,QAAQxO,KAW9C9xD,KAAK+W,SAASxW,UAAUiH,UAAY,SAAS8G,GAEzC,IAAKpU,KAAKs3B,eACV,CAEI,IAAKt3B,KAAKkqD,WAEN,MAAOpkD,MAAKuU,cAGZra,MAAKynB,QAELznB,KAAK0hE,oBACL1hE,KAAKqhE,YAAa,EAClBrhE,KAAKshE,mBAAoB,EACzBthE,KAAKynB,OAAQ,EAGjB,IAAI9M,GAAS3a,KAAKohE,aAEdwF,EAAKjsD,EAAO1U,EACZ4gE,EAAKlsD,EAAO5K,MAAQ4K,EAAO1U,EAE3B6gE,EAAKnsD,EAAOlO,EACZs6D,EAAKpsD,EAAO3K,OAAS2K,EAAOlO,EAE5Bge,EAAiBrW,GAAUpU,KAAKyqB,eAEhChc,EAAIgc,EAAehc,EACnBI,EAAI4b,EAAe5b,EACnBI,EAAIwb,EAAexb,EACnBgF,EAAIwW,EAAexW,EACnBtC,EAAK8Y,EAAe9Y,GACpBC,EAAK6Y,EAAe7Y,GAEpBtB,EAAK7B,EAAIo4D,EAAK53D,EAAI83D,EAAKp1D,EACvBpB,EAAK0D,EAAI8yD,EAAKl4D,EAAIg4D,EAAKj1D,EAEvBpB,EAAK/B,EAAIm4D,EAAK33D,EAAI83D,EAAKp1D,EACvBlB,EAAKwD,EAAI8yD,EAAKl4D,EAAI+3D,EAAKh1D,EAEvBo1D,EAAKv4D,EAAIm4D,EAAK33D,EAAI63D,EAAKn1D,EACvBs1D,EAAKhzD,EAAI6yD,EAAKj4D,EAAI+3D,EAAKh1D,EAEvBs1D,EAAMz4D,EAAIo4D,EAAK53D,EAAI63D,EAAKn1D,EACxBw1D,EAAMlzD,EAAI6yD,EAAKj4D,EAAIg4D,EAAKj1D,EAExB4+C,EAAOlgD,EACPmgD,EAAOlgD,EAEP+/C,EAAOhgD,EACPigD,EAAOhgD,CAEX+/C,GAAO9/C,EAAK8/C,EAAO9/C,EAAK8/C,EACxBA,EAAO0W,EAAK1W,EAAO0W,EAAK1W,EACxBA,EAAO4W,EAAK5W,EAAO4W,EAAK5W,EAExBC,EAAO9/C,EAAK8/C,EAAO9/C,EAAK8/C,EACxBA,EAAO0W,EAAK1W,EAAO0W,EAAK1W,EACxBA,EAAO4W,EAAK5W,EAAO4W,EAAK5W,EAExBC,EAAOhgD,EAAKggD,EAAOhgD,EAAKggD,EACxBA,EAAOwW,EAAKxW,EAAOwW,EAAKxW,EACxBA,EAAO0W,EAAK1W,EAAO0W,EAAK1W,EAExBC,EAAOhgD,EAAKggD,EAAOhgD,EAAKggD,EACxBA,EAAOwW,EAAKxW,EAAOwW,EAAKxW,EACxBA,EAAO0W,EAAK1W,EAAO0W,EAAK1W,EAExBzwD,KAAK2nD,QAAQ1hD,EAAIqqD,EACjBtwD,KAAK2nD,QAAQ53C,MAAQygD,EAAOF,EAE5BtwD,KAAK2nD,QAAQl7C,EAAI8jD,EACjBvwD,KAAK2nD,QAAQ33C,OAASygD,EAAOF,EAE7BvwD,KAAKs3B,eAAiBt3B,KAAK2nD,QAG/B,MAAO3nD,MAAKs3B,gBAUhBxxB,KAAK+W,SAASxW,UAAU0T,cAAgB,SAAUvL,GAE9CxO,KAAKyqB,eAAe/V,aAAalG,EAAQ44D,UAIzC,KAAK,GAFD3kC,GAAeziC,KAAKyiC,aAEf36B,EAAI,EAAGA,EAAI26B,EAAa56B,OAAQC,IACzC,CACI,GAAI46B,GAAOD,EAAa36B,EAExB,IAAK46B,EAAKC,MAMND,EAAKE,OAEDF,EAAKE,MAAM50B,SAASo5D,UAAUnhE,EAAGmhE,UAAU36D,GAE3C,OAAO,EAKnB,OAAO,GASX3G,KAAK+W,SAASxW,UAAUq7D,kBAAoB,WAExC,GAAIpR,GAAO+W,EAAAA,EACP7W,IAAQ6W,EAAAA,GAER9W,EAAO8W,EAAAA,EACP5W,IAAQ4W,EAAAA,EAEZ,IAAIrnE,KAAKyiC,aAAa56B,OAIlB,IAAK,GAFD+6B,GAAO7rB,EAAQ9Q,EAAGwG,EAAG6Q,EAAGC,EAEnBzV,EAAI,EAAGA,EAAI9H,KAAKyiC,aAAa56B,OAAQC,IAC9C,CACI,GAAI46B,GAAO1iC,KAAKyiC,aAAa36B,GACzBI,EAAOw6B,EAAKx6B,KACZu2D,EAAY/7B,EAAK+7B,SAGrB,IAFA77B,EAAQF,EAAKE,MAET16B,IAASpC,KAAK+W,SAASyqD,MAAQp/D,IAASpC,KAAK+W,SAAS0qD,KAEtDthE,EAAI28B,EAAM38B,EAAIw4D,EAAY,EAC1BhyD,EAAIm2B,EAAMn2B,EAAIgyD,EAAY,EAC1BnhD,EAAIslB,EAAM7yB,MAAQ0uD,EAClBlhD,EAAIqlB,EAAM5yB,OAASyuD,EAEnBnO,EAAOrqD,EAAIqqD,EAAOrqD,EAAIqqD,EACtBE,EAAOvqD,EAAIqX,EAAIkzC,EAAOvqD,EAAIqX,EAAIkzC,EAE9BD,EAAO9jD,EAAI8jD,EAAO9jD,EAAI8jD,EACtBE,EAAOhkD,EAAI8Q,EAAIkzC,EAAOhkD,EAAI8Q,EAAIkzC,MAE7B,IAAIvoD,IAASpC,KAAK+W,SAAS2qD,KAE5BvhE,EAAI28B,EAAM38B,EACVwG,EAAIm2B,EAAMn2B,EACV6Q,EAAIslB,EAAMv1B,OAASoxD,EAAY,EAC/BlhD,EAAIqlB,EAAMv1B,OAASoxD,EAAY,EAE/BnO,EAAOrqD,EAAIqX,EAAIgzC,EAAOrqD,EAAIqX,EAAIgzC,EAC9BE,EAAOvqD,EAAIqX,EAAIkzC,EAAOvqD,EAAIqX,EAAIkzC,EAE9BD,EAAO9jD,EAAI8Q,EAAIgzC,EAAO9jD,EAAI8Q,EAAIgzC,EAC9BE,EAAOhkD,EAAI8Q,EAAIkzC,EAAOhkD,EAAI8Q,EAAIkzC,MAE7B,IAAIvoD,IAASpC,KAAK+W,SAAS4qD,KAE5BxhE,EAAI28B,EAAM38B,EACVwG,EAAIm2B,EAAMn2B,EACV6Q,EAAIslB,EAAM7yB,MAAQ0uD,EAAY,EAC9BlhD,EAAIqlB,EAAM5yB,OAASyuD,EAAY,EAE/BnO,EAAOrqD,EAAIqX,EAAIgzC,EAAOrqD,EAAIqX,EAAIgzC,EAC9BE,EAAOvqD,EAAIqX,EAAIkzC,EAAOvqD,EAAIqX,EAAIkzC,EAE9BD,EAAO9jD,EAAI8Q,EAAIgzC,EAAO9jD,EAAI8Q,EAAIgzC,EAC9BE,EAAOhkD,EAAI8Q,EAAIkzC,EAAOhkD,EAAI8Q,EAAIkzC,MAGlC,CAEI15C,EAAS6rB,EAAM7rB,MAEf,KAAK,GAAIc,GAAI,EAAGA,EAAId,EAAOlP,OAAQgQ,IAE3Bd,EAAOc,YAAcxX,GAAO2M,OAE5B/G,EAAI8Q,EAAOc,GAAG5R,EACdwG,EAAIsK,EAAOc,GAAGpL,IAIdxG,EAAI8Q,EAAOc,GACXpL,EAAIsK,EAAOc,EAAI,GAEXA,EAAId,EAAOlP,OAAS,GAEpBgQ,KAIRy4C,EAAOrqD,EAAIw4D,EAAYnO,EAAOrqD,EAAIw4D,EAAYnO,EAC9CE,EAAOvqD,EAAIw4D,EAAYjO,EAAOvqD,EAAIw4D,EAAYjO,EAE9CD,EAAO9jD,EAAIgyD,EAAYlO,EAAO9jD,EAAIgyD,EAAYlO,EAC9CE,EAAOhkD,EAAIgyD,EAAYhO,EAAOhkD,EAAIgyD,EAAYhO,OAO1DH,GAAO,EACPE,EAAO,EACPD,EAAO,EACPE,EAAO,CAGX,IAAI/oC,GAAU1nB,KAAKmhE,aAEnBnhE,MAAKohE,aAAan7D,EAAIqqD,EAAO5oC,EAC7B1nB,KAAKohE,aAAarxD,MAASygD,EAAOF,EAAkB,EAAV5oC,EAE1C1nB,KAAKohE,aAAa30D,EAAI8jD,EAAO7oC,EAC7B1nB,KAAKohE,aAAapxD,OAAUygD,EAAOF,EAAkB,EAAV7oC,GAS/C5hB,KAAK+W,SAASxW,UAAU6+D,sBAAwB,WAE5C,GAAIvqD,GAAS3a,KAAK0nE,gBAElB,IAAK1nE,KAAKolE,cAYNplE,KAAKolE,cAAcpN,OAAOl/C,OAAO6B,EAAO5K,MAAO4K,EAAO3K,YAX1D,CACI,GAAI80D,GAAe,GAAIh/D,MAAKi/D,aAAapqD,EAAO5K,MAAO4K,EAAO3K,QAC1DwyB,EAAU18B,KAAKgpD,QAAQC,WAAW+V,EAAax5C,OAEnDtrB,MAAKolE,cAAgB,GAAIt/D,MAAKsoB,OAAOoU,GACrCxiC,KAAKolE,cAAcpN,OAAS8M,EAE5B9kE,KAAKolE,cAAc36C,eAAiBzqB,KAAKyqB,eAQ7CzqB,KAAKolE,cAAc/7C,OAAOpjB,IAAM0U,EAAO1U,EAAI0U,EAAO5K,OAClD/P,KAAKolE,cAAc/7C,OAAO5c,IAAMkO,EAAOlO,EAAIkO,EAAO3K,QAGlDhQ,KAAKolE,cAAcpN,OAAO3zC,QAAQzP,WAAW+F,EAAO1U,GAAI0U,EAAOlO,GAG/DzM,KAAK6rB,WAAa,EAGlB/lB,KAAKo3D,eAAeC,eAAen9D,KAAMA,KAAKolE,cAAcpN,OAAO3zC,SACnErkB,KAAKolE,cAAc/mD,MAAQre,KAAKqe,OASpCvY,KAAK+W,SAASxW,UAAU8+D,0BAA4B,WAEhD,GAAIwC,GAAe3nE,KAAKolE,cACpB5iC,EAAUmlC,EAAanlC,QACvBlX,EAASq8C,EAAa3P,OAAO1sC,MAEjCkX,GAAQsQ,YAAY/iC,MAAQub,EAAOvb,MACnCyyB,EAAQsQ,YAAY9iC,OAASsb,EAAOtb,OACpCwyB,EAAQwQ,KAAKjjC,MAAQyyB,EAAQ7R,MAAM5gB,MAAQub,EAAOvb,MAClDyyB,EAAQwQ,KAAKhjC,OAASwyB,EAAQ7R,MAAM3gB,OAASsb,EAAOtb,OAEpD23D,EAAa3wC,OAAS1L,EAAOvb,MAC7B43D,EAAa1wC,QAAU3L,EAAOtb,OAG9BwyB,EAAQsQ,YAAYrrB,SAQxB3hB,KAAK+W,SAASxW,UAAUuhE,oBAAsB,WAE1C5nE,KAAKolE,cAAc5iC,QAAQ1e,SAAQ,GACnC9jB,KAAKolE,cAAgB,MAUzBt/D,KAAK+W,SAASxW,UAAUo7D,UAAY,SAAS7+B,GAErC5iC,KAAKghE,aAGDhhE,KAAKghE,YAAYp+B,MAAM7rB,OAAOlP,QAAU,GAExC7H,KAAKyiC,aAAat5B,MAI1BnJ,KAAKghE,YAAc,KAGfp+B,YAAiBviC,GAAOgX,UAExBurB,EAAQA,EAAMp3B,QACdo3B,EAAMjrB,UAGV,IAAI+qB,GAAO,GAAI58B,MAAK+hE,aAAa7nE,KAAKy+D,UAAWz+D,KAAK+gE,UAAW/gE,KAAKwhE,UAAWxhE,KAAKukE,UAAWvkE,KAAK8gE,UAAW9gE,KAAK+jE,QAASnhC,EAc/H,OAZA5iC,MAAKyiC,aAAa7vB,KAAK8vB,GAEnBA,EAAKx6B,OAASpC,KAAK+W,SAASirD,OAE5BplC,EAAKE,MAAMprB,OAASxX,KAAK+jE,QACzB/jE,KAAKghE,YAAct+B,GAGvB1iC,KAAKynB,OAAQ,EAEbznB,KAAK0hE,oBAEEh/B,GAeXn7B,OAAO2E,eAAepG,KAAK+W,SAASxW,UAAW,iBAE3C2F,IAAK,WACD,MAAQhM,MAAKilE,gBAGjBh5D,IAAK,SAAS1C,GAEVvJ,KAAKilE,eAAiB17D,EAElBvJ,KAAKilE,eAELjlE,KAAKklE,wBAILllE,KAAK4nE,sBAGT5nE,KAAKynB,OAAQ,EACbznB,KAAKqhE,YAAa,KAyC1Bv7D,KAAK+hE,aAAe,SAASpJ,EAAWsC,EAAWS,EAAW+C,EAAWzD,EAAWn+B,EAAMC,GAKtF5iC,KAAKy+D,UAAYA,EAKjBz+D,KAAK+gE,UAAYA,EAKjB/gE,KAAKwhE,UAAYA,EAKjBxhE,KAAK+nE,UAAYhH,EAKjB/gE,KAAKukE,UAAYA,EAKjBvkE,KAAK8gE,UAAYA,EAKjB9gE,KAAKgoE,UAAYzD,EAKjBvkE,KAAK2iC,KAAOA,EAKZ3iC,KAAK4iC,MAAQA,EAKb5iC,KAAKkI,KAAO06B,EAAM16B,MAItBpC,KAAK+hE,aAAaxhE,UAAU8B,YAAcrC,KAAK+hE,aAO/C/hE,KAAK+hE,aAAaxhE,UAAUmF,MAAQ,WAEhC,MAAO,IAAIq8D,cACP7nE,KAAKy+D,UACLz+D,KAAK+gE,UACL/gE,KAAKwhE,UACLxhE,KAAKukE,UACLvkE,KAAK8gE,UACL9gE,KAAK2iC,KACL3iC,KAAK4iC,QA2Cb98B,KAAKmiE,SAOLniE,KAAKmiE,MAAMC,YAAc,SAASj4D,GAE9B,GAAIk4D,IAAO,EAEPviD,EAAI3V,EAAEpI,QAAU,CACpB,IAAG+d,EAAI,EAAG,QAIV,KAAI,GAFAwiD,MACAC,KACIvgE,EAAI,EAAGA,EAAI8d,EAAG9d,IAAKugE,EAAIz1D,KAAK9K,EAEpCA,GAAI,CAEJ,KADA,GAAIwgE,GAAK1iD,EACH0iD,EAAK,GACX,CACI,GAAIC,GAAKF,GAAKvgE,EAAE,GAAGwgE,GACfE,EAAKH,GAAKvgE,EAAE,GAAGwgE,GACfG,EAAKJ,GAAKvgE,EAAE,GAAGwgE,GAEfI,EAAKz4D,EAAE,EAAEs4D,GAAMI,EAAK14D,EAAE,EAAEs4D,EAAG,GAC3BK,EAAK34D,EAAE,EAAEu4D,GAAMK,EAAK54D,EAAE,EAAEu4D,EAAG,GAC3Bt5D,EAAKe,EAAE,EAAEw4D,GAAMn5D,EAAKW,EAAE,EAAEw4D,EAAG,GAE3BK,GAAW,CACf,IAAGhjE,KAAKmiE,MAAMc,QAAQL,EAAIC,EAAIC,EAAIC,EAAI35D,EAAII,EAAI64D,GAC9C,CACIW,GAAW,CACX,KAAI,GAAIjxD,GAAI,EAAGA,EAAIywD,EAAIzwD,IACvB,CACI,GAAImxD,GAAKX,EAAIxwD,EACb,IAAGmxD,IAAOT,GAAMS,IAAOR,GAAMQ,IAAOP,GAEjC3iE,KAAKmiE,MAAMgB,iBAAiBh5D,EAAE,EAAE+4D,GAAK/4D,EAAE,EAAE+4D,EAAG,GAAIN,EAAIC,EAAIC,EAAIC,EAAI35D,EAAII,GAAK,CACxEw5D,GAAW,CACX,SAKZ,GAAGA,EAECV,EAAIx1D,KAAK21D,EAAIC,EAAIC,GACjBJ,EAAIllD,QAAQrb,EAAE,GAAGwgE,EAAI,GACrBA,IACAxgE,EAAI,MAEH,IAAGA,IAAM,EAAEwgE,EAChB,CAGI,IAAGH,EAcC,MAAO,KAVP,KAFAC,KACAC,KACIvgE,EAAI,EAAGA,EAAI8d,EAAG9d,IAAKugE,EAAIz1D,KAAK9K,EAEhCA,GAAI,EACJwgE,EAAK1iD,EAELuiD,GAAO,GAWnB,MADAC,GAAIx1D,KAAKy1D,EAAI,GAAIA,EAAI,GAAIA,EAAI,IACtBD,GAkBXtiE,KAAKmiE,MAAMgB,iBAAmB,SAAS9+D,EAAIgqC,EAAIu0B,EAAIC,EAAIC,EAAIC,EAAI35D,EAAII,GAE/D,GAAI45D,GAAMh6D,EAAGw5D,EACTS,EAAM75D,EAAGq5D,EACTS,EAAMR,EAAGF,EACTW,EAAMR,EAAGF,EACTW,EAAMn/D,EAAGu+D,EACTa,EAAMp1B,EAAGw0B,EAETa,EAAQN,EAAIA,EAAIC,EAAIA,EACpBM,EAAQP,EAAIE,EAAID,EAAIE,EACpBK,EAAQR,EAAII,EAAIH,EAAII,EACpBI,EAAQP,EAAIA,EAAIC,EAAIA,EACpBO,EAAQR,EAAIE,EAAID,EAAIE,EAEpBM,EAAW,GAAKL,EAAQG,EAAQF,EAAQA,GACxCx8D,GAAK08D,EAAQD,EAAQD,EAAQG,GAASC,EACtCnvC,GAAK8uC,EAAQI,EAAQH,EAAQC,GAASG,CAG1C,OAAQ58D,IAAK,GAAOytB,GAAK,GAAOztB,EAAIytB,EAAI,GAU5C50B,KAAKmiE,MAAMc,QAAU,SAASL,EAAIC,EAAIC,EAAIC,EAAI35D,EAAII,EAAI64D,GAElD,OAASQ,EAAGE,IAAK35D,EAAG05D,IAAOA,EAAGF,IAAKp5D,EAAGu5D,IAAO,IAAOV,GAsBxDriE,KAAKgkE,UAELhkE,KAAKgkE,OAAO5B,YAAc,SAAUxlC,EAAMqnC,EAAaC,GAEnDA,EAAMA,GAAO,CAEb,IAAIC,GAAWF,GAAeA,EAAYliE,OACtCqiE,EAAWD,EAAWF,EAAY,GAAKC,EAAMtnC,EAAK76B,OAClDsiE,EAAYrkE,KAAKgkE,OAAOM,WAAW1nC,EAAM,EAAGwnC,EAAUF,GAAK,GAC3DK,IAEJ,KAAKF,EAAW,MAAOE,EAEvB,IAAI/Z,GAAMC,EAAMC,EAAMC,EAAMxqD,EAAGwG,EAAGzC,CAKlC,IAHIigE,IAAUE,EAAYrkE,KAAKgkE,OAAOQ,eAAe5nC,EAAMqnC,EAAaI,EAAWH,IAG/EtnC,EAAK76B,OAAS,GAAKmiE,EAAK,CACxB1Z,EAAOE,EAAO9tB,EAAK,GACnB6tB,EAAOE,EAAO/tB,EAAK,EAEnB,KAAK,GAAI56B,GAAIkiE,EAAKliE,EAAIoiE,EAAUpiE,GAAKkiE,EACjC/jE,EAAIy8B,EAAK56B,GACT2E,EAAIi2B,EAAK56B,EAAI,GACT7B,EAAIqqD,IAAMA,EAAOrqD,GACjBwG,EAAI8jD,IAAMA,EAAO9jD,GACjBxG,EAAIuqD,IAAMA,EAAOvqD,GACjBwG,EAAIgkD,IAAMA,EAAOhkD,EAIzBzC,GAAOjE,KAAKoM,IAAIq+C,EAAOF,EAAMG,EAAOF,GAKxC,MAFAzqD,MAAKgkE,OAAOS,aAAaJ,EAAWE,EAAWL,EAAK1Z,EAAMC,EAAMvmD,GAEzDqgE,GAKXvkE,KAAKgkE,OAAOM,WAAa,SAAU1nC,EAAMhyB,EAAOC,EAAKq5D,EAAKQ,GACtD,GACI1iE,GAAG+P,EAAG3O,EADNuhE,EAAM,CAIV,KAAK3iE,EAAI4I,EAAOmH,EAAIlH,EAAMq5D,EAAKliE,EAAI6I,EAAK7I,GAAKkiE,EACzCS,IAAQ/nC,EAAK7qB,GAAK6qB,EAAK56B,KAAO46B,EAAK56B,EAAI,GAAK46B,EAAK7qB,EAAI,IACrDA,EAAI/P,CAIR,IAAI0iE,IAAeC,EAAM,EACrB,IAAK3iE,EAAI4I,EAAO5I,EAAI6I,EAAK7I,GAAKkiE,EAAK9gE,EAAOpD,KAAKgkE,OAAOY,WAAW5iE,EAAG46B,EAAK56B,GAAI46B,EAAK56B,EAAI,GAAIoB,OAE1F,KAAKpB,EAAI6I,EAAMq5D,EAAKliE,GAAK4I,EAAO5I,GAAKkiE,EAAK9gE,EAAOpD,KAAKgkE,OAAOY,WAAW5iE,EAAG46B,EAAK56B,GAAI46B,EAAK56B,EAAI,GAAIoB,EAGrG,OAAOA,IAKXpD,KAAKgkE,OAAOa,aAAe,SAAUj6D,EAAOC,GACxC,IAAKD,EAAO,MAAOA,EACdC,KAAKA,EAAMD,EAEhB,IACIk6D,GADA36D,EAAIS,CAER,GAGI,IAFAk6D,GAAQ,EAEH36D,EAAE46D,UAAY/kE,KAAKgkE,OAAOl7D,OAAOqB,EAAGA,EAAEshB,OAAiD,IAAxCzrB,KAAKgkE,OAAOxyD,KAAKrH,EAAE8oD,KAAM9oD,EAAGA,EAAEshB,MAO9EthB,EAAIA,EAAEshB,SAPsF,CAG5F,GAFAzrB,KAAKgkE,OAAOgB,WAAW76D,GACvBA,EAAIU,EAAMV,EAAE8oD,KACR9oD,IAAMA,EAAEshB,KAAM,MAAO,KACzBq5C,IAAQ,QAKPA,GAAS36D,IAAMU,EAExB,OAAOA,IAKX7K,KAAKgkE,OAAOS,aAAe,SAAUQ,EAAKV,EAAWL,EAAK1Z,EAAMC,EAAMvmD,EAAMghE,GACxE,GAAKD,EAAL,EAGKC,GAAQhhE,GAAMlE,KAAKgkE,OAAOmB,WAAWF,EAAKza,EAAMC,EAAMvmD,EAM3D,KAJA,GACI+uD,GAAMxnC,EADN+K,EAAOyuC,EAIJA,EAAIhS,OAASgS,EAAIx5C,MAIpB,GAHAwnC,EAAOgS,EAAIhS,KACXxnC,EAAOw5C,EAAIx5C,KAEPvnB,EAAOlE,KAAKgkE,OAAOoB,YAAYH,EAAKza,EAAMC,EAAMvmD,GAAQlE,KAAKgkE,OAAOqB,MAAMJ,GAE1EV,EAAUz3D,KAAKmmD,EAAKjxD,EAAIkiE,GACxBK,EAAUz3D,KAAKm4D,EAAIjjE,EAAIkiE,GACvBK,EAAUz3D,KAAK2e,EAAKzpB,EAAIkiE,GAExBlkE,KAAKgkE,OAAOgB,WAAWC,GAGvBA,EAAMx5C,EAAKA,KACX+K,EAAO/K,EAAKA,SAQhB,IAHAw5C,EAAMx5C,EAGFw5C,IAAQzuC,EAAM,CAET0uC,EAIe,IAATA,GACPD,EAAMjlE,KAAKgkE,OAAOsB,uBAAuBL,EAAKV,EAAWL,GACzDlkE,KAAKgkE,OAAOS,aAAaQ,EAAKV,EAAWL,EAAK1Z,EAAMC,EAAMvmD,EAAM,IAGhD,IAATghE,GACPllE,KAAKgkE,OAAOuB,YAAYN,EAAKV,EAAWL,EAAK1Z,EAAMC,EAAMvmD,GATzDlE,KAAKgkE,OAAOS,aAAazkE,KAAKgkE,OAAOa,aAAaI,GAAMV,EAAWL,EAAK1Z,EAAMC,EAAMvmD,EAAM,EAY9F,UAOZlE,KAAKgkE,OAAOqB,MAAQ,SAAUJ,GAC1B,GAAIt8D,GAAIs8D,EAAIhS,KACRlqD,EAAIk8D,EACJ97D,EAAI87D,EAAIx5C,IAEZ,IAAIzrB,KAAKgkE,OAAOxyD,KAAK7I,EAAGI,EAAGI,IAAM,EAAG,OAAO,CAK3C,KAFA,GAAIgB,GAAI86D,EAAIx5C,KAAKA,KAEVthB,IAAM86D,EAAIhS,MAAM,CACnB,GAAIjzD,KAAKgkE,OAAOwB,gBAAgB78D,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EAAGwC,EAAEhJ,EAAGgJ,EAAExC,EAAGwD,EAAEhK,EAAGgK,EAAExD,IACjE3G,KAAKgkE,OAAOxyD,KAAKrH,EAAE8oD,KAAM9oD,EAAGA,EAAEshB,OAAS,EAAG,OAAO,CACrDthB,GAAIA,EAAEshB,KAGV,OAAO,GAGXzrB,KAAKgkE,OAAOoB,YAAc,SAAUH,EAAKza,EAAMC,EAAMvmD,GACjD,GAAIyE,GAAIs8D,EAAIhS,KACRlqD,EAAIk8D,EACJ97D,EAAI87D,EAAIx5C,IAEZ,IAAIzrB,KAAKgkE,OAAOxyD,KAAK7I,EAAGI,EAAGI,IAAM,EAAG,OAAO,CAe3C,KAZA,GAAIs8D,GAAQ98D,EAAExI,EAAI4I,EAAE5I,EAAKwI,EAAExI,EAAIgJ,EAAEhJ,EAAIwI,EAAExI,EAAIgJ,EAAEhJ,EAAM4I,EAAE5I,EAAIgJ,EAAEhJ,EAAI4I,EAAE5I,EAAIgJ,EAAEhJ,EACnEulE,EAAQ/8D,EAAEhC,EAAIoC,EAAEpC,EAAKgC,EAAEhC,EAAIwC,EAAExC,EAAIgC,EAAEhC,EAAIwC,EAAExC,EAAMoC,EAAEpC,EAAIwC,EAAExC,EAAIoC,EAAEpC,EAAIwC,EAAExC,EACnEg/D,EAAQh9D,EAAExI,EAAI4I,EAAE5I,EAAKwI,EAAExI,EAAIgJ,EAAEhJ,EAAIwI,EAAExI,EAAIgJ,EAAEhJ,EAAM4I,EAAE5I,EAAIgJ,EAAEhJ,EAAI4I,EAAE5I,EAAIgJ,EAAEhJ,EACnEylE,EAAQj9D,EAAEhC,EAAIoC,EAAEpC,EAAKgC,EAAEhC,EAAIwC,EAAExC,EAAIgC,EAAEhC,EAAIwC,EAAExC,EAAMoC,EAAEpC,EAAIwC,EAAExC,EAAIoC,EAAEpC,EAAIwC,EAAExC,EAGnEk/D,EAAO7lE,KAAKgkE,OAAO8B,OAAOL,EAAOC,EAAOlb,EAAMC,EAAMvmD,GACpD6hE,EAAO/lE,KAAKgkE,OAAO8B,OAAOH,EAAOC,EAAOpb,EAAMC,EAAMvmD,GAGpDiG,EAAI86D,EAAIe,MAEL77D,GAAKA,EAAE6d,GAAK+9C,GAAM,CACrB,GAAI57D,IAAM86D,EAAIhS,MAAQ9oD,IAAM86D,EAAIx5C,MAC5BzrB,KAAKgkE,OAAOwB,gBAAgB78D,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EAAGwC,EAAEhJ,EAAGgJ,EAAExC,EAAGwD,EAAEhK,EAAGgK,EAAExD,IACjE3G,KAAKgkE,OAAOxyD,KAAKrH,EAAE8oD,KAAM9oD,EAAGA,EAAEshB,OAAS,EAAG,OAAO,CACrDthB,GAAIA,EAAE67D,MAMV,IAFA77D,EAAI86D,EAAIgB,MAED97D,GAAKA,EAAE6d,GAAK69C,GAAM,CACrB,GAAI17D,IAAM86D,EAAIhS,MAAQ9oD,IAAM86D,EAAIx5C,MAC5BzrB,KAAKgkE,OAAOwB,gBAAgB78D,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EAAGwC,EAAEhJ,EAAGgJ,EAAExC,EAAGwD,EAAEhK,EAAGgK,EAAExD,IACjE3G,KAAKgkE,OAAOxyD,KAAKrH,EAAE8oD,KAAM9oD,EAAGA,EAAEshB,OAAS,EAAG,OAAO,CACrDthB,GAAIA,EAAE87D,MAGV,OAAO,GAKXjmE,KAAKgkE,OAAOsB,uBAAyB,SAAU16D,EAAO25D,EAAWL,GAC7D,GAAI/5D,GAAIS,CACR,GAAG,CACC,GAAIjC,GAAIwB,EAAE8oD,KACNlqD,EAAIoB,EAAEshB,KAAKA,IAGXzrB,MAAKgkE,OAAOh7D,WAAWL,EAAGwB,EAAGA,EAAEshB,KAAM1iB,IAAM/I,KAAKgkE,OAAOkC,cAAcv9D,EAAGI,IAAM/I,KAAKgkE,OAAOkC,cAAcn9D,EAAGJ,KAE3G47D,EAAUz3D,KAAKnE,EAAE3G,EAAIkiE,GACrBK,EAAUz3D,KAAK3C,EAAEnI,EAAIkiE,GACrBK,EAAUz3D,KAAK/D,EAAE/G,EAAIkiE,GAGrBlkE,KAAKgkE,OAAOgB,WAAW76D,GACvBnK,KAAKgkE,OAAOgB,WAAW76D,EAAEshB,MAEzBthB,EAAIS,EAAQ7B,GAEhBoB,EAAIA,EAAEshB,WACDthB,IAAMS,EAEf,OAAOT,IAKXnK,KAAKgkE,OAAOuB,YAAc,SAAU36D,EAAO25D,EAAWL,EAAK1Z,EAAMC,EAAMvmD,GAEnE,GAAIyE,GAAIiC,CACR,GAAG,CAEC,IADA,GAAI7B,GAAIJ,EAAE8iB,KAAKA,KACR1iB,IAAMJ,EAAEsqD,MAAM,CACjB,GAAItqD,EAAE3G,IAAM+G,EAAE/G,GAAKhC,KAAKgkE,OAAOmC,gBAAgBx9D,EAAGI,GAAI,CAElD,GAAII,GAAInJ,KAAKgkE,OAAOoC,aAAaz9D,EAAGI,EASpC,OANAJ,GAAI3I,KAAKgkE,OAAOa,aAAal8D,EAAGA,EAAE8iB,MAClCtiB,EAAInJ,KAAKgkE,OAAOa,aAAa17D,EAAGA,EAAEsiB,MAGlCzrB,KAAKgkE,OAAOS,aAAa97D,EAAG47D,EAAWL,EAAK1Z,EAAMC,EAAMvmD,OACxDlE,MAAKgkE,OAAOS,aAAat7D,EAAGo7D,EAAWL,EAAK1Z,EAAMC,EAAMvmD,GAG5D6E,EAAIA,EAAE0iB,KAEV9iB,EAAIA,EAAE8iB,WACD9iB,IAAMiC,IAKnB5K,KAAKgkE,OAAOQ,eAAiB,SAAU5nC,EAAMqnC,EAAaI,EAAWH,GACjE,GACIliE,GAAGF,EAAK8I,EAAOC,EAAKulB,EADpBi2C,IAGJ,KAAKrkE,EAAI,EAAGF,EAAMmiE,EAAYliE,OAAQC,EAAIF,EAAKE,IAC3C4I,EAAQq5D,EAAYjiE,GAAKkiE,EACzBr5D,EAAM7I,EAAIF,EAAM,EAAImiE,EAAYjiE,EAAI,GAAKkiE,EAAMtnC,EAAK76B,OACpDquB,EAAOpwB,KAAKgkE,OAAOM,WAAW1nC,EAAMhyB,EAAOC,EAAKq5D,GAAK,GACjD9zC,IAASA,EAAK3E,OAAM2E,EAAK20C,SAAU,GACvCsB,EAAMv5D,KAAK9M,KAAKgkE,OAAOsC,YAAYl2C,GAMvC,KAHAi2C,EAAM73C,KAAK+3C,UAGNvkE,EAAI,EAAGA,EAAIqkE,EAAMtkE,OAAQC,IAC1BhC,KAAKgkE,OAAOwC,cAAcH,EAAMrkE,GAAIqiE,GACpCA,EAAYrkE,KAAKgkE,OAAOa,aAAaR,EAAWA,EAAU54C,KAG9D,OAAO44C,IAGXrkE,KAAKgkE,OAAOuC,SAAW,SAAU59D,EAAGI,GAChC,MAAOJ,GAAExI,EAAI4I,EAAE5I,GAKnBH,KAAKgkE,OAAOwC,cAAgB,SAAUC,EAAMpC,GAExC,GADAA,EAAYrkE,KAAKgkE,OAAO0C,eAAeD,EAAMpC,GAC9B,CACX,GAAIt7D,GAAI/I,KAAKgkE,OAAOoC,aAAa/B,EAAWoC,EAC5CzmE,MAAKgkE,OAAOa,aAAa97D,EAAGA,EAAE0iB,QAMtCzrB,KAAKgkE,OAAO0C,eAAiB,SAAUD,EAAMpC,GACzC,GAIIl0D,GAJAhG,EAAIk6D,EACJsC,EAAKF,EAAKtmE,EACVymE,EAAKH,EAAK9/D,EACV42D,IAAMgE,EAAAA,EAKV,GAAG,CACC,GAAIqF,GAAMz8D,EAAExD,GAAKigE,GAAMz8D,EAAEshB,KAAK9kB,EAAG,CAC7B,GAAIxG,GAAIgK,EAAEhK,GAAKymE,EAAKz8D,EAAExD,IAAMwD,EAAEshB,KAAKtrB,EAAIgK,EAAEhK,IAAMgK,EAAEshB,KAAK9kB,EAAIwD,EAAExD,EACxDxG,IAAKwmE,GAAMxmE,EAAIo9D,IACfA,EAAKp9D,EACLgQ,EAAIhG,EAAEhK,EAAIgK,EAAEshB,KAAKtrB,EAAIgK,EAAIA,EAAEshB,MAGnCthB,EAAIA,EAAEshB,WACDthB,IAAMk6D,EAEf,KAAKl0D,EAAG,MAAO,KAEf,IAAIs2D,EAAKtmE,IAAMgQ,EAAEhQ,EAAG,MAAOgQ,GAAE8iD,IAM7B,IAEI4T,GAFArwC,EAAOrmB,EACP22D,EAASvF,EAAAA,CAKb,KAFAp3D,EAAIgG,EAAEsb,KAECthB,IAAMqsB,GACLmwC,GAAMx8D,EAAEhK,GAAKgK,EAAEhK,GAAKgQ,EAAEhQ,GACtBH,KAAKgkE,OAAOwB,gBAAgBoB,EAAKz2D,EAAExJ,EAAIggE,EAAKpJ,EAAIqJ,EAAIz2D,EAAEhQ,EAAGgQ,EAAExJ,EAAGigE,EAAKz2D,EAAExJ,EAAI42D,EAAKoJ,EAAIC,EAAIz8D,EAAEhK,EAAGgK,EAAExD,KAE7FkgE,EAAM5mE,KAAKoJ,IAAIu9D,EAAKz8D,EAAExD,IAAMggE,EAAKx8D,EAAEhK,IAE9B0mE,EAAMC,GAAWD,IAAQC,GAAU38D,EAAEhK,EAAIgQ,EAAEhQ,IAAOH,KAAKgkE,OAAOkC,cAAc/7D,EAAGs8D,KAChFt2D,EAAIhG,EACJ28D,EAASD,IAIjB18D,EAAIA,EAAEshB,IAGV,OAAOtb,IAKXnQ,KAAKgkE,OAAOmB,WAAa,SAAUv6D,EAAO4/C,EAAMC,EAAMvmD,GAClD,GAAIiG,GAAIS,CACR,GACgB,QAART,EAAE6d,IAAY7d,EAAE6d,EAAIhoB,KAAKgkE,OAAO8B,OAAO37D,EAAEhK,EAAGgK,EAAExD,EAAG6jD,EAAMC,EAAMvmD,IACjEiG,EAAE87D,MAAQ97D,EAAE8oD,KACZ9oD,EAAE67D,MAAQ77D,EAAEshB,KACZthB,EAAIA,EAAEshB,WACDthB,IAAMS,EAEfT,GAAE87D,MAAMD,MAAQ,KAChB77D,EAAE87D,MAAQ,KAEVjmE,KAAKgkE,OAAO+C,WAAW58D,IAM3BnK,KAAKgkE,OAAO+C,WAAa,SAAU32C,GAC/B,GAAIpuB,GAAGmI,EAAG68D,EAAG7hE,EAAG8hE,EAAMC,EAAWC,EAAOC,EACpCC,EAAS,CAEb,GAAG,CAMC,IALAl9D,EAAIimB,EACJA,EAAO,KACP62C,EAAO,KACPC,EAAY,EAEL/8D,GAAG,CAIN,IAHA+8D,IACAF,EAAI78D,EACJg9D,EAAQ,EACHnlE,EAAI,EAAGA,EAAIqlE,IACZF,IACAH,EAAIA,EAAEhB,MACDgB,GAHehlE,KAQxB,IAFAolE,EAAQC,EAEDF,EAAQ,GAAMC,EAAQ,GAAKJ,GAEhB,IAAVG,GACAhiE,EAAI6hE,EACJA,EAAIA,EAAEhB,MACNoB,KACiB,IAAVA,GAAgBJ,EAIhB78D,EAAE6d,GAAKg/C,EAAEh/C,GAChB7iB,EAAIgF,EACJA,EAAIA,EAAE67D,MACNmB,MAEAhiE,EAAI6hE,EACJA,EAAIA,EAAEhB,MACNoB,MAVAjiE,EAAIgF,EACJA,EAAIA,EAAE67D,MACNmB,KAWAF,EAAMA,EAAKjB,MAAQ7gE,EAClBirB,EAAOjrB,EAEZA,EAAE8gE,MAAQgB,EACVA,EAAO9hE,CAGXgF,GAAI68D,EAGRC,EAAKjB,MAAQ,KACbqB,GAAU,QAELH,EAAY,EAErB,OAAO92C,IAKXpwB,KAAKgkE,OAAO8B,OAAS,SAAU3lE,EAAGwG,EAAG6jD,EAAMC,EAAMvmD,GAe7C,MAbA/D,GAAI,OAASA,EAAIqqD,GAAQtmD,EACzByC,EAAI,OAASA,EAAI8jD,GAAQvmD,EAEzB/D,EAAqB,UAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,YAAhBA,EAAKA,GAAK,GAEfwG,EAAqB,UAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,YAAhBA,EAAKA,GAAK,GAERxG,EAAKwG,GAAK,GAKrB3G,KAAKgkE,OAAOsC,YAAc,SAAU17D,GAChC,GAAIT,GAAIS,EACJ08D,EAAW18D,CACf,GACQT,GAAEhK,EAAImnE,EAASnnE,IAAGmnE,EAAWn9D,GACjCA,EAAIA,EAAEshB,WACDthB,IAAMS,EAEf,OAAO08D,IAKXtnE,KAAKgkE,OAAOwB,gBAAkB,SAAU5C,EAAIC,EAAIC,EAAIC,EAAI35D,EAAII,EAAInF,EAAIgqC,GAChE,OAAQjlC,EAAK/E,IAAOw+D,EAAKx0B,IAAOu0B,EAAKv+D,IAAOmF,EAAK6kC,IAAO,IACnDu0B,EAAKv+D,IAAO0+D,EAAK10B,IAAOy0B,EAAKz+D,IAAOw+D,EAAKx0B,IAAO,IAChDy0B,EAAKz+D,IAAOmF,EAAK6kC,IAAOjlC,EAAK/E,IAAO0+D,EAAK10B,IAAO,GAKzDruC,KAAKgkE,OAAOmC,gBAAkB,SAAUx9D,EAAGI,GACvC,MAAO/I,MAAKgkE,OAAOl7D,OAAOH,EAAGI,IAAMJ,EAAE8iB,KAAKzpB,IAAM+G,EAAE/G,GAAK2G,EAAEsqD,KAAKjxD,IAAM+G,EAAE/G,IAAMhC,KAAKgkE,OAAOuD,kBAAkB5+D,EAAGI,IACzG/I,KAAKgkE,OAAOkC,cAAcv9D,EAAGI,IAAM/I,KAAKgkE,OAAOkC,cAAcn9D,EAAGJ,IAAM3I,KAAKgkE,OAAOwD,aAAa7+D,EAAGI,IAK1G/I,KAAKgkE,OAAOxyD,KAAO,SAAUrH,EAAG68D,EAAG5/D,GAC/B,OAAQ4/D,EAAErgE,EAAIwD,EAAExD,IAAMS,EAAEjH,EAAI6mE,EAAE7mE,IAAM6mE,EAAE7mE,EAAIgK,EAAEhK,IAAMiH,EAAET,EAAIqgE,EAAErgE,IAK9D3G,KAAKgkE,OAAOl7D,OAAS,SAAU0J,EAAIC,GAC/B,MAAOD,GAAGrS,IAAMsS,EAAGtS,GAAKqS,EAAG7L,IAAM8L,EAAG9L,GAKxC3G,KAAKgkE,OAAOh7D,WAAa,SAAUwJ,EAAIi1D,EAAIh1D,EAAIi1D,GAC3C,MAAO1nE,MAAKgkE,OAAOxyD,KAAKgB,EAAIi1D,EAAIh1D,GAAM,GAAMzS,KAAKgkE,OAAOxyD,KAAKgB,EAAIi1D,EAAIC,GAAM,GACvE1nE,KAAKgkE,OAAOxyD,KAAKiB,EAAIi1D,EAAIl1D,GAAM,GAAMxS,KAAKgkE,OAAOxyD,KAAKiB,EAAIi1D,EAAID,GAAM,GAK5EznE,KAAKgkE,OAAOuD,kBAAoB,SAAU5+D,EAAGI,GACzC,GAAIoB,GAAIxB,CACR,GAAG,CACC,GAAIwB,EAAEnI,IAAM2G,EAAE3G,GAAKmI,EAAEshB,KAAKzpB,IAAM2G,EAAE3G,GAAKmI,EAAEnI,IAAM+G,EAAE/G,GAAKmI,EAAEshB,KAAKzpB,IAAM+G,EAAE/G,GACjEhC,KAAKgkE,OAAOh7D,WAAWmB,EAAGA,EAAEshB,KAAM9iB,EAAGI,GAAI,OAAO,CACpDoB,GAAIA,EAAEshB,WACDthB,IAAMxB,EAEf,QAAO,GAKX3I,KAAKgkE,OAAOkC,cAAgB,SAAUv9D,EAAGI,GACrC,MAAO/I,MAAKgkE,OAAOxyD,KAAK7I,EAAEsqD,KAAMtqD,EAAGA,EAAE8iB,MAAQ,EACzCzrB,KAAKgkE,OAAOxyD,KAAK7I,EAAGI,EAAGJ,EAAE8iB,OAAS,GAAKzrB,KAAKgkE,OAAOxyD,KAAK7I,EAAGA,EAAEsqD,KAAMlqD,IAAM,EACzE/I,KAAKgkE,OAAOxyD,KAAK7I,EAAGI,EAAGJ,EAAEsqD,MAAQ,GAAKjzD,KAAKgkE,OAAOxyD,KAAK7I,EAAGA,EAAE8iB,KAAM1iB,GAAK,GAK/E/I,KAAKgkE,OAAOwD,aAAe,SAAU7+D,EAAGI,GACpC,GAAIoB,GAAIxB,EACJmJ,GAAS,EACTzN,GAAMsE,EAAExI,EAAI4I,EAAE5I,GAAK,EACnBkuC,GAAM1lC,EAAEhC,EAAIoC,EAAEpC,GAAK,CACvB,GACUwD,GAAExD,EAAI0nC,GAASlkC,EAAEshB,KAAK9kB,EAAI0nC,GAAShqC,GAAM8F,EAAEshB,KAAKtrB,EAAIgK,EAAEhK,IAAMkuC,EAAKlkC,EAAExD,IAAMwD,EAAEshB,KAAK9kB,EAAIwD,EAAExD,GAAKwD,EAAEhK,IAC/F2R,GAAUA,GACd3H,EAAIA,EAAEshB,WACDthB,IAAMxB,EAEf,OAAOmJ,IAMX9R,KAAKgkE,OAAOoC,aAAe,SAAUz9D,EAAGI,GACpC,GAAIoE,GAAK,GAAInN,MAAKgkE,OAAO2D,KAAKh/D,EAAE3G,EAAG2G,EAAExI,EAAGwI,EAAEhC,GACtC0G,EAAK,GAAIrN,MAAKgkE,OAAO2D,KAAK5+D,EAAE/G,EAAG+G,EAAE5I,EAAG4I,EAAEpC,GACtCihE,EAAKj/D,EAAE8iB,KACPo8C,EAAK9+D,EAAEkqD,IAcX,OAZAtqD,GAAE8iB,KAAO1iB,EACTA,EAAEkqD,KAAOtqD,EAETwE,EAAGse,KAAOm8C,EACVA,EAAG3U,KAAO9lD,EAEVE,EAAGoe,KAAOte,EACVA,EAAG8lD,KAAO5lD,EAEVw6D,EAAGp8C,KAAOpe,EACVA,EAAG4lD,KAAO4U,EAEHx6D,GAKXrN,KAAKgkE,OAAOY,WAAa,SAAU5iE,EAAG7B,EAAGwG,EAAGvD,GACxC,GAAI+G,GAAI,GAAInK,MAAKgkE,OAAO2D,KAAK3lE,EAAG7B,EAAGwG,EAYnC,OAVKvD,IAKD+G,EAAEshB,KAAOroB,EAAKqoB,KACdthB,EAAE8oD,KAAO7vD,EACTA,EAAKqoB,KAAKwnC,KAAO9oD,EACjB/G,EAAKqoB,KAAOthB,IAPZA,EAAE8oD,KAAO9oD,EACTA,EAAEshB,KAAOthB,GAQNA,GAGXnK,KAAKgkE,OAAOgB,WAAa,SAAU76D,GAC/BA,EAAEshB,KAAKwnC,KAAO9oD,EAAE8oD,KAChB9oD,EAAE8oD,KAAKxnC,KAAOthB,EAAEshB,KAEZthB,EAAE87D,QAAO97D,EAAE87D,MAAMD,MAAQ77D,EAAE67D,OAC3B77D,EAAE67D,QAAO77D,EAAE67D,MAAMC,MAAQ97D,EAAE87D,QAGnCjmE,KAAKgkE,OAAO2D,KAAO,SAAU3lE,EAAG7B,EAAGwG,GAE/BzM,KAAK8H,EAAIA,EAGT9H,KAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EAGTzM,KAAK+4D,KAAO,KACZ/4D,KAAKuxB,KAAO,KAGZvxB,KAAK8tB,EAAI,KAGT9tB,KAAK+rE,MAAQ,KACb/rE,KAAK8rE,MAAQ,KAGb9rE,KAAK6qE,SAAU,GAcnB/kE,KAAKogE,cAAgB,aASrBpgE,KAAKogE,cAAc0H,mBAAqB,EAWxC9nE,KAAKogE,cAAc/I,eAAiB,SAAS/K,EAAUwF,GAEnD,GAIIiW,GAJA7H,EAAKpO,EAAcoO,GACnB8H,EAAalW,EAAckW,WAC3B1/D,EAASwpD,EAAcxpD,OACvB2/D,EAASnW,EAAcoW,cAAcC,eAGtC7b,GAAS3qC,OAER3hB,KAAKogE,cAAcgI,eAAe9b,EAAU4T,EAOhD,KAAK,GAJDnrC,GAAQu3B,EAAS6O,OAAO+E,EAAGrxD,IAItB7M,EAAI,EAAGA,EAAI+yB,EAAM6H,KAAK76B,OAAQC,IAET,IAAvB+yB,EAAM6H,KAAK56B,GAAGqmE,MAEbN,EAAYhzC,EAAM6H,KAAK56B,GAEvB8vD,EAAcwW,eAAeC,YAAYjc,EAAUyb,EAAWjW,GAG9DoO,EAAGsI,aAAatI,EAAGuI,aAAc,EAAGvI,EAAGwI,eAAmD,GAAjCX,EAAUY,QAAQ5mE,OAAS,IAEpF+vD,EAAcwW,eAAeM,WAAWtc,EAAUyb,EAAWjW,KAI7DiW,EAAYhzC,EAAM6H,KAAK56B,GAGvB8vD,EAAcoW,cAAcW,UAAWZ,GACvCA,EAASnW,EAAcoW,cAAcC,gBACrCjI,EAAG4I,iBAAiBb,EAAOc,mBAAmB,EAAOzc,EAAS3nC,eAAepW,SAAQ,IAErF2xD,EAAG8I,UAAUf,EAAOgB,MAAO,GAE3B/I,EAAGgJ,UAAUjB,EAAOkB,iBAAkBnB,EAAW7nE,GAAI6nE,EAAWrhE,GAChEu5D,EAAGgJ,UAAUjB,EAAOmB,cAAe9gE,EAAOnI,GAAImI,EAAO3B,GAErDu5D,EAAGmJ,WAAWpB,EAAOqB,UAAWtpE,KAAKupE,QAAQjd,EAASkK,OAEtD0J,EAAG8I,UAAUf,EAAO1vD,MAAO+zC,EAASvmC,YAGpCm6C,EAAGsJ,WAAWtJ,EAAGuJ,aAAc1B,EAAU7V,QAEzCgO,EAAGwJ,oBAAoBzB,EAAO0B,gBAAiB,EAAGzJ,EAAG0J,OAAO,EAAO,GAAO,GAC1E1J,EAAGwJ,oBAAoBzB,EAAO4B,eAAgB,EAAG3J,EAAG0J,OAAO,EAAM,GAAO,GAGxE1J,EAAGsJ,WAAWtJ,EAAG4J,qBAAsB/B,EAAUgC,aACjD7J,EAAGsI,aAAatI,EAAG8J,eAAiBjC,EAAUY,QAAQ5mE,OAAQm+D,EAAGwI,eAAgB,KAc7F1oE,KAAKogE,cAAcgI,eAAiB,SAAS9b,EAAU4T,GAGnD,GAAInrC,GAAQu3B,EAAS6O,OAAO+E,EAAGrxD,GAE3BkmB,KAAMA,EAAQu3B,EAAS6O,OAAO+E,EAAGrxD,KAAOo7D,UAAU,EAAGrtC,QAASsjC,GAAGA,IAGrE5T,EAAS3qC,OAAQ,CAEjB,IAAI3f,EAGJ,IAAGsqD,EAASyS,WACZ,CAII,IAHAzS,EAASyS,YAAa,EAGjB/8D,EAAI,EAAGA,EAAI+yB,EAAM6H,KAAK76B,OAAQC,IACnC,CACI,GAAI26B,GAAe5H,EAAM6H,KAAK56B,EAC9B26B,GAAa/iB,QACb5Z,KAAKogE,cAAc8J,iBAAiBp9D,KAAM6vB,GAI9C5H,EAAM6H,QACN7H,EAAMk1C,UAAY,EAGtB,GAAIlC,EAKJ,KAAK/lE,EAAI+yB,EAAMk1C,UAAWjoE,EAAIsqD,EAAS3vB,aAAa56B,OAAQC,IAC5D,CACI,GAAI46B,GAAO0vB,EAAS3vB,aAAa36B,EAEjC,IAAG46B,EAAKx6B,OAASpC,KAAK+W,SAASirD,KAC/B,CAaI,GAXAplC,EAAK3rB,OAAS2rB,EAAKE,MAAM7rB,OAAOxQ,QAC7Bm8B,EAAKE,MAAMprB,SAGPkrB,EAAK3rB,OAAO,KAAO2rB,EAAK3rB,OAAO2rB,EAAK3rB,OAAOlP,OAAO,IAAM66B,EAAK3rB,OAAO,KAAO2rB,EAAK3rB,OAAO2rB,EAAK3rB,OAAOlP,OAAO,IAEzG66B,EAAK3rB,OAAOnE,KAAK8vB,EAAK3rB,OAAO,GAAI2rB,EAAK3rB,OAAO,KAKlD2rB,EAAKC,MAEDD,EAAK3rB,OAAOlP,QAAU/B,KAAKogE,cAAc0H,mBAExC,GAAGlrC,EAAK3rB,OAAOlP,OAAiD,EAAxC/B,KAAKogE,cAAc0H,mBAC3C,CACIC,EAAY/nE,KAAKogE,cAAc+J,WAAWp1C,EAAO,EAEjD,IAAIq1C,GAAqBpqE,KAAKogE,cAAciK,UAAUztC,EAAMmrC,EAGxDqC,KAGArC,EAAY/nE,KAAKogE,cAAc+J,WAAWp1C,EAAO,GACjD/0B,KAAKogE,cAAckK,iBAAiB1tC,EAAMmrC,QAM9CA,GAAY/nE,KAAKogE,cAAc+J,WAAWp1C,EAAO,GACjD/0B,KAAKogE,cAAckK,iBAAiB1tC,EAAMmrC,EAKnDnrC,GAAK+7B,UAAY,IAEhBoP,EAAY/nE,KAAKogE,cAAc+J,WAAWp1C,EAAO,GACjD/0B,KAAKogE,cAAcmK,UAAU3tC,EAAMmrC,QAMvCA,GAAY/nE,KAAKogE,cAAc+J,WAAWp1C,EAAO,GAE9C6H,EAAKx6B,OAASpC,KAAK+W,SAASyqD,KAE3BxhE,KAAKogE,cAAcoK,eAAe5tC,EAAMmrC,GAEpCnrC,EAAKx6B,OAASpC,KAAK+W,SAAS2qD,MAAQ9kC,EAAKx6B,OAASpC,KAAK+W,SAAS4qD,KAEpE3hE,KAAKogE,cAAcqK,YAAY7tC,EAAMmrC,GAEjCnrC,EAAKx6B,OAASpC,KAAK+W,SAAS0qD,MAEhCzhE,KAAKogE,cAAcsK,sBAAsB9tC,EAAMmrC,EAIvDhzC,GAAMk1C,YAIV,IAAKjoE,EAAI,EAAGA,EAAI+yB,EAAM6H,KAAK76B,OAAQC,IAE/B+lE,EAAYhzC,EAAM6H,KAAK56B,GACpB+lE,EAAUpmD,OAAMomD,EAAU4C,UAWrC3qE,KAAKogE,cAAc+J,WAAa,SAASp1C,EAAO3yB,GAE5C,GAAI2lE,EAsBJ,OApBIhzC,GAAM6H,KAAK76B,QAQXgmE,EAAYhzC,EAAM6H,KAAK7H,EAAM6H,KAAK76B,OAAO,GAEtCgmE,EAAUM,OAASjmE,GAAiB,IAATA,IAE1B2lE,EAAY/nE,KAAKogE,cAAc8J,iBAAiB7mE,OAAS,GAAIrD,MAAK4qE,kBAAkB71C,EAAMmrC,IAC1F6H,EAAUM,KAAOjmE;AACjB2yB,EAAM6H,KAAK9vB,KAAKi7D,MAZpBA,EAAY/nE,KAAKogE,cAAc8J,iBAAiB7mE,OAAS,GAAIrD,MAAK4qE,kBAAkB71C,EAAMmrC,IAC1F6H,EAAUM,KAAOjmE,EACjB2yB,EAAM6H,KAAK9vB,KAAKi7D,IAcpBA,EAAUpmD,OAAQ,EAEXomD,GAYX/nE,KAAKogE,cAAcoK,eAAiB,SAAS7tC,EAAcorC,GAKvD,GAAI8C,GAAWluC,EAAaG,MACxB38B,EAAI0qE,EAAS1qE,EACbwG,EAAIkkE,EAASlkE,EACbsD,EAAQ4gE,EAAS5gE,MACjBC,EAAS2gE,EAAS3gE,MAEtB,IAAGyyB,EAAaE,KAChB,CACI,GAAI3kB,GAAQlY,KAAKupE,QAAQ5sC,EAAa8hC,WAClClmD,EAAQokB,EAAaq+B,UAErB5zD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEfuyD,EAAQ/C,EAAU92D,OAClB03D,EAAUZ,EAAUY,QAEpBoC,EAAUD,EAAM/oE,OAAS,CAG7B+oE,GAAMh+D,KAAK3M,EAAGwG,GACdmkE,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBuyD,EAAMh+D,KAAK3M,EAAI8J,EAAOtD,GACtBmkE,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBuyD,EAAMh+D,KAAK3M,EAAIwG,EAAIuD,GACnB4gE,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBuyD,EAAMh+D,KAAK3M,EAAI8J,EAAOtD,EAAIuD,GAC1B4gE,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAGpBowD,EAAQ77D,KAAKi+D,EAASA,EAASA,EAAU,EAAGA,EAAU,EAAGA,EAAU,EAAGA,EAAU,GAGpF,GAAIpuC,EAAag8B,UACjB,CACI,GAAIqS,GAAaruC,EAAa1rB,MAE9B0rB,GAAa1rB,QAAU9Q,EAAGwG,EAChBxG,EAAI8J,EAAOtD,EACXxG,EAAI8J,EAAOtD,EAAIuD,EACf/J,EAAGwG,EAAIuD,EACP/J,EAAGwG,GAGb3G,KAAKogE,cAAcmK,UAAU5tC,EAAcorC,GAE3CprC,EAAa1rB,OAAS+5D,IAa9BhrE,KAAKogE,cAAcsK,sBAAwB,SAAS/tC,EAAcorC,GAE9D,GAAIkD,GAAYtuC,EAAaG,MACzB38B,EAAI8qE,EAAU9qE,EACdwG,EAAIskE,EAAUtkE,EACdsD,EAAQghE,EAAUhhE,MAClBC,EAAS+gE,EAAU/gE,OAEnB3C,EAAS0jE,EAAU1jE,OAEnB2jE,IAOJ,IANAA,EAAUp+D,KAAK3M,EAAGwG,EAAIY,GACtB2jE,EAAYA,EAAUnqE,OAAOf,KAAKogE,cAAc+K,qBAAqBhrE,EAAGwG,EAAIuD,EAAS3C,EAAQpH,EAAGwG,EAAIuD,EAAQ/J,EAAIoH,EAAQZ,EAAIuD,IAC5HghE,EAAYA,EAAUnqE,OAAOf,KAAKogE,cAAc+K,qBAAqBhrE,EAAI8J,EAAQ1C,EAAQZ,EAAIuD,EAAQ/J,EAAI8J,EAAOtD,EAAIuD,EAAQ/J,EAAI8J,EAAOtD,EAAIuD,EAAS3C,IACpJ2jE,EAAYA,EAAUnqE,OAAOf,KAAKogE,cAAc+K,qBAAqBhrE,EAAI8J,EAAOtD,EAAIY,EAAQpH,EAAI8J,EAAOtD,EAAGxG,EAAI8J,EAAQ1C,EAAQZ,IAC9HukE,EAAYA,EAAUnqE,OAAOf,KAAKogE,cAAc+K,qBAAqBhrE,EAAIoH,EAAQZ,EAAGxG,EAAGwG,EAAGxG,EAAGwG,EAAIY,IAE7Fo1B,EAAaE,KAAM,CACnB,GAAI3kB,GAAQlY,KAAKupE,QAAQ5sC,EAAa8hC,WAClClmD,EAAQokB,EAAaq+B,UAErB5zD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEfuyD,EAAQ/C,EAAU92D,OAClB03D,EAAUZ,EAAUY,QAEpByC,EAASN,EAAM/oE,OAAS,EAExBwiE,EAAYvkE,KAAKgkE,OAAO5B,YAAY8I,EAAW,KAAM,GAErDlpE,EAAI,CAER,KAAKA,EAAI,EAAGA,EAAIuiE,EAAUxiE,OAAQC,GAAG,EAEjC2mE,EAAQ77D,KAAKy3D,EAAUviE,GAAKopE,GAC5BzC,EAAQ77D,KAAKy3D,EAAUviE,GAAKopE,GAC5BzC,EAAQ77D,KAAKy3D,EAAUviE,EAAE,GAAKopE,GAC9BzC,EAAQ77D,KAAKy3D,EAAUviE,EAAE,GAAKopE,GAC9BzC,EAAQ77D,KAAKy3D,EAAUviE,EAAE,GAAKopE,EAIlC,KAAKppE,EAAI,EAAGA,EAAIkpE,EAAUnpE,OAAQC,IAE9B8oE,EAAMh+D,KAAKo+D,EAAUlpE,GAAIkpE,IAAYlpE,GAAIoF,EAAG4d,EAAGjc,EAAGwP,GAI1D,GAAIokB,EAAag8B,UAAW,CACxB,GAAIqS,GAAaruC,EAAa1rB,MAE9B0rB,GAAa1rB,OAASi6D,EAEtBlrE,KAAKogE,cAAcmK,UAAU5tC,EAAcorC,GAE3CprC,EAAa1rB,OAAS+5D,IAmB9BhrE,KAAKogE,cAAc+K,qBAAuB,SAAS/O,EAAOC,EAAOP,EAAKC,EAAKC,EAAKC,GAW5E,QAASoP,GAAMC,EAAKC,EAAIC,GACpB,GAAIC,GAAOF,EAAKD,CAEhB,OAAOA,GAAOG,EAAOD,EAIzB,IAAK,GAhBDtP,GACAC,EACAuP,EACAC,EACAxrE,EACAwG,EACAmZ,EAAI,GACJ7O,KAQAc,EAAI,EACC/P,EAAI,EAAGA,GAAK8d,EAAG9d,IAEpB+P,EAAI/P,EAAI8d,EAGRo8C,EAAKmP,EAAOjP,EAAQN,EAAM/pD,GAC1BoqD,EAAKkP,EAAOhP,EAAQN,EAAMhqD,GAC1B25D,EAAKL,EAAOvP,EAAME,EAAMjqD,GACxB45D,EAAKN,EAAOtP,EAAME,EAAMlqD,GAGxB5R,EAAIkrE,EAAOnP,EAAKwP,EAAK35D,GACrBpL,EAAI0kE,EAAOlP,EAAKwP,EAAK55D,GAErBd,EAAOnE,KAAK3M,EAAGwG,EAEnB,OAAOsK,IAYXjR,KAAKogE,cAAcqK,YAAc,SAAS9tC,EAAcorC,GAGpD,GAGI99D,GACAC,EAJA0hE,EAAajvC,EAAaG,MAC1B38B,EAAIyrE,EAAWzrE,EACfwG,EAAIilE,EAAWjlE,CAKhBg2B,GAAav6B,OAASpC,KAAK+W,SAAS2qD,MAEnCz3D,EAAQ2hE,EAAWrkE,OACnB2C,EAAS0hE,EAAWrkE,SAIpB0C,EAAQ2hE,EAAW3hE,MACnBC,EAAS0hE,EAAW1hE,OAGxB,IAAI2hE,GAAY,GACZC,EAAiB,EAAV7rE,KAAK+G,GAAU6kE,EAEtB7pE,EAAI,CAER,IAAG26B,EAAaE,KAChB,CACI,GAAI3kB,GAAQlY,KAAKupE,QAAQ5sC,EAAa8hC,WAClClmD,EAAQokB,EAAaq+B,UAErB5zD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEfuyD,EAAQ/C,EAAU92D,OAClB03D,EAAUZ,EAAUY,QAEpByC,EAASN,EAAM/oE,OAAS,CAI5B,KAFA4mE,EAAQ77D,KAAKs+D,GAERppE,EAAI,EAAGA,EAAI6pE,EAAY,EAAI7pE,IAE5B8oE,EAAMh+D,KAAK3M,EAAEwG,EAAGS,EAAG4d,EAAGjc,EAAGwP,GAEzBuyD,EAAMh+D,KAAK3M,EAAIF,KAAKqH,IAAIwkE,EAAM9pE,GAAKiI,EACxBtD,EAAI1G,KAAKoH,IAAIykE,EAAM9pE,GAAKkI,EACxB9C,EAAG4d,EAAGjc,EAAGwP,GAEpBowD,EAAQ77D,KAAKs+D,IAAUA,IAG3BzC,GAAQ77D,KAAKs+D,EAAO,GAGxB,GAAGzuC,EAAag8B,UAChB,CACI,GAAIqS,GAAaruC,EAAa1rB,MAI9B,KAFA0rB,EAAa1rB,UAERjP,EAAI,EAAGA,EAAI6pE,EAAY,EAAG7pE,IAE3B26B,EAAa1rB,OAAOnE,KAAK3M,EAAIF,KAAKqH,IAAIwkE,EAAM9pE,GAAKiI,EACxBtD,EAAI1G,KAAKoH,IAAIykE,EAAM9pE,GAAKkI,EAGrDlK,MAAKogE,cAAcmK,UAAU5tC,EAAcorC,GAE3CprC,EAAa1rB,OAAS+5D,IAa9BhrE,KAAKogE,cAAcmK,UAAY,SAAS5tC,EAAcorC,GAGlD,GAAI/lE,GAAI,EACJiP,EAAS0rB,EAAa1rB,MAC1B,IAAqB,IAAlBA,EAAOlP,OAAV,CAGA,GAAG46B,EAAag8B,UAAU,EAEtB,IAAK32D,EAAI,EAAGA,EAAIiP,EAAOlP,OAAQC,IAC3BiP,EAAOjP,IAAM,EAKrB,IAAI+pE,GAAa,GAAI/rE,MAAKkH,MAAO+J,EAAO,GAAIA,EAAO,IAC/C+6D,EAAY,GAAIhsE,MAAKkH,MAAO+J,EAAOA,EAAOlP,OAAS,GAAIkP,EAAOA,EAAOlP,OAAS,GAGlF,IAAGgqE,EAAW5rE,IAAM6rE,EAAU7rE,GAAK4rE,EAAWplE,IAAMqlE,EAAUrlE,EAC9D,CAEIsK,EAASA,EAAOxQ,QAEhBwQ,EAAO5N,MACP4N,EAAO5N,MAEP2oE,EAAY,GAAIhsE,MAAKkH,MAAO+J,EAAOA,EAAOlP,OAAS,GAAIkP,EAAOA,EAAOlP,OAAS,GAE9E,IAAIkqE,GAAYD,EAAU7rE,EAAkC,IAA7B4rE,EAAW5rE,EAAI6rE,EAAU7rE,GACpD+rE,EAAYF,EAAUrlE,EAAkC,IAA7BolE,EAAWplE,EAAIqlE,EAAUrlE,EAExDsK,GAAOk7D,QAAQF,EAAWC,GAC1Bj7D,EAAOnE,KAAKm/D,EAAWC,GAG3B,GAgBI7nE,GAAIgqC,EAAI+9B,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACjCC,EAAOC,EAAOC,EAAQC,EAAQC,EAAQC,EACtC7/D,EAAIE,EAAIE,EAAIH,EAAIE,EAAIE,EACpBC,EAAOw/D,EAAOC,EAnBdnC,EAAQ/C,EAAU92D,OAClB03D,EAAUZ,EAAUY,QACpB5mE,EAASkP,EAAOlP,OAAS,EACzBmrE,EAAaj8D,EAAOlP,OACpBorE,EAAarC,EAAM/oE,OAAO,EAG1BkI,EAAQ0yB,EAAag8B,UAAY,EAGjCzgD,EAAQlY,KAAKupE,QAAQ5sC,EAAas+B,WAClC1iD,EAAQokB,EAAa++B,UACrBt0D,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,CA8BnB,KAvBA6zD,EAAMn7D,EAAO,GACbo7D,EAAMp7D,EAAO,GAEbq7D,EAAMr7D,EAAO,GACbs7D,EAAMt7D,EAAO,GAEby7D,IAAUL,EAAME,GAChBI,EAASP,EAAME,EAEfW,EAAOhtE,KAAKmK,KAAKsiE,EAAMA,EAAQC,EAAMA,GAErCD,GAASO,EACTN,GAASM,EACTP,GAASziE,EACT0iE,GAAS1iE,EAGT6gE,EAAMh+D,KAAKs/D,EAAMM,EAAQL,EAAMM,EACnBvlE,EAAG4d,EAAGjc,EAAGwP,GAErBuyD,EAAMh+D,KAAKs/D,EAAMM,EAAQL,EAAMM,EACnBvlE,EAAG4d,EAAGjc,EAAGwP,GAEhBvW,EAAI,EAAGA,EAAID,EAAO,EAAGC,IAEtBoqE,EAAMn7D,EAAa,GAALjP,EAAE,IAChBqqE,EAAMp7D,EAAa,GAALjP,EAAE,GAAO,GAEvBsqE,EAAMr7D,EAAW,EAAJ,GACbs7D,EAAMt7D,EAAW,EAAJ,EAAQ,GAErBu7D,EAAMv7D,EAAa,GAALjP,EAAE,IAChByqE,EAAMx7D,EAAa,GAALjP,EAAE,GAAO,GAEvB0qE,IAAUL,EAAME,GAChBI,EAAQP,EAAME,EAEdW,EAAOhtE,KAAKmK,KAAKsiE,EAAMA,EAAQC,EAAMA,GACrCD,GAASO,EACTN,GAASM,EACTP,GAASziE,EACT0iE,GAAS1iE,EAET2iE,IAAWL,EAAME,GACjBI,EAASP,EAAME,EAEfS,EAAOhtE,KAAKmK,KAAKwiE,EAAOA,EAASC,EAAOA,GACxCD,GAAUK,EACVJ,GAAUI,EACVL,GAAU3iE,EACV4iE,GAAU5iE,EAEViD,GAAOy/D,EAAQN,IAASM,EAAQJ,GAChCn/D,GAAOs/D,EAAQJ,IAASI,EAAQN,GAChC9+D,IAAOo/D,EAAQN,KAASO,EAAQJ,KAASG,EAAQJ,KAASK,EAAQN,GAClEl/D,GAAO0/D,EAASJ,IAASI,EAASN,GAClCl/D,GAAOu/D,EAASN,IAASM,EAASJ,GAClCj/D,IAAOq/D,EAASJ,KAASK,EAASN,KAASK,EAASN,KAASO,EAASJ,GAEtEj/D,EAAQN,EAAGG,EAAKF,EAAGC,EAEhBnN,KAAKoJ,IAAImE,GAAS,IAGjBA,GAAO,KACPs9D,EAAMh+D,KAAKw/D,EAAMI,EAAQH,EAAMI,EAC3BvlE,EAAG4d,EAAGjc,EAAGwP,GAEbuyD,EAAMh+D,KAAKw/D,EAAMI,EAAQH,EAAMI,EAC3BvlE,EAAG4d,EAAGjc,EAAGwP,KAKjBlU,GAAM+I,EAAGG,EAAKF,EAAGC,GAAIE,EACrB6gC,GAAMlhC,EAAGG,EAAKJ,EAAGK,GAAIC,EAGrBw/D,GAAS3oE,EAAIioE,IAAQjoE,EAAIioE,IAAQj+B,EAAIk+B,IAAQl+B,EAAIk+B,GAG9CS,EAAQ,OAEPF,EAASJ,EAAQE,EACjBG,EAASJ,EAAQE,EAEjBI,EAAOhtE,KAAKmK,KAAK0iE,EAAOA,EAASC,EAAOA,GACxCD,GAAUG,EACVF,GAAUE,EACVH,GAAU7iE,EACV8iE,GAAU9iE,EAEV6gE,EAAMh+D,KAAKw/D,EAAMQ,EAAQP,EAAKQ,GAC9BjC,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBuyD,EAAMh+D,KAAKw/D,EAAMQ,EAAQP,EAAKQ,GAC9BjC,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBuyD,EAAMh+D,KAAKw/D,EAAMQ,EAAQP,EAAKQ,GAC9BjC,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpB20D,MAKApC,EAAMh+D,KAAKzI,EAAKgqC,GAChBy8B,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBuyD,EAAMh+D,KAAKw/D,GAAOjoE,EAAGioE,GAAMC,GAAOl+B,EAAKk+B,IACvCzB,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,IA2B5B,KAvBA6zD,EAAMn7D,EAAkB,GAAVlP,EAAO,IACrBsqE,EAAMp7D,EAAkB,GAAVlP,EAAO,GAAO,GAE5BuqE,EAAMr7D,EAAkB,GAAVlP,EAAO,IACrBwqE,EAAMt7D,EAAkB,GAAVlP,EAAO,GAAO,GAE5B2qE,IAAUL,EAAME,GAChBI,EAAQP,EAAME,EAEdW,EAAOhtE,KAAKmK,KAAKsiE,EAAMA,EAAQC,EAAMA,GACrCD,GAASO,EACTN,GAASM,EACTP,GAASziE,EACT0iE,GAAS1iE,EAET6gE,EAAMh+D,KAAKw/D,EAAMI,EAAQH,EAAMI,GAC/B7B,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBuyD,EAAMh+D,KAAKw/D,EAAMI,EAAQH,EAAMI,GAC/B7B,EAAMh+D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBowD,EAAQ77D,KAAKqgE,GAERnrE,EAAI,EAAGA,EAAIkrE,EAAYlrE,IAExB2mE,EAAQ77D,KAAKqgE,IAGjBxE,GAAQ77D,KAAKqgE,EAAW,KAY5BntE,KAAKogE,cAAckK,iBAAmB,SAAS3tC,EAAcorC,GAGzD,GAAI92D,GAAS0rB,EAAa1rB,OAAOxQ,OACjC,MAAGwQ,EAAOlP,OAAS,GAAnB,CAGA,GAAI4mE,GAAUZ,EAAUY,OACxBZ,GAAU92D,OAASA,EACnB82D,EAAUxvD,MAAQokB,EAAaq+B,UAC/B+M,EAAU7vD,MAAQlY,KAAKupE,QAAQ5sC,EAAa8hC,UAc5C,KAAK,GAHDt+D,GAAEwG,EANF6jD,EAAO+W,EAAAA,EACP7W,IAAQ6W,EAAAA,GAER9W,EAAO8W,EAAAA,EACP5W,IAAQ4W,EAAAA,GAKHv/D,EAAI,EAAGA,EAAIiP,EAAOlP,OAAQC,GAAG,EAElC7B,EAAI8Q,EAAOjP,GACX2E,EAAIsK,EAAOjP,EAAE,GAEbwoD,EAAOrqD,EAAIqqD,EAAOrqD,EAAIqqD,EACtBE,EAAOvqD,EAAIuqD,EAAOvqD,EAAIuqD,EAEtBD,EAAO9jD,EAAI8jD,EAAO9jD,EAAI8jD,EACtBE,EAAOhkD,EAAIgkD,EAAOhkD,EAAIgkD,CAI1B15C,GAAOnE,KAAK09C,EAAMC,EACNC,EAAMD,EACNC,EAAMC,EACNH,EAAMG,EAKlB,IAAI5oD,GAASkP,EAAOlP,OAAS,CAC7B,KAAKC,EAAI,EAAGA,EAAID,EAAQC,IAEpB2mE,EAAQ77D,KAAM9K,KActBhC,KAAKogE,cAAciK,UAAY,SAAS1tC,EAAcorC,GAElD,GAAI92D,GAAS0rB,EAAa1rB,MAE1B,MAAGA,EAAOlP,OAAS,GAAnB,CAEA,GAAI+oE,GAAQ/C,EAAU92D,OAClB03D,EAAUZ,EAAUY,QAEpB5mE,EAASkP,EAAOlP,OAAS,EAGzBmW,EAAQlY,KAAKupE,QAAQ5sC,EAAa8hC,WAClClmD,EAAQokB,EAAaq+B,UACrB5zD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEfgsD,EAAYvkE,KAAKgkE,OAAO5B,YAAYnxD,EAAQ,KAAM,EAEtD,KAAIszD,EAAU,OAAO,CAErB,IAAIwG,GAAUD,EAAM/oE,OAAS,EAEzBC,EAAI,CAER,KAAKA,EAAI,EAAGA,EAAIuiE,EAAUxiE,OAAQC,GAAG,EAEjC2mE,EAAQ77D,KAAKy3D,EAAUviE,GAAK+oE,GAC5BpC,EAAQ77D,KAAKy3D,EAAUviE,GAAK+oE,GAC5BpC,EAAQ77D,KAAKy3D,EAAUviE,EAAE,GAAK+oE,GAC9BpC,EAAQ77D,KAAKy3D,EAAUviE,EAAE,GAAI+oE,GAC7BpC,EAAQ77D,KAAKy3D,EAAUviE,EAAE,GAAK+oE,EAGlC,KAAK/oE,EAAI,EAAGA,EAAID,EAAQC,IAEpB8oE,EAAMh+D,KAAKmE,EAAW,EAAJjP,GAAQiP,EAAW,EAAJjP,EAAQ,GAC9BoF,EAAG4d,EAAGjc,EAAGwP,EAGxB,QAAO,IAGXvY,KAAKogE,cAAc8J,oBAOnBlqE,KAAK4qE,kBAAoB,SAAS1K,GAE9BhmE,KAAKgmE,GAAKA,EAGVhmE,KAAKge,OAAS,EAAE,EAAE,GAClBhe,KAAK+W,UACL/W,KAAKyuE,WACLzuE,KAAKg4D,OAASgO,EAAGkN,eACjBlzE,KAAK6vE,YAAc7J,EAAGkN,eACtBlzE,KAAKmuE,KAAO,EACZnuE,KAAKqe,MAAQ,EACbre,KAAKynB,OAAQ,GAMjB3hB,KAAK4qE,kBAAkBrqE,UAAUqZ,MAAQ,WAErC1f,KAAK+W,UACL/W,KAAKyuE,YAMT3oE,KAAK4qE,kBAAkBrqE,UAAUoqE,OAAS,WAEtC,GAAIzK,GAAKhmE,KAAKgmE,EAGdhmE,MAAKmzE,SAAW,GAAIrtE,MAAKyO,aAAavU,KAAK+W,QAE3CivD,EAAGsJ,WAAWtJ,EAAGuJ,aAAcvvE,KAAKg4D,QACpCgO,EAAGoN,WAAWpN,EAAGuJ,aAAcvvE,KAAKmzE,SAAUnN,EAAGqN,aAEjDrzE,KAAKszE,WAAa,GAAIxtE,MAAKytE,YAAYvzE,KAAKyuE,SAE5CzI,EAAGsJ,WAAWtJ,EAAG4J,qBAAsB5vE,KAAK6vE,aAC5C7J,EAAGoN,WAAWpN,EAAG4J,qBAAsB5vE,KAAKszE,WAAYtN,EAAGqN,aAE3DrzE,KAAKynB,OAAQ,GAcjB3hB,KAAKo3D,eAAiB,aAYtBp3D,KAAKo3D,eAAeC,eAAiB,SAAS/K,EAAU/tC,GAEpD,GAAIwH,GAAaumC,EAASvmC,UAEtBumC,GAAS3qC,QAETznB,KAAKwzE,mBAAmBphB,GACxBA,EAAS3qC,OAAQ,EAGrB,KAAK,GAAI3f,GAAI,EAAGA,EAAIsqD,EAAS3vB,aAAa56B,OAAQC,IAClD,CACI,GAAI46B,GAAO0vB,EAAS3vB,aAAa36B,GAC7B86B,EAAQF,EAAKE,MAEb2hC,EAAY7hC,EAAKslC,UACjBjH,EAAYr+B,EAAKqlC,SAIrB,IAFA1jD,EAAQo6C,UAAY/7B,EAAK+7B,UAErB/7B,EAAKx6B,OAASpC,KAAK+W,SAASirD,KAChC,CACIzjD,EAAQ+5C,WAER,IAAIrnD,GAAS6rB,EAAM7rB,MAEnBsN,GAAQk6C,OAAOxnD,EAAO,GAAIA,EAAO,GAEjC,KAAK,GAAIc,GAAE,EAAGA,EAAId,EAAOlP,OAAO,EAAGgQ,IAE/BwM,EAAQm6C,OAAOznD,EAAW,EAAJc,GAAQd,EAAW,EAAJc,EAAQ,GAG7C+qB,GAAMprB,QAEN6M,EAAQm6C,OAAOznD,EAAO,GAAIA,EAAO,IAIjCA,EAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAAMkP,EAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAE5Ewc,EAAQi6C,YAGR57B,EAAKC,OAELte,EAAQs4C,YAAcj6B,EAAKo+B,UAAYj1C,EACvCxH,EAAQo1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe/8D,SAAS,KAAK4C,QAAO,GAC3Eia,EAAQse,QAGRD,EAAK+7B,YAELp6C,EAAQs4C,YAAcj6B,EAAK8+B,UAAY31C,EACvCxH,EAAQq6C,YAAc,KAAO,SAAwB,EAAZqC,GAAev5D,SAAS,KAAK4C,QAAO,GAC7Eia,EAAQs6C,cAGX,IAAIj8B,EAAKx6B,OAASpC,KAAK+W,SAASyqD,MAE7B5kC,EAAK6hC,WAAgC,IAAnB7hC,EAAK6hC,aAEvBlgD,EAAQs4C,YAAcj6B,EAAKo+B,UAAYj1C,EACvCxH,EAAQo1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe/8D,SAAS,KAAK4C,QAAO,GAC3Eia,EAAQq1C,SAAS92B,EAAM38B,EAAG28B,EAAMn2B,EAAGm2B,EAAM7yB,MAAO6yB,EAAM5yB,SAGtD0yB,EAAK+7B,YAELp6C,EAAQs4C,YAAcj6B,EAAK8+B,UAAY31C,EACvCxH,EAAQq6C,YAAc,KAAO,SAAwB,EAAZqC,GAAev5D,SAAS,KAAK4C,QAAO,GAC7Eia,EAAQovD,WAAW7wC,EAAM38B,EAAG28B,EAAMn2B,EAAGm2B,EAAM7yB,MAAO6yB,EAAM5yB,aAG3D,IAAI0yB,EAAKx6B,OAASpC,KAAK+W,SAAS2qD,KAGjCnjD,EAAQ+5C,YACR/5C,EAAQg6C,IAAIz7B,EAAM38B,EAAG28B,EAAMn2B,EAAGm2B,EAAMv1B,OAAO,EAAE,EAAEtH,KAAK+G,IACpDuX,EAAQi6C,YAEJ57B,EAAKC,OAELte,EAAQs4C,YAAcj6B,EAAKo+B,UAAYj1C,EACvCxH,EAAQo1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe/8D,SAAS,KAAK4C,QAAO,GAC3Eia,EAAQse,QAGRD,EAAK+7B,YAELp6C,EAAQs4C,YAAcj6B,EAAK8+B,UAAY31C,EACvCxH,EAAQq6C,YAAc,KAAO,SAAwB,EAAZqC,GAAev5D,SAAS,KAAK4C,QAAO,GAC7Eia,EAAQs6C,cAGX,IAAIj8B,EAAKx6B,OAASpC,KAAK+W,SAAS4qD,KACrC,CAGI,GAAInqD,GAAkB,EAAdslB,EAAM7yB,MACVwN,EAAmB,EAAfqlB,EAAM5yB,OAEV/J,EAAI28B,EAAM38B,EAAIqX,EAAE,EAChB7Q,EAAIm2B,EAAMn2B,EAAI8Q,EAAE,CAEpB8G,GAAQ+5C,WAER,IAAIsV,GAAQ,SACRC,EAAMr2D,EAAI,EAAKo2D,EACfE,EAAMr2D,EAAI,EAAKm2D,EACfG,EAAK5tE,EAAIqX,EACTw2D,EAAKrnE,EAAI8Q,EACTw2D,EAAK9tE,EAAIqX,EAAI,EACb02D,EAAKvnE,EAAI8Q,EAAI,CAEjB8G,GAAQk6C,OAAOt4D,EAAG+tE,GAClB3vD,EAAQ+9C,cAAcn8D,EAAG+tE,EAAKJ,EAAIG,EAAKJ,EAAIlnE,EAAGsnE,EAAItnE,GAClD4X,EAAQ+9C,cAAc2R,EAAKJ,EAAIlnE,EAAGonE,EAAIG,EAAKJ,EAAIC,EAAIG,GACnD3vD,EAAQ+9C,cAAcyR,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACpDzvD,EAAQ+9C,cAAc2R,EAAKJ,EAAIG,EAAI7tE,EAAG+tE,EAAKJ,EAAI3tE,EAAG+tE,GAElD3vD,EAAQi6C,YAEJ57B,EAAKC,OAELte,EAAQs4C,YAAcj6B,EAAKo+B,UAAYj1C,EACvCxH,EAAQo1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe/8D,SAAS,KAAK4C,QAAO,GAC3Eia,EAAQse,QAGRD,EAAK+7B,YAELp6C,EAAQs4C,YAAcj6B,EAAK8+B,UAAY31C,EACvCxH,EAAQq6C,YAAc,KAAO,SAAwB,EAAZqC,GAAev5D,SAAS,KAAK4C,QAAO,GAC7Eia,EAAQs6C,cAGX,IAAIj8B,EAAKx6B,OAASpC,KAAK+W,SAAS0qD,KACrC,CACI,GAAI5tD,GAAKipB,EAAM38B,EACX2T,EAAKgpB,EAAMn2B,EACXsD,EAAQ6yB,EAAM7yB,MACdC,EAAS4yB,EAAM5yB,OACf3C,EAASu1B,EAAMv1B,OAEf4mE,EAAYluE,KAAKkM,IAAIlC,EAAOC,GAAU,EAAI,CAC9C3C,GAASA,EAAS4mE,EAAYA,EAAY5mE,EAE1CgX,EAAQ+5C,YACR/5C,EAAQk6C,OAAO5kD,EAAIC,EAAKvM,GACxBgX,EAAQm6C,OAAO7kD,EAAIC,EAAK5J,EAAS3C,GACjCgX,EAAQs9C,iBAAiBhoD,EAAIC,EAAK5J,EAAQ2J,EAAKtM,EAAQuM,EAAK5J,GAC5DqU,EAAQm6C,OAAO7kD,EAAK5J,EAAQ1C,EAAQuM,EAAK5J,GACzCqU,EAAQs9C,iBAAiBhoD,EAAK5J,EAAO6J,EAAK5J,EAAQ2J,EAAK5J,EAAO6J,EAAK5J,EAAS3C,GAC5EgX,EAAQm6C,OAAO7kD,EAAK5J,EAAO6J,EAAKvM,GAChCgX,EAAQs9C,iBAAiBhoD,EAAK5J,EAAO6J,EAAID,EAAK5J,EAAQ1C,EAAQuM,GAC9DyK,EAAQm6C,OAAO7kD,EAAKtM,EAAQuM,GAC5ByK,EAAQs9C,iBAAiBhoD,EAAIC,EAAID,EAAIC,EAAKvM,GAC1CgX,EAAQi6C,aAEJ57B,EAAK6hC,WAAgC,IAAnB7hC,EAAK6hC,aAEvBlgD,EAAQs4C,YAAcj6B,EAAKo+B,UAAYj1C,EACvCxH,EAAQo1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe/8D,SAAS,KAAK4C,QAAO,GAC3Eia,EAAQse,QAGRD,EAAK+7B,YAELp6C,EAAQs4C,YAAcj6B,EAAK8+B,UAAY31C,EACvCxH,EAAQq6C,YAAc,KAAO,SAAwB,EAAZqC,GAAev5D,SAAS,KAAK4C,QAAO,GAC7Eia,EAAQs6C,aAgBxB74D,KAAKo3D,eAAegX,mBAAqB,SAAS9hB,EAAU/tC,GAExD,GAAIzc,GAAMwqD,EAAS3vB,aAAa56B,MAEhC,IAAY,IAARD,EAAJ,CAKAyc,EAAQ+5C,WAER,KAAK,GAAIt2D,GAAI,EAAGA,EAAIF,EAAKE,IACzB,CACI,GAAI46B,GAAO0vB,EAAS3vB,aAAa36B,GAC7B86B,EAAQF,EAAKE,KAEjB,IAAIF,EAAKx6B,OAASpC,KAAK+W,SAASirD,KAChC,CAEI,GAAI/wD,GAAS6rB,EAAM7rB,MAEnBsN,GAAQk6C,OAAOxnD,EAAO,GAAIA,EAAO,GAEjC,KAAK,GAAIc,GAAE,EAAGA,EAAId,EAAOlP,OAAO,EAAGgQ,IAE/BwM,EAAQm6C,OAAOznD,EAAW,EAAJc,GAAQd,EAAW,EAAJc,EAAQ,GAI7Cd,GAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAAMkP,EAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAE5Ewc,EAAQi6C,gBAIX,IAAI57B,EAAKx6B,OAASpC,KAAK+W,SAASyqD,KAEjCjjD,EAAQ3Q,KAAKkvB,EAAM38B,EAAG28B,EAAMn2B,EAAGm2B,EAAM7yB,MAAO6yB,EAAM5yB,QAClDqU,EAAQi6C,gBAEP,IAAI57B,EAAKx6B,OAASpC,KAAK+W,SAAS2qD,KAGjCnjD,EAAQg6C,IAAIz7B,EAAM38B,EAAG28B,EAAMn2B,EAAGm2B,EAAMv1B,OAAQ,EAAG,EAAItH,KAAK+G,IACxDuX,EAAQi6C,gBAEP,IAAI57B,EAAKx6B,OAASpC,KAAK+W,SAAS4qD,KACrC,CAII,GAAInqD,GAAkB,EAAdslB,EAAM7yB,MACVwN,EAAmB,EAAfqlB,EAAM5yB,OAEV/J,EAAI28B,EAAM38B,EAAIqX,EAAE,EAChB7Q,EAAIm2B,EAAMn2B,EAAI8Q,EAAE,EAEhBm2D,EAAQ,SACRC,EAAMr2D,EAAI,EAAKo2D,EACfE,EAAMr2D,EAAI,EAAKm2D,EACfG,EAAK5tE,EAAIqX,EACTw2D,EAAKrnE,EAAI8Q,EACTw2D,EAAK9tE,EAAIqX,EAAI,EACb02D,EAAKvnE,EAAI8Q,EAAI,CAEjB8G,GAAQk6C,OAAOt4D,EAAG+tE,GAClB3vD,EAAQ+9C,cAAcn8D,EAAG+tE,EAAKJ,EAAIG,EAAKJ,EAAIlnE,EAAGsnE,EAAItnE,GAClD4X,EAAQ+9C,cAAc2R,EAAKJ,EAAIlnE,EAAGonE,EAAIG,EAAKJ,EAAIC,EAAIG,GACnD3vD,EAAQ+9C,cAAcyR,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACpDzvD,EAAQ+9C,cAAc2R,EAAKJ,EAAIG,EAAI7tE,EAAG+tE,EAAKJ,EAAI3tE,EAAG+tE,GAClD3vD,EAAQi6C,gBAEP,IAAI57B,EAAKx6B,OAASpC,KAAK+W,SAAS0qD,KACrC,CAEI,GAAI5tD,GAAKipB,EAAM38B,EACX2T,EAAKgpB,EAAMn2B,EACXsD,EAAQ6yB,EAAM7yB,MACdC,EAAS4yB,EAAM5yB,OACf3C,EAASu1B,EAAMv1B,OAEf4mE,EAAYluE,KAAKkM,IAAIlC,EAAOC,GAAU,EAAI,CAC9C3C,GAASA,EAAS4mE,EAAYA,EAAY5mE,EAE1CgX,EAAQk6C,OAAO5kD,EAAIC,EAAKvM,GACxBgX,EAAQm6C,OAAO7kD,EAAIC,EAAK5J,EAAS3C,GACjCgX,EAAQs9C,iBAAiBhoD,EAAIC,EAAK5J,EAAQ2J,EAAKtM,EAAQuM,EAAK5J,GAC5DqU,EAAQm6C,OAAO7kD,EAAK5J,EAAQ1C,EAAQuM,EAAK5J,GACzCqU,EAAQs9C,iBAAiBhoD,EAAK5J,EAAO6J,EAAK5J,EAAQ2J,EAAK5J,EAAO6J,EAAK5J,EAAS3C,GAC5EgX,EAAQm6C,OAAO7kD,EAAK5J,EAAO6J,EAAKvM,GAChCgX,EAAQs9C,iBAAiBhoD,EAAK5J,EAAO6J,EAAID,EAAK5J,EAAQ1C,EAAQuM,GAC9DyK,EAAQm6C,OAAO7kD,EAAKtM,EAAQuM,GAC5ByK,EAAQs9C,iBAAiBhoD,EAAIC,EAAID,EAAIC,EAAKvM,GAC1CgX,EAAQi6C,gBAKpBx4D,KAAKo3D,eAAesW,mBAAqB,SAASphB,GAE9C,GAAsB,WAAlBA,EAASkK,KASb,IAAK,GAJD6X,IAAS/hB,EAASkK,MAAQ,GAAK,KAAQ,IACvC8X,GAAShiB,EAASkK,MAAQ,EAAI,KAAQ,IACtC+X,GAAyB,IAAhBjiB,EAASkK,MAAc,IAE3Bx0D,EAAI,EAAGA,EAAIsqD,EAAS3vB,aAAa56B,OAAQC,IAClD,CACI,GAAI46B,GAAO0vB,EAAS3vB,aAAa36B,GAE7By8D,EAA6B,EAAjB7hC,EAAK6hC,UACjBxD,EAA6B,EAAjBr+B,EAAKq+B,SAErBr+B,GAAKslC,YAAezD,GAAa,GAAK,KAAQ,IAAM4P,EAAM,KAAO,MAAQ5P,GAAa,EAAI,KAAQ,IAAM6P,EAAM,KAAO,IAAmB,IAAZ7P,GAAoB,IAAM8P,EAAM,IAC5J3xC,EAAKqlC,YAAehH,GAAa,GAAK,KAAQ,IAAMoT,EAAM,KAAO,MAAQpT,GAAa,EAAI,KAAQ,IAAMqT,EAAM,KAAO,IAAmB,IAAZrT,GAAoB,IAAMsT,EAAM,MAuDpKh0E,EAAOwc,SAAW,SAAUrC,EAAMvU,EAAGwG,GAEvB/C,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GAM3BzM,KAAKkI,KAAO7H,EAAOe,SAMnBpB,KAAK+tB,YAAc1tB,EAAOY,OAM1BjB,KAAKqpB,OAAS,GAAIhpB,GAAO2M,MAEzBlH,KAAK+W,SAAS/V,KAAK9G,MAEnBK,EAAOymD,UAAUkB,KAAK1nC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAG,GAAI,OAI1DpM,EAAOwc,SAASxW,UAAYkB,OAAOmZ,OAAO5a,KAAK+W,SAASxW,WACxDhG,EAAOwc,SAASxW,UAAU8B,YAAc9H,EAAOwc,SAE/Cxc,EAAOymD,UAAUkB,KAAKC,QAAQnhD,KAAKzG,EAAOwc,SAASxW,WAC/C,QACA,WACA,SACA,UACA,gBACA,eACA,UACA,WACA,cACA,UAGJhG,EAAOwc,SAASxW,UAAU4tD,iBAAmB5zD,EAAOymD,UAAUuB,YAAYrrC,UAC1E3c,EAAOwc,SAASxW,UAAU6tD,kBAAoB7zD,EAAOymD,UAAU6G,SAAS3wC,UACxE3c,EAAOwc,SAASxW,UAAU8tD,iBAAmB9zD,EAAOymD,UAAUsG,QAAQpwC,UACtE3c,EAAOwc,SAASxW,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UAQhE3c,EAAOwc,SAASxW,UAAU2W,UAAY,WAElC,SAAKhd,KAAKi0D,oBAAuBj0D,KAAKk0D,qBAAwBl0D,KAAKm0D,qBAK5Dn0D,KAAKo0D,iBAUhB/zD,EAAOwc,SAASxW,UAAUyd,QAAU,SAAS6S,GAEzC32B,KAAKie,QAEL5d,EAAOymD,UAAU2C,QAAQpjD,UAAUyd,QAAQhd,KAAK9G,KAAM22B,IAW1Dt2B,EAAOwc,SAASxW,UAAUiuE,aAAe,SAASv9D,EAAQw9D,GAEzC7qE,SAAT6qE,IAAsBA,GAAO,EAEjC,IAAIC,GAAW,GAAIn0E,GAAOgX,QAAQN,EAElC,IAAIw9D,EACJ,CACI,GAAIE,GAAe,GAAIp0E,GAAO2M,MAAMhN,KAAKwa,KAAKoC,OAAO3W,EAAI8Q,EAAO,GAAG9Q,EAAGjG,KAAKwa,KAAKoC,OAAOnQ,EAAIsK,EAAO,GAAGtK,GACjGioE,EAAK,GAAIr0E,GAAO2M,MAAM+J,EAAO,GAAG9Q,EAAI8Q,EAAO,GAAG9Q,EAAG8Q,EAAO,GAAGtK,EAAIsK,EAAO,GAAGtK,GACzEkiC,EAAK,GAAItuC,GAAO2M,MAAM+J,EAAO,GAAG9Q,EAAI8Q,EAAO,GAAG9Q,EAAG8Q,EAAO,GAAGtK,EAAIsK,EAAO,GAAGtK,GACzEkoE,EAAahmC,EAAGx4B,MAAMu+D,EAEtBD,GAAav+D,IAAIy+D,GAAc,GAE/B30E,KAAK2kE,YAAY6P,OAKrBx0E,MAAK2kE,YAAY6P,IAazBn0E,EAAOwc,SAASxW,UAAUuuE,cAAgB,SAASC,EAAUpG,EAAS8F,GAErD7qE,SAAT6qE,IAAsBA,GAAO,EAEjC,IAIIzsE,GAJAgtE,EAAS,GAAIz0E,GAAO2M,MACpB+nE,EAAS,GAAI10E,GAAO2M,MACpBgoE,EAAS,GAAI30E,GAAO2M,MACpB+J,IAGJ,IAAK03D,EAyBD,GAAIoG,EAAS,YAAcx0E,GAAO2M,MAE9B,IAAKlF,EAAI,EAAGA,EAAI2mE,EAAQ5mE,OAAQ,EAAGC,IAE/BiP,EAAOnE,KAAKiiE,EAASpG,EAAY,EAAJ3mE,KAC7BiP,EAAOnE,KAAKiiE,EAASpG,EAAY,EAAJ3mE,EAAQ,KACrCiP,EAAOnE,KAAKiiE,EAASpG,EAAY,EAAJ3mE,EAAQ,KAEf,IAAlBiP,EAAOlP,SAEP7H,KAAKs0E,aAAav9D,EAAQw9D,GAC1Bx9D,UAMR,KAAKjP,EAAI,EAAGA,EAAI2mE,EAAQ5mE,OAAQC,IAE5BgtE,EAAO7uE,EAAI4uE,EAAsB,EAAbpG,EAAQ3mE,IAC5BgtE,EAAOroE,EAAIooE,EAAsB,EAAbpG,EAAQ3mE,GAAS,GACrCiP,EAAOnE,KAAKkiE,EAAOnnE,YAEG,IAAlBoJ,EAAOlP,SAEP7H,KAAKs0E,aAAav9D,EAAQw9D,GAC1Bx9D,UAjDZ,IAAI89D,EAAS,YAAcx0E,GAAO2M,MAE9B,IAAKlF,EAAI,EAAGA,EAAI+sE,EAAShtE,OAAS,EAAGC,IAEjC9H,KAAKs0E,cAAcO,EAAa,EAAJ/sE,GAAQ+sE,EAAa,EAAJ/sE,EAAQ,GAAI+sE,EAAa,EAAJ/sE,EAAQ,IAAKysE,OAKnF,KAAKzsE,EAAI,EAAGA,EAAI+sE,EAAShtE,OAAS,EAAGC,IAEjCgtE,EAAO7uE,EAAI4uE,EAAa,EAAJ/sE,EAAQ,GAC5BgtE,EAAOroE,EAAIooE,EAAa,EAAJ/sE,EAAQ,GAC5BitE,EAAO9uE,EAAI4uE,EAAa,EAAJ/sE,EAAQ,GAC5BitE,EAAOtoE,EAAIooE,EAAa,EAAJ/sE,EAAQ,GAC5BktE,EAAO/uE,EAAI4uE,EAAa,EAAJ/sE,EAAQ,GAC5BktE,EAAOvoE,EAAIooE,EAAa,EAAJ/sE,EAAQ,GAC5B9H,KAAKs0E,cAAcQ,EAAQC,EAAQC,GAAST,IA2D5Dl0E,EAAO+tD,cAAgB,SAAU5zC,EAAMzK,EAAOC,EAAQjE,EAAKoiD,EAAWtmC,GAEtDne,SAARqC,IAAqBA,EAAM,IACbrC,SAAdykD,IAA2BA,EAAY9tD,EAAOqF,WAAWC,SAC1C+D,SAAfme,IAA4BA,EAAa,GAK7C7nB,KAAKwa,KAAOA,EAKZxa,KAAK+L,IAAMA,EAKX/L,KAAKkI,KAAO7H,EAAOoB,cAMnBzB,KAAKi1E,YAAc,GAAInvE,MAAKkO,OAE5BlO,KAAKsoD,cAActnD,KAAK9G,KAAM+P,EAAOC,EAAQhQ,KAAKwa,KAAKid,SAAU02B,EAAWtmC,GAE5E7nB,KAAK4gB,OAASvgB,EAAO+tD,cAAc/nD,UAAUua,QAIjDvgB,EAAO+tD,cAAc/nD,UAAYkB,OAAOmZ,OAAO5a,KAAKsoD,cAAc/nD,WAClEhG,EAAO+tD,cAAc/nD,UAAU8B,YAAc9H,EAAO+tD,cAepD/tD,EAAO+tD,cAAc/nD,UAAU6uE,SAAW,SAAUl6D,EAAe/U,EAAGwG,EAAGwR,GAErEjD,EAAc4Q,kBAEd5rB,KAAKi1E,YAAYxnE,SAASuN,EAAcyP,gBACxCzqB,KAAKi1E,YAAYtjE,GAAK1L,EACtBjG,KAAKi1E,YAAYrjE,GAAKnF,EAElBzM,KAAKy3B,SAASvvB,OAASpC,KAAKqvE,eAE5Bn1E,KAAKo1E,YAAYp6D,EAAehb,KAAKi1E,YAAah3D,GAIlDje,KAAKq1E,aAAar6D,EAAehb,KAAKi1E,YAAah3D,IAkB3D5d,EAAO+tD,cAAc/nD,UAAUivE,YAAc,SAAUt6D,EAAe/U,EAAGwG,EAAGwR,GAExEje,KAAKi1E,YAAYhgE,WAAWL,UAAU3O,EAAGwG,GAErCzM,KAAKy3B,SAASvvB,OAASpC,KAAKqvE,eAE5Bn1E,KAAKo1E,YAAYp6D,EAAehb,KAAKi1E,YAAah3D,GAIlDje,KAAKq1E,aAAar6D,EAAehb,KAAKi1E,YAAah3D,IAoB3D5d,EAAO+tD,cAAc/nD,UAAUua,OAAS,SAAU5F,EAAe5G,EAAQ6J,GAEtDvU,SAAX0K,GAAmC,OAAXA,EAExBpU,KAAKi1E,YAAYxnE,SAASuN,EAAcyP,gBAIxCzqB,KAAKi1E,YAAYxnE,SAAS2G,GAG1BpU,KAAKy3B,SAASvvB,OAASpC,KAAKqvE,eAE5Bn1E,KAAKo1E,YAAYp6D,EAAehb,KAAKi1E,YAAah3D,GAIlDje,KAAKq1E,aAAar6D,EAAehb,KAAKi1E,YAAah3D,IA4C3D5d,EAAOyxD,KAAO,SAAUt3C,EAAMvU,EAAGwG,EAAGolD,EAAM30C,GAEtCjX,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EAILolD,EAFSnoD,SAATmoD,GAA+B,OAATA,EAEf,GAIAA,EAAKrqD,WAGhB0V,EAAQ7c,EAAOmI,MAAM0C,UAAWgS,GAMhCld,KAAKkI,KAAO7H,EAAOgB,KAMnBrB,KAAK+tB,YAAc1tB,EAAOY,OAO1BjB,KAAK0nB,QAAU,GAAIrnB,GAAO2M,MAQ1BhN,KAAKu1E,WAAa,KAKlBv1E,KAAKsrB,OAASxlB,KAAK66B,WAAWjgB,OAAO1gB,MAKrCA,KAAKqkB,QAAUrkB,KAAKsrB,OAAOsV,WAAW,MAKtC5gC,KAAKw1E,UAKLx1E,KAAKy1E,gBAKLz1E,KAAK01E,cAKL11E,KAAK21E,eAQL31E,KAAK41E,WAAY,EAajB51E,KAAK61E,iBAAkB,EAMvB71E,KAAK81E,KAAOt7D,EAAKid,SAAS5P,WAM1B7nB,KAAK+1E,MAAQlkB,EAMb7xD,KAAKg2E,gBAAkB,KAMvBh2E,KAAKi2E,aAAe,EAMpBj2E,KAAKk2E,WAAa,EAMlBl2E,KAAKg3B,OAAS,EAMdh3B,KAAKi3B,QAAU,EAEf52B,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAG3G,KAAKgpD,QAAQC,WAAW/uD,KAAKsrB,SAElEtrB,KAAKm2E,SAASj5D,GAED,KAAT20C,GAEA7xD,KAAKo2E,cAKb/1E,EAAOyxD,KAAKzrD,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WACpDhG,EAAOyxD,KAAKzrD,UAAU8B,YAAc9H,EAAOyxD,KAQ3CzxD,EAAOyxD,KAAKzrD,UAAU2W,UAAY,WAE9B,SAAKhd,KAAKi0D,oBAAuBj0D,KAAKk0D,qBAAwBl0D,KAAKm0D,qBAK5Dn0D,KAAKo0D,iBAUhB/zD,EAAOyxD,KAAKzrD,UAAUkY,OAAS,aAU/Ble,EAAOyxD,KAAKzrD,UAAUyd,QAAU,SAAU6S,GAEtC32B,KAAKwiC,QAAQ1e,SAAQ,GAErBhe,KAAK66B,WAAW7d,OAAO9iB,MAEvBK,EAAOymD,UAAU2C,QAAQpjD,UAAUyd,QAAQhd,KAAK9G,KAAM22B,IAmB1Dt2B,EAAOyxD,KAAKzrD,UAAUgwE,UAAY,SAAUpwE,EAAGwG,EAAGuR,EAAOs/C,EAAMgZ,EAAcC,GAiBzE,MAfU7sE,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVsU,IAAuBA,EAAQ,oBACtBtU,SAAT4zD,IAAsBA,EAAO,GACZ5zD,SAAjB4sE,IAA8BA,GAAe,GAC9B5sE,SAAf6sE,IAA4BA,GAAa,GAE7Cv2E,KAAKkd,MAAMugD,cAAgBx3D,EAC3BjG,KAAKkd,MAAMwgD,cAAgBjxD,EAC3BzM,KAAKkd,MAAMqgD,YAAcv/C,EACzBhe,KAAKkd,MAAMsgD,WAAaF,EACxBt9D,KAAKkd,MAAMo5D,aAAeA,EAC1Bt2E,KAAKkd,MAAMq5D,WAAaA,EACxBv2E,KAAKynB,OAAQ,EAENznB,MA4BXK,EAAOyxD,KAAKzrD,UAAU8vE,SAAW,SAAUj5D,EAAOqB,GAE/B7U,SAAX6U,IAAwBA,GAAS,GAErCrB,EAAQA,MACRA,EAAMw1C,KAAOx1C,EAAMw1C,MAAQ,kBAC3Bx1C,EAAMs5D,gBAAkBt5D,EAAMs5D,iBAAmB,KACjDt5D,EAAMylB,KAAOzlB,EAAMylB,MAAQ,QAC3BzlB,EAAM8T,MAAQ9T,EAAM8T,OAAS,OAC7B9T,EAAMu5D,aAAev5D,EAAMu5D,cAAgB,OAC3Cv5D,EAAMw5D,aAAex5D,EAAMw5D,cAAgB,MAC3Cx5D,EAAMyhD,OAASzhD,EAAMyhD,QAAU,QAC/BzhD,EAAMy5D,gBAAkBz5D,EAAMy5D,iBAAmB,EACjDz5D,EAAM05D,SAAW15D,EAAM05D,WAAY,EACnC15D,EAAM25D,cAAgB35D,EAAM25D,eAAiB,IAC7C35D,EAAM45D,SAAW55D,EAAM45D,UAAY,EACnC55D,EAAMugD,cAAgBvgD,EAAMugD,eAAiB,EAC7CvgD,EAAMwgD,cAAgBxgD,EAAMwgD,eAAiB,EAC7CxgD,EAAMqgD,YAAcrgD,EAAMqgD,aAAe,gBACzCrgD,EAAMsgD,WAAatgD,EAAMsgD,YAAc,EACvCtgD,EAAM65D,KAAO75D,EAAM65D,MAAQ,CAE3B,IAAI7uB,GAAaloD,KAAKg3E,iBAAiB95D,EAAMw1C,KAuC7C,OArCIx1C,GAAM+5D,YAEN/uB,EAAW+uB,UAAY/5D,EAAM+5D,WAG7B/5D,EAAMg6D,cAENhvB,EAAWgvB,YAAch6D,EAAMg6D,aAG/Bh6D,EAAMi6D,aAENjvB,EAAWivB,WAAaj6D,EAAMi6D,YAG9Bj6D,EAAMk6D,WAEwB,gBAAnBl6D,GAAMk6D,WAEbl6D,EAAMk6D,SAAWl6D,EAAMk6D,SAAW,MAGtClvB,EAAWkvB,SAAWl6D,EAAMk6D,UAGhCp3E,KAAKg2E,gBAAkB9tB,EAEvBhrC,EAAMw1C,KAAO1yD,KAAKq3E,iBAAiBr3E,KAAKg2E,iBAExCh2E,KAAKkd,MAAQA,EACbld,KAAKynB,OAAQ,EAETlJ,GAEAve,KAAKo2E,aAGFp2E,MAUXK,EAAOyxD,KAAKzrD,UAAU+vE,WAAa,WAE/Bp2E,KAAKwiC,QAAQsQ,YAAYjrB,WAAa7nB,KAAK81E,KAE3C91E,KAAKqkB,QAAQquC,KAAO1yD,KAAKkd,MAAMw1C,IAE/B,IAAI4kB,GAAat3E,KAAK6xD,IAElB7xD,MAAKkd,MAAM05D,WAEXU,EAAat3E,KAAKu3E,YAAYv3E,KAAK6xD,MAIvC,IAAI2lB,GAAQF,EAAW3uE,MAAM,kBAGzBouE,EAAO/2E,KAAKkd,MAAM65D,KAClBU,KACAC,EAAe,EACfC,EAAiB33E,KAAK43E,wBAAwB53E,KAAKkd,MAAMw1C,MAEzDmlB,EAAaL,EAAM3vE,MAEnB7H,MAAKkd,MAAM45D,SAAW,GAAK92E,KAAKkd,MAAM45D,SAAWU,EAAM3vE,SAEvDgwE,EAAa73E,KAAKkd,MAAM45D,UAG5B92E,KAAKk2E,WAAa,CAElB,KAAK,GAAIpuE,GAAI,EAAGA,EAAI+vE,EAAY/vE,IAChC,CACI,GAAa,IAATivE,EACJ,CAEI,GAAItY,GAAaz+D,KAAKkd,MAAMy5D,gBAAkB32E,KAAK0nB,QAAQzhB,CAIvDw4D,IAFAz+D,KAAKw1E,OAAO3tE,OAAS,GAAK7H,KAAKy1E,aAAa5tE,OAAS,GAAK7H,KAAK21E,YAAY9tE,OAAS,GAAK7H,KAAK01E,WAAW7tE,OAAS,EAErG7H,KAAK83E,YAAYN,EAAM1vE,IAIvB9H,KAAKqkB,QAAQ0zD,YAAYP,EAAM1vE,IAAIiI,MAIhD/P,KAAKkd,MAAM05D,WAEXnY,GAAaz+D,KAAKqkB,QAAQ0zD,YAAY,KAAKhoE,WAInD,CAEI,GAAIqB,GAAOomE,EAAM1vE,GAAGa,MAAM,UACtB81D,EAAYz+D,KAAK0nB,QAAQzhB,EAAIjG,KAAKkd,MAAMy5D,eAE5C,IAAInwE,MAAMa,QAAQ0vE,GAId,IAAK,GAFDiB,GAAM,EAED/oE,EAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IACjC,CACI,GAAIgpE,GAAU,CAIVA,GAFAj4E,KAAKw1E,OAAO3tE,OAAS,GAAK7H,KAAKy1E,aAAa5tE,OAAS,GAAK7H,KAAK21E,YAAY9tE,OAAS,GAAK7H,KAAK01E,WAAW7tE,OAAS,EAExG7H,KAAK83E,YAAY1mE,EAAKnC,IAItBlJ,KAAKG,KAAKlG,KAAKqkB,QAAQ0zD,YAAY3mE,EAAKnC,IAAIc,OAGtDd,EAAI,IAEJ+oE,GAAOjB,EAAK9nE,EAAI,IAGpBwvD,EAAYuZ,EAAMC,MAKtB,KAAK,GAAIhpE,GAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IACjC,CAIQwvD,GAFAz+D,KAAKw1E,OAAO3tE,OAAS,GAAK7H,KAAKy1E,aAAa5tE,OAAS,GAAK7H,KAAK21E,YAAY9tE,OAAS,GAAK7H,KAAK01E,WAAW7tE,OAAS,EAErG7H,KAAK83E,YAAY1mE,EAAKnC,IAItBlJ,KAAKG,KAAKlG,KAAKqkB,QAAQ0zD,YAAY3mE,EAAKnC,IAAIc,MAG7D,IAAIwhE,GAAOvxE,KAAKwa,KAAK0E,KAAKg5D,WAAWzZ,EAAWsY,GAAQtY,CAExDA,IAAa8S,GAKzBkG,EAAW3vE,GAAK/B,KAAKG,KAAKu4D,GAC1BiZ,EAAe3xE,KAAKoM,IAAIulE,EAAcD,EAAW3vE,IAGrD9H,KAAKsrB,OAAOvb,MAAQ2nE,EAAe13E,KAAK81E,IAGxC,IAAIqC,GAAaR,EAAeP,SAAWp3E,KAAKkd,MAAMy5D,gBAAkB32E,KAAK0nB,QAAQjb,EACjFuD,EAASmoE,EAAaN,EACtBO,EAAcp4E,KAAKi2E,YAEnBmC,GAAc,GAAKryE,KAAKoJ,IAAIipE,GAAeD,IAE3CC,GAAeD,GAIC,IAAhBC,IAEApoE,GAAWooE,EAAc,EAAKA,EAAcZ,EAAM3vE,OAASuwE,GAAeZ,EAAM3vE,OAAS,IAG7F7H,KAAKsrB,OAAOtb,OAASA,EAAShQ,KAAK81E,KAEnC91E,KAAKqkB,QAAQxP,MAAM7U,KAAK81E,KAAM91E,KAAK81E,MAE/B3/B,UAAUkiC,YAEVr4E,KAAKqkB,QAAQ8uB,UAAU,EAAG,EAAGnzC,KAAKsrB,OAAOvb,MAAO/P,KAAKsrB,OAAOtb,QAG5DhQ,KAAKkd,MAAMs5D,kBAEXx2E,KAAKqkB,QAAQo1C,UAAYz5D,KAAKkd,MAAMs5D,gBACpCx2E,KAAKqkB,QAAQq1C,SAAS,EAAG,EAAG15D,KAAKsrB,OAAOvb,MAAO/P,KAAKsrB,OAAOtb,SAG/DhQ,KAAKqkB,QAAQo1C,UAAYz5D,KAAKkd,MAAMylB,KACpC3iC,KAAKqkB,QAAQquC,KAAO1yD,KAAKkd,MAAMw1C,KAC/B1yD,KAAKqkB,QAAQq6C,YAAc1+D,KAAKkd,MAAMyhD,OACtC3+D,KAAKqkB,QAAQi0D,aAAe,aAE5Bt4E,KAAKqkB,QAAQo6C,UAAYz+D,KAAKkd,MAAMy5D,gBACpC32E,KAAKqkB,QAAQk0D,QAAU,QACvBv4E,KAAKqkB,QAAQm0D,SAAW,OAExB,IAAIC,GACAC,CAKJ,KAHA14E,KAAKk2E,WAAa,EAGbpuE,EAAI,EAAGA,EAAI+vE,EAAY/vE,IAIxB2wE,EAAgBz4E,KAAKkd,MAAMy5D,gBAAkB,EAC7C+B,EAAiB14E,KAAKkd,MAAMy5D,gBAAkB,EAAI7uE,EAAIqwE,EAAcR,EAAegB,OAE/E7wE,EAAI,IAEJ4wE,GAAkBN,EAActwE,GAGX,UAArB9H,KAAKkd,MAAM8T,MAEXynD,GAAiBf,EAAeD,EAAW3vE,GAEjB,WAArB9H,KAAKkd,MAAM8T,QAEhBynD,IAAkBf,EAAeD,EAAW3vE,IAAM,GAGlD9H,KAAK41E,YAEL6C,EAAgB1yE,KAAK+H,MAAM2qE,GAC3BC,EAAgB3yE,KAAK+H,MAAM4qE,IAG3B14E,KAAKw1E,OAAO3tE,OAAS,GAAK7H,KAAKy1E,aAAa5tE,OAAS,GAAK7H,KAAK21E,YAAY9tE,OAAS,GAAK7H,KAAK01E,WAAW7tE,OAAS,EAElH7H,KAAK44E,WAAWpB,EAAM1vE,GAAI2wE,EAAeC,IAIrC14E,KAAKkd,MAAMyhD,QAAU3+D,KAAKkd,MAAMy5D,kBAEhC32E,KAAK64E,aAAa74E,KAAKkd,MAAMo5D,cAEhB,IAATS,EAEA/2E,KAAKqkB,QAAQy0D,WAAWtB,EAAM1vE,GAAI2wE,EAAeC,GAIjD14E,KAAK+4E,cAAcvB,EAAM1vE,GAAI2wE,EAAeC,GAAe,IAI/D14E,KAAKkd,MAAMylB,OAEX3iC,KAAK64E,aAAa74E,KAAKkd,MAAMq5D,YAEhB,IAATQ,EAEA/2E,KAAKqkB,QAAQ85C,SAASqZ,EAAM1vE,GAAI2wE,EAAeC,GAI/C14E,KAAK+4E,cAAcvB,EAAM1vE,GAAI2wE,EAAeC,GAAe,IAM3E14E,MAAKg5E,iBAeT34E,EAAOyxD,KAAKzrD,UAAU0yE,cAAgB,SAAU3nE,EAAMnL,EAAGwG,EAAGk2B,GAExD,GAAIkvB,GAAOzgD,EAAKzI,MAAM,UAClBouE,EAAO/2E,KAAKkd,MAAM65D,KAClBkC,EAAO,CAEX,IAAIzyE,MAAMa,QAAQ0vE,GAId,IAAK,GAFDiB,GAAM,EAED/oE,EAAI,EAAGA,EAAI4iD,EAAKhqD,OAAQoH,IAEzBA,EAAI,IAEJ+oE,GAAOjB,EAAK9nE,EAAI,IAGpBgqE,EAAOhzE,EAAI+xE,EAEPr1C,EAEA3iC,KAAKqkB,QAAQ85C,SAAStM,EAAK5iD,GAAIgqE,EAAMxsE,GAIrCzM,KAAKqkB,QAAQy0D,WAAWjnB,EAAK5iD,GAAIgqE,EAAMxsE,OAM/C,KAAK,GAAIwC,GAAI,EAAGA,EAAI4iD,EAAKhqD,OAAQoH,IACjC,CACI,GAAIgpE,GAAUlyE,KAAKG,KAAKlG,KAAKqkB,QAAQ0zD,YAAYlmB,EAAK5iD,IAAIc,MAG1DkpE,GAAOj5E,KAAKwa,KAAK0E,KAAKg5D,WAAWjyE,EAAG8wE,GAEhCp0C,EAEA3iC,KAAKqkB,QAAQ85C,SAAStM,EAAK5iD,GAAIgqE,EAAMxsE,GAIrCzM,KAAKqkB,QAAQy0D,WAAWjnB,EAAK5iD,GAAIgqE,EAAMxsE,GAG3CxG,EAAIgzE,EAAOhB,IAavB53E,EAAOyxD,KAAKzrD,UAAUwyE,aAAe,SAAU34D,GAEvCA,GAEAlgB,KAAKqkB,QAAQo5C,cAAgBz9D,KAAKkd,MAAMugD,cACxCz9D,KAAKqkB,QAAQq5C,cAAgB19D,KAAKkd,MAAMwgD,cACxC19D,KAAKqkB,QAAQk5C,YAAcv9D,KAAKkd,MAAMqgD,YACtCv9D,KAAKqkB,QAAQm5C,WAAax9D,KAAKkd,MAAMsgD,aAIrCx9D,KAAKqkB,QAAQo5C,cAAgB,EAC7Bz9D,KAAKqkB,QAAQq5C,cAAgB,EAC7B19D,KAAKqkB,QAAQk5C,YAAc,EAC3Bv9D,KAAKqkB,QAAQm5C,WAAa,IAalCn9D,EAAOyxD,KAAKzrD,UAAUyxE,YAAc,SAAU1mE,GAI1C,IAAK,GAFD8nE,GAAa,EAERpxE,EAAI,EAAGA,EAAIsJ,EAAKvJ,OAAQC,IACjC,CACI,GAAIqxE,GAAS/nE,EAAKtJ,EAElB,IAAI9H,KAAK21E,YAAY9tE,OAAS,GAAK7H,KAAK01E,WAAW7tE,OAAS,EAC5D,CACI,GAAIqgD,GAAaloD,KAAKg3E,iBAAiBh3E,KAAKqkB,QAAQquC,KAEhD1yD,MAAK01E,WAAW11E,KAAKk2E,cAErBhuB,EAAW+uB,UAAYj3E,KAAK01E,WAAW11E,KAAKk2E,aAG5Cl2E,KAAK21E,YAAY31E,KAAKk2E,cAEtBhuB,EAAWivB,WAAan3E,KAAK21E,YAAY31E,KAAKk2E,aAGlDl2E,KAAKqkB,QAAQquC,KAAO1yD,KAAKq3E,iBAAiBnvB,GAG1CloD,KAAKkd,MAAMyhD,QAAU3+D,KAAKkd,MAAMy5D,kBAE5B32E,KAAKy1E,aAAaz1E,KAAKk2E,cAEvBl2E,KAAKqkB,QAAQq6C,YAAc1+D,KAAKy1E,aAAaz1E,KAAKk2E,aAGtDl2E,KAAK64E,aAAa74E,KAAKkd,MAAMo5D,eAG7Bt2E,KAAKkd,MAAMylB,OAEP3iC,KAAKw1E,OAAOx1E,KAAKk2E,cAEjBl2E,KAAKqkB,QAAQo1C,UAAYz5D,KAAKw1E,OAAOx1E,KAAKk2E,aAG9Cl2E,KAAK64E,aAAa74E,KAAKkd,MAAMq5D,aAGjC2C,GAAcl5E,KAAKqkB,QAAQ0zD,YAAYoB,GAAQppE,MAE/C/P,KAAKk2E,aAGT,MAAOnwE,MAAKG,KAAKgzE,IASrB74E,EAAOyxD,KAAKzrD,UAAUuyE,WAAa,SAAUxnE,EAAMnL,EAAGwG,GAElD,IAAK,GAAI3E,GAAI,EAAGA,EAAIsJ,EAAKvJ,OAAQC,IACjC,CACI,GAAIqxE,GAAS/nE,EAAKtJ,EAElB,IAAI9H,KAAK21E,YAAY9tE,OAAS,GAAK7H,KAAK01E,WAAW7tE,OAAS,EAC5D,CACI,GAAIqgD,GAAaloD,KAAKg3E,iBAAiBh3E,KAAKqkB,QAAQquC,KAEhD1yD,MAAK01E,WAAW11E,KAAKk2E,cAErBhuB,EAAW+uB,UAAYj3E,KAAK01E,WAAW11E,KAAKk2E,aAG5Cl2E,KAAK21E,YAAY31E,KAAKk2E,cAEtBhuB,EAAWivB,WAAan3E,KAAK21E,YAAY31E,KAAKk2E,aAGlDl2E,KAAKqkB,QAAQquC,KAAO1yD,KAAKq3E,iBAAiBnvB,GAG1CloD,KAAKkd,MAAMyhD,QAAU3+D,KAAKkd,MAAMy5D,kBAE5B32E,KAAKy1E,aAAaz1E,KAAKk2E,cAEvBl2E,KAAKqkB,QAAQq6C,YAAc1+D,KAAKy1E,aAAaz1E,KAAKk2E,aAGtDl2E,KAAK64E,aAAa74E,KAAKkd,MAAMo5D,cAC7Bt2E,KAAKqkB,QAAQy0D,WAAWK,EAAQlzE,EAAGwG,IAGnCzM,KAAKkd,MAAMylB,OAEP3iC,KAAKw1E,OAAOx1E,KAAKk2E,cAEjBl2E,KAAKqkB,QAAQo1C,UAAYz5D,KAAKw1E,OAAOx1E,KAAKk2E,aAG9Cl2E,KAAK64E,aAAa74E,KAAKkd,MAAMq5D,YAC7Bv2E,KAAKqkB,QAAQ85C,SAASgb,EAAQlzE,EAAGwG,IAGrCxG,GAAKjG,KAAKqkB,QAAQ0zD,YAAYoB,GAAQppE,MAEtC/P,KAAKk2E,eAWb71E,EAAOyxD,KAAKzrD,UAAU+yE,YAAc,WAMhC,MAJAp5E,MAAKw1E,UACLx1E,KAAKy1E,gBACLz1E,KAAKynB,OAAQ,EAENznB,MAUXK,EAAOyxD,KAAKzrD,UAAUgzE,gBAAkB,WAMpC,MAJAr5E,MAAK01E,cACL11E,KAAK21E,eACL31E,KAAKynB,OAAQ,EAENznB,MAmBXK,EAAOyxD,KAAKzrD,UAAUizE,SAAW,SAAUt7D,EAAOzE,GAK9C,MAHAvZ,MAAKw1E,OAAOj8D,GAAYyE,EACxBhe,KAAKynB,OAAQ,EAENznB,MAqBXK,EAAOyxD,KAAKzrD,UAAUkzE,eAAiB,SAAUv7D,EAAOzE,GAKpD,MAHAvZ,MAAKy1E,aAAal8D,GAAYyE,EAC9Bhe,KAAKynB,OAAQ,EAENznB,MAmBXK,EAAOyxD,KAAKzrD,UAAUmzE,aAAe,SAAUt8D,EAAO3D,GAKlD,MAHAvZ,MAAK01E,WAAWn8D,GAAY2D,EAC5Bld,KAAKynB,OAAQ,EAENznB,MAmBXK,EAAOyxD,KAAKzrD,UAAUozE,cAAgB,SAAUC,EAAQngE,GAKpD,MAHAvZ,MAAK21E,YAAYp8D,GAAYmgE,EAC7B15E,KAAKynB,OAAQ,EAENznB,MAeXK,EAAOyxD,KAAKzrD,UAAUszE,qBAAuB,SAAU9nB,GAEnD7xD,KAAKwiC,QAAQsQ,YAAYjrB,WAAa7nB,KAAK81E,KAC3C91E,KAAKqkB,QAAQquC,KAAO1yD,KAAKkd,MAAMw1C,IAE/B,IAAIknB,GAAe55E,KAAKu3E,YAAY1lB,EAEpC,OAAO+nB,GAAajxE,MAAM,mBAW9BtI,EAAOyxD,KAAKzrD,UAAUkxE,YAAc,SAAU1lB,GAE1C,MAAI7xD,MAAK61E,gBAEE71E,KAAK65E,iBAAiBhoB,GAItB7xD,KAAK85E,cAAcjoB,IAelCxxD,EAAOyxD,KAAKzrD,UAAUwzE,iBAAmB,SAAUhoB,GAe/C,IAAK,GAbDxtC,GAAUrkB,KAAKqkB,QACfwyD,EAAgB72E,KAAKkd,MAAM25D,cAE3B9oE,EAAS,GAITypE,EAAQ3lB,EACPjmD,QAAQ,OAAQ,KAChBjD,MAAM,WAEPoxE,EAAavC,EAAM3vE,OAEdC,EAAI,EAAGA,EAAIiyE,EAAYjyE,IAChC,CACI,GAAIsJ,GAAOomE,EAAM1vE,GACbiF,EAAM,EAGVqE,GAAOA,EAAKxF,QAAQ,aAAc,GAIlC,IAAI6yD,GAAYp6C,EAAQ0zD,YAAY3mE,GAAMrB,KAE1C,IAAI0uD,EAAYoY,EAEZ9oE,GAAUqD,EAAO,SAFrB,CAYA,IAAK,GALD4oE,GAAmBnD,EAGnBoD,EAAQ7oE,EAAKzI,MAAM,KAEdkP,EAAI,EAAGA,EAAIoiE,EAAMpyE,OAAQgQ,IAClC,CACI,GAAIqiE,GAAOD,EAAMpiE,GACbsiE,EAAgBD,EAAO,IACvBE,EAAY/1D,EAAQ0zD,YAAYoC,GAAepqE,KAEnD,IAAIqqE,EAAYJ,EAChB,CAEI,GAAU,IAANniE,EACJ,CAII,IAFA,GAAIwiE,GAAUF,EAEPE,EAAQxyE,SAEXwyE,EAAUA,EAAQ9zE,MAAM,GAAG,GAC3B6zE,EAAY/1D,EAAQ0zD,YAAYsC,GAAStqE,QAErCqqE,GAAaJ,MAQrB,IAAKK,EAAQxyE,OAET,KAAM,IAAImP,OAAM,qEAIpB,IAAIsjE,GAAaJ,EAAK9vE,OAAOiwE,EAAQxyE,OAErCoyE,GAAMpiE,GAAKyiE,EAGXvtE,GAAOstE,EAIX,GAAIjsE,GAAU6rE,EAAMpiE,GAAS,OAAIA,EAAIA,EAAI,EAGrCwsD,EAAY4V,EAAM1zE,MAAM6H,GAAQvF,KAAK,KAExC+C,QAAQ,YAAa,GAGtB4rE,GAAM1vE,EAAI,GAAKu8D,EAAY,KAAOmT,EAAM1vE,EAAI,IAAM,IAClDiyE,EAAavC,EAAM3vE,MAEnB,OAMAkF,GAAOotE,EACPH,GAAoBI,EAK5BrsE,GAAUhB,EAAInB,QAAQ,YAAa,IAAM,MAM7C,MAFAmC,GAASA,EAAOnC,QAAQ,cAAe,KAa3CvL,EAAOyxD,KAAKzrD,UAAUyzE,cAAgB,SAAUjoB,GAK5C,IAAK,GAHDvgD,GAAS,GACTkmE,EAAQ3lB,EAAKlpD,MAAM,MAEdb,EAAI,EAAGA,EAAI0vE,EAAM3vE,OAAQC,IAClC,CAII,IAAK,GAHDyyE,GAAYv6E,KAAKkd,MAAM25D,cACvBoD,EAAQzC,EAAM1vE,GAAGa,MAAM,KAElBkP,EAAI,EAAGA,EAAIoiE,EAAMpyE,OAAQgQ,IAClC,CACI,GAAIuiE,GAAYp6E,KAAKqkB,QAAQ0zD,YAAYkC,EAAMpiE,IAAI9H,MAC/CyqE,EAAqBJ,EAAYp6E,KAAKqkB,QAAQ0zD,YAAY,KAAKhoE,KAE/DyqE,GAAqBD,GAGjB1iE,EAAI,IAEJvG,GAAU,MAEdA,GAAU2oE,EAAMpiE,GAAK,IACrB0iE,EAAYv6E,KAAKkd,MAAM25D,cAAgBuD,IAIvCG,GAAaC,EACblpE,GAAU2oE,EAAMpiE,GAAK,KAIzB/P,EAAI0vE,EAAM3vE,OAAO,IAEjByJ,GAAU,MAIlB,MAAOA,IAWXjR,EAAOyxD,KAAKzrD,UAAUo0E,WAAa,SAAUvyB,GAEzC,GAAIwK,GAAO1yD,KAAKq3E,iBAAiBnvB,EAE7BloD,MAAKkd,MAAMw1C,OAASA,IAEpB1yD,KAAKkd,MAAMw1C,KAAOA,EAClB1yD,KAAKynB,OAAQ,EAETznB,KAAKwpB,QAELxpB,KAAK4rB,oBAajBvrB,EAAOyxD,KAAKzrD,UAAU2wE,iBAAmB,SAAUtkB,GAU/C,GAAIz8C,GAAIy8C,EAAK7L,MAAM,uSAEnB,IAAI5wC,EACJ,CACI,GAAIykE,GAASzkE,EAAE,GAAG88B,MAQlB,OALK,2DAA2D4nC,KAAKD,IAAY,QAAQC,KAAKD,KAE1FA,EAAS,IAAMA,EAAS,MAIxBhoB,KAAMA,EACNukB,UAAWhhE,EAAE,IAAM,SACnBihE,YAAajhE,EAAE,IAAM,SACrBkhE,WAAYlhE,EAAE,IAAM,SACpBmhE,SAAUnhE,EAAE,IAAM,SAClB2kE,WAAYF,GAOhB,MAFAtyE,SAAQG,KAAK,sCAAwCmqD,IAGjDA,KAAMA,IAalBryD,EAAOyxD,KAAKzrD,UAAUgxE,iBAAmB,SAAUnvB,GAE/C,GACIxtB,GADAzxB,IAwBJ,OArBAyxB,GAAIwtB,EAAW+uB,UACXv8C,GAAW,WAANA,GAAkBzxB,EAAM2J,KAAK8nB,GAEtCA,EAAIwtB,EAAWgvB,YACXx8C,GAAW,WAANA,GAAkBzxB,EAAM2J,KAAK8nB,GAEtCA,EAAIwtB,EAAWivB,WACXz8C,GAAW,WAANA,GAAkBzxB,EAAM2J,KAAK8nB,GAEtCA,EAAIwtB,EAAWkvB,SACX18C,GAAW,WAANA,GAAkBzxB,EAAM2J,KAAK8nB,GAEtCA,EAAIwtB,EAAW0yB,WACXlgD,GAAKzxB,EAAM2J,KAAK8nB,GAEfzxB,EAAMpB,QAGPoB,EAAM2J,KAAKs1C,EAAWwK,MAGnBzpD,EAAMJ,KAAK,MAmBtBxI,EAAOyxD,KAAKzrD,UAAUw0E,QAAU,SAAUhpB,EAAMyJ,GAe5C,MAbkB5xD,UAAd4xD,IAA2BA,GAAY,GAE3Ct7D,KAAK6xD,KAAOA,EAAKrqD,YAAc,GAE3B8zD,EAEAt7D,KAAKo2E,aAILp2E,KAAKynB,OAAQ,EAGVznB,MAyBXK,EAAOyxD,KAAKzrD,UAAUy0E,UAAY,SAAU5kD,GAExC,IAAK1vB,MAAMa,QAAQ6uB,GAEf,MAAOl2B,KAMP,KAAK,GAFDyW,GAAI,GAEC3O,EAAI,EAAGA,EAAIouB,EAAKruB,OAAQC,IAEzBtB,MAAMa,QAAQ6uB,EAAKpuB,KAEnB2O,GAAKyf,EAAKpuB,GAAGe,KAAK,MAEdf,EAAIouB,EAAKruB,OAAS,IAElB4O,GAAK,QAKTA,GAAKyf,EAAKpuB,GAENA,EAAIouB,EAAKruB,OAAS,IAElB4O,GAAK,MASrB,OAHAzW,MAAK6xD,KAAOp7C,EACZzW,KAAKynB,OAAQ,EAENznB,MAmCXK,EAAOyxD,KAAKzrD,UAAU00E,cAAgB,SAAU90E,EAAGwG,EAAGsD,EAAOC,GAyBzD,MAvBUtG,UAANzD,EAEAjG,KAAKu1E,WAAa,MAIbv1E,KAAKu1E,WAMNv1E,KAAKu1E,WAAW/nE,MAAMvH,EAAGwG,EAAGsD,EAAOC,GAJnChQ,KAAKu1E,WAAa,GAAIl1E,GAAOkN,UAAUtH,EAAGwG,EAAGsD,EAAOC,GAOpDhQ,KAAKkd,MAAM25D,cAAgB9mE,IAE3B/P,KAAKkd,MAAM25D,cAAgB9mE,IAInC/P,KAAKg5E,gBAEEh5E,MAUXK,EAAOyxD,KAAKzrD,UAAU2yE,cAAgB,WAElC,GAAI9pB,GAAOlvD,KAAKwiC,QAAQsQ,YACpBE,EAAOhzC,KAAKwiC,QAAQwQ,KACpBriB,EAAQ3wB,KAAKwiC,QAAQ7R,MAErBrT,EAAItd,KAAKsrB,OAAOvb,MAChBwN,EAAIvd,KAAKsrB,OAAOtb,MAiBpB,IAfAk/C,EAAKn/C,MAAQuN,EACb4xC,EAAKl/C,OAASuN,EAEdy1B,EAAKjjC,MAAQuN,EACb01B,EAAKhjC,OAASuN,EAEdoT,EAAM5gB,MAAQuN,EACdqT,EAAM3gB,OAASuN,EAEfvd,KAAKwiC,QAAQzyB,MAAQuN,EACrBtd,KAAKwiC,QAAQxyB,OAASuN,EAEtBvd,KAAKg3B,OAAS1Z,EACdtd,KAAKi3B,QAAU1Z,EAEXvd,KAAKu1E,WACT,CACI,GAAItvE,GAAIjG,KAAKu1E,WAAWtvE,EACpBwG,EAAIzM,KAAKu1E,WAAW9oE,CAGQ,WAA5BzM,KAAKkd,MAAMu5D,aAEXxwE,GAAKjG,KAAKu1E,WAAWxlE,MAAQ/P,KAAKsrB,OAAOvb,MAER,WAA5B/P,KAAKkd,MAAMu5D,eAEhBxwE,GAAKjG,KAAKu1E,WAAWnmE,UAAapP,KAAKsrB,OAAOvb,MAAQ,GAG1B,WAA5B/P,KAAKkd,MAAMw5D,aAEXjqE,GAAKzM,KAAKu1E,WAAWvlE,OAAShQ,KAAKsrB,OAAOtb,OAET,WAA5BhQ,KAAKkd,MAAMw5D,eAEhBjqE,GAAKzM,KAAKu1E,WAAWhmE,WAAcvP,KAAKsrB,OAAOtb,OAAS,GAG5DhQ,KAAKg7E,MAAM/0E,GAAKA,EAChBjG,KAAKg7E,MAAMvuE,GAAKA,EAIpBzM,KAAKkqD,WAAoB,IAAN5sC,GAAiB,IAANC,EAE9Bvd,KAAKwiC,QAAQitB,gBAAiB,EAE9BzvD,KAAKwiC,QAAQsQ,YAAYrrB,SAW7BpnB,EAAOyxD,KAAKzrD,UAAU2+D,aAAe,SAAUpN,GAEvC53D,KAAKynB,QAELznB,KAAKo2E,aACLp2E,KAAKynB,OAAQ,GAGjB3hB,KAAKsoB,OAAO/nB,UAAU2+D,aAAal+D,KAAK9G,KAAM43D,IAWlDv3D,EAAOyxD,KAAKzrD,UAAUigE,cAAgB,SAAU1O,GAExC53D,KAAKynB,QAELznB,KAAKo2E,aACLp2E,KAAKynB,OAAQ,GAGjB3hB,KAAKsoB,OAAO/nB,UAAUigE,cAAcx/D,KAAK9G,KAAM43D,IAWnDv3D,EAAOyxD,KAAKzrD,UAAUuxE,wBAA0B,SAAUX,GAEtD,GAAIgE,GAAa56E,EAAOyxD,KAAKopB,oBAAoBjE,EAEjD,KAAKgE,EACL,CACIA,IAEA,IAAI3vD,GAASjrB,EAAOyxD,KAAKqpB,qBACrB92D,EAAUhkB,EAAOyxD,KAAKspB,qBAE1B/2D,GAAQquC,KAAOukB,CAEf,IAAIlnE,GAAQhK,KAAKG,KAAKme,EAAQ0zD,YAAY,QAAQhoE,OAC9CsrE,EAAWt1E,KAAKG,KAAKme,EAAQ0zD,YAAY,QAAQhoE,OACjDC,EAAS,EAAIqrE,CAgBjB,IAdAA,EAAsB,IAAXA,EAAiB,EAE5B/vD,EAAOvb,MAAQA,EACfub,EAAOtb,OAASA,EAEhBqU,EAAQo1C,UAAY,OACpBp1C,EAAQq1C,SAAS,EAAG,EAAG3pD,EAAOC,GAE9BqU,EAAQquC,KAAOukB,EAEf5yD,EAAQi0D,aAAe,aACvBj0D,EAAQo1C,UAAY,OACpBp1C,EAAQ85C,SAAS,OAAQ,EAAGkd,IAEvBh3D,EAAQivB,aAAa,EAAG,EAAGvjC,EAAOC,GAQnC,MANAirE,GAAWtC,OAAS0C,EACpBJ,EAAWK,QAAUD,EAAW,EAChCJ,EAAW7D,SAAW6D,EAAWtC,OAASsC,EAAWK,QAErDj7E,EAAOyxD,KAAKopB,oBAAoBjE,GAAagE,EAEtCA,CAGX,IAIInzE,GAAG+P,EAJH0jE,EAAYl3D,EAAQivB,aAAa,EAAG,EAAGvjC,EAAOC,GAAQ0yB,KACtDq1B,EAASwjB,EAAU1zE,OACnBuJ,EAAe,EAARrB,EAIPyrE,EAAM,EACNl/C,GAAO,CAGX,KAAKx0B,EAAI,EAAGA,EAAIuzE,EAAUvzE,IAC1B,CACI,IAAK+P,EAAI,EAAGA,EAAIzG,EAAMyG,GAAK,EAEvB,GAA2B,MAAvB0jE,EAAUC,EAAM3jE,GACpB,CACIykB,GAAO,CACP,OAIR,GAAKA,EAMD,KAJAk/C,IAAOpqE,EAcf,IANA6pE,EAAWtC,OAAS0C,EAAWvzE,EAE/B0zE,EAAMzjB,EAAS3mD,EACfkrB,GAAO,EAGFx0B,EAAIkI,EAAQlI,EAAIuzE,EAAUvzE,IAC/B,CACI,IAAK+P,EAAI,EAAGA,EAAIzG,EAAMyG,GAAK,EAEvB,GAA2B,MAAvB0jE,EAAUC,EAAM3jE,GACpB,CACIykB,GAAO,CACP,OAIR,GAAKA,EAMD,KAJAk/C,IAAOpqE,EAQf6pE,EAAWK,QAAUxzE,EAAIuzE,EAEzBJ,EAAWK,SAAW,EACtBL,EAAW7D,SAAW6D,EAAWtC,OAASsC,EAAWK,QAErDj7E,EAAOyxD,KAAKopB,oBAAoBjE,GAAagE,EAGjD,MAAOA,IAYX56E,EAAOyxD,KAAKzrD,UAAUiH,UAAY,SAAU8G,GAQxC,MANIpU,MAAKynB,QAELznB,KAAKo2E,aACLp2E,KAAKynB,OAAQ,GAGV3hB,KAAKsoB,OAAO/nB,UAAUiH,UAAUxG,KAAK9G,KAAMoU,IAYtD7M,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAK+1E,OAGhB9pE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK+1E,QAEf/1E,KAAK+1E,MAAQxsE,EAAM/B,YAAc,GACjCxH,KAAKynB,OAAQ,EAETznB,KAAKwpB,QAELxpB,KAAK4rB,sBAmBrBrkB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,WAEzC2F,IAAK,WACD,MAAOhM,MAAKq3E,iBAAiBr3E,KAAKg2E,kBAGtC/pE,IAAK,SAAU1C,GAEXA,EAAQA,GAAS,kBACjBvJ,KAAKg2E,gBAAkBh2E,KAAKg3E,iBAAiBztE,GAC7CvJ,KAAKy6E,WAAWz6E,KAAKg2E,oBAgB7BzuE,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAKg2E,gBAAgB4E,YAGhC3uE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,QACjBA,EAAQA,EAAMwpC,OAGT,2DAA2D4nC,KAAKpxE,IAAW,QAAQoxE,KAAKpxE,KAEzFA,EAAQ,IAAMA,EAAQ,KAG1BvJ,KAAKg2E,gBAAgB4E,WAAarxE,EAClCvJ,KAAKy6E,WAAWz6E,KAAKg2E,oBAe7BzuE,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,YAEzC2F,IAAK,WAED,GAAIhC,GAAOhK,KAAKg2E,gBAAgBoB,QAEhC,OAAIptE,IAAQ,cAAc2wE,KAAK3wE,GAEpBK,SAASL,EAAM,IAIfA,GAKfiC,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,IAEI,gBAAVA,KAEPA,GAAgB,MAGpBvJ,KAAKg2E,gBAAgBoB,SAAW7tE,EAChCvJ,KAAKy6E,WAAWz6E,KAAKg2E,oBAW7BzuE,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAKg2E,gBAAgBmB,YAAc,UAG9ClrE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,SACjBvJ,KAAKg2E,gBAAgBmB,WAAa5tE,EAClCvJ,KAAKy6E,WAAWz6E,KAAKg2E,oBAW7BzuE,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,aAEzC2F,IAAK,WACD,MAAOhM,MAAKg2E,gBAAgBiB,WAAa,UAG7ChrE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,SACjBvJ,KAAKg2E,gBAAgBiB,UAAY1tE,EACjCvJ,KAAKy6E,WAAWz6E,KAAKg2E,oBAW7BzuE,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,eAEzC2F,IAAK,WACD,MAAOhM,MAAKg2E,gBAAgBkB,aAAe,UAG/CjrE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,SACjBvJ,KAAKg2E,gBAAgBkB,YAAc3tE,EACnCvJ,KAAKy6E,WAAWz6E,KAAKg2E,oBAU7BzuE,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMylB,MAGtB12B,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMylB,OAErB3iC,KAAKkd,MAAMylB,KAAOp5B,EAClBvJ,KAAKynB,OAAQ,MAczBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,SAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAM8T,OAGtB/kB,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAM8T,QAErBhxB,KAAKkd,MAAM8T,MAAQznB,EACnBvJ,KAAKynB,OAAQ,MAazBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAK81E,MAGhB7pE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK81E,OAEf91E,KAAK81E,KAAOvsE,EACZvJ,KAAKynB,OAAQ,MAgBzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAM65D,MAGtB9qE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAM65D,OAErB/2E,KAAKkd,MAAM65D,KAAOxtE,EAClBvJ,KAAKynB,OAAQ,MAYzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,gBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMu5D,cAGtBxqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMu5D,eAErBz2E,KAAKkd,MAAMu5D,aAAeltE,EAC1BvJ,KAAKynB,OAAQ,MAYzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,gBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMw5D,cAGtBzqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMw5D,eAErB12E,KAAKkd,MAAMw5D,aAAentE,EAC1BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,UAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMyhD,QAGtB1yD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMyhD,SAErB3+D,KAAKkd,MAAMyhD,OAASp1D,EACpBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,mBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMy5D,iBAGtB1qE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMy5D,kBAErB32E,KAAKkd,MAAMy5D,gBAAkBptE,EAC7BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,YAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAM05D,UAGtB3qE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAM05D,WAErB52E,KAAKkd,MAAM05D,SAAWrtE,EACtBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,iBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAM25D,eAGtB5qE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAM25D,gBAErB72E,KAAKkd,MAAM25D,cAAgBttE,EAC3BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,eAEzC2F,IAAK,WACD,MAAOhM,MAAKi2E,cAGhBhqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKi2E,eAEfj2E,KAAKi2E,aAAewF,WAAWlyE,GAC/BvJ,KAAKynB,OAAQ,EAETznB,KAAKwpB,QAELxpB,KAAK4rB,sBAYrBrkB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,iBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMugD,eAGtBxxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMugD,gBAErBz9D,KAAKkd,MAAMugD,cAAgBl0D,EAC3BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,iBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMwgD,eAGtBzxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMwgD,gBAErB19D,KAAKkd,MAAMwgD,cAAgBn0D,EAC3BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,eAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMqgD,aAGtBtxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMqgD,cAErBv9D,KAAKkd,MAAMqgD,YAAch0D,EACzBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMsgD,YAGtBvxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMsgD,aAErBx9D,KAAKkd,MAAMsgD,WAAaj0D,EACxBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,gBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMo5D,cAGtBrqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMo5D,eAErBt2E,KAAKkd,MAAMo5D,aAAe/sE,EAC1BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMq5D,YAGtBtqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMq5D,aAErBv2E,KAAKkd,MAAMq5D,WAAahtE,EACxBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,SAEzC2F,IAAK,WAQD,MANIhM,MAAKynB,QAELznB,KAAKo2E,aACLp2E,KAAKynB,OAAQ,GAGVznB,KAAK6U,MAAM5O,EAAIjG,KAAKwiC,QAAQ7R,MAAM5gB,OAG7C9D,IAAK,SAAS1C,GAEVvJ,KAAK6U,MAAM5O,EAAIsD,EAAQvJ,KAAKwiC,QAAQ7R,MAAM5gB,MAC1C/P,KAAKg3B,OAASztB,KAStBhC,OAAO2E,eAAe7L,EAAOyxD,KAAKzrD,UAAW,UAEzC2F,IAAK,WAQD,MANIhM,MAAKynB,QAELznB,KAAKo2E,aACLp2E,KAAKynB,OAAQ,GAGVznB,KAAK6U,MAAMpI,EAAIzM,KAAKwiC,QAAQ7R,MAAM3gB,QAG7C/D,IAAK,SAAS1C,GAEVvJ,KAAK6U,MAAMpI,EAAIlD,EAAQvJ,KAAKwiC,QAAQ7R,MAAM3gB,OAC1ChQ,KAAKi3B,QAAU1tB,KAKvBlJ,EAAOyxD,KAAKopB,uBAEZ76E,EAAOyxD,KAAKqpB,qBAAuBrvD,SAAS4vD,cAAc,UAC1Dr7E,EAAOyxD,KAAKspB,sBAAwB/6E,EAAOyxD,KAAKqpB,qBAAqBv6C,WAAW,MAuDhFvgC,EAAO0pD,WAAa,SAAUvvC,EAAMvU,EAAGwG,EAAGimD,EAAMb,EAAM7nD,EAAMgnB,GAExD/qB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTimD,EAAOA,GAAQ,GACfb,EAAOA,GAAQ,GACf7nD,EAAOA,GAAQ,GACfgnB,EAAQA,GAAS,OAEjBlrB,KAAKwkB,uBAAuBxjB,KAAK9G,MAMjCA,KAAKkI,KAAO7H,EAAOkB,WAMnBvB,KAAK+tB,YAAc1tB,EAAOY,OAM1BjB,KAAK27E,UAAY,EAMjB37E,KAAK47E,WAAa,EAKlB57E,KAAKqpB,OAAS,GAAIhpB,GAAO2M,MAMzBhN,KAAK67E,YAAc,GAAIx7E,GAAO2M,MAM9BhN,KAAKgqD,WAMLhqD,KAAK87E,UAAY,EAMjB97E,KAAK+1E,MAAQlkB,EAAKrqD,YAAc,GAMhCxH,KAAK+7E,MAAQvhE,EAAKsF,MAAMk8D,cAActpB,GAMtC1yD,KAAKi8E,MAAQvpB,EAMb1yD,KAAKk8E,UAAYlyE,EAMjBhK,KAAKm8E,OAASnrD;AAMdhxB,KAAKo8E,MAAQ,SAEbp8E,KAAKo2E,aAKLp2E,KAAKynB,OAAQ,EAEbpnB,EAAOymD,UAAUkB,KAAK1nC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAG,GAAI,OAI1DpM,EAAO0pD,WAAW1jD,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACxEhG,EAAO0pD,WAAW1jD,UAAU8B,YAAc9H,EAAO0pD,WAEjD1pD,EAAOymD,UAAUkB,KAAKC,QAAQnhD,KAAKzG,EAAO0pD,WAAW1jD,WACjD,QACA,WACA,SACA,UACA,gBACA,eACA,UACA,WACA,cACA,UAGJhG,EAAO0pD,WAAW1jD,UAAU4tD,iBAAmB5zD,EAAOymD,UAAUuB,YAAYrrC,UAC5E3c,EAAO0pD,WAAW1jD,UAAU6tD,kBAAoB7zD,EAAOymD,UAAU6G,SAAS3wC,UAC1E3c,EAAO0pD,WAAW1jD,UAAU8tD,iBAAmB9zD,EAAOymD,UAAUsG,QAAQpwC,UACxE3c,EAAO0pD,WAAW1jD,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UASlE3c,EAAO0pD,WAAW1jD,UAAU2W,UAAY,WAEpC,SAAKhd,KAAKi0D,oBAAuBj0D,KAAKk0D,qBAAwBl0D,KAAKm0D,qBAK5Dn0D,KAAKo0D,gBAQhB/zD,GAAO0pD,WAAW1jD,UAAU+jB,WAAa,WAErC/pB,EAAOymD,UAAUuB,YAAYj+B,WAAWtjB,KAAK9G,MAC7CK,EAAOymD,UAAU0B,cAAcp+B,WAAWtjB,KAAK9G,MAE3CA,KAAK4vB,MAAQ5vB,KAAK4vB,KAAK1nB,OAAS7H,EAAOutB,QAAQC,SAE1C7tB,KAAK27E,YAAc37E,KAAK4vB,KAAKysD,aAAiBr8E,KAAK47E,aAAe57E,KAAK4vB,KAAK0sD,cAE7Et8E,KAAK4vB,KAAKnQ,QAAQzf,KAAK27E,UAAW37E,KAAK47E,aAcnDv7E,GAAO0pD,WAAW1jD,UAAUw0E,QAAU,SAAUhpB,GAE5C7xD,KAAK6xD,KAAOA,GAehBxxD,EAAO0pD,WAAW1jD,UAAUk2E,SAAW,SAAU75C,EAAM7tB,EAAOg9C,GAW1D,IAAK,GATD5rD,GAAI,EACJqX,EAAI,EACJk/D,GAAY,EACZC,EAAe,EACfC,EAAe,KACfC,EAAY38E,KAAK87E,UAAY,EAAK97E,KAAK87E,UAAY,KACnDjpB,KAGK/qD,EAAI,EAAGA,EAAI+pD,EAAKhqD,OAAQC,IACjC,CACI,GAAI6I,GAAO7I,IAAM+pD,EAAKhqD,OAAS,CAE/B,IAAI,iBAAiB+0E,KAAK/qB,EAAKgrB,OAAO/0E,IAElC,OAASiI,MAAOuN,EAAGu0C,KAAMA,EAAKznD,OAAO,EAAGtC,GAAI6I,IAAKA,EAAKkiD,MAAOA,EAI7D,IAAInS,GAAWmR,EAAKjR,WAAW94C,GAC3Bg1E,EAAWp6C,EAAKmwB,MAAMnS,GAEtBzxC,EAAI,CAISvF,UAAbozE,IAEAp8B,EAAW,GACXo8B,EAAWp6C,EAAKmwB,MAAMnS,GAI1B,IAAIq8B,GAAWL,GAAgBI,EAASC,QAAQL,GAAiBI,EAASC,QAAQL,GAAgB,CAYlG,IATI,OAAOE,KAAK/qB,EAAKgrB,OAAO/0E,MACxB00E,EAAY10E,EACZ20E,EAAen/D,GAInBrO,GAAK8tE,EAAUD,EAASt6C,QAAQzyB,MAAQ+sE,EAAS7pB,SAAWp+C,EAGxD8nE,GAAcr/D,EAAIrO,GAAM0tE,GAAaH,GAAY,EAGjD,OAASzsE,MAAO0sE,GAAgBn/D,EAAGu0C,KAAMA,EAAKznD,OAAO,EAAGtC,GAAKA,EAAI00E,IAAa7rE,IAAKA,EAAKkiD,MAAOA,EAI/Fv1C,KAAMw/D,EAASE,SAAWD,GAAWloE,EAErCg+C,EAAMjgD,KAAK3M,GAAK62E,EAAS7pB,QAAU8pB,GAAWloE,GAE9C5O,IAAM62E,EAASE,SAAWD,GAAWloE,EAErC6nE,EAAeh8B,EAK3B,OAAS3wC,MAAOuN,EAAGu0C,KAAMA,EAAMlhD,IAAKA,EAAKkiD,MAAOA,IAepDxyD,EAAO0pD,WAAW1jD,UAAU42E,UAAY,SAAUprB,EAAMjmD,GAEpClC,SAAZkC,IAEAA,EAAU,GAGd,IAAI82B,GAAO1iC,KAAK+7E,MAAMrpB,IAEtB,KAAKhwB,EAED,MAAO,EAMX,KAAK,GAHDw6C,GAAK,mBACL1F,EAAQ3lB,EAAKjmD,QAAQsxE,EAAI,MAAMv0E,MAAM,MAEhCb,EAAI,EAAGA,EAAI0vE,EAAM3vE,OAAQC,IAClC,CAII,IAAK,GAHDiG,GAAS,GACTqD,EAAOomE,EAAM1vE,GAERmH,EAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IAIzBlB,EAFA20B,EAAKmwB,MAAMzhD,EAAKwvC,WAAW3xC,IAElBlB,EAAOlH,OAAOuK,EAAKnC,IAInBlB,EAAOlH,OAAO+E,EAI/B4rE,GAAM1vE,GAAKiG,EAGf,MAAOypE,GAAM3uE,KAAK,OAUtBxI,EAAO0pD,WAAW1jD,UAAU+vE,WAAa,WAErC,GAAI1zC,GAAO1iC,KAAK+7E,MAAMrpB,IAEtB,IAAKhwB,EAAL,CAKA,GAAImvB,GAAO7xD,KAAK6xD,KACZh9C,EAAQ7U,KAAKk8E,UAAYx5C,EAAK14B,KAC9BwtE,KAEA/qE,EAAI,CAERzM,MAAK27E,UAAY,CAEjB,GACA,CACI,GAAIvqE,GAAOpR,KAAKu8E,SAAS75C,EAAM7tB,EAAOg9C,EAEtCzgD,GAAK3E,EAAIA,EAET+qE,EAAM5kE,KAAKxB,GAEPA,EAAKrB,MAAQ/P,KAAK27E,YAElB37E,KAAK27E,UAAYvqE,EAAKrB,OAG1BtD,GAAMi2B,EAAKy1C,WAAatjE,EAExBg9C,EAAOA,EAAKznD,OAAOgH,EAAKygD,KAAKhqD,OAAS,SAEjCuJ,EAAKT,OAAQ,EAEtB3Q,MAAK47E,WAAanvE,CAOlB,KAAK,GALD9E,GAAI,EACJqpB,EAAQ,EACR03C,EAAK1oE,KAAK27E,UAAY37E,KAAKqpB,OAAOpjB,EAClC0iE,EAAK3oE,KAAK47E,WAAa57E,KAAKqpB,OAAO5c,EAE9B3E,EAAI,EAAGA,EAAI0vE,EAAM3vE,OAAQC,IAClC,CACI,GAAIsJ,GAAOomE,EAAM1vE,EAEG,WAAhB9H,KAAKm8E,OAELnrD,EAAQhxB,KAAK27E,UAAYvqE,EAAKrB,MAET,WAAhB/P,KAAKm8E,SAEVnrD,GAAShxB,KAAK27E,UAAYvqE,EAAKrB,OAAS,EAG5C,KAAK,GAAId,GAAI,EAAGA,EAAImC,EAAKygD,KAAKhqD,OAAQoH,IACtC,CACI,GAAIyxC,GAAWtvC,EAAKygD,KAAKjR,WAAW3xC,GAChC6tE,EAAWp6C,EAAKmwB,MAAMnS,EAETh3C,UAAbozE,IAEAp8B,EAAW,GACXo8B,EAAWp6C,EAAKmwB,MAAMnS,GAG1B,IAAI51B,GAAI9qB,KAAKgqD,QAAQriD,EAEjBmjB,GAGAA,EAAE0X,QAAUs6C,EAASt6C,SAKrB1X,EAAI,GAAIhlB,MAAKsoB,OAAO0uD,EAASt6C,SAC7B1X,EAAE1f,KAAOgG,EAAKygD,KAAK5iD,GACnBjP,KAAKgqD,QAAQp3C,KAAKkY,IAGtBA,EAAEvR,SAAStT,EAAKmL,EAAKyhD,MAAM5jD,GAAK+hB,EAAS03C,EACzC59C,EAAEvR,SAAS9M,EAAK2E,EAAK3E,EAAKqwE,EAAS5pB,QAAUr+C,EAAU8zD,EAEvD79C,EAAEjW,MAAM5I,IAAI4I,GACZiW,EAAEwxC,KAAOt8D,KAAKs8D,KACdxxC,EAAE0X,QAAQitB,gBAAiB,EAEtB3kC,EAAEtB,QAEHxpB,KAAK+c,SAAS+N,GAGlBnjB,KAMR,IAAKG,EAAIH,EAAGG,EAAI9H,KAAKgqD,QAAQniD,OAAQC,IAEjC9H,KAAKsyB,YAAYtyB,KAAKgqD,QAAQliD,MAkBtCzH,EAAO0pD,WAAW1jD,UAAU82E,YAAc,WAKtC,IAAK,GAHDv1E,GAAM5H,KAAKgqD,QAAQniD,OACnBu1E,KAEKt1E,EAAI,EAAGA,EAAI9H,KAAKgqD,QAAQniD,OAAQC,IAEjC9H,KAAKgqD,QAAQliD,GAAG0hB,SAAWxpB,KAE3BA,KAAKgqD,QAAQliD,GAAGgc,UAIhBs5D,EAAKxqE,KAAK5S,KAAKgqD,QAAQliD,GAS/B,OALA9H,MAAKgqD,WACLhqD,KAAKgqD,QAAUozB,EAEfp9E,KAAKo2E,aAEExuE,EAAMw1E,EAAKv1E,QAUtBxH,EAAO0pD,WAAW1jD,UAAUulB,gBAAkB,YAEtC5rB,KAAKynB,OAAUznB,KAAKqpB,OAAOza,OAAO5O,KAAK67E,eAEvC77E,KAAKo2E,aACLp2E,KAAKynB,OAAQ,EACbznB,KAAK67E,YAAYpuE,SAASzN,KAAKqpB,SAGnCvjB,KAAKwkB,uBAAuBjkB,UAAUulB,gBAAgB9kB,KAAK9G,OAQ/DuH,OAAO2E,eAAe7L,EAAO0pD,WAAW1jD,UAAW,SAE/C2F,IAAK,WACD,MAAOhM,MAAKm8E,QAGhBlwE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKm8E,QAAqB,SAAV5yE,GAA8B,WAAVA,GAAgC,UAAVA,IAEpEvJ,KAAKm8E,OAAS5yE,EACdvJ,KAAKo2E,iBAWjB7uE,OAAO2E,eAAe7L,EAAO0pD,WAAW1jD,UAAW,QAE/C2F,IAAK,WACD,MAAOhM,MAAKo8E,OAGhBnwE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKo8E,QAEfp8E,KAAKo8E,MAAQ7yE,EACbvJ,KAAKo2E,iBAWjB7uE,OAAO2E,eAAe7L,EAAO0pD,WAAW1jD,UAAW,QAE/C2F,IAAK,WACD,MAAOhM,MAAKi8E,OAGhBhwE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKi8E,QAEfj8E,KAAKi8E,MAAQ1yE,EAAMwpC,OACnB/yC,KAAK+7E,MAAQ/7E,KAAKwa,KAAKsF,MAAMk8D,cAAch8E,KAAKi8E,OAChDj8E,KAAKo2E,iBAWjB7uE,OAAO2E,eAAe7L,EAAO0pD,WAAW1jD,UAAW,YAE/C2F,IAAK,WACD,MAAOhM,MAAKk8E,WAGhBjwE,IAAK,SAAS1C,GAEVA,EAAQc,SAASd,EAAO,IAEpBA,IAAUvJ,KAAKk8E,WAAa3yE,EAAQ,IAEpCvJ,KAAKk8E,UAAY3yE,EACjBvJ,KAAKo2E,iBAWjB7uE,OAAO2E,eAAe7L,EAAO0pD,WAAW1jD,UAAW,QAE/C2F,IAAK,WACD,MAAOhM,MAAK+1E,OAGhB9pE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK+1E,QAEf/1E,KAAK+1E,MAAQxsE,EAAM/B,YAAc,GACjCxH,KAAKo2E,iBAoBjB7uE,OAAO2E,eAAe7L,EAAO0pD,WAAW1jD,UAAW,YAE/C2F,IAAK,WAED,MAAOhM,MAAK87E,WAIhB7vE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK87E,YAEf97E,KAAK87E,UAAYvyE,EACjBvJ,KAAKo2E,iBAiBjB7uE,OAAO2E,eAAe7L,EAAO0pD,WAAW1jD,UAAW,YAE/C2F,IAAK,WAED,OAAQhM,KAAK+7E,MAAM7sB,KAAKf,WAI5BliD,IAAK,SAAS1C,GAENA,EAEAvJ,KAAK+7E,MAAM7sB,KAAKf,UAAY,EAI5BnuD,KAAK+7E,MAAM7sB,KAAKf,UAAY,KA+BxC9tD,EAAO8yD,UAAY,SAAU34C,EAAMzO,EAAK4mD,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEtH,IAAK14C,EAAKsF,MAAMu9D,cAActxE,GAE1B,OAAO,CAGSrC,UAAhBopD,GAA6C,OAAhBA,IAE7BA,EAAct4C,EAAKsF,MAAMmvC,SAASljD,GAAKgE,MAAQ4iD,GAMnD3yD,KAAK2yD,eAAiBA,EAKtB3yD,KAAK4yD,gBAAkBA,EAKvB5yD,KAAKs9E,kBAAoBvqB,GAAY,EAKrC/yD,KAAKu9E,kBAAoBvqB,GAAY,EAKrChzD,KAAKw9E,gBAAkB1qB,EAMvB9yD,KAAK61C,QAAUod,GAAW,EAM1BjzD,KAAK81C,QAAUod,GAAW,EAK1BlzD,KAAKgxB,MAAQ,OAMbhxB,KAAKy9E,WAAY,EAMjBz9E,KAAK09E,eAAgB,EAMrB19E,KAAK29E,eAAiB,EAMtB39E,KAAK49E,eAAiB,EAOtB59E,KAAK69E,WAAa,EAKlB79E,KAAK89E,QAAUtjE,EAAKsF,MAAMmvC,SAASljD,GAMnC/L,KAAK+1E,MAAQ,GAMb/1E,KAAK+9E,YAKL/9E,KAAK0uD,UAAY,GAAIruD,GAAO83D,SAO5B,KAAK,GAJD6lB,GAAWh+E,KAAK61C,QAChBooC,EAAWj+E,KAAK81C,QAChB5oC,EAAI,EAEC+B,EAAI,EAAGA,EAAI4jD,EAAMhrD,OAAQoH,IAClC,CACI,GAAI0hB,GAAQ3wB,KAAK0uD,UAAU2J,SAAS,GAAIh4D,GAAOi4D,MAAMrpD,EAAG+uE,EAAUC,EAAUj+E,KAAK2yD,eAAgB3yD,KAAK4yD,iBAEtG5yD,MAAK+9E,SAASlrB,EAAMjS,WAAW3xC,IAAM0hB,EAAMhB,MAE3CziB,IAEIA,IAAMlN,KAAKw9E,iBAEXtwE,EAAI,EACJ8wE,EAAWh+E,KAAK61C,QAChBooC,GAAYj+E,KAAK4yD,gBAAkB5yD,KAAKu9E,mBAIxCS,GAAYh+E,KAAK2yD,eAAiB3yD,KAAKs9E,kBAI/C9iE,EAAKsF,MAAMo+D,gBAAgBnyE,EAAK/L,KAAK0uD,WAMrC1uD,KAAKm+E,MAAQ,GAAI99E,GAAO0wD,MAAMv2C,EAAM,EAAG,EAAGzO,EAAK,GAE/C1L,EAAO+tD,cAActnD,KAAK9G,KAAMwa,EAAM,IAAK,IAAK,GAAIna,EAAOqF,WAAWG,SAKtE7F,KAAKkI,KAAO7H,EAAO8B,WAIvB9B,EAAO8yD,UAAU9sD,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tD,cAAc/nD,WAChEhG,EAAO8yD,UAAU9sD,UAAU8B,YAAc9H,EAAO8yD,UAOhD9yD,EAAO8yD,UAAUirB,WAAa,OAO9B/9E,EAAO8yD,UAAUkrB,YAAc,QAO/Bh+E,EAAO8yD,UAAUmrB,aAAe,SAOhCj+E,EAAO8yD,UAAUorB,UAAY,oGAO7Bl+E,EAAO8yD,UAAUqrB,UAAY,+DAO7Bn+E,EAAO8yD,UAAUsrB,UAAY,wCAO7Bp+E,EAAO8yD,UAAUurB,UAAY,wCAO7Br+E,EAAO8yD,UAAUwrB,UAAY,mDAO7Bt+E,EAAO8yD,UAAUyrB,UAAY,oDAO7Bv+E,EAAO8yD,UAAU0rB,UAAY,oDAO7Bx+E,EAAO8yD,UAAU2rB,UAAY,yCAO7Bz+E,EAAO8yD,UAAU4rB,UAAY,kDAO7B1+E,EAAO8yD,UAAU6rB,WAAa,6BAO9B3+E,EAAO8yD,UAAU8rB,WAAa,oDAW9B5+E,EAAO8yD,UAAU9sD,UAAU64E,cAAgB,SAAUnvE,EAAOovE,GAElCz1E,SAAlBy1E,IAA+BA,EAAgB,QAEnDn/E,KAAK69E,WAAa9tE,EAClB/P,KAAKgxB,MAAQmuD,GAgBjB9+E,EAAO8yD,UAAU9sD,UAAUw0E,QAAU,SAAUuE,EAAS3B,EAAW4B,EAAkBjH,EAAa+G,EAAeG,GAE7Gt/E,KAAKy9E,UAAYA,IAAa,EAC9Bz9E,KAAK29E,eAAiB0B,GAAoB,EAC1Cr/E,KAAK49E,eAAiBxF,GAAe,EACrCp4E,KAAKgxB,MAAQmuD,GAAiB,OAE1BG,EAEAt/E,KAAK09E,eAAgB,EAIrB19E,KAAK09E,eAAgB,EAGrB0B,EAAQv3E,OAAS,IAEjB7H,KAAK6xD,KAAOutB,IAWpB/+E,EAAO8yD,UAAU9sD,UAAUk5E,mBAAqB,WAE5C,GAAIrwE,GAAK,EACLI,EAAK,CAKT,IAFAtP,KAAKie,QAEDje,KAAKy9E,UACT,CACI,GAAIjG,GAAQx3E,KAAK+1E,MAAMptE,MAAM,KAEzB3I,MAAK69E,WAAa,EAElB79E,KAAK8Y,OAAO9Y,KAAK69E,WAAarG,EAAM3vE,QAAU7H,KAAK4yD,gBAAkB5yD,KAAK49E,gBAAmB59E,KAAK49E,gBAAgB,GAIlH59E,KAAK8Y,OAAO9Y,KAAKw/E,kBAAoBx/E,KAAK2yD,eAAiB3yD,KAAK29E,gBAAkBnG,EAAM3vE,QAAU7H,KAAK4yD,gBAAkB5yD,KAAK49E,gBAAmB59E,KAAK49E,gBAAgB,EAI1K,KAAK,GAAI91E,GAAI,EAAGA,EAAI0vE,EAAM3vE,OAAQC,IAG9BoH,EAAK,EAGDlP,KAAKgxB,QAAU3wB,EAAO8yD,UAAUkrB,YAEhCnvE,EAAKlP,KAAK+P,MAASynE,EAAM1vE,GAAGD,QAAU7H,KAAK2yD,eAAiB3yD,KAAK29E,gBAE5D39E,KAAKgxB,QAAU3wB,EAAO8yD,UAAUmrB,eAErCpvE,EAAMlP,KAAK+P,MAAQ,EAAOynE,EAAM1vE,GAAGD,QAAU7H,KAAK2yD,eAAiB3yD,KAAK29E,gBAAmB,EAC3FzuE,GAAMlP,KAAK29E,eAAiB,GAI5BzuE,EAAK,IAELA,EAAK,GAGTlP,KAAKy/E,UAAUjI,EAAM1vE,GAAIoH,EAAII,EAAItP,KAAK29E,gBAEtCruE,GAAMtP,KAAK4yD,gBAAkB5yD,KAAK49E,mBAKlC59E,MAAK69E,WAAa,EAElB79E,KAAK8Y,OAAO9Y,KAAK69E,WAAY79E,KAAK4yD,iBAAiB,GAInD5yD,KAAK8Y,OAAO9Y,KAAK+1E,MAAMluE,QAAU7H,KAAK2yD,eAAiB3yD,KAAK29E,gBAAiB39E,KAAK4yD,iBAAiB,GAIvG1jD,EAAK,EAEDlP,KAAKgxB,QAAU3wB,EAAO8yD,UAAUkrB,YAEhCnvE,EAAKlP,KAAK+P,MAAS/P,KAAK+1E,MAAMluE,QAAU7H,KAAK2yD,eAAiB3yD,KAAK29E,gBAE9D39E,KAAKgxB,QAAU3wB,EAAO8yD,UAAUmrB,eAErCpvE,EAAMlP,KAAK+P,MAAQ,EAAO/P,KAAK+1E,MAAMluE,QAAU7H,KAAK2yD,eAAiB3yD,KAAK29E,gBAAmB,EAC7FzuE,GAAMlP,KAAK29E,eAAiB,GAI5BzuE,EAAK,IAELA,EAAK,GAGTlP,KAAKy/E,UAAUz/E,KAAK+1E,MAAO7mE,EAAI,EAAGlP,KAAK29E,eAG3C39E,MAAKyvD,gBAAiB,GAe1BpvD,EAAO8yD,UAAU9sD,UAAUo5E,UAAY,SAAUruE,EAAMnL,EAAGwG,EAAGkxE,GAEzD,IAAK,GAAI1uE,GAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IAG7B,GAAuB,MAAnBmC,EAAKyrE,OAAO5tE,GAEZhJ,GAAKjG,KAAK2yD,eAAiBgrB,MAK3B,IAAI39E,KAAK+9E,SAAS3sE,EAAKwvC,WAAW3xC,KAAO,IAErCjP,KAAKm+E,MAAMxtD,MAAQ3wB,KAAK+9E,SAAS3sE,EAAKwvC,WAAW3xC,IACjDjP,KAAKk1E,SAASl1E,KAAKm+E,MAAOl4E,EAAGwG,GAAG,GAEhCxG,GAAKjG,KAAK2yD,eAAiBgrB,EAEvB13E,EAAIjG,KAAK+P,OAET,OAcpB1P,EAAO8yD,UAAU9sD,UAAUm5E,eAAiB,WAExC,GAAIE,GAAc,CAElB,IAAI1/E,KAAK+1E,MAAMluE,OAAS,EAIpB,IAAK,GAFD2vE,GAAQx3E,KAAK+1E,MAAMptE,MAAM,MAEpBb,EAAI,EAAGA,EAAI0vE,EAAM3vE,OAAQC,IAE1B0vE,EAAM1vE,GAAGD,OAAS63E,IAElBA,EAAclI,EAAM1vE,GAAGD,OAKnC,OAAO63E,IAYXr/E,EAAO8yD,UAAU9sD,UAAUs5E,4BAA8B,SAAUC,GAI/D,IAAK,GAFDC,GAAY,GAEP5wE,EAAI,EAAGA,EAAIjP,KAAK+1E,MAAMluE,OAAQoH,IACvC,CACI,GAAI6wE,GAAQ9/E,KAAK+1E,MAAM9mE,GACnB8wE,EAAOD,EAAMl/B,WAAW,IAExB5gD,KAAK+9E,SAASgC,IAAS,IAAOH,GAAqB,OAAVE,KAEzCD,EAAYA,EAAUh5E,OAAOi5E,IAIrC,MAAOD,IAcXx/E,EAAO8yD,UAAU9sD,UAAU25E,aAAe,SAAU/5E,EAAGwG,GAEnD,GAAIzM,KAAK61C,UAAY5vC,GAAKjG,KAAK81C,UAAYrpC,EAA3C,CAWA,IANA,GAAIwzE,GAAQh6E,EAAIjG,KAAK61C,QACjBqqC,EAAQzzE,EAAIzM,KAAK81C,QAEjBqqC,EAASngF,KAAKwa,KAAKsF,MAAM2uC,aAAazuD,KAAKm+E,MAAMpyE,KAAKq0E,YACtDt4E,EAAIq4E,EAAOt4E,OAERC,KAEHq4E,EAAOr4E,GAAG7B,GAAKg6E,EACfE,EAAOr4E,GAAG2E,GAAKyzE,CAGnBlgF,MAAKu/E,uBAQTh4E,OAAO2E,eAAe7L,EAAO8yD,UAAU9sD,UAAW,QAE9C2F,IAAK,WAED,MAAOhM,MAAK+1E,OAIhB9pE,IAAK,SAAU1C,GAEX,GAAI82E,EAIAA,GAFArgF,KAAK09E,cAEKn0E,EAAM+2E,cAIN/2E,EAGV82E,IAAYrgF,KAAK+1E,QAEjB/1E,KAAK+1E,MAAQsK,EAEbrgF,KAAK2/E,4BAA4B3/E,KAAKy9E,WAEtCz9E,KAAKu/E,yBAWjBh4E,OAAO2E,eAAe7L,EAAO8yD,UAAU9sD,UAAW,YAE9C2F,IAAK,WAED,MAAOhM,MAAKm+E,MAAM/iD,UAItBnvB,IAAK,SAAU1C,GAEXvJ,KAAKm+E,MAAM/iD,SAAW7xB,EACtBvJ,KAAKu/E,wBA+Cbl/E,EAAOuxD,KAAO,SAAUp3C,EAAMvU,EAAGwG,EAAGV,EAAK4kB,EAAO5Z,GAE5C/W,KAAK+W,UACL/W,KAAK+W,OAASA,EACd/W,KAAKugF,qBAAsB,EAC3BvgF,KAAKwgF,yBAA2B,KAChCv6E,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACb4kB,EAAQA,GAAS,KAMjB3wB,KAAKkI,KAAO7H,EAAOgC,KAEnByD,KAAK8rD,KAAK9qD,KAAK9G,KAAMK,EAAOs5B,MAAMh0B,QAAS3F,KAAK+W,QAEhD1W,EAAOymD,UAAUkB,KAAK1nC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK4kB,IAI3DtwB,EAAOuxD,KAAKvrD,UAAYkB,OAAOmZ,OAAO5a,KAAK8rD,KAAKvrD,WAChDhG,EAAOuxD,KAAKvrD,UAAU8B,YAAc9H,EAAOuxD,KAE3CvxD,EAAOymD,UAAUkB,KAAKC,QAAQnhD,KAAKzG,EAAOuxD,KAAKvrD,WAC3C,QACA,YACA,WACA,SACA,aACA,OACA,QACA,UACA,gBACA,UACA,WACA,cACA,UACA,cACA,QACA,cACA,aAGJhG,EAAOuxD,KAAKvrD,UAAU4tD,iBAAmB5zD,EAAOymD,UAAUuB,YAAYrrC,UACtE3c,EAAOuxD,KAAKvrD,UAAU6tD,kBAAoB7zD,EAAOymD,UAAU6G,SAAS3wC,UACpE3c,EAAOuxD,KAAKvrD,UAAU8tD,iBAAmB9zD,EAAOymD,UAAUsG,QAAQpwC,UAClE3c,EAAOuxD,KAAKvrD,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UAQ5D3c,EAAOuxD,KAAKvrD,UAAU2W,UAAY,WAE9B,SAAKhd,KAAKi0D,oBAAuBj0D,KAAKk0D,qBAAwBl0D,KAAKm0D,qBAK5Dn0D,KAAKo0D,iBAUhB/zD,EAAOuxD,KAAKvrD,UAAUkY,OAAS,WAEvBve,KAAKugF,qBAELvgF,KAAKygF,gBAAgB35E,KAAK9G,OAgBlCK,EAAOuxD,KAAKvrD,UAAUqZ,MAAQ,SAASzZ,EAAGwG,GAItC,MAFApM,GAAOymD,UAAUkJ,MAAM3pD,UAAUqZ,MAAM5Y,KAAK9G,KAAMiG,EAAGwG,GAE9CzM,MAUXuH,OAAO2E,eAAe7L,EAAOuxD,KAAKvrD,UAAW,mBAEzC2F,IAAK,WAED,MAAOhM,MAAK0gF,kBAIhBz0E,IAAK,SAAU1C,GAEPA,GAA0B,kBAAVA,IAEhBvJ,KAAKugF,qBAAsB,EAC3BvgF,KAAK0gF,iBAAmBn3E,IAIxBvJ,KAAKugF,qBAAsB,EAC3BvgF,KAAK0gF,iBAAmB,SAapCn5E,OAAO2E,eAAe7L,EAAOuxD,KAAKvrD,UAAW,YAEzC2F,IAAK,WAKD,IAAK,GAFD2jB,GAAOrf,EAAIC,EAAIC,EAAIC,EAAIV,EAAOC,EAAQ0D,EADtCgwD,KAGK57D,EAAI,EAAGA,EAAI9H,KAAK+W,OAAOlP,OAAQC,IAEpC6nB,EAAY,EAAJ7nB,EAERwI,EAAKtQ,KAAK60E,SAASllD,GAAS3vB,KAAK6U,MAAM5O,EACvCsK,EAAKvQ,KAAK60E,SAASllD,EAAQ,GAAK3vB,KAAK6U,MAAMpI,EAC3C+D,EAAKxQ,KAAK60E,SAASllD,EAAQ,GAAK3vB,KAAK6U,MAAM5O,EAC3CwK,EAAKzQ,KAAK60E,SAASllD,EAAQ,GAAK3vB,KAAK6U,MAAMpI,EAE3CsD,EAAQ1P,EAAO0F,KAAK46E,WAAWrwE,EAAIE,GACnCR,EAAS3P,EAAO0F,KAAK46E,WAAWpwE,EAAIE,GAEpCH,GAAMtQ,KAAKya,MAAMxU,EACjBsK,GAAMvQ,KAAKya,MAAMhO,EACjBiH,EAAO,GAAIrT,GAAOkN,UAAU+C,EAAIC,EAAIR,EAAOC,GAC3C0zD,EAAS9wD,KAAKc,EAGlB,OAAOgwD,MA+DfrjE,EAAOkiC,WAAa,SAAU/nB,EAAMvU,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK4kB,GAE1D1qB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTsD,EAAQA,GAAS,IACjBC,EAASA,GAAU,IACnBjE,EAAMA,GAAO,KACb4kB,EAAQA,GAAS,KAMjB3wB,KAAKkI,KAAO7H,EAAOiB,WAMnBtB,KAAK+tB,YAAc1tB,EAAOY,OAM1BjB,KAAK4gF,QAAU,GAAIvgF,GAAO2M,KAE1B,IAAI6zE,GAAMrmE,EAAKsF,MAAMmvC,SAAS,aAAa,EAE3CnpD,MAAKg7E,aAAah6E,KAAK9G,KAAM,GAAI8F,MAAKgpD,QAAQ+xB,EAAI3xB,MAAOn/C,EAAOC,GAEhE3P,EAAOymD,UAAUkB,KAAK1nC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK4kB,IAI3DtwB,EAAOkiC,WAAWl8B,UAAYkB,OAAOmZ,OAAO5a,KAAKg7E,aAAaz6E,WAC9DhG,EAAOkiC,WAAWl8B,UAAU8B,YAAc9H,EAAOkiC,WAEjDliC,EAAOymD,UAAUkB,KAAKC,QAAQnhD,KAAKzG,EAAOkiC,WAAWl8B,WACjD,QACA,YACA,WACA,SACA,aACA,UACA,gBACA,SACA,WACA,eACA,UACA,WACA,cACA,UACA,cACA,QACA,aAGJhG,EAAOkiC,WAAWl8B,UAAU4tD,iBAAmB5zD,EAAOymD,UAAUuB,YAAYrrC,UAC5E3c,EAAOkiC,WAAWl8B,UAAU6tD,kBAAoB7zD,EAAOymD,UAAU6G,SAAS3wC,UAC1E3c,EAAOkiC,WAAWl8B,UAAU8tD,iBAAmB9zD,EAAOymD,UAAUsG,QAAQpwC,UACxE3c,EAAOkiC,WAAWl8B,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UAQlE3c,EAAOkiC,WAAWl8B,UAAU2W,UAAY,WAYpC,MAVuB,KAAnBhd,KAAK4gF,QAAQ36E,IAEbjG,KAAK+gF,aAAa96E,GAAKjG,KAAK4gF,QAAQ36E,EAAIjG,KAAKwa,KAAKmE,KAAKqiE,gBAGpC,IAAnBhhF,KAAK4gF,QAAQn0E,IAEbzM,KAAK+gF,aAAat0E,GAAKzM,KAAK4gF,QAAQn0E,EAAIzM,KAAKwa,KAAKmE,KAAKqiE,mBAGtDhhF,KAAKi0D,oBAAuBj0D,KAAKk0D,qBAAwBl0D,KAAKm0D,qBAK5Dn0D,KAAKo0D,iBAehB/zD,EAAOkiC,WAAWl8B,UAAU46E,WAAa,SAASh7E,EAAGwG,GAEjDzM,KAAK4gF,QAAQ30E,IAAIhG,EAAGwG,IAUxBpM,EAAOkiC,WAAWl8B,UAAU66E,WAAa,WAErClhF,KAAK4gF,QAAQ30E,IAAI,EAAG,IAYxB5L,EAAOkiC,WAAWl8B,UAAUyd,QAAU,SAAS6S,GAE3Ct2B,EAAOymD,UAAU2C,QAAQpjD,UAAUyd,QAAQhd,KAAK9G,KAAM22B,GAEtD7wB,KAAKg7E,aAAaz6E,UAAUyd,QAAQhd,KAAK9G,OAe7CK,EAAOkiC,WAAWl8B,UAAUqZ,MAAQ,SAASzZ,EAAGwG,GAO5C,MALApM,GAAOymD,UAAUkJ,MAAM3pD,UAAUqZ,MAAM5Y,KAAK9G,KAAMiG,EAAGwG,GAErDzM,KAAK+gF,aAAa96E,EAAI,EACtBjG,KAAK+gF,aAAat0E,EAAI,EAEfzM,MAiCXK,EAAO43B,OAAS,WAOZj4B,KAAKmhF,cAAgB,EAOrBnhF,KAAKohF,aAAc,EAQnBphF,KAAKqhF,SAAU,EAMfrhF,KAAK48B,KAAM,EAMX58B,KAAKshF,WAAa,EAMlBthF,KAAKk7B,UAAW,EAMhBl7B,KAAK2sB,aAAc,EAMnB3sB,KAAK28B,SAAU,EAMf38B,KAAKuhF,MAAO,EAMZvhF,KAAKwhF,YAAa,EAMlBxhF,KAAKyhF,UAAW,EAMhBzhF,KAAK0hF,QAAS,EAMd1hF,KAAK2hF,WAAY,EAMjB3hF,KAAKwkC,SAAU,EAMfxkC,KAAK4hF,UAAW,EAMhB5hF,KAAK6hF,OAAQ,EAMb7hF,KAAK8hF,OAAQ,EAMb9hF,KAAK+hF,SAAU,EAMf/hF,KAAKgiF,cAAe,EAQpBhiF,KAAKsrB,QAAS,EAMdtrB,KAAKiiF,kBAAoB,KAMzBjiF,KAAK66B,OAAQ,EAMb76B,KAAKkiF,MAAO,EAMZliF,KAAKmiF,YAAa,EAMlBniF,KAAKoiF,cAAe,EAMpBpiF,KAAKqiF,QAAS,EAMdriF,KAAKsiF,OAAQ,EAMbtiF,KAAKwjC,aAAc,EAMnBxjC,KAAKuiF,YAAa,EAMlBviF,KAAKwiF,WAAY,EAMjBxiF,KAAKyiF,cAAe,EAMpBziF,KAAK0iF,YAAa,EAQlB1iF,KAAKg/B,OAAQ,EAMbh/B,KAAKi/B,WAAY,EAOjBj/B,KAAKmlC,WAAa,KAQlBnlC,KAAK2iF,OAAQ,EAMb3iF,KAAK46B,QAAS,EAMd56B,KAAK4iF,cAAgB,EAMrB5iF,KAAK6iF,UAAW,EAMhB7iF,KAAK8iF,SAAU,EAMf9iF,KAAK+iF,eAAiB,EAMtB/iF,KAAKgjF,IAAK,EAMVhjF,KAAKijF,UAAY,EAMjBjjF,KAAKkjF,SAAU,EAMfljF,KAAKmjF,eAAiB,EAMtBnjF,KAAKojF,MAAO,EAMZpjF,KAAKqjF,cAAe,EAMpBrjF,KAAKsjF,QAAS,EAMdtjF,KAAKujF,OAAQ,EAMbvjF,KAAKwjF,QAAS,EAMdxjF,KAAKyjF,cAAgB,EAMrBzjF,KAAK0jF,QAAS,EAMd1jF,KAAK2jF,MAAO,EAQZ3jF,KAAK4jF,WAAY,EAMjB5jF,KAAK26B,UAAW,EAMhB36B,KAAK6jF,KAAM,EAMX7jF,KAAK8jF,MAAO,EAMZ9jF,KAAK+jF,KAAM,EAMX/jF,KAAKgkF,KAAM,EAOXhkF,KAAKikF,KAAM,EAMXjkF,KAAKkkF,MAAO,EAMZlkF,KAAKmkF,OAAQ,EAQbnkF,KAAKokF,UAAW,EAMhBpkF,KAAKqkF,WAAY,EAMjBrkF,KAAKskF,UAAW,EAMhBtkF,KAAKukF,WAAY,EAMjBvkF,KAAKwkF,UAAW,EAMhBxkF,KAAKykF,UAAW,EAQhBzkF,KAAK0kF,QAAS,EAMd1kF,KAAK2kF,SAAU,EAMf3kF,KAAK4kF,MAAO,EAQZ5kF,KAAK6kF,WAAa,EAMlB7kF,KAAK8kF,cAAe,EAMpB9kF,KAAKu7D,eAAgB,EAMrBv7D,KAAK+kF,cAAe,EAMpB/kF,KAAKglF,YAAa,EAMlBhlF,KAAKilF,kBAAoB,GAMzBjlF,KAAKklF,iBAAmB,GAMxBllF,KAAKmlF,oBAAqB,GAM9B9kF,EAAO43B,OAAS,GAAI53B,GAAO43B,OAc3B53B,EAAO43B,OAAOmtD,cAAgB,GAAI/kF,GAAO+a,OAgBzC/a,EAAO43B,OAAOoB,UAAY,SAAU/F,EAAUjP,EAASghE,GAEnD,GAAIC,GAAatlF,KAAKulF,WAEtB,IAAIvlF,KAAKmhF,gBAAkBmE,EAEvBhyD,EAASxsB,KAAKud,EAASrkB,UAEtB,IAAIslF,EAAWE,UAAYH,EAE5BC,EAAWG,OAASH,EAAWG,WAC/BH,EAAWG,OAAO7yE,MAAM0gB,EAAUjP,QAGtC,CACIihE,EAAWE,SAAWF,EAAWh/E,KAAKtG,MACtCslF,EAAWG,OAASH,EAAWG,WAC/BH,EAAWG,OAAO7yE,MAAM0gB,EAAUjP,GAElC,IAAIsY,GAAoC,mBAAnB50B,QAAO40B,QACxBzB,EAAWib,UAAsB,UAET,cAAxBrqB,SAAS45D,YAAqD,gBAAxB55D,SAAS45D,WAG/C39E,OAAO49E,WAAWL,EAAWE,SAAU,GAElC7oD,IAAYzB,EAIjBpP,SAASO,iBAAiB,cAAei5D,EAAWE,UAAU,IAI9D15D,SAASO,iBAAiB,mBAAoBi5D,EAAWE,UAAU,GACnEz9E,OAAOskB,iBAAiB,OAAQi5D,EAAWE,UAAU,MAajEnlF,EAAO43B,OAAOstD,YAAc,WAExB,GAAID,GAAatlF,KAAKulF,WAEtB,IAAKz5D,SAAS8D,MAIT,IAAK5vB,KAAKmhF,cACf,CACInhF,KAAKmhF,cAAgBv5D,KAAKwR,MAE1BtN,SAASyB,oBAAoB,cAAe+3D,EAAWE,UACvD15D,SAASyB,oBAAoB,mBAAoB+3D,EAAWE,UAC5Dz9E,OAAOwlB,oBAAoB,OAAQ+3D,EAAWE,UAE9CxlF,KAAK4lF,cACL5lF,KAAKohF,aAAc,EAEnBphF,KAAKolF,cAAcvmE,SAAS7e,KAG5B,KADA,GAAI6lF,GACIA,EAAOP,EAAWG,OAAOp6C,SACjC,CACI,GAAI/X,GAAWuyD,EAAK,GAChBxhE,EAAUwhE,EAAK,EACnBvyD,GAASxsB,KAAKud,EAASrkB,MAI3BA,KAAKulF,YAAc,KACnBvlF,KAAK4lF,YAAc,KACnB5lF,KAAKolF,cAAgB,UA1BrBr9E,QAAO49E,WAAWL,EAAWE,SAAU,KAsC/CnlF,EAAO43B,OAAO2tD,YAAc,WAOxB,QAASE,KAEL,GAAItyE,GAAK2iC,UAAUG,SAEf,oBAAmBsmC,KAAKppE,GAExBkZ,EAAOq5D,MAAO,EAET,SAASnJ,KAAKppE,IAAO,kBAAkBopE,KAAKppE,IAAO,sBAAsBopE,KAAKppE,GAEnFkZ,EAAOs5D,QAAS,EAIX,UAAUpJ,KAAKppE,GAEpBkZ,EAAO8X,SAAU,EAEZ,OAAOo4C,KAAKppE,GAEjBkZ,EAAOk1D,UAAW,EAEb,kBAAkBhF,KAAKppE,IAE5BkZ,EAAOkQ,KAAM,EACZuZ,UAAoB,WAAE0Q,MAAM,YAC7Bn6B,EAAO40D,WAAaj3E,SAAS47E,OAAOC,GAAI,KAEnC,QAAQtJ,KAAKppE,GAElBkZ,EAAOm1D,OAAQ,EAEV,SAASjF,KAAKppE,GAEnBkZ,EAAOo1D,OAAQ,EAEV,UAAUlF,KAAKppE,KAEpBkZ,EAAOq1D,SAAU,IAGjB,iBAAiBnF,KAAKppE,IAAO,YAAYopE,KAAKppE,MAE9CkZ,EAAO8X,SAAU,EACjB9X,EAAOkQ,KAAM,EACblQ,EAAOo1D,OAAQ,EACfp1D,EAAOq1D,SAAU,EACjBr1D,EAAOs1D,cAAe,EAG1B,IAAI2B,GAAO,OAAO/G,KAAKppE,IAEnBkZ,EAAOq1D,SAAWr1D,EAAOo1D,OAAUp1D,EAAOm1D,QAAU8B,GAASj3D,EAAOk1D,YAEpEl1D,EAAO20D,SAAU,IAIjB30D,EAAOs1D,cAAkB,cAAcpF,KAAKppE,IAAS,SAASopE,KAAKppE,MAEnEkZ,EAAO20D,SAAU,GAQzB,QAAS8E,KAELz5D,EAAOpB,SAAWvjB,OAAiC,0BAAK2kB,EAAOwO,QAE/D,KACIxO,EAAO01D,eAAiBA,aAAagE,QACvC,MAAOC,GACL35D,EAAO01D,cAAe,EAG1B11D,EAAOw1D,QAASn6E,OAAa,MAAOA,OAAmB,YAAOA,OAAiB,UAAOA,OAAa,MACnG2kB,EAAOy1D,aAAep6E,OAA0B,kBAEhD2kB,EAAOmO,MAAQ,WAAgB,IAAM,GAAIvP,GAASQ,SAAS4vD,cAAe,SAAyE,OAA7BpwD,GAAO6P,cAAe,IAAiBpzB,OAAOu+E,wBAA2Bh7D,EAAOsV,WAAY,UAAatV,EAAOsV,WAAY,uBAA4B,MAAO31B,GAAM,OAAO,MAClSyhB,EAAOmO,QAAUnO,EAAOmO,MAExBnO,EAAO21D,SAAWt6E,OAAe,OAEjC2kB,EAAO8W,YAAc,sBAAwB1X,WAAY,yBAA2BA,WAAY,4BAA8BA,UAE9HY,EAAOg2D,WAAsC,eAAxB52D,SAASy6D,WAE9BpwC,UAAUssC,aAAetsC,UAAUssC,cAAgBtsC,UAAUqwC,oBAAsBrwC,UAAUswC,iBAAmBtwC,UAAUuwC,gBAAkBvwC,UAAUwwC,cAEtJ5+E,OAAO6+E,IAAM7+E,OAAO6+E,KAAO7+E,OAAO8+E,WAAa9+E,OAAO++E,QAAU/+E,OAAOg/E,MAEvEr6D,EAAO+1D,aAAe/1D,EAAO+1D,gBAAkBtsC,UAAUssC,gBAAkB16E,OAAO6+E,IAG9El6D,EAAOo2D,SAAWp2D,EAAOq2D,eAAiB,KAE1Cr2D,EAAO+1D,cAAe,IAOrB/1D,EAAOkQ,MAAQlQ,EAAOs2D,IAAMt2D,EAAOo2D,SAAWp2D,EAAOkO,UAEtDlO,EAAOu1D,mBAAoB,IAI3Bv1D,EAAO82D,QAAU92D,EAAO22D,gBAExB32D,EAAOu1D,mBAAoB,GAQnC,QAAS+E,MAED,gBAAkBl7D,UAASm7D,iBAAoBl/E,OAAOouC,UAAU+wC,gBAAkBn/E,OAAOouC,UAAU+wC,gBAAkB,KAErHx6D,EAAOsS,OAAQ,IAGfj3B,OAAOouC,UAAUgxC,kBAAoBp/E,OAAOouC,UAAUixC,kBAEtD16D,EAAOuS,WAAY,GAGlBvS,EAAOwO,WAGJ,WAAanzB,SAAW2kB,EAAOs2D,IAAM,cAAgBj7E,QAGrD2kB,EAAOyY,WAAa,QAEf,gBAAkBp9B,QAGvB2kB,EAAOyY,WAAa,aAEfzY,EAAOo2D,SAAW,oBAAsB/6E,UAG7C2kB,EAAOyY,WAAa,mBAShC,QAASkiD,KAeL,IAAK,GAbDC,IACA,oBACA,oBACA,0BACA,0BACA,sBACA,sBACA,uBACA,wBAGA3hD,EAAU7Z,SAAS4vD,cAAc,OAE5B5zE,EAAI,EAAGA,EAAIw/E,EAAGz/E,OAAQC,IAE3B,GAAI69B,EAAQ2hD,EAAGx/E,IACf,CACI4kB,EAAOs4D,YAAa,EACpBt4D,EAAOu4D,kBAAoBqC,EAAGx/E,EAC9B,OAIR,GAAIy/E,IACA,mBACA,iBACA,yBACA,uBACA,qBACA,mBACA,sBACA,oBAGJ,IAAI76D,EAAOs4D,WAEP,IAAK,GAAIl9E,GAAI,EAAGA,EAAIy/E,EAAI1/E,OAAQC,IAE5B,GAAIgkB,SAASy7D,EAAIz/E,IACjB,CACI4kB,EAAOw4D,iBAAmBqC,EAAIz/E,EAC9B,OAMRC,OAAgB,SAAKy/E,QAA8B,uBAEnD96D,EAAOy4D,oBAAqB,GAQpC,QAASsC,KAEL,GAAIj0E,GAAK2iC,UAAUG,SA4FnB,IA1FI,QAAQsmC,KAAKppE,GAEbkZ,EAAOi2D,OAAQ,EAEV,YAAY/F,KAAKppE,GAEtBkZ,EAAO02D,MAAO,EAET,gBAAgBxG,KAAKppE,KAAQkZ,EAAOs1D,cAEzCt1D,EAAOkO,QAAS,EAChBlO,EAAOk2D,cAAgBv4E,SAAS47E,OAAOC,GAAI,KAEtC,WAAWtJ,KAAKppE,GAErBkZ,EAAOm2D,UAAW,EAEb,kBAAkBjG,KAAKppE,IAE5BkZ,EAAOo2D,SAAU,EACjBp2D,EAAOq2D,eAAiB14E,SAAS47E,OAAOC,GAAI,KAEvC,cAActJ,KAAKppE,IAAOkZ,EAAOkQ,IAEtClQ,EAAO22D,cAAe,EAEjB,mBAAmBzG,KAAKppE,IAE7BkZ,EAAOs2D,IAAK,EACZt2D,EAAOu2D,UAAY54E,SAAS47E,OAAOC,GAAI,KAElC,SAAStJ,KAAKppE,GAEnBkZ,EAAO42D,QAAS,EAEX,QAAQ1G,KAAKppE,GAElBkZ,EAAO62D,OAAQ,EAEV,gBAAgB3G,KAAKppE,KAAQkZ,EAAOs1D,cAEzCt1D,EAAO82D,QAAS,EAEZ,mBAAmB5G,KAAKppE,KAExBkZ,EAAO+2D,cAAgBp5E,SAAS47E,OAAOC,GAAI,MAG1C,uCAAuCtJ,KAAKppE,KAEjDkZ,EAAOs2D,IAAK,EACZt2D,EAAOw2D,SAAU,EACjBx2D,EAAOy2D,eAAiB94E,SAAS47E,OAAOC,GAAI,IAC5Cx5D,EAAOu2D,UAAY54E,SAAS47E,OAAOyB,GAAI,KAIvC,OAAO9K,KAAKppE,KAEZkZ,EAAOi3D,MAAO,GAIdxtC,UAAsB,aAEtBzpB,EAAOg3D,QAAS,GAGU,mBAAnB37E,QAAO40B,UAEdjQ,EAAOiQ,SAAU,GAGE,mBAAZgrD,UAA8C,mBAAZC,WAEzCl7D,EAAO60D,MAAO,GAGd70D,EAAO60D,MAAoC,gBAArBoG,SAAQE,WAE9Bn7D,EAAO80D,aAAemG,QAAQE,SAAS,eAEvCn7D,EAAO+0D,WAAakG,QAAQE,SAASpG,UAGrCtrC,UAAsB,aAEtBzpB,EAAOwO,UAAW,GAGlBxO,EAAOwO,SAEP,IACIxO,EAAOC,YAAmC,mBAAbC,UAEjC,MAAMy5D,GAEF35D,EAAOC,aAAc,EAIA,mBAAlB5kB,QAAO25E,SAEdh1D,EAAOg1D,QAAS,GAGhB,YAAY9E,KAAKppE,KAEjBkZ,EAAOi1D,WAAY,GAQ3B,QAASmG,KAEL,GAAIC,GAAej8D,SAAS4vD,cAAc,SACtCpqE,GAAS,CAEb,MACQA,IAAWy2E,EAAaC,eAEpBD,EAAaC,YAAY,8BAA8Bp8E,QAAQ,OAAQ,MAEvE8gB,EAAO03D,UAAW,GAGlB2D,EAAaC,YAAY,mCAAmCp8E,QAAQ,OAAQ,MAG5E8gB,EAAO23D,WAAY,EACnB33D,EAAO43D,UAAW,GAGlByD,EAAaC,YAAY,oCAAoCp8E,QAAQ,OAAQ,MAE7E8gB,EAAO63D,WAAY,GAGnBwD,EAAaC,YAAY,4BAA4Bp8E,QAAQ,OAAQ,MAErE8gB,EAAO83D,UAAW,GAGlBuD,EAAaC,YAAY,+CAA+Cp8E,QAAQ,OAAQ,MAExF8gB,EAAO+3D,UAAW,IAG5B,MAAOx5E,KAMb,QAASg9E,KAELv7D,EAAOk3D,YAAe77E,OAAe,MACrC2kB,EAAOiO,YAAc5yB,OAAqB,eAAKA,OAA2B,mBAC1E,IAAImgF,GAAep8D,SAAS4vD,cAAc,SACtCpqE,GAAS,CAEb,KACI,IAAIA,IAAW42E,EAAaF,eAEpBE,EAAaF,YAAY,8BAA8Bp8E,QAAQ,OAAQ,MAEvE8gB,EAAOm3D,KAAM,IAGbqE,EAAaF,YAAY,4BAA4Bp8E,QAAQ,OAAQ,KAAOs8E,EAAaF,YAAY,eAAep8E,QAAQ,OAAQ,OAEpI8gB,EAAOo3D,MAAO,GAGdoE,EAAaF,YAAY,eAAep8E,QAAQ,OAAQ,MAExD8gB,EAAOq3D,KAAM,GAMbmE,EAAaF,YAAY,yBAAyBp8E,QAAQ,OAAQ,MAElE8gB,EAAOs3D,KAAM,IAGbkE,EAAaF,YAAY,iBAAmBE,EAAaF,YAAY,cAAcp8E,QAAQ,OAAQ,OAEnG8gB,EAAOu3D,KAAM,GAGbiE,EAAaF,YAAY,+BAA+Bp8E,QAAQ,OAAQ,MAExE8gB,EAAOw3D,MAAO,GAG0C,KAAxDgE,EAAaF,YAAY,4BAEzB,GAAIt7D,EAAO02D,KAEP12D,EAAOy3D,OAAQ,MAEd,IAAIz3D,EAAO82D,QAAU92D,EAAO+2D,eAAiB,GAE1C,uBAAuB7G,KAAKzmC,UAAUG,WAC1C,CACI,GAAI6xC,GAAQ99E,SAAS47E,OAAOC,GAAI,IAC5BkC,EAAQ/9E,SAAS47E,OAAOoC,GAAI,KAEjB,KAAVF,GAAgBC,GAAS,IAAOD,EAAQ,MAEzCz7D,EAAOy3D,OAAQ,IAMrC,MAAOl5E,KAQb,QAASq9E,KAEL57D,EAAOm4D,WAAa98E,OAAyB,kBAAK,EAClD2kB,EAAOg4D,OAASvuC,UAAUG,UAAUrL,cAAc3a,QAAQ,YAAa,EACvE5D,EAAOi4D,QAAgC,GAArBj4D,EAAOm4D,YAAmBn4D,EAAOg4D,OACnDh4D,EAAOk4D,KAAOzuC,UAAUG,UAAUrL,cAAc3a,QAAQ,UAAW,EAE1C,mBAAdi4D,WAEP77D,EAAO61D,YAAa,EAIpB71D,EAAO61D,YAAa,EAGG,mBAAhBtqB,cAAqD,mBAAfuwB,aAAqD,mBAAhBxgF,eAElF0kB,EAAOo4D,aAAe2D,IACtB/7D,EAAO6uC,cAAgB7uC,EAAOo4D,cAGlCp4D,EAAOq4D,aAAuC,mBAAhB9sB,cAA4D,mBAAtBywB,oBAA2D,mBAAfC,aAAsD,OAAxBj8D,EAAOo4D,cAAyB8D,IAE9KzyC,UAAU0yC,QAAU1yC,UAAU0yC,SAAW1yC,UAAU2yC,eAAiB3yC,UAAU4yC,YAAc5yC,UAAU6yC,UAElG7yC,UAAU0yC,UAEVn8D,EAAO81D,WAAY,GAU3B,QAASiG,KAEL,GAAIh6E,GAAI,GAAIwpD,aAAY,GACpBppD,EAAI,GAAI25E,YAAW/5E,GACnBQ,EAAI,GAAIjH,aAAYyG,EAOxB,OALAI,GAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IAEK,YAARI,EAAE,IAKM,YAARA,EAAE,IAOK,KAUf,QAAS25E,KAEL,GAA0Bl/E,SAAtBg/E,kBAEA,OAAO,CAGX,IAAIO,GAAOnjF,KAAK66B,WAAWjgB,OAAO1gB,KAAM,EAAG,GACvC03D,EAAMuxB,EAAKroD,WAAW,KAE1B,KAAK82B,EAED,OAAO,CAGX,IAAItuC,GAAQsuC,EAAIwxB,gBAAgB,EAAG,EAInC,OAFApjF,MAAK66B,WAAW7d,OAAO9iB,MAEhBopB,EAAMsZ,eAAgBgmD,mBAOjC,QAASS,KAEL,GACIC,GADAC,EAAKv9D,SAAS4vD,cAAc,KAE5B4N,GACAC,gBAAmB,oBACnBC,WAAc,eACdC,YAAe,gBACfC,aAAgB,iBAChBljB,UAAa,YAIjB16C,UAAS8D,KAAK+5D,aAAaN,EAAI,KAE/B,KAAK,GAAI1hF,KAAK2hF,GAEU5/E,SAAhB2/E,EAAGnsE,MAAMvV,KAET0hF,EAAGnsE,MAAMvV,GAAK,2BACdyhF,EAAQrhF,OAAO6hF,iBAAiBP,GAAIQ,iBAAiBP,EAAW3hF,IAIxEmkB,UAAS8D,KAAK0C,YAAY+2D,GAC1B38D,EAAO41D,MAAmB54E,SAAV0/E,GAAuBA,EAAMvhF,OAAS,GAAe,SAAVuhF,EAlkB/D,GAAI18D,GAAS1sB,IAukBb8lF,KACA2B,IACAQ,IACAH,IACAqB,IACAb,IACAnC,IACAkB,IACAL,KAYJ3mF,EAAO43B,OAAO6xD,aAAe,SAAU5hF,GAEnC,QAAa,QAATA,IAAkBlI,KAAK+jF,SAIT,QAAT77E,IAAmBlI,KAAK6jF,MAAO7jF,KAAK8jF,UAI3B,QAAT57E,IAAkBlI,KAAKikF,SAId,SAAT/7E,IAAmBlI,KAAK8jF,UAIf,QAAT57E,IAAkBlI,KAAKgkF,SAId,SAAT97E,IAAmBlI,KAAKkkF,SAIf,QAATh8E,IAAkBlI,KAAKmkF,aAiBpC9jF,EAAO43B,OAAO8xD,aAAe,SAAU7hF,GAEnC,QAAa,SAATA,IAAoBlI,KAAKukF,YAAavkF,KAAKwkF,cAI7B,QAATt8E,IAAmBlI,KAAKskF,WAAYtkF,KAAKqkF,eAI/B,QAATn8E,GAA2B,QAATA,IAAmBlI,KAAKokF,aAIlC,SAATl8E,IAAmBlI,KAAKykF,aAiBrCpkF,EAAO43B,OAAO+xD,cAAgB,WAE1B,SAAIjiF,OAAOK,UAAWL,OAAOK,QAAiB,aAK1CL,OAAOK,UAEPA,QAAQ6hF,UACR7hF,QAAQ8hF,aAEJ9hF,QAAQ6V,OAER7V,QAAQ6V,SAGR7V,QAAkB,YAEXA,QAAkB,SAAEP,OAAS,GAoBhDxH,EAAO43B,OAAOkyD,sBAAwB,WAElC,GAAIC,GAAUriF,OAAOouC,UAAUG,UAAUuQ,MAAM,iCAC/C,OAAOujC,IAAWA,EAAQ,GAAK,KAiBnC/pF,EAAOkrB,QAaH7K,OAAQ,SAAU8I,EAAQzZ,EAAOC,EAAQ2E,EAAI8iD,GAEzC1nD,EAAQA,GAAS,IACjBC,EAASA,GAAU,GAEnB,IAAIsb,GAAS,EAAaQ,SAAS4vD,cAAc,UAAY51E,KAAK66B,WAAWjgB,OAAO8I,EAAQzZ,EAAOC,EAWnG,OATkB,gBAAP2E,IAA0B,KAAPA,IAE1B2W,EAAO3W,GAAKA,GAGhB2W,EAAOvb,MAAQA,EACfub,EAAOtb,OAASA,EAChBsb,EAAOpO,MAAMmtE,QAAU,QAEhB/+D,GAYXH,mBAAoB,SAAUG,EAAQtN,GAMlC,MAJAA,GAAQA,GAAS,aAEjBsN,EAAOpO,MAAMs5D,gBAAkBx4D,EAExBsN,GAYXG,eAAgB,SAAUH,EAAQ/hB,GAQ9B,MANAA,GAAQA,GAAS,OAEjB+hB,EAAOpO,MAAMotE,cAAgB/gF,EAC7B+hB,EAAOpO,MAAM,mBAAqB3T,EAClC+hB,EAAOpO,MAAM,gBAAkB3T,EAExB+hB,GAYXE,cAAe,SAAUF,EAAQ/hB,GAY7B,MAVAA,GAAQA,GAAS,OAEjB+hB,EAAOpO,MAAM,yBAA2B3T,EACxC+hB,EAAOpO,MAAM,uBAAyB3T,EACtC+hB,EAAOpO,MAAM,sBAAwB3T,EACrC+hB,EAAOpO,MAAM,oBAAsB3T,EACnC+hB,EAAOpO,MAAM,mBAAqB3T,EAClC+hB,EAAOpO,MAAM,eAAiB3T,EAC9B+hB,EAAOpO,MAAM,+BAAiC,mBAEvCoO,GAcX+P,SAAU,SAAU/P,EAAQ9B,EAAQ+gE,GAEhC,GAAIvjF,EA+BJ,OA7BuB0C,UAAnB6gF,IAAgCA,GAAiB,GAEjD/gE,IAEsB,gBAAXA,GAGPxiB,EAAS8kB,SAAS0+D,eAAehhE,GAEV,gBAAXA,IAA2C,IAApBA,EAAOze,WAG1C/D,EAASwiB,IAKZxiB,IAEDA,EAAS8kB,SAAS8D,MAGlB26D,GAAkBvjF,EAAOkW,QAEzBlW,EAAOkW,MAAMutE,SAAW,UAG5BzjF,EAAO0jF,YAAYp/D,GAEZA,GAUXiR,cAAe,SAAUjR,GAEjBA,EAAOq/D,YAEPr/D,EAAOq/D,WAAWr4D,YAAYhH,IAkBtC/G,aAAc,SAAUF,EAASq8C,EAAYC,EAAY3E,EAAQC,EAAQ2E,EAAOC,GAI5E,MAFAx8C,GAAQE,aAAay3C,EAAQ4E,EAAOC,EAAO5E,EAAQyE,EAAYC,GAExDt8C,GAgBXk8C,oBAAqB,SAAUl8C,EAAS9a,GAEpC,GAAIkN,GAAIpW,EAAOkrB,OAAOssC,mBAAmBxzC,EAOzC,OALI5N,KAEA4N,EAAQ5N,GAAKlN,GAGV8a,GAWXwzC,mBAAoB,SAAUxzC,GAE1B,GAAIumE,IAAW,IAAK,UAAW,MAAO,OAAQ,KAE9C,KAAK,GAAIC,KAAUD,GACnB,CACI,GAAIn0E,GAAIm0E,EAAOC,GAAU,sBAEzB,IAAIp0E,IAAK4N,GAEL,MAAO5N,GAIf,MAAO,OAWX6pD,oBAAqB,SAAUj8C,GAE3B,GAAI5N,GAAIpW,EAAOkrB,OAAOssC,mBAAmBxzC,EAEzC,IAAI5N,EAEA,MAAO4N,GAAQ5N,IAavBq0E,uBAAwB,SAAUx/D,GAI9B,IAAK,GAFDy/D,IAAU,gBAAiB,cAAe,mBAAoB,4BAA6B,oBAAqB,aAE3GjjF,EAAI,EAAGA,EAAIijF,EAAMljF,OAAQC,IAE9BwjB,EAAOpO,MAAM,mBAAqB6tE,EAAMjjF,EAK5C,OAFAwjB,GAAOpO,MAAM8tE,oBAAsB,mBAE5B1/D,GAYX2/D,yBAA0B,SAAU3/D,GAKhC,MAHAA,GAAOpO,MAAM,mBAAqB,OAClCoO,EAAOpO,MAAM8tE,oBAAsB,UAE5B1/D,IAoBfjrB,EAAOi6B,sBAAwB,SAAS9f,EAAM0wE,GAElBxhF,SAApBwhF,IAAiCA,GAAkB,GAKvDlrF,KAAKwa,KAAOA,EAMZxa,KAAK83B,WAAY,EAKjB93B,KAAKkrF,gBAAkBA,CASvB,KAAK,GAPDC,IACA,KACA,MACA,SACA,KAGKllF,EAAI,EAAGA,EAAIklF,EAAQtjF,SAAWE,OAAOqjF,sBAAuBnlF,IAEjE8B,OAAOqjF,sBAAwBrjF,OAAOojF,EAAQllF,GAAK,yBACnD8B,OAAOsjF,qBAAuBtjF,OAAOojF,EAAQllF,GAAK,uBAOtDjG,MAAKsrF,eAAgB,EAMrBtrF,KAAKurF,QAAU,KAMfvrF,KAAKwrF,WAAa,MAItBnrF,EAAOi6B,sBAAsBj0B,WAMzBqK,MAAO,WAEH1Q,KAAK83B,WAAY,CAEjB,IAAIrR,GAAQzmB,MAEP+H,OAAOqjF,uBAAyBprF,KAAKkrF,iBAEtClrF,KAAKsrF,eAAgB,EAErBtrF,KAAKurF,QAAU,WACX,MAAO9kE,GAAMglE,oBAGjBzrF,KAAKwrF,WAAazjF,OAAO49E,WAAW3lF,KAAKurF,QAAS,KAIlDvrF,KAAKsrF,eAAgB,EAErBtrF,KAAKurF,QAAU,SAAU5sE,GACrB,MAAO8H,GAAMilE,UAAU/sE,IAG3B3e,KAAKwrF,WAAazjF,OAAOqjF,sBAAsBprF,KAAKurF,WAS5DG,UAAW,SAAUC,GAEb3rF,KAAK83B,YAGL93B,KAAKwa,KAAK+D,OAAOxY,KAAKI,MAAMwlF,IAE5B3rF,KAAKwrF,WAAazjF,OAAOqjF,sBAAsBprF,KAAKurF,WAS5DE,iBAAkB,WAEVzrF,KAAK83B,YAEL93B,KAAKwa,KAAK+D,OAAOqJ,KAAKwR,OAEtBp5B,KAAKwrF,WAAazjF,OAAO49E,WAAW3lF,KAAKurF,QAASvrF,KAAKwa,KAAKmE,KAAKitE,cASzEtvD,KAAM,WAEEt8B,KAAKsrF,cAELO,aAAa7rF,KAAKwrF,YAIlBzjF,OAAOsjF,qBAAqBrrF,KAAKwrF,YAGrCxrF,KAAK83B,WAAY,GASrBg0D,aAAc,WACV,MAAO9rF,MAAKsrF,eAQhBS,MAAO,WACH,MAAQ/rF,MAAKsrF,iBAAkB,IAKvCjrF,EAAOi6B,sBAAsBj0B,UAAU8B,YAAc9H,EAAOi6B,sBAkB5Dj6B,EAAO0F,MAOHimF,IAAe,EAAVjmF,KAAK+G,GAUVyqB,QAAS,SAAUtlB,EAAKE,GAEpB,MAAOpM,MAAKI,MAAMJ,KAAK4D,UAAYwI,EAAMF,EAAM,GAAKA,IAaxDg6E,WAAY,SAAUx9E,EAAGI,EAAGq9E,GAIxB,MAFgBxiF,UAAZwiF,IAAyBA,EAAU,MAEhCnmF,KAAKoJ,IAAIV,EAAII,GAAKq9E,GAa7BC,cAAe,SAAU19E,EAAGI,EAAGq9E,GAI3B,MAFgBxiF,UAAZwiF,IAAyBA,EAAU,MAEhCz9E,EAAII,EAAIq9E,GAanBE,iBAAkB,SAAU39E,EAAGI,EAAGq9E,GAI9B,MAFgBxiF,UAAZwiF,IAAyBA,EAAU,MAEhCz9E,EAAII,EAAIq9E,GAYnBG,UAAW,SAAUC,EAAKJ,GAItB,MAFgBxiF,UAAZwiF,IAAyBA,EAAU,MAEhCnmF,KAAKG,KAAKomF,EAAMJ,IAY3BK,WAAY,SAAUD,EAAKJ,GAIvB,MAFgBxiF,UAAZwiF,IAAyBA,EAAU,MAEhCnmF,KAAKI,MAAMmmF,EAAMJ,IAW5BM,QAAS,WAKL,IAAK,GAHD/hB,GAAM,EACN7iE,EAAMb,UAAUc,OAEXC,EAAI,EAAGA,EAAIF,EAAKE,IAErB2iE,IAAS1jE,UAAUe,EAGvB,OAAO2iE,GAAM7iE,GASjB6kF,MAAO,SAAU7mE,GAEb,MAAOA,GAAI,GAef8mE,OAAQ,SAAU3sE,EAAO4sE,EAAKj8E,GAI1B,MAFchH,UAAVgH,IAAuBA,EAAQ,GAEvB,IAARi8E,EACO5sE,GAGXA,GAASrP,EACTqP,EAAQ4sE,EAAM5mF,KAAK+H,MAAMiS,EAAQ4sE,GAE1Bj8E,EAAQqP,IAgBnB6sE,YAAa,SAAU7sE,EAAO4sE,EAAKj8E,GAI/B,MAFchH,UAAVgH,IAAuBA,EAAQ,GAEvB,IAARi8E,EACO5sE,GAGXA,GAASrP,EACTqP,EAAQ4sE,EAAM5mF,KAAKI,MAAM4Z,EAAQ4sE,GAE1Bj8E,EAAQqP,IAgBnBm4D,WAAY,SAAUn4D,EAAO4sE,EAAKj8E,GAI9B,MAFchH,UAAVgH,IAAuBA,EAAQ,GAEvB,IAARi8E,EACO5sE,GAGXA,GAASrP,EACTqP,EAAQ4sE,EAAM5mF,KAAKG,KAAK6Z,EAAQ4sE,GAEzBj8E,EAAQqP,IAuCnB8sE,QAAS,SAAUtjF,EAAOujF,EAAO59B,GAEfxlD,SAAVojF,IAAuBA,EAAQ,GACtBpjF,SAATwlD,IAAsBA,EAAO,GAEjC,IAAIj/C,GAAIlK,KAAKgnF,IAAI79B,GAAO49B,EAExB,OAAO/mF,MAAK+H,MAAMvE,EAAQ0G,GAAKA,GAcnC+8E,QAAS,SAAUzjF,EAAOujF,EAAO59B,GAEfxlD,SAAVojF,IAAuBA,EAAQ,GACtBpjF,SAATwlD,IAAsBA,EAAO,GAEjC,IAAIj/C,GAAIlK,KAAKgnF,IAAI79B,GAAO49B,EAExB,OAAO/mF,MAAKI,MAAMoD,EAAQ0G,GAAKA,GAcnCg9E,OAAQ,SAAU1jF,EAAOujF,EAAO59B,GAEdxlD,SAAVojF,IAAuBA,EAAQ,GACtBpjF,SAATwlD,IAAsBA,EAAO,GAEjC,IAAIj/C,GAAIlK,KAAKgnF,IAAI79B,GAAO49B,EAExB,OAAO/mF,MAAKG,KAAKqD,EAAQ0G,GAAKA,GAclCi9E,aAAc,SAAU58E,EAAIC,EAAIC,EAAIC,GAEhC,MAAO1K,MAAK+M,MAAMrC,EAAKF,EAAIC,EAAKF,IAiBpC68E,cAAe,SAAU78E,EAAIC,EAAIC,EAAIC,GAEjC,MAAO1K,MAAK+M,MAAMtC,EAAKF,EAAIG,EAAKF,IAYpC68E,mBAAoB,SAAUtY,EAAQC,GAElC,MAAOhvE,MAAK+M,MAAMiiE,EAAOtoE,EAAIqoE,EAAOroE,EAAGsoE,EAAO9uE,EAAI6uE,EAAO7uE,IAW7DonF,oBAAqB,SAAUvY,EAAQC,GAEnC,MAAOhvE,MAAK+M,MAAMiiE,EAAO9uE,EAAI6uE,EAAO7uE,EAAG8uE,EAAOtoE,EAAIqoE,EAAOroE,IAU7D6gF,aAAc,SAAUC,GAEpB,MAAOvtF,MAAKwtF,eAAeD,EAAWxnF,KAAK+G,IAAI,IAUnD0gF,eAAgB,SAAUD,GAGtB,MADAA,IAAuB,EAAIxnF,KAAK+G,GACzBygF,GAAY,EAAIA,EAAWA,EAAW,EAAIxnF,KAAK+G,IAa1D2gF,OAAQ,SAAUlkF,EAAO0pB,EAAQ9gB,GAE7B,MAAOpM,MAAKkM,IAAI1I,EAAQ0pB,EAAQ9gB,IAapCu7E,OAAQ,SAAUnkF,EAAO0pB,EAAQhhB,GAE7B,MAAOlM,MAAKoM,IAAI5I,EAAQ0pB,EAAQhhB,IAepCc,KAAM,SAAUxJ,EAAO0I,EAAKE,GAExB,GAAIw7E,GAAQx7E,EAAMF,CAElB,IAAI07E,GAAS,EAET,MAAO,EAGX,IAAIr8E,IAAU/H,EAAQ0I,GAAO07E,CAO7B,OALIr8E,GAAS,IAETA,GAAUq8E,GAGPr8E,EAASW,GAepB27E,UAAW,SAAUrkF,EAAO0pB,EAAQ9gB,GAEhC,GAAIo/D,EAMJ,OALAhoE,GAAQxD,KAAKoJ,IAAI5F,GACjB0pB,EAASltB,KAAKoJ,IAAI8jB,GAClB9gB,EAAMpM,KAAKoJ,IAAIgD,GACfo/D,GAAQhoE,EAAQ0pB,GAAU9gB,GAa9B07E,MAAO,SAAUjoE,GAGb,SAAc,EAAJA,IAWdkoE,OAAQ,SAAUloE,GAGd,QAAa,EAAJA,IAab3T,IAAK,WAED,GAAyB,IAArBlL,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAI27B,GAAO37B,UAAU,OAIrB,IAAI27B,GAAO37B,SAGf,KAAK,GAAIe,GAAI,EAAGmK,EAAM,EAAGrK,EAAM86B,EAAK76B,OAAQC,EAAIF,EAAKE,IAE7C46B,EAAK56B,GAAK46B,EAAKzwB,KAEfA,EAAMnK,EAId,OAAO46B,GAAKzwB,IAahBE,IAAK,WAED,GAAyB,IAArBpL,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAI27B,GAAO37B,UAAU,OAIrB,IAAI27B,GAAO37B,SAGf,KAAK,GAAIe,GAAI,EAAGqK,EAAM,EAAGvK,EAAM86B,EAAK76B,OAAQC,EAAIF,EAAKE,IAE7C46B,EAAK56B,GAAK46B,EAAKvwB,KAEfA,EAAMrK,EAId,OAAO46B,GAAKvwB,IAWhB47E,YAAa,SAAU/6D,GAEnB,GAAyB,IAArBjsB,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAI27B,GAAO37B,UAAU,OAIrB,IAAI27B,GAAO37B,UAAUR,MAAM,EAG/B,KAAK,GAAIuB,GAAI,EAAGmK,EAAM,EAAGrK,EAAM86B,EAAK76B,OAAQC,EAAIF,EAAKE,IAE7C46B,EAAK56B,GAAGkrB,GAAY0P,EAAKzwB,GAAK+gB,KAE9B/gB,EAAMnK,EAId,OAAO46B,GAAKzwB,GAAK+gB,IAWrBg7D,YAAa,SAAUh7D,GAEnB,GAAyB,IAArBjsB,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAI27B,GAAO37B,UAAU,OAIrB,IAAI27B,GAAO37B,UAAUR,MAAM,EAG/B,KAAK,GAAIuB,GAAI,EAAGqK,EAAM,EAAGvK,EAAM86B,EAAK76B,OAAQC,EAAIF,EAAKE,IAE7C46B,EAAK56B,GAAGkrB,GAAY0P,EAAKvwB,GAAK6gB,KAE9B7gB,EAAMrK,EAId,OAAO46B,GAAKvwB,GAAK6gB,IAYrBg0B,UAAW,SAAU94C,EAAO+/E,GAExB,MAAOA,GAAUjuF,KAAK+S,KAAK7E,GAAQnI,KAAK+G,GAAI/G,KAAK+G,IAAM9M,KAAK+S,KAAK7E,GAAO,IAAM,MAYlFggF,oBAAqB,SAAUxzD,EAAGqe,GAE9B,GAAI9iC,GAAIykB,EAAE7yB,OAAS,EACfqC,EAAI+L,EAAI8iC,EACRjxC,EAAI/B,KAAKI,MAAM+D,EAEnB,OAAI6uC,GAAI,EAEG/4C,KAAKmf,OAAOub,EAAE,GAAIA,EAAE,GAAIxwB,GAG/B6uC,EAAI,EAEG/4C,KAAKmf,OAAOub,EAAEzkB,GAAIykB,EAAEzkB,EAAI,GAAIA,EAAI/L,GAGpClK,KAAKmf,OAAOub,EAAE5yB,GAAI4yB,EAAE5yB,EAAI,EAAImO,EAAIA,EAAInO,EAAI,GAAIoC,EAAIpC,IAY3DqmF,oBAAqB,SAAUzzD,EAAGqe,GAK9B,IAAK,GAHDlqC,GAAI,EACJ+W,EAAI8U,EAAE7yB,OAAS,EAEVC,EAAI,EAAGA,GAAK8d,EAAG9d,IAEpB+G,GAAK9I,KAAKgnF,IAAI,EAAIh0C,EAAGnzB,EAAI9d,GAAK/B,KAAKgnF,IAAIh0C,EAAGjxC,GAAK4yB,EAAE5yB,GAAK9H,KAAKouF,UAAUxoE,EAAG9d,EAG5E,OAAO+G,IAYXw/E,wBAAyB,SAAU3zD,EAAGqe,GAElC,GAAI9iC,GAAIykB,EAAE7yB,OAAS,EACfqC,EAAI+L,EAAI8iC,EACRjxC,EAAI/B,KAAKI,MAAM+D,EAEnB,OAAIwwB,GAAE,KAAOA,EAAEzkB,IAEP8iC,EAAI,IAEJjxC,EAAI/B,KAAKI,MAAM+D,EAAI+L,GAAK,EAAI8iC,KAGzB/4C,KAAKsuF,WAAW5zD,GAAG5yB,EAAI,EAAImO,GAAKA,GAAIykB,EAAE5yB,GAAI4yB,GAAG5yB,EAAI,GAAKmO,GAAIykB,GAAG5yB,EAAI,GAAKmO,GAAI/L,EAAIpC,IAIjFixC,EAAI,EAEGre,EAAE,IAAM16B,KAAKsuF,WAAW5zD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAKxwB,GAAKwwB,EAAE,IAG/Dqe,EAAI,EAEGre,EAAEzkB,IAAMjW,KAAKsuF,WAAW5zD,EAAEzkB,GAAIykB,EAAEzkB,GAAIykB,EAAEzkB,EAAI,GAAIykB,EAAEzkB,EAAI,GAAI/L,EAAI+L,GAAKykB,EAAEzkB,IAGvEjW,KAAKsuF,WAAW5zD,EAAE5yB,EAAIA,EAAI,EAAI,GAAI4yB,EAAE5yB,GAAI4yB,EAAEzkB,EAAInO,EAAI,EAAImO,EAAInO,EAAI,GAAI4yB,EAAEzkB,EAAInO,EAAI,EAAImO,EAAInO,EAAI,GAAIoC,EAAIpC,IAc/GqX,OAAQ,SAAUovE,EAAIj2E,EAAI3Q,GAEtB,OAAQ2Q,EAAKi2E,GAAM5mF,EAAI4mF,GAW3BH,UAAW,SAAUxoE,EAAG9d,GAEpB,MAAO9H,MAAKwuF,UAAU5oE,GAAK5lB,KAAKwuF,UAAU1mF,GAAK9H,KAAKwuF,UAAU5oE,EAAI9d,IAStE0mF,UAAW,SAAUjlF,GAEjB,GAAc,IAAVA,EAEA,MAAO,EAKX,KAFA,GAAIklF,GAAMllF,IAEFA,GAEJklF,GAAOllF,CAGX,OAAOklF,IAgBXH,WAAY,SAAUC,EAAIj2E,EAAIC,EAAIm2E,EAAI/mF,GAElC,GAAIgnF,GAAiB,IAAXp2E,EAAKg2E,GAAWK,EAAiB,IAAXF,EAAKp2E,GAAWoqD,EAAK/6D,EAAIA,EAAGg7D,EAAKh7D,EAAI+6D,CAErE,QAAQ,EAAIpqD,EAAK,EAAIC,EAAKo2E,EAAKC,GAAMjsB,IAAM,EAAKrqD,EAAK,EAAIC,EAAK,EAAIo2E,EAAKC,GAAMlsB,EAAKisB,EAAKhnF,EAAI2Q,GAY/FqoE,WAAY,SAAUlyE,EAAGI,GAErB,MAAO9I,MAAKoJ,IAAIV,EAAII,IAWxBggF,kBAAmB,SAAUtlF,GAGzB,MAAQA,GAAQ,EAAKxD,KAAKG,KAAKqD,GAASxD,KAAKI,MAAMoD,IAiBvDulF,gBAAiB,SAAUjnF,EAAQknF,EAAcC,EAAcC,GAEtCvlF,SAAjBqlF,IAA8BA,EAAe,GAC5BrlF,SAAjBslF,IAA8BA,EAAe,GAC/BtlF,SAAdulF,IAA2BA,EAAY,EAS3C,KAAK,GAPD7hF,GAAM2hF,EACN5hF,EAAM6hF,EACNE,EAAMD,EAAYlpF,KAAK+G,GAAKjF,EAE5BsnF,KACAC,KAEKngF,EAAI,EAAGA,EAAIpH,EAAQoH,IAExB9B,GAAOC,EAAM8hF,EACb9hF,GAAOD,EAAM+hF,EAEbC,EAASlgF,GAAK9B,EACdiiF,EAASngF,GAAK7B,CAIlB,QAASA,IAAKgiF,EAAUjiF,IAAKgiF,EAAUtnF,OAAQA,IAcnDgG,SAAU,SAAUyC,EAAIC,EAAIC,EAAIC,GAE5B,GAAIpC,GAAKiC,EAAKE,EACVlC,EAAKiC,EAAKE,CAEd,OAAO1K,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAepC+gF,WAAY,SAAU/+E,EAAIC,EAAIC,EAAIC,GAE9B,GAAIpC,GAAKiC,EAAKE,EACVlC,EAAKiC,EAAKE,CAEd,OAAOpC,GAAKA,EAAKC,EAAKA,GAe1BghF,YAAa,SAAUh/E,EAAIC,EAAIC,EAAIC,EAAIs8E,GAInC,MAFYrjF,UAARqjF,IAAqBA,EAAM,GAExBhnF,KAAKmK,KAAKnK,KAAKgnF,IAAIv8E,EAAKF,EAAIy8E,GAAOhnF,KAAKgnF,IAAIt8E,EAAKF,EAAIw8E,KAahEv3E,MAAO,SAAUklB,EAAGzoB,EAAKE,GAErB,MAAIuoB,GAAIzoB,EAEGA,EAEFE,EAAMuoB,EAEJvoB,EAIAuoB,GAcf60D,YAAa,SAAUtpF,EAAGwI,GAEtB,MAAOxI,GAAIwI,EAAIA,EAAIxI,GAcvBupF,OAAQ,SAAU/gF,EAAGI,EAAGqK,GAEpB,MAAQnT,MAAKoJ,IAAIV,EAAII,IAAMqK,GAe/Bu2E,UAAW,SAAUxpF,EAAG+M,EAAIC,EAAIC,EAAIC,GAEhC,MAAOD,IAAOjN,EAAI+M,IAASG,EAAKD,IAASD,EAAKD,IAalD08E,WAAY,SAAUzpF,EAAGgM,EAAKE,GAM1B,MAHAlM,GAAIF,KAAKoM,IAAI,EAAGpM,KAAKkM,IAAI,GAAIhM,EAAIgM,IAAQE,EAAMF,KAGxChM,EAAIA,GAAK,EAAI,EAAIA,IAa5B0pF,aAAc,SAAU1pF,EAAGgM,EAAKE,GAI5B,MAFAlM,GAAIF,KAAKoM,IAAI,EAAGpM,KAAKkM,IAAI,GAAIhM,EAAIgM,IAAQE,EAAMF,KAExChM,EAAIA,EAAIA,GAAKA,GAAS,EAAJA,EAAQ,IAAM,KAa3CkiE,KAAM,SAAUliE,GAEZ,MAASA,GAAI,GAAM,EAASA,EAAI,EAAM,EAAI,GAa9C2pF,QAAS,SAAUnhF,EAAGI,EAAGqgD,GAIrB,MAFaxlD,UAATwlD,IAAsBA,EAAO,GAE7BzgD,EAAII,GAAKqgD,EAAOrgD,EAET,EAEFJ,EAAIygD,GAAQA,EAAOzgD,EAEjB,GAICA,EAAIygD,GAAQrgD,GAOhC,IAAIghF,GAAwB9pF,KAAK+G,GAAK,IAClCgjF,EAAwB,IAAM/pF,KAAK+G,EAu1wCnC,OA90wCJzM,GAAO0F,KAAKgJ,SAAW,SAAmBghF;AACtC,MAAOA,GAAUF,GAUrBxvF,EAAO0F,KAAK2P,SAAW,SAAmBu4E,GACtC,MAAOA,GAAU6B,GAyBrBzvF,EAAO84B,oBAAsB,SAAU62D,GAErBtmF,SAAVsmF,IAAuBA,MAM3BhwF,KAAKiP,EAAI,EAMTjP,KAAKiwF,GAAK,EAMVjwF,KAAKkwF,GAAK,EAMVlwF,KAAKmwF,GAAK,EAEW,gBAAVH,GAEPhwF,KAAKkgB,MAAM8vE,GAIXhwF,KAAKowF,IAAIJ,IAKjB3vF,EAAO84B,oBAAoB9yB,WASvByY,IAAK,WAED,GAAInX,GAAI,QAAU3H,KAAKiwF,GAAc,uBAATjwF,KAAKiP,CAOjC,OALAjP,MAAKiP,EAAQ,EAAJtH,EACT3H,KAAKiwF,GAAKjwF,KAAKkwF,GACflwF,KAAKkwF,GAAKlwF,KAAKmwF,GACfnwF,KAAKmwF,GAAKxoF,EAAI3H,KAAKiP,EAEZjP,KAAKmwF,IAWhBC,IAAK,SAAUJ,GAQX,GALAhwF,KAAKiwF,GAAKjwF,KAAKivB,KAAK,KACpBjvB,KAAKkwF,GAAKlwF,KAAKivB,KAAKjvB,KAAKiwF,IACzBjwF,KAAKmwF,GAAKnwF,KAAKivB,KAAKjvB,KAAKkwF,IACzBlwF,KAAKiP,EAAI,EAEJ+gF,EAML,IAAK,GAAIloF,GAAI,EAAGA,EAAIkoF,EAAMnoF,QAAuB,MAAZmoF,EAAMloF,GAAaA,IACxD,CACI,GAAIwxB,GAAO02D,EAAMloF,EAEjB9H,MAAKiwF,IAAMjwF,KAAKivB,KAAKqK,GACrBt5B,KAAKiwF,OAASjwF,KAAKiwF,GAAK,GACxBjwF,KAAKkwF,IAAMlwF,KAAKivB,KAAKqK,GACrBt5B,KAAKkwF,OAASlwF,KAAKkwF,GAAK,GACxBlwF,KAAKmwF,IAAMnwF,KAAKivB,KAAKqK,GACrBt5B,KAAKmwF,OAASnwF,KAAKmwF,GAAK,KAahClhE,KAAM,SAAUyT,GAEZ,GAAInlB,GAAGzV,EAAG8d,CAIV,KAHAA,EAAI,WACJ8c,EAAOA,EAAKl7B,WAEPM,EAAI,EAAGA,EAAI46B,EAAK76B,OAAQC,IACzB8d,GAAK8c,EAAKke,WAAW94C,GACrByV,EAAI,mBAAsBqI,EAC1BA,EAAIrI,IAAM,EACVA,GAAKqI,EACLrI,GAAKqI,EACLA,EAAIrI,IAAM,EACVA,GAAKqI,EACLA,GAAS,WAAJrI,CAGT,OAAmB,yBAAXqI,IAAM,IAUlByqE,QAAS,WAEL,MAA8B,YAAvBrwF,KAAK8e,IAAI7X,MAAMjH,OAU1B+e,KAAM,WAEF,MAAO/e,MAAK8e,IAAI7X,MAAMjH,MAAgD,wBAAhB,QAAvBA,KAAK8e,IAAI7X,MAAMjH,MAAmB,IAUrEskE,KAAM,WAEF,MAAOtkE,MAAKqwF,UAAYrwF,KAAK+e,QAYjCuxE,eAAgB,SAAUr+E,EAAKE,GAE3B,MAAOpM,MAAKI,MAAMnG,KAAKuwF,YAAY,EAAGp+E,EAAMF,EAAM,GAAKA,IAa3DslB,QAAS,SAAUtlB,EAAKE,GAEpB,MAAOnS,MAAKswF,eAAer+E,EAAKE,IAYpCo+E,YAAa,SAAUt+E,EAAKE,GAExB,MAAOnS,MAAK+e,QAAU5M,EAAMF,GAAOA,GAUvCu+E,OAAQ,WAEJ,MAAO,GAAI,EAAIxwF,KAAK+e,QAUxB20C,KAAM,WAEF,GAAIjlD,GAAI,GACJI,EAAI,EAER,KAAKA,EAAIJ,EAAI,GAAIA,IAAM,GAAII,IAAKJ,EAAI,EAAQ,EAAJA,EAAM,GAAO,GAAFA,EAAO,EAAEzO,KAAK+e,QAAY,GAAFtQ,EAAO,GAAK,GAAK,GAAGjH,SAAS,IAAM,KAI9G,MAAOqH,IAWXunB,KAAM,SAAUq6D,GAEZ,MAAOA,GAAIzwF,KAAKswF,eAAe,EAAGG,EAAI5oF,OAAS,KAUnDsgE,KAAM,WAEF,MAAOnoE,MAAKo2B,OAAM,EAAI,KAW1Bs6D,aAAc,SAAUD,GAEpB,MAAOA,MAAO1qF,KAAKgnF,IAAI/sF,KAAK+e,OAAQ,IAAM0xE,EAAI5oF,OAAS,GAAK,MAYhEg2C,UAAW,SAAU5rC,EAAKE,GAEtB,MAAOnS,MAAKuwF,YAAYt+E,GAAO,UAAcE,GAAO,YAUxDjE,MAAO,WAEH,MAAOlO,MAAKswF,gBAAe,IAAM,MAqBrCpwE,MAAO,SAAUA,GAYb,MAVqB,gBAAVA,IAAsBA,EAAM2mC,MAAM,WAEzC3mC,EAAQA,EAAMvX,MAAM,KAEpB3I,KAAKiP,EAAIwsE,WAAWv7D,EAAM,IAC1BlgB,KAAKiwF,GAAKxU,WAAWv7D,EAAM,IAC3BlgB,KAAKkwF,GAAKzU,WAAWv7D,EAAM,IAC3BlgB,KAAKmwF,GAAK1U,WAAWv7D,EAAM,MAGvB,OAAQlgB,KAAKiP,EAAGjP,KAAKiwF,GAAIjwF,KAAKkwF,GAAIlwF,KAAKmwF,IAAItnF,KAAK,OAMhExI,EAAO84B,oBAAoB9yB,UAAU8B,YAAc9H,EAAO84B,oBAwB1D94B,EAAOswF,SAAW,SAAS1qF,EAAGwG,EAAGsD,EAAOC,EAAQ4gF,EAAYC,EAAWC,GAMnE9wF,KAAK4wF,WAAa,GAMlB5wF,KAAK6wF,UAAY,EAKjB7wF,KAAK8wF,MAAQ,EAKb9wF,KAAK2a,UAKL3a,KAAK+wF,WAKL/wF,KAAKgxF,SAMLhxF,KAAKixF,UAELjxF,KAAK0f,MAAMzZ,EAAGwG,EAAGsD,EAAOC,EAAQ4gF,EAAYC,EAAWC,IAI3DzwF,EAAOswF,SAAStqF,WAcZqZ,MAAO,SAAUzZ,EAAGwG,EAAGsD,EAAOC,EAAQ4gF,EAAYC,EAAWC,GAEzD9wF,KAAK4wF,WAAaA,GAAc,GAChC5wF,KAAK6wF,UAAYA,GAAa,EAC9B7wF,KAAK8wF,MAAQA,GAAS,EAEtB9wF,KAAK2a,QACD1U,EAAGF,KAAK+H,MAAM7H,GACdwG,EAAG1G,KAAK+H,MAAMrB,GACdsD,MAAOA,EACPC,OAAQA,EACRkhF,SAAUnrF,KAAKI,MAAM4J,EAAQ,GAC7BohF,UAAWprF,KAAKI,MAAM6J,EAAS,GAC/BpF,MAAO7E,KAAK+H,MAAM7H,GAAKF,KAAKI,MAAM4J,EAAQ,GAC1CpB,OAAQ5I,KAAK+H,MAAMrB,GAAK1G,KAAKI,MAAM6J,EAAS,IAGhDhQ,KAAK+wF,QAAQlpF,OAAS,EACtB7H,KAAKgxF,MAAMnpF,OAAS,GAUxBupF,SAAU,SAAU56D,GAEhBA,EAAM/uB,QAAQzH,KAAKqxF,gBAAiBrxF,MAAM,IAU9CqxF,gBAAiB,SAAUj6D,GAEnBA,EAAOxH,MAAQwH,EAAO5M,QAEtBxqB,KAAKsxF,OAAOl6D,EAAOxH,OAU3BjnB,MAAO,WAGH3I,KAAKgxF,MAAM,GAAK,GAAI3wF,GAAOswF,SAAS3wF,KAAK2a,OAAO/P,MAAO5K,KAAK2a,OAAOlO,EAAGzM,KAAK2a,OAAOu2E,SAAUlxF,KAAK2a,OAAOw2E,UAAWnxF,KAAK4wF,WAAY5wF,KAAK6wF,UAAY7wF,KAAK8wF,MAAQ,GAGlK9wF,KAAKgxF,MAAM,GAAK,GAAI3wF,GAAOswF,SAAS3wF,KAAK2a,OAAO1U,EAAGjG,KAAK2a,OAAOlO,EAAGzM,KAAK2a,OAAOu2E,SAAUlxF,KAAK2a,OAAOw2E,UAAWnxF,KAAK4wF,WAAY5wF,KAAK6wF,UAAY7wF,KAAK8wF,MAAQ,GAG9J9wF,KAAKgxF,MAAM,GAAK,GAAI3wF,GAAOswF,SAAS3wF,KAAK2a,OAAO1U,EAAGjG,KAAK2a,OAAOhM,OAAQ3O,KAAK2a,OAAOu2E,SAAUlxF,KAAK2a,OAAOw2E,UAAWnxF,KAAK4wF,WAAY5wF,KAAK6wF,UAAY7wF,KAAK8wF,MAAQ,GAGnK9wF,KAAKgxF,MAAM,GAAK,GAAI3wF,GAAOswF,SAAS3wF,KAAK2a,OAAO/P,MAAO5K,KAAK2a,OAAOhM,OAAQ3O,KAAK2a,OAAOu2E,SAAUlxF,KAAK2a,OAAOw2E,UAAWnxF,KAAK4wF,WAAY5wF,KAAK6wF,UAAY7wF,KAAK8wF,MAAQ,IAU3KQ,OAAQ,SAAU1hE,GAEd,GACID,GADA7nB,EAAI,CAIR,IAAqB,MAAjB9H,KAAKgxF,MAAM,KAEXrhE,EAAQ3vB,KAAK8xB,SAASlC,GAElBD,KAAU,GAGV,WADA3vB,MAAKgxF,MAAMrhE,GAAO2hE,OAAO1hE,EAOjC,IAFA5vB,KAAK+wF,QAAQn+E,KAAKgd,GAEd5vB,KAAK+wF,QAAQlpF,OAAS7H,KAAK4wF,YAAc5wF,KAAK8wF,MAAQ9wF,KAAK6wF,UAS3D,IANqB,MAAjB7wF,KAAKgxF,MAAM,IAEXhxF,KAAK2I,QAIFb,EAAI9H,KAAK+wF,QAAQlpF,QAEpB8nB,EAAQ3vB,KAAK8xB,SAAS9xB,KAAK+wF,QAAQjpF,IAE/B6nB,KAAU,EAGV3vB,KAAKgxF,MAAMrhE,GAAO2hE,OAAOtxF,KAAK+wF,QAAQ5tE,OAAOrb,EAAG,GAAG,IAInDA,KAchBgqB,SAAU,SAAUpe,GAGhB,GAAIic,IAAQ,CA8BZ,OA5BIjc,GAAKzN,EAAIjG,KAAK2a,OAAO/P,OAAS8I,EAAK9I,MAAQ5K,KAAK2a,OAAO/P,MAEnD8I,EAAKjH,EAAIzM,KAAK2a,OAAOhM,QAAU+E,EAAK/E,OAAS3O,KAAK2a,OAAOhM,OAGzDghB,EAAQ,EAEHjc,EAAKjH,EAAIzM,KAAK2a,OAAOhM,SAG1BghB,EAAQ,GAGPjc,EAAKzN,EAAIjG,KAAK2a,OAAO/P,QAGtB8I,EAAKjH,EAAIzM,KAAK2a,OAAOhM,QAAU+E,EAAK/E,OAAS3O,KAAK2a,OAAOhM,OAGzDghB,EAAQ,EAEHjc,EAAKjH,EAAIzM,KAAK2a,OAAOhM,SAG1BghB,EAAQ,IAITA,GAWX4hE,SAAU,SAAU7jF,GAEhB,GAAIA,YAAkBrN,GAAOkN,UAEzB,GAAIikF,GAAgBxxF,KAAK+wF,QAErBphE,EAAQ3vB,KAAK8xB,SAASpkB,OAG9B,CACI,IAAKA,EAAOkiB,KAER,MAAO5vB,MAAKixF,MAGhB,IAAIO,GAAgBxxF,KAAK+wF,QAErBphE,EAAQ3vB,KAAK8xB,SAASpkB,EAAOkiB,MAoBrC,MAjBI5vB,MAAKgxF,MAAM,KAGPrhE,KAAU,EAEV6hE,EAAgBA,EAAc3qF,OAAO7G,KAAKgxF,MAAMrhE,GAAO4hE,SAAS7jF,KAKhE8jF,EAAgBA,EAAc3qF,OAAO7G,KAAKgxF,MAAM,GAAGO,SAAS7jF,IAC5D8jF,EAAgBA,EAAc3qF,OAAO7G,KAAKgxF,MAAM,GAAGO,SAAS7jF,IAC5D8jF,EAAgBA,EAAc3qF,OAAO7G,KAAKgxF,MAAM,GAAGO,SAAS7jF,IAC5D8jF,EAAgBA,EAAc3qF,OAAO7G,KAAKgxF,MAAM,GAAGO,SAAS7jF,MAI7D8jF,GAQXvzE,MAAO,WAEHje,KAAK+wF,QAAQlpF,OAAS,CAItB,KAFA,GAAIC,GAAI9H,KAAKgxF,MAAMnpF,OAEZC,KAEH9H,KAAKgxF,MAAMlpF,GAAGmW,QACdje,KAAKgxF,MAAM7tE,OAAOrb,EAAG,EAGzB9H,MAAKgxF,MAAMnpF,OAAS,IAK5BxH,EAAOswF,SAAStqF,UAAU8B,YAAc9H,EAAOswF,SAmD/CtwF,EAAO85B,IAAM,SAAU3f,GAEnBxa,KAAKwa,KAAOA,GAIhBna,EAAO85B,IAAI9zB,WAQPorF,YAAa,WAET,MAAI1pF,QAAO2pF,UAAY3pF,OAAO2pF,SAASC,SAC5B5pF,OAAO2pF,SAASC,SAGpB,MAcXC,gBAAiB,SAAUC,GACvB,MAAO9pF,QAAO2pF,SAASC,SAASrhE,QAAQuhE,MAAY,GAgBxDC,kBAAmB,SAAU/lF,EAAKxC,EAAOwoF,EAAUl+B,GAE9BnqD,SAAbqoF,IAA0BA,GAAW,GAC7BroF,SAARmqD,GAA6B,KAARA,IAAcA,EAAM9rD,OAAO2pF,SAASM,KAE7D,IAAIjkF,GAAS,GACTmvE,EAAK,GAAI+I,QAAO,UAAYl6E,EAAM,kBAAmB,KAEzD,IAAImxE,EAAGN,KAAK/oB,GAIJ9lD,EAFiB,mBAAVxE,IAAmC,OAAVA,EAEvBsqD,EAAIjoD,QAAQsxE,EAAI,KAAOnxE,EAAM,IAAMxC,EAAQ,QAI3CsqD,EAAIjoD,QAAQsxE,EAAI,QAAQtxE,QAAQ,UAAW,QAKxD,IAAqB,mBAAVrC,IAAmC,OAAVA,EACpC,CACI,GAAI0oF,GAAYp+B,EAAIvjC,QAAQ,QAAS,EAAK,IAAM,IAC5CrB,EAAO4kC,EAAIlrD,MAAM,IACrBkrD,GAAM5kC,EAAK,GAAKgjE,EAAYlmF,EAAM,IAAMxC,EAEpC0lB,EAAK,KACL4kC,GAAO,IAAM5kC,EAAK,IAGtBlhB,EAAS8lD,MAKT9lD,GAAS8lD,CAIjB,OAAIk+B,QAEAhqF,OAAO2pF,SAASM,KAAOjkF,GAIhBA,GAafmkF,eAAgB,SAAUC,GAEJzoF,SAAdyoF,IAA2BA,EAAY,GAE3C,IAAIpkF,MACAqkF,EAAYV,SAASW,OAAOC,UAAU,GAAG3pF,MAAM,IAEnD,KAAK,GAAIb,KAAKsqF,GACd,CACI,GAAIrmF,GAAMqmF,EAAUtqF,GAAGa,MAAM,IAE7B,IAAIoD,EAAIlE,OAAS,EACjB,CACI,GAAIsqF,GAAaA,GAAanyF,KAAKuyF,UAAUxmF,EAAI,IAE7C,MAAO/L,MAAKuyF,UAAUxmF,EAAI,GAI1BgC,GAAO/N,KAAKuyF,UAAUxmF,EAAI,KAAO/L,KAAKuyF,UAAUxmF,EAAI,KAKhE,MAAOgC,IAYXwkF,UAAW,SAAUhpF,GACjB,MAAOipF,oBAAmBjpF,EAAMqC,QAAQ,MAAO,QAKvDvL,EAAO85B,IAAI9zB,UAAU8B,YAAc9H,EAAO85B,IAqB1C95B,EAAOy5B,aAAe,SAAUtf,GAK5Bxa,KAAKwa,KAAOA,EAaZxa,KAAKyyF,YAAa,EAMlBzyF,KAAK0yF,WAML1yF,KAAK2yF,QAEL3yF,KAAK4yF,SAEDC,OAAUxyF,EAAOyyF,OAAOD,OACxBE,OAAU1yF,EAAOyyF,OAAOC,OACxBC,OAAU3yF,EAAOyyF,OAAOE,OACxBC,OAAU5yF,EAAOyyF,OAAOG,OACxBC,OAAU7yF,EAAOyyF,OAAOI,OAExBC,OAAU9yF,EAAOyyF,OAAOK,OAAOC,KAC/BC,KAAQhzF,EAAOyyF,OAAOQ,UAAUC,IAChCC,MAASnzF,EAAOyyF,OAAOU,MAAMD,IAC7BE,MAASpzF,EAAOyyF,OAAOY,QAAQH,IAC/BI,MAAStzF,EAAOyyF,OAAOc,QAAQL,IAC/BM,KAAQxzF,EAAOyyF,OAAOgB,WAAWP,IACjCQ,KAAQ1zF,EAAOyyF,OAAOkB,YAAYT,IAClCU,KAAQ5zF,EAAOyyF,OAAOoB,SAASX,IAC/BY,QAAW9zF,EAAOyyF,OAAOqB,QAAQZ,IACjCa,KAAQ/zF,EAAOyyF,OAAOsB,KAAKb,IAC3Bc,OAAUh0F,EAAOyyF,OAAOuB,OAAOd,IAE/Be,cAAej0F,EAAOyyF,OAAOQ,UAAUiB,GACvCC,eAAgBn0F,EAAOyyF,OAAOU,MAAMe,GACpCE,eAAgBp0F,EAAOyyF,OAAOY,QAAQa,GACtCG,eAAgBr0F,EAAOyyF,OAAOc,QAAQW,GACtCI,cAAet0F,EAAOyyF,OAAOgB,WAAWS,GACxCK,cAAev0F,EAAOyyF,OAAOkB,YAAYO,GACzCM,cAAex0F,EAAOyyF,OAAOoB,SAASK,GACtCO,iBAAkBz0F,EAAOyyF,OAAOqB,QAAQI,GACxCQ,cAAe10F,EAAOyyF,OAAOsB,KAAKG,GAClCS,gBAAiB30F,EAAOyyF,OAAOuB,OAAOE,GAEtCU,eAAgB50F,EAAOyyF,OAAOQ,UAAUC,IACxC2B,gBAAiB70F,EAAOyyF,OAAOU,MAAMD,IACrC4B,gBAAiB90F,EAAOyyF,OAAOY,QAAQH,IACvC6B,gBAAiB/0F,EAAOyyF,OAAOc,QAAQL,IACvC8B,eAAgBh1F,EAAOyyF,OAAOgB,WAAWP,IACzC+B,eAAgBj1F,EAAOyyF,OAAOkB,YAAYT,IAC1CgC,eAAgBl1F,EAAOyyF,OAAOoB,SAASX,IACvCiC,kBAAmBn1F,EAAOyyF,OAAOqB,QAAQZ,IACzCkC,eAAgBp1F,EAAOyyF,OAAOsB,KAAKb,IACnCmC,iBAAkBr1F,EAAOyyF,OAAOuB,OAAOd,IAEvCoC,iBAAkBt1F,EAAOyyF,OAAOQ,UAAUsC,MAC1CC,kBAAmBx1F,EAAOyyF,OAAOU,MAAMoC,MACvCE,kBAAmBz1F,EAAOyyF,OAAOY,QAAQkC,MACzCG,kBAAmB11F,EAAOyyF,OAAOc,QAAQgC,MACzCI,iBAAkB31F,EAAOyyF,OAAOgB,WAAW8B,MAC3CK,iBAAkB51F,EAAOyyF,OAAOkB,YAAY4B,MAC5CM,iBAAkB71F,EAAOyyF,OAAOoB,SAAS0B,MACzCO,oBAAqB91F,EAAOyyF,OAAOqB,QAAQyB,MAC3CQ,iBAAkB/1F,EAAOyyF,OAAOsB,KAAKwB,MACrCS,mBAAoBh2F,EAAOyyF,OAAOuB,OAAOuB,OAI7C51F,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAKs2F,UAAWt2F,MACtCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAKu2F,WAAYv2F,OAI5CK,EAAOy5B,aAAazzB,WAOhB8vB,OAAQ,WAEJ,MAAOn2B,MAAK0yF,SAQhB9uE,UAAW,WAEP,IAAK,GAAI9b,GAAI,EAAGA,EAAI9H,KAAK0yF,QAAQ7qF,OAAQC,IAErC9H,KAAK0yF,QAAQ5qF,GAAG0uF,eAAgB,CAGpCx2F,MAAK2yF,SAWThpC,WAAY,SAAU5gD,EAAK4iB,GAENjiB,SAAbiiB,IAA0BA,GAAW,EAEzC,IAAI7jB,GACAF,CAEJ,IAAIpB,MAAMa,QAAQ0B,GAEd,IAAKjB,EAAI,EAAGF,EAAMmB,EAAIlB,OAAQC,EAAIF,EAAKE,IAEnC9H,KAAK2pD,WAAW5gD,EAAIjB,QAGvB,IAAIiB,EAAIb,OAAS7H,EAAOmB,OAASmqB,EAElC,IAAK,GAAI7jB,GAAI,EAAGF,EAAMmB,EAAI4iB,SAAS9jB,OAAQC,EAAIF,EAAKE,IAEhD9H,KAAK2pD,WAAW5gD,EAAI4iB,SAAS7jB,QAIrC,CACI,IAAKA,EAAI,EAAGF,EAAM5H,KAAK0yF,QAAQ7qF,OAAQC,EAAIF,EAAKE,IAExCiB,IAAQ/I,KAAK0yF,QAAQ5qF,GAAGd,QAExBhH,KAAK8iB,OAAO9iB,KAAK0yF,QAAQ5qF,GAIjC,KAAKA,EAAI,EAAGF,EAAM5H,KAAK2yF,KAAK9qF,OAAQC,EAAIF,EAAKE,IAErCiB,IAAQ/I,KAAK2yF,KAAK7qF,GAAGd,QAErBhH,KAAK8iB,OAAO9iB,KAAK2yF,KAAK7qF,MActC+J,IAAK,SAAUs/C,GAEXA,EAAMslC,SAAWz2F,KACjBA,KAAK2yF,KAAK//E,KAAKu+C,IAWnBzwC,OAAQ,SAAU6U,GAEd,MAAO,IAAIl1B,GAAO2zD,MAAMz+B,EAAQv1B,KAAKwa,KAAMxa,OAU/C8iB,OAAQ,SAAUquC,GAEd,GAAIrpD,GAAI9H,KAAK0yF,QAAQpiE,QAAQ6gC,EAEzBrpD,MAAM,EAEN9H,KAAK0yF,QAAQ5qF,GAAG0uF,eAAgB,GAIhC1uF,EAAI9H,KAAK2yF,KAAKriE,QAAQ6gC,GAElBrpD,KAAM,IAEN9H,KAAK2yF,KAAK7qF,GAAG0uF,eAAgB,KAYzCj4E,OAAQ,WAEJ,GAAIm4E,GAAY12F,KAAK2yF,KAAK9qF,OACtB8uF,EAAY32F,KAAK0yF,QAAQ7qF,MAE7B,IAAkB,IAAd8uF,GAAiC,IAAdD,EAEnB,OAAO,CAKX,KAFA,GAAI5uF,GAAI,EAEDA,EAAI6uF,GAEH32F,KAAK0yF,QAAQ5qF,GAAGyW,OAAOve,KAAKwa,KAAKmE,KAAKA,MAEtC7W,KAIA9H,KAAK0yF,QAAQvvE,OAAOrb,EAAG,GAEvB6uF,IAWR,OANID,GAAY,IAEZ12F,KAAK0yF,QAAU1yF,KAAK0yF,QAAQ7rF,OAAO7G,KAAK2yF,MACxC3yF,KAAK2yF,KAAK9qF,OAAS,IAGhB,GAWX+uF,WAAY,SAASrhE,GAEjB,MAAOv1B,MAAK0yF,QAAQmE,KAAK,SAAS1lC,GAC9B,MAAOA,GAAMnqD,SAAWuuB,KAWhC+gE,UAAW,WAEP,IAAK,GAAIxuF,GAAI9H,KAAK0yF,QAAQ7qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAK0yF,QAAQ5qF,GAAGgvF,UAWxBP,WAAY,WAER,IAAK,GAAIzuF,GAAI9H,KAAK0yF,QAAQ7qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAK0yF,QAAQ5qF,GAAGivF,WAUxBC,SAAU,WAEN,IAAK,GAAIlvF,GAAI9H,KAAK0yF,QAAQ7qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAK0yF,QAAQ5qF,GAAG0a,SAUxBy0E,UAAW,WAEP,IAAK,GAAInvF,GAAI9H,KAAK0yF,QAAQ7qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAK0yF,QAAQ5qF,GAAG4a,QAAO,KAOnCriB,EAAOy5B,aAAazzB,UAAU8B,YAAc9H,EAAOy5B,aAqBnDz5B,EAAO2zD,MAAQ,SAAUhtD,EAAQwT,EAAM08E,GAKnCl3F,KAAKwa,KAAOA,EAKZxa,KAAKgH,OAASA,EAKdhH,KAAKk3F,QAAUA,EAKfl3F,KAAKm3F,YASLn3F,KAAK4I,SAAU,EASf5I,KAAKo3F,UAAY,EAKjBp3F,KAAKq3F,cAAgB,EAOrBr3F,KAAKw2F,eAAgB,EAOrBx2F,KAAKs3F,QAAU,GAAIj3F,GAAO+a,OAQ1Bpb,KAAKu3F,OAAS,GAAIl3F,GAAO+a,OAOzBpb,KAAKw3F,SAAW,GAAIn3F,GAAO+a,OAQ3Bpb,KAAKy3F,gBAAkB,GAAIp3F,GAAO+a,OAOlCpb,KAAK03F,WAAa,GAAIr3F,GAAO+a,OAM7Bpb,KAAK83B,WAAY,EAOjB93B,KAAKqJ,QAAU,EAKfrJ,KAAKi7E,cAKLj7E,KAAK23F,aAAe,KAMpB33F,KAAK43F,UAAW,EAgBhB53F,KAAKyyF,WAAayE,EAAQzE,WAO1BzyF,KAAK63F,kBAAoB,KAOzB73F,KAAK83F,yBAA2B,KAOhC93F,KAAK+3F,YAAc,EAMnB/3F,KAAKy4B,aAAc,EAMnBz4B,KAAKg4F,aAAc,GAGvB33F,EAAO2zD,MAAM3tD,WAkBT+F,GAAI,SAAU6uE,EAAYp/D,EAAUo8E,EAAMt1E,EAAW8xB,EAAOhsB,EAAQyvE,GAchE,OAZiBxuF,SAAbmS,GAA0BA,GAAY,KAAKA,EAAW,KAC7CnS,SAATuuF,GAA+B,OAATA,IAAiBA,EAAO53F,EAAOyyF,OAAOqF,SAC9CzuF,SAAdiZ,IAA2BA,GAAY,GAC7BjZ,SAAV+qC,IAAuBA,EAAQ,GACpB/qC,SAAX+e,IAAwBA,EAAS,GACxB/e,SAATwuF,IAAsBA,GAAO,GAEb,gBAATD,IAAqBj4F,KAAKk3F,QAAQtE,QAAQqF,KAEjDA,EAAOj4F,KAAKk3F,QAAQtE,QAAQqF,IAG5Bj4F,KAAK83B,WAEL1vB,QAAQG,KAAK,sDACNvI,OAGXA,KAAKm3F,SAASvkF,KAAK,GAAIvS,GAAO+3F,UAAUp4F,MAAMoM,GAAG6uE,EAAYp/D,EAAUo8E,EAAMxjD,EAAOhsB,EAAQyvE,IAExFv1E,GAEA3iB,KAAK0Q,QAGF1Q,OAoBXmM,KAAM,SAAU8uE,EAAYp/D,EAAUo8E,EAAMt1E,EAAW8xB,EAAOhsB,EAAQyvE,GAclE,MAZiBxuF,UAAbmS,IAA0BA,EAAW,KAC5BnS,SAATuuF,GAA+B,OAATA,IAAiBA,EAAO53F,EAAOyyF,OAAOqF,SAC9CzuF,SAAdiZ,IAA2BA,GAAY,GAC7BjZ,SAAV+qC,IAAuBA,EAAQ,GACpB/qC,SAAX+e,IAAwBA,EAAS,GACxB/e,SAATwuF,IAAsBA,GAAO,GAEb,gBAATD,IAAqBj4F,KAAKk3F,QAAQtE,QAAQqF,KAEjDA,EAAOj4F,KAAKk3F,QAAQtE,QAAQqF,IAG5Bj4F,KAAK83B,WAEL1vB,QAAQG,KAAK,wDACNvI,OAGXA,KAAKm3F,SAASvkF,KAAK,GAAIvS,GAAO+3F,UAAUp4F,MAAMmM,KAAK8uE,EAAYp/D,EAAUo8E,EAAMxjD,EAAOhsB,EAAQyvE,IAE1Fv1E,GAEA3iB,KAAK0Q,QAGF1Q,OAaX0Q,MAAO,SAAUif,GAIb,GAFcjmB,SAAVimB,IAAuBA,EAAQ,GAEjB,OAAd3vB,KAAKwa,MAAiC,OAAhBxa,KAAKgH,QAA4C,IAAzBhH,KAAKm3F,SAAStvF,QAAgB7H,KAAK83B,UAEjF,MAAO93B,KAIX,KAAK,GAAI8H,GAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAGtC,IAAK,GAAIkrB,KAAYhzB,MAAKm3F,SAASrvF,GAAGuwF,KAElCr4F,KAAKi7E,WAAWjoD,GAAYhzB,KAAKgH,OAAOgsB,IAAa,EAEhDxsB,MAAMa,QAAQrH,KAAKi7E,WAAWjoD,MAG/BhzB,KAAKi7E,WAAWjoD,IAAa,EAKzC,KAAK,GAAIlrB,GAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAEtC9H,KAAKm3F,SAASrvF,GAAGwwF,YAgBrB,OAbAt4F,MAAKk3F,QAAQrlF,IAAI7R,MAEjBA,KAAK83B,WAAY,GAEbnI,EAAQ,GAAKA,EAAQ3vB,KAAKm3F,SAAStvF,OAAS,KAE5C8nB,EAAQ,GAGZ3vB,KAAKqJ,QAAUsmB,EAEf3vB,KAAKm3F,SAASn3F,KAAKqJ,SAASqH,QAErB1Q,MAaXs8B,KAAM,SAAUi8D,GAsBZ,MApBiB7uF,UAAb6uF,IAA0BA,GAAW,GAEzCv4F,KAAK83B,WAAY,EAEjB93B,KAAK63F,kBAAoB,KACzB73F,KAAK83F,yBAA2B,KAE5BS,IAEAv4F,KAAK03F,WAAW74E,SAAS7e,KAAKgH,OAAQhH,MACtCA,KAAKg4F,aAAc,EAEfh4F,KAAK23F,cAEL33F,KAAK23F,aAAajnF,SAI1B1Q,KAAKk3F,QAAQp0E,OAAO9iB,MAEbA,MAeXw4F,gBAAiB,SAAUxlE,EAAUzpB,EAAOomB,GAExC,GAA6B,IAAzB3vB,KAAKm3F,SAAStvF,OAAgB,MAAO7H,KAIzC,IAFc0J,SAAVimB,IAAuBA,EAAQ,GAE/BA,KAAU,EAEV,IAAK,GAAI7nB,GAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAEtC9H,KAAKm3F,SAASrvF,GAAGkrB,GAAYzpB,MAKjCvJ,MAAKm3F,SAASxnE,GAAOqD,GAAYzpB,CAGrC,OAAOvJ,OAeXy0C,MAAO,SAAU54B,EAAU8T,GAEvB,MAAO3vB,MAAKw4F,gBAAgB,QAAS38E,EAAU8T,IAgBnDlH,OAAQ,SAAUoM,EAAO4jE,EAAa9oE,GAMlC,MAJoBjmB,UAAhB+uF,IAA6BA,EAAc,GAE/Cz4F,KAAKw4F,gBAAgB,gBAAiB3jE,EAAOlF,GAEtC3vB,KAAKw4F,gBAAgB,cAAeC,EAAa9oE,IAe5D8oE,YAAa,SAAU58E,EAAU8T,GAE7B,MAAO3vB,MAAKw4F,gBAAgB,cAAe38E,EAAU8T,IAiBzDuoE,KAAM,SAASloE,EAAQ0oE,EAAW/oE,GAM9B,MAJkBjmB,UAAdgvF,IAA2BA,EAAY,GAE3C14F,KAAKw4F,gBAAgB,OAAQxoE,EAAQL,GAE9B3vB,KAAKw4F,gBAAgB,YAAaE,EAAW/oE,IAexD+oE,UAAW,SAAU78E,EAAU8T,GAE3B,MAAO3vB,MAAKw4F,gBAAgB,YAAa38E,EAAU8T,IAevDgpE,OAAQ,SAAUV,EAAMtoE,GAOpB,MALoB,gBAATsoE,IAAqBj4F,KAAKk3F,QAAQtE,QAAQqF,KAEjDA,EAAOj4F,KAAKk3F,QAAQtE,QAAQqF,IAGzBj4F,KAAKw4F,gBAAgB,iBAAkBP,EAAMtoE,IAgBxDipE,cAAe,SAAUA,EAAev0E,EAASsL,GAM7C,MAJgBjmB,UAAZ2a,IAAyBA,EAAUhkB,EAAO0F,MAE9C/F,KAAKw4F,gBAAgB,wBAAyBI,EAAejpE,GAEtD3vB,KAAKw4F,gBAAgB,uBAAwBn0E,EAASsL,IAYjEkpE,UAAW,SAAUhkE,GAMjB,MAJcnrB,UAAVmrB,IAAuBA,EAAQ,GAEnC70B,KAAKq3F,cAAgBxiE,EAEd70B,MAkBX84F,MAAO,WAIH,IAFA,GAAIhxF,GAAIf,UAAUc,OAEXC,KAECA,EAAI,EAEJf,UAAUe,EAAI,GAAG6vF,aAAe5wF,UAAUe,GAI1C9H,KAAK23F,aAAe5wF,UAAUe,EAItC,OAAO9H,OAoBXonD,KAAM,SAAU79C,GAMZ,MAJcG,UAAVH,IAAuBA,GAAQ,GAEnCvJ,KAAKq3F,cAAgB,GAAU,EAAK,EAE7Br3F,MAYX6hB,iBAAkB,SAAUyR,EAAUvQ,GAKlC,MAHA/iB,MAAK63F,kBAAoBvkE,EACzBtzB,KAAK83F,yBAA2B/0E,EAEzB/iB,MASXwiB,MAAO,WAEHxiB,KAAK43F,UAAW,EAEhB53F,KAAKy4B,aAAc,EAEnBz4B,KAAK+3F,YAAc/3F,KAAKwa,KAAKmE,KAAKA,MAUtCm4E,OAAQ,WAEC92F,KAAKy4B,cAENz4B,KAAK43F,UAAW,EAEhB53F,KAAK+3F,YAAc/3F,KAAKwa,KAAKmE,KAAKA,OAU1C+D,OAAQ,WAEJ,GAAI1iB,KAAK43F,SACT,CACI53F,KAAK43F,UAAW,EAEhB53F,KAAKy4B,aAAc,CAEnB,KAAK,GAAI3wB,GAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAEjC9H,KAAKm3F,SAASrvF,GAAGgwB,YAElB93B,KAAKm3F,SAASrvF,GAAGixF,WAAc/4F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK+3F,eAY1EhB,QAAS,WAED/2F,KAAKy4B,aAMLz4B,KAAK0iB,UAYbnE,OAAQ,SAAUI,GAEd,GAAI3e,KAAKw2F,gBAAkBx2F,KAAKgH,OAE5B,OAAO,CAGX,IAAIhH,KAAK43F,SAEL,OAAO,CAGX,IAAIoB,GAASh5F,KAAKm3F,SAASn3F,KAAKqJ,SAASkV,OAAOI,EAEhD,IAAIq6E,IAAW34F,EAAO+3F,UAAUa,QAE5B,OAAO,CAEN,IAAID,IAAW34F,EAAO+3F,UAAUc,QAcjC,MAZKl5F,MAAKg4F,cAENh4F,KAAKs3F,QAAQz4E,SAAS7e,KAAKgH,OAAQhH,MACnCA,KAAKg4F,aAAc,GAGQ,OAA3Bh4F,KAAK63F,mBAEL73F,KAAK63F,kBAAkB/wF,KAAK9G,KAAK83F,yBAA0B93F,KAAMA,KAAKm3F,SAASn3F,KAAKqJ,SAASE,MAAOvJ,KAAKm3F,SAASn3F,KAAKqJ,UAIpHrJ,KAAK83B,SAEX,IAAIkhE,IAAW34F,EAAO+3F,UAAUe,OAWjC,MATIn5F,MAAKm3F,SAASn3F,KAAKqJ,SAASguF,iBAAkB,EAE9Cr3F,KAAKu3F,OAAO14E,SAAS7e,KAAKgH,OAAQhH,MAIlCA,KAAKw3F,SAAS34E,SAAS7e,KAAKgH,OAAQhH,OAGjC,CAEN,IAAIg5F,IAAW34F,EAAO+3F,UAAUgB,SACrC,CACI,GAAIb,IAAW,CAwBf,OArBIv4F,MAAK4I,SAEL5I,KAAKqJ,UAEDrJ,KAAKqJ,QAAU,IAEfrJ,KAAKqJ,QAAUrJ,KAAKm3F,SAAStvF,OAAS,EACtC0wF,GAAW,KAKfv4F,KAAKqJ,UAEDrJ,KAAKqJ,UAAYrJ,KAAKm3F,SAAStvF,SAE/B7H,KAAKqJ,QAAU,EACfkvF,GAAW,IAIfA,EAGIv4F,KAAKq3F,iBAAkB,GAEvBr3F,KAAKm3F,SAASn3F,KAAKqJ,SAASqH,QAC5B1Q,KAAKu3F,OAAO14E,SAAS7e,KAAKgH,OAAQhH,OAC3B,GAEFA,KAAKq3F,cAAgB,GAE1Br3F,KAAKq3F,gBAELr3F,KAAKm3F,SAASn3F,KAAKqJ,SAASqH,QAC5B1Q,KAAKw3F,SAAS34E,SAAS7e,KAAKgH,OAAQhH,OAC7B,IAKPA,KAAK83B,WAAY,EACjB93B,KAAK03F,WAAW74E,SAAS7e,KAAKgH,OAAQhH,MACtCA,KAAKg4F,aAAc,EAEfh4F,KAAK23F,cAEL33F,KAAK23F,aAAajnF,SAGf,IAMX1Q,KAAKy3F,gBAAgB54E,SAAS7e,KAAKgH,OAAQhH,MAC3CA,KAAKm3F,SAASn3F,KAAKqJ,SAASqH,SACrB,KAiBnB2oF,aAAc,SAAUlyC,EAAWzkB,GAE/B,GAAkB,OAAd1iC,KAAKwa,MAAiC,OAAhBxa,KAAKgH,OAE3B,MAAO,KAGO0C,UAAdy9C,IAA2BA,EAAY,IAC9Bz9C,SAATg5B,IAAsBA,KAG1B,KAAK,GAAI56B,GAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAGtC,IAAK,GAAIkrB,KAAYhzB,MAAKm3F,SAASrvF,GAAGuwF,KAElCr4F,KAAKi7E,WAAWjoD,GAAYhzB,KAAKgH,OAAOgsB,IAAa,EAEhDxsB,MAAMa,QAAQrH,KAAKi7E,WAAWjoD,MAG/BhzB,KAAKi7E,WAAWjoD,IAAa,EAKzC,KAAK,GAAIlrB,GAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAEtC9H,KAAKm3F,SAASrvF,GAAGwwF,YAGrB,KAAK,GAAIxwF,GAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAEtC46B,EAAOA,EAAK77B,OAAO7G,KAAKm3F,SAASrvF,GAAGuxF,aAAalyC,GAGrD,OAAOzkB,KAUfn7B,OAAO2E,eAAe7L,EAAO2zD,MAAM3tD,UAAW,iBAE1C2F,IAAK,WAID,IAAK,GAFD6oB,GAAQ,EAEH/sB,EAAI,EAAGA,EAAI9H,KAAKm3F,SAAStvF,OAAQC,IAEtC+sB,GAAS70B,KAAKm3F,SAASrvF,GAAG+T,QAG9B,OAAOgZ,MAMfx0B,EAAO2zD,MAAM3tD,UAAU8B,YAAc9H,EAAO2zD,MAiB5C3zD,EAAO+3F,UAAY,SAAU5uE,GAKzBxpB,KAAKwpB,OAASA,EAKdxpB,KAAKwa,KAAOgP,EAAOhP,KAMnBxa,KAAKs5F,UAMLt5F,KAAKu5F,eAMLv5F,KAAKq4F,QAMLr4F,KAAKw5F,aAMLx5F,KAAK6b,SAAW,IAMhB7b,KAAK4vF,QAAU,EAMf5vF,KAAKuJ,MAAQ,EAKbvJ,KAAKq3F,cAAgB,EAKrBr3F,KAAKy4F,YAAc,EAMnBz4F,KAAKy5F,YAAc,EAMnBz5F,KAAK0W,aAAc,EAMnB1W,KAAKk4F,MAAO,EAKZl4F,KAAK04F,UAAY,EAMjB14F,KAAK05F,WAAY,EAMjB15F,KAAKy0C,MAAQ,EAKbz0C,KAAKuiE,GAAK,EAKVviE,KAAK+4F,UAAY,KAMjB/4F,KAAK25F,eAAiBt5F,EAAOyyF,OAAOqF,QAMpCn4F,KAAK45F,sBAAwBv5F,EAAO0F,KAAKmoF,oBAMzCluF,KAAK65F,qBAAuBx5F,EAAO0F,KAMnC/F,KAAK83B,WAAY,EAMjB93B,KAAK85F,QAAS,GAQlBz5F,EAAO+3F,UAAUa,QAAU,EAM3B54F,EAAO+3F,UAAUc,QAAU,EAM3B74F,EAAO+3F,UAAUe,OAAS,EAM1B94F,EAAO+3F,UAAUgB,SAAW,EAE5B/4F,EAAO+3F,UAAU/xF,WAeb+F,GAAI,SAAU6uE,EAAYp/D,EAAUo8E,EAAMxjD,EAAOhsB,EAAQyvE,GAWrD,MATAl4F,MAAKq4F,KAAOpd,EACZj7E,KAAK6b,SAAWA,EAChB7b,KAAK25F,eAAiB1B,EACtBj4F,KAAKy0C,MAAQA,EACbz0C,KAAKy5F,YAAchxE,EACnBzoB,KAAKk4F,KAAOA,EAEZl4F,KAAK85F,QAAS,EAEP95F,MAiBXmM,KAAM,SAAU8uE,EAAYp/D,EAAUo8E,EAAMxjD,EAAOhsB,EAAQyvE,GAWvD,MATAl4F,MAAKq4F,KAAOpd,EACZj7E,KAAK6b,SAAWA,EAChB7b,KAAK25F,eAAiB1B,EACtBj4F,KAAKy0C,MAAQA,EACbz0C,KAAKy5F,YAAchxE,EACnBzoB,KAAKk4F,KAAOA,EAEZl4F,KAAK85F,QAAS,EAEP95F,MAUX0Q,MAAO,WAsBH,GApBA1Q,KAAK+4F,UAAY/4F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKy0C,MAExCz0C,KAAKwpB,OAAO5gB,QAEZ5I,KAAKuiE,GAAKviE,KAAK6b,SAIf7b,KAAKuiE,GAAK,EAGVviE,KAAKy0C,MAAQ,EAEbz0C,KAAK83B,WAAY,EAIjB93B,KAAK83B,WAAY,EAGjB93B,KAAK85F,OAGL,IAAK,GAAI9mE,KAAYhzB,MAAKu5F,YAEtBv5F,KAAKs5F,OAAOtmE,GAAYhzB,KAAKw5F,UAAUxmE,GACvChzB,KAAKq4F,KAAKrlE,GAAYhzB,KAAKu5F,YAAYvmE,GACvChzB,KAAKwpB,OAAOxiB,OAAOgsB,GAAYhzB,KAAKs5F,OAAOtmE,EAQnD,OAJAhzB,MAAKuJ,MAAQ,EACbvJ,KAAK+5F,YAAc,EACnB/5F,KAAKq3F,cAAgBr3F,KAAKy5F,YAEnBz5F,MAWXs4F,WAAY,WAER,IAAK,GAAItlE,KAAYhzB,MAAKwpB,OAAOyxD,WACjC,CAKI,GAHAj7E,KAAKs5F,OAAOtmE,GAAYhzB,KAAKwpB,OAAOyxD,WAAWjoD,GAG3CxsB,MAAMa,QAAQrH,KAAKq4F,KAAKrlE,IAC5B,CACI,GAAmC,IAA/BhzB,KAAKq4F,KAAKrlE,GAAUnrB,OAEpB,QAGiB,KAAjB7H,KAAK4vF,UAIL5vF,KAAKq4F,KAAKrlE,IAAahzB,KAAKs5F,OAAOtmE,IAAWnsB,OAAO7G,KAAKq4F,KAAKrlE,KAIpC,mBAAxBhzB,MAAKq4F,KAAKrlE,IAEkB,gBAAxBhzB,MAAKq4F,KAAKrlE,KAGjBhzB,KAAKq4F,KAAKrlE,GAAYhzB,KAAKs5F,OAAOtmE,GAAYyoD,WAAWz7E,KAAKq4F,KAAKrlE,GAAW,KAGlFhzB,KAAKwpB,OAAOyxD,WAAWjoD,GAAYhzB,KAAKq4F,KAAKrlE,IAK7ChzB,KAAKq4F,KAAKrlE,GAAYhzB,KAAKs5F,OAAOtmE,GAGtChzB,KAAKu5F,YAAYvmE,GAAYhzB,KAAKs5F,OAAOtmE,GACzChzB,KAAKw5F,UAAUxmE,GAAYhzB,KAAKq4F,KAAKrlE,GAGzC,MAAOhzB,OAYXue,OAAQ,SAAUI,GAEd,GAAK3e,KAAK83B,WAcN,GAAInZ,EAAO3e,KAAK+4F,UAEZ,MAAO14F,GAAO+3F,UAAUc,YAfhC,CACI,KAAIv6E,GAAQ3e,KAAK+4F,WAMb,MAAO14F,GAAO+3F,UAAUa,OAJxBj5F,MAAK83B,WAAY,EAgBzB,GAAIkiE,GAAMh6F,KAAKwpB,OAAiB,WAAIxpB,KAAKwa,KAAKmE,KAAKkvC,iBAAmB7tD,KAAKwa,KAAKmE,KAAKC,SAEjF5e,MAAKwpB,OAAO5gB,SAEZ5I,KAAKuiE,IAAMy3B,EAAKh6F,KAAKwpB,OAAO4tE,UAC5Bp3F,KAAKuiE,GAAKx8D,KAAKoM,IAAInS,KAAKuiE,GAAI,KAI5BviE,KAAKuiE,IAAMy3B,EAAKh6F,KAAKwpB,OAAO4tE,UAC5Bp3F,KAAKuiE,GAAKx8D,KAAKkM,IAAIjS,KAAKuiE,GAAIviE,KAAK6b,WAGrC7b,KAAK4vF,QAAU5vF,KAAKuiE,GAAKviE,KAAK6b,SAE9B7b,KAAKuJ,MAAQvJ,KAAK25F,eAAe35F,KAAK4vF,QAEtC,KAAK,GAAI58D,KAAYhzB,MAAKq4F,KAC1B,CACI,GAAI3nF,GAAQ1Q,KAAKs5F,OAAOtmE,GACpBriB,EAAM3Q,KAAKq4F,KAAKrlE,EAEhBxsB,OAAMa,QAAQsJ,GAEd3Q,KAAKwpB,OAAOxiB,OAAOgsB,GAAYhzB,KAAK45F,sBAAsB9yF,KAAK9G,KAAK65F,qBAAsBlpF,EAAK3Q,KAAKuJ,OAIpGvJ,KAAKwpB,OAAOxiB,OAAOgsB,GAAYtiB,GAAUC,EAAMD,GAAS1Q,KAAKuJ,MAIrE,OAAMvJ,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAK4vF,SAAmB5vF,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAK4vF,QAEtE5vF,KAAKyoB,SAGTpoB,EAAO+3F,UAAUc,SAa5BG,aAAc,SAAUlyC,GAEhBnnD,KAAKwpB,OAAO5gB,QAEZ5I,KAAKuiE,GAAKviE,KAAK6b,SAIf7b,KAAKuiE,GAAK,CAGd,IAAI7/B,MACA61D,GAAW,EACX0B,EAAO,EAAI9yC,EAAa,GAE5B,GACA,CACQnnD,KAAKwpB,OAAO5gB,SAEZ5I,KAAKuiE,IAAM03B,EACXj6F,KAAKuiE,GAAKx8D,KAAKoM,IAAInS,KAAKuiE,GAAI,KAI5BviE,KAAKuiE,IAAM03B,EACXj6F,KAAKuiE,GAAKx8D,KAAKkM,IAAIjS,KAAKuiE,GAAIviE,KAAK6b,WAGrC7b,KAAK4vF,QAAU5vF,KAAKuiE,GAAKviE,KAAK6b,SAE9B7b,KAAKuJ,MAAQvJ,KAAK25F,eAAe35F,KAAK4vF,QAEtC,IAAIsK,KAEJ,KAAK,GAAIlnE,KAAYhzB,MAAKq4F,KAC1B,CACI,GAAI3nF,GAAQ1Q,KAAKs5F,OAAOtmE,GACpBriB,EAAM3Q,KAAKq4F,KAAKrlE,EAEhBxsB,OAAMa,QAAQsJ,GAEdupF,EAAKlnE,GAAYhzB,KAAK45F,sBAAsBjpF,EAAK3Q,KAAKuJ,OAItD2wF,EAAKlnE,GAAYtiB,GAAUC,EAAMD,GAAS1Q,KAAKuJ,MAIvDm5B,EAAK9vB,KAAKsnF,KAEJl6F,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAK4vF,SAAmB5vF,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAK4vF,WAE7E2I,GAAW,UAGTA,EAEV,IAAIv4F,KAAKk4F,KACT,CACI,GAAIiC,GAAWz3D,EAAKn8B,OACpB4zF,GAASvxF,UACT85B,EAAOA,EAAK77B,OAAOszF,GAGvB,MAAOz3D,IAWXja,OAAQ,WAGJ,GAAIzoB,KAAKk4F,KACT,CAEI,GAAIl4F,KAAK05F,WAAoC,IAAvB15F,KAAKq3F,cAC3B,CAEI,IAAK,GAAIrkE,KAAYhzB,MAAKu5F,YAEtBv5F,KAAKs5F,OAAOtmE,GAAYhzB,KAAKu5F,YAAYvmE,GACzChzB,KAAKq4F,KAAKrlE,GAAYhzB,KAAKw5F,UAAUxmE,EAKzC,OAFAhzB,MAAK05F,WAAY,EAEVr5F,EAAO+3F,UAAUgB,SAG5Bp5F,KAAK05F,WAAa15F,KAAK05F,cAIvB,IAA2B,IAAvB15F,KAAKq3F,cAEL,MAAOh3F,GAAO+3F,UAAUgB,QAIhC,IAAIp5F,KAAK05F,UAGL,IAAK,GAAI1mE,KAAYhzB,MAAKu5F,YAEtBv5F,KAAKs5F,OAAOtmE,GAAYhzB,KAAKw5F,UAAUxmE,GACvChzB,KAAKq4F,KAAKrlE,GAAYhzB,KAAKu5F,YAAYvmE,OAI/C,CAEI,IAAK,GAAIA,KAAYhzB,MAAKu5F,YAEtBv5F,KAAKs5F,OAAOtmE,GAAYhzB,KAAKu5F,YAAYvmE,GACzChzB,KAAKq4F,KAAKrlE,GAAYhzB,KAAKw5F,UAAUxmE,EAKrChzB,MAAKq3F,cAAgB,GAErBr3F,KAAKq3F,gBAwBb,MApBAr3F,MAAK+4F,UAAY/4F,KAAKwa,KAAKmE,KAAKA,KAE5B3e,KAAKk4F,MAAQl4F,KAAK05F,UAElB15F,KAAK+4F,WAAa/4F,KAAK04F,UAEjB14F,KAAK05F,YAEX15F,KAAK+4F,WAAa/4F,KAAKy4F,aAGvBz4F,KAAKwpB,OAAO5gB,QAEZ5I,KAAKuiE,GAAKviE,KAAK6b,SAIf7b,KAAKuiE,GAAK,EAGPliE,EAAO+3F,UAAUe,SAMhC94F,EAAO+3F,UAAU/xF,UAAU8B,YAAc9H,EAAO+3F,UAehD/3F,EAAOyyF,QAOHK,QASIC,KAAM,SAAWr6C,GAEb,MAAOA,KAWfu6C,WASIiB,GAAI,SAAWx7C,GAEX,MAAOA,GAAIA,GAWfw6C,IAAK,SAAWx6C,GAEZ,MAAOA,IAAM,EAAIA,IAWrB68C,MAAO,SAAW78C,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,GAChC,MAAYA,GAAMA,EAAI,GAAM,KAW3Cy6C,OASIe,GAAI,SAAWx7C,GAEX,MAAOA,GAAIA,EAAIA,GAWnBw6C,IAAK,SAAWx6C,GAEZ,QAASA,EAAIA,EAAIA,EAAI,GAWzB68C,MAAO,SAAW78C,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,EAAIA,EACpC,KAAUA,GAAK,GAAMA,EAAIA,EAAI,KAW5C26C,SASIa,GAAI,SAAWx7C,GAEX,MAAOA,GAAIA,EAAIA,EAAIA,GAWvBw6C,IAAK,SAAWx6C,GAEZ,MAAO,MAAQA,EAAIA,EAAIA,EAAIA,GAW/B68C,MAAO,SAAW78C,GAEd,OAAOA,GAAK,GAAM,EAAU,GAAMA,EAAIA,EAAIA,EAAIA,GACvC,KAAYA,GAAK,GAAMA,EAAIA,EAAIA,EAAI,KAWlD66C,SASIW,GAAI,SAAWx7C,GAEX,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAW3Bw6C,IAAK,SAAWx6C,GAEZ,QAASA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,GAWjC68C,MAAO,SAAW78C,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAC5C,KAAUA,GAAK,GAAMA,EAAIA,EAAIA,EAAIA,EAAI,KAWpD+6C,YASIS,GAAI,SAAWx7C,GAEX,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACb,EAAIhzC,KAAKoH,IAAK4rC,EAAIhzC,KAAK+G,GAAK,IAWvCymF,IAAK,SAAWx6C,GAEZ,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACbhzC,KAAKqH,IAAK2rC,EAAIhzC,KAAK+G,GAAK,IAWnC8oF,MAAO,SAAW78C,GAEd,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACb,IAAQ,EAAIhzC,KAAKoH,IAAKpH,KAAK+G,GAAKisC,MAW/Ci7C,aASIO,GAAI,SAAWx7C,GAEX,MAAa,KAANA,EAAU,EAAIhzC,KAAKgnF,IAAK,KAAMh0C,EAAI,IAW7Cw6C,IAAK,SAAWx6C,GAEZ,MAAa,KAANA,EAAU,EAAI,EAAIhzC,KAAKgnF,IAAK,GAAG,GAAOh0C,IAWjD68C,MAAO,SAAW78C,GAEd,MAAW,KAANA,EAAiB,EACX,IAANA,EAAiB,GACfA,GAAK,GAAM,EAAW,GAAMhzC,KAAKgnF,IAAK,KAAMh0C,EAAI,GAChD,KAAUhzC,KAAKgnF,IAAK,GAAG,IAASh0C,EAAI,IAAQ,KAW3Dm7C,UASIK,GAAI,SAAWx7C,GAEX,MAAO,GAAIhzC,KAAKmK,KAAM,EAAI6oC,EAAIA,IAWlCw6C,IAAK,SAAWx6C,GAEZ,MAAOhzC,MAAKmK,KAAM,KAAQ6oC,EAAIA,IAWlC68C,MAAO,SAAW78C,GAEd,OAAOA,GAAK,GAAM,GAAU,IAAUhzC,KAAKmK,KAAM,EAAI6oC,EAAIA,GAAK,GACvD,IAAQhzC,KAAKmK,KAAM,GAAM6oC,GAAK,GAAKA,GAAK,KAWvDo7C,SASII,GAAI,SAAWx7C,GAEX,GAAItiC,GAAGhI,EAAI,GAAKwB,EAAI,EACpB,OAAW,KAAN8oC,EAAiB,EACX,IAANA,EAAiB,IAChBtqC,GAAKA,EAAI,GAAMA,EAAI,EAAGgI,EAAIxG,EAAI,GAC/BwG,EAAIxG,EAAIlK,KAAKq0F,KAAM,EAAI3rF,IAAQ,EAAI1I,KAAK+G,MAClC2B,EAAI1I,KAAKgnF,IAAK,EAAG,IAAOh0C,GAAK,IAAQhzC,KAAKqH,KAAO2rC,EAAItiC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,MAW5FsjF,IAAK,SAAWx6C,GAEZ,GAAItiC,GAAGhI,EAAI,GAAKwB,EAAI,EACpB,OAAW,KAAN8oC,EAAiB,EACX,IAANA,EAAiB,IAChBtqC,GAAKA,EAAI,GAAMA,EAAI,EAAGgI,EAAIxG,EAAI,GAC/BwG,EAAIxG,EAAIlK,KAAKq0F,KAAM,EAAI3rF,IAAQ,EAAI1I,KAAK+G,IACpC2B,EAAI1I,KAAKgnF,IAAK,GAAG,GAAOh0C,GAAKhzC,KAAKqH,KAAO2rC,EAAItiC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,GAAM,IAWxF2lF,MAAO,SAAW78C,GAEd,GAAItiC,GAAGhI,EAAI,GAAKwB,EAAI,EACpB,OAAW,KAAN8oC,EAAiB,EACX,IAANA,EAAiB,IAChBtqC,GAAKA,EAAI,GAAMA,EAAI,EAAGgI,EAAIxG,EAAI,GAC/BwG,EAAIxG,EAAIlK,KAAKq0F,KAAM,EAAI3rF,IAAQ,EAAI1I,KAAK+G,KACtCisC,GAAK,GAAM,GAAW,IAAUtqC,EAAI1I,KAAKgnF,IAAK,EAAG,IAAOh0C,GAAK,IAAQhzC,KAAKqH,KAAO2rC,EAAItiC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,IAC7GxB,EAAI1I,KAAKgnF,IAAK,GAAG,IAAQh0C,GAAK,IAAQhzC,KAAKqH,KAAO2rC,EAAItiC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,GAAM,GAAM,KAWzGmkF,MASIG,GAAI,SAAWx7C,GAEX,GAAItiC,GAAI,OACR,OAAOsiC,GAAIA,IAAQtiC,EAAI,GAAMsiC,EAAItiC,IAWrC88E,IAAK,SAAWx6C,GAEZ,GAAItiC,GAAI,OACR,SAASsiC,EAAIA,IAAQtiC,EAAI,GAAMsiC,EAAItiC,GAAM,GAW7Cm/E,MAAO,SAAW78C,GAEd,GAAItiC,GAAI,SACR,QAAOsiC,GAAK,GAAM,EAAW,IAAQA,EAAIA,IAAQtiC,EAAI,GAAMsiC,EAAItiC,IACxD,KAAUsiC,GAAK,GAAMA,IAAQtiC,EAAI,GAAMsiC,EAAItiC,GAAM,KAWhE49E,QASIE,GAAI,SAAWx7C,GAEX,MAAO,GAAI14C,EAAOyyF,OAAOuB,OAAOd,IAAK,EAAIx6C,IAW7Cw6C,IAAK,SAAWx6C,GAEZ,MAAKA,GAAM,EAAI,KAEJ,OAASA,EAAIA,EAEZA,EAAM,EAAI,KAEX,QAAWA,GAAO,IAAM,MAAWA,EAAI,IAEtCA,EAAM,IAAM,KAEb,QAAWA,GAAO,KAAO,MAAWA,EAAI,MAIxC,QAAWA,GAAO,MAAQ,MAAWA,EAAI,SAaxD68C,MAAO,SAAW78C,GAEd,MAAKA,GAAI,GAAgD,GAAnC14C,EAAOyyF,OAAOuB,OAAOE,GAAQ,EAAJx7C,GACA,GAAxC14C,EAAOyyF,OAAOuB,OAAOd,IAAS,EAAJx6C,EAAQ,GAAY,MAQjE14C,EAAOyyF,OAAOqF,QAAU93F,EAAOyyF,OAAOK,OAAOC,KAC7C/yF,EAAOyyF,OAAOD,OAASxyF,EAAOyyF,OAAOK,OAAOC,KAC5C/yF,EAAOyyF,OAAOC,OAAS1yF,EAAOyyF,OAAOQ,UAAUC,IAC/ClzF,EAAOyyF,OAAOE,OAAS3yF,EAAOyyF,OAAOU,MAAMD,IAC3ClzF,EAAOyyF,OAAOG,OAAS5yF,EAAOyyF,OAAOY,QAAQH,IAC7ClzF,EAAOyyF,OAAOI,OAAS7yF,EAAOyyF,OAAOc,QAAQL,IAuC7ClzF,EAAOw5B,KAAO,SAAUrf,GAMpBxa,KAAKwa,KAAOA,EAOZxa,KAAK2e,KAAO,EAOZ3e,KAAKq6F,SAAW,EAchBr6F,KAAKo5B,IAAM,EAcXp5B,KAAK+7B,QAAU,EAaf/7B,KAAK4e,UAAY,EAajB5e,KAAKghF,eAAiB,EAAI,GAO1BhhF,KAAK6tD,iBAAoB,EAAI,GAAM,IAOnC7tD,KAAK07B,eAAiB,EAAM,GAW5B17B,KAAKs6F,YAAc,GAYnBt6F,KAAKu6F,aAAev6F,KAAK67B,WASzB77B,KAAK47B,WAAa,EAOlB57B,KAAKw6F,gBAAiB,EAStBx6F,KAAKmgF,OAAS,EASdngF,KAAKi6F,IAAM,EASXj6F,KAAKy6F,OAAS,IASdz6F,KAAK06F,OAAS,EAUd16F,KAAK26F,MAAQ,IASb36F,KAAK46F,MAAQ,EAOb56F,KAAK66F,cAAgB,EAMrB76F,KAAK4rF,WAAa,EAMlB5rF,KAAK86F,aAAe,EAMpB96F,KAAKmwB,OAAS,GAAI9vB,GAAO06F,MAAM/6F,KAAKwa,OAAM,IAM1Cxa,KAAKg7F,YAAc,EAMnBh7F,KAAKi7F,oBAAsB,EAM3Bj7F,KAAKk7F,SAAW,EAMhBl7F,KAAKm7F,gBAAkB,EAMvBn7F,KAAKo7F,cAAgB,EAMrBp7F,KAAKq7F,cAAe,EAMpBr7F,KAAKs7F,YAITj7F,EAAOw5B,KAAKxzB,WAQRsW,KAAM,WAEF3c,KAAKk7F,SAAWtzE,KAAKwR,MACrBp5B,KAAK2e,KAAOiJ,KAAKwR,MACjBp5B,KAAKmwB,OAAOzf,QACZ1Q,KAAK86F,aAAe96F,KAAK2e,MAW7B9M,IAAK,SAAU0pF,GAIX,MAFAv7F,MAAKs7F,QAAQ1oF,KAAK2oF,GAEXA,GAWX76E,OAAQ,SAAU86E,GAEM9xF,SAAhB8xF,IAA6BA,GAAc,EAE/C,IAAID,GAAQ,GAAIl7F,GAAO06F,MAAM/6F,KAAKwa,KAAMghF,EAIxC,OAFAx7F,MAAKs7F,QAAQ1oF,KAAK2oF,GAEXA,GASX33E,UAAW,WAEP,IAAK,GAAI9b,GAAI,EAAGA,EAAI9H,KAAKs7F,QAAQzzF,OAAQC,IAErC9H,KAAKs7F,QAAQxzF,GAAGgc,SAGpB9jB,MAAKs7F,WAELt7F,KAAKmwB,OAAOvM,aAShBqY,QAAS,WAGL,GAAIw/D,GAAkBz7F,KAAK2e,IAG3B3e,MAAK2e,KAAOiJ,KAAKwR,MAGjBp5B,KAAK4e,UAAY5e,KAAK2e,KAAO88E,GAWjCl9E,OAAQ,SAAUI,GAGd,GAAI88E,GAAkBz7F,KAAK2e,IAG3B3e,MAAK2e,KAAOiJ,KAAKwR,MAGjBp5B,KAAK4e,UAAY5e,KAAK2e,KAAO88E,EAG7Bz7F,KAAKq6F,SAAWr6F,KAAKo5B,IAIrBp5B,KAAKo5B,IAAMza,EAGX3e,KAAK+7B,QAAU/7B,KAAKo5B,IAAMp5B,KAAKq6F,SAE3Br6F,KAAKwa,KAAKud,IAAIuzD,gBAKdtrF,KAAK4rF,WAAa7lF,KAAKI,MAAMJ,KAAKoM,IAAI,EAAI,IAASnS,KAAKs6F,aAAgBt6F,KAAK86F,aAAen8E,KAG5F3e,KAAK86F,aAAen8E,EAAO3e,KAAK4rF,YAKhC5rF,KAAKw6F,gBAELx6F,KAAK07F,uBAIJ17F,KAAKwa,KAAKqG,SAGX7gB,KAAKmwB,OAAO5R,OAAOve,KAAK2e,MAEpB3e,KAAKs7F,QAAQzzF,QAEb7H,KAAK27F,iBAajBA,aAAc,WAMV,IAHA,GAAI7zF,GAAI,EACJF,EAAM5H,KAAKs7F,QAAQzzF,OAEhBC,EAAIF,GAEH5H,KAAKs7F,QAAQxzF,GAAGyW,OAAOve,KAAK2e,MAE5B7W,KAKA9H,KAAKs7F,QAAQn4E,OAAOrb,EAAG,GACvBF,MAaZ8zF,qBAAsB,WAGlB17F,KAAKg7F,cACLh7F,KAAKi7F,qBAAuBj7F,KAAK+7B,QAG7B/7B,KAAKg7F,aAAkC,EAAnBh7F,KAAKs6F,cAGzBt6F,KAAKu6F,aAAiF,EAAlEx0F,KAAKI,MAAM,KAAOnG,KAAKi7F,oBAAsBj7F,KAAKg7F,cACtEh7F,KAAKg7F,YAAc,EACnBh7F,KAAKi7F,oBAAsB,GAG/Bj7F,KAAK26F,MAAQ50F,KAAKkM,IAAIjS,KAAK26F,MAAO36F,KAAK+7B,SACvC/7B,KAAK46F,MAAQ70F,KAAKoM,IAAInS,KAAK46F,MAAO56F,KAAK+7B,SAEvC/7B,KAAKmgF,SAEDngF,KAAKo5B,IAAMp5B,KAAKm7F,gBAAkB,MAElCn7F,KAAKi6F,IAAMl0F,KAAK+H,MAAqB,IAAd9N,KAAKmgF,QAAkBngF,KAAKo5B,IAAMp5B,KAAKm7F,kBAC9Dn7F,KAAKy6F,OAAS10F,KAAKkM,IAAIjS,KAAKy6F,OAAQz6F,KAAKi6F,KACzCj6F,KAAK06F,OAAS30F,KAAKoM,IAAInS,KAAK06F,OAAQ16F,KAAKi6F,KACzCj6F,KAAKm7F,gBAAkBn7F,KAAKo5B,IAC5Bp5B,KAAKmgF,OAAS,IAWtBjzD,WAAY,WAERltB,KAAKo7F,cAAgBxzE,KAAKwR,MAE1Bp5B,KAAKmwB,OAAO3N,OAIZ,KAFA,GAAI1a,GAAI9H,KAAKs7F,QAAQzzF,OAEdC,KAEH9H,KAAKs7F,QAAQxzF,GAAGgvF,UAWxB3pE,YAAa,WAGTntB,KAAK2e,KAAOiJ,KAAKwR,MAEjBp5B,KAAK66F,cAAgB76F,KAAK2e,KAAO3e,KAAKo7F,cAEtCp7F,KAAKmwB,OAAOzN,QAIZ,KAFA,GAAI5a,GAAI9H,KAAKs7F,QAAQzzF,OAEdC,KAEH9H,KAAKs7F,QAAQxzF,GAAGivF,WAWxB/tE,oBAAqB,WACjB,MAAqC,MAA7BhpB,KAAK2e,KAAO3e,KAAKk7F,WAU7BU,aAAc,SAAUC,GACpB,MAAO77F,MAAK2e,KAAOk9E,GAUvBC,oBAAqB,SAAUD,GAC3B,MAA6B,MAArB77F,KAAK2e,KAAOk9E,IAQxBn8E,MAAO,WAEH1f,KAAKk7F,SAAWl7F,KAAK2e,KACrB3e,KAAK4jB,cAcbrc,OAAO2E,eAAe7L,EAAOw5B,KAAKxzB,UAAW,cAEzC2F,IAAK,WAED,MAAOhM,MAAKs6F,aAIhBruF,IAAK,SAAU1C,GAEXvJ,KAAKs6F,YAAc/wF,EAInBvJ,KAAKghF,eAAiB,EAAIz3E,EAE1BvJ,KAAK6tD,iBAAyC,IAAtB7tD,KAAKghF,eAE7BhhF,KAAK07B,eAAiB,EAAMnyB,KAMpClJ,EAAOw5B,KAAKxzB,UAAU8B,YAAc9H,EAAOw5B,KAsB3Cx5B,EAAO06F,MAAQ,SAAUvgF,EAAMghF,GAEP9xF,SAAhB8xF,IAA6BA,GAAc,GAM/Cx7F,KAAKwa,KAAOA,EAUZxa,KAAK+7F,SAAU,EAMf/7F,KAAKw7F,YAAcA,EAOnBx7F,KAAKg8F,SAAU,EAMfh8F,KAAK+7B,QAAU,EAKf/7B,KAAKmwB,UASLnwB,KAAK03F,WAAa,GAAIr3F,GAAO+a,OAO7Bpb,KAAKi8F,SAAW,EAKhBj8F,KAAKk8F,QAAU,IAOfl8F,KAAK6gB,QAAS,EAMd7gB,KAAKy4B,aAAc,EAOnBz4B,KAAKk7F,SAAW,EAMhBl7F,KAAKo7F,cAAgB,EAMrBp7F,KAAKm8F,YAAc,EAMnBn8F,KAAKo8F,KAAOx0E,KAAKwR,MAMjBp5B,KAAKiqB,KAAO,EAMZjqB,KAAKq8F,QAAU,EAMfr8F,KAAKkqB,GAAK,EAMVlqB,KAAKs8F,MAAQ,EAMbt8F,KAAKu8F,SAAW,GASpBl8F,EAAO06F,MAAMyB,OAAS,IAOtBn8F,EAAO06F,MAAM0B,OAAS,IAOtBp8F,EAAO06F,MAAM2B,KAAO,IAOpBr8F,EAAO06F,MAAM4B,QAAU,IAEvBt8F,EAAO06F,MAAM10F,WAiBTqa,OAAQ,SAAU+zB,EAAO2S,EAAMw1C,EAAatpE,EAAUvQ,EAAiBpc,GAEnE8tC,EAAQ1uC,KAAK+H,MAAM2mC,EAEnB,IAAIooD,GAAOpoD,CAIPooD,IAFc,IAAd78F,KAAKo8F,KAEGp8F,KAAKwa,KAAKmE,KAAKA,KAIf3e,KAAKo8F,IAGjB,IAAIjwE,GAAQ,GAAI9rB,GAAOy8F,WAAW98F,KAAMy0C,EAAOooD,EAAMD,EAAax1C,EAAM9zB,EAAUvQ,EAAiBpc,EAQnG,OANA3G,MAAKmwB,OAAOvd,KAAKuZ,GAEjBnsB,KAAKu0B,QAELv0B,KAAKg8F,SAAU,EAER7vE,GAmBXta,IAAK,SAAU4iC,EAAOnhB,EAAUvQ,GAE5B,MAAO/iB,MAAK0gB,OAAO+zB,GAAO,EAAO,EAAGnhB,EAAUvQ,EAAiBvc,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KAqBzG0hB,OAAQ,SAAUgsB,EAAOmoD,EAAatpE,EAAUvQ,GAE5C,MAAO/iB,MAAK0gB,OAAO+zB,GAAO,EAAOmoD,EAAatpE,EAAUvQ,EAAiBvc,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KAmBnHqgD,KAAM,SAAU3S,EAAOnhB,EAAUvQ,GAE7B,MAAO/iB,MAAK0gB,OAAO+zB,GAAO,EAAM,EAAGnhB,EAAUvQ,EAAiBvc,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KASxG2J,MAAO,SAAU+jC,GAEb,IAAIz0C,KAAK+7F,QAAT,CAKA/7F,KAAKk7F,SAAWl7F,KAAKwa,KAAKmE,KAAKA,MAAQ81B,GAAS,GAEhDz0C,KAAK+7F,SAAU,CAEf,KAAK,GAAIj0F,GAAI,EAAGA,EAAI9H,KAAKmwB,OAAOtoB,OAAQC,IAEpC9H,KAAKmwB,OAAOroB,GAAG+0F,KAAO78F,KAAKmwB,OAAOroB,GAAG2sC,MAAQz0C,KAAKk7F,WAU1D5+D,KAAM,SAAUygE,GAEZ/8F,KAAK+7F,SAAU,EAEKryF,SAAhBqzF,IAA6BA,GAAc,GAE3CA,IAEA/8F,KAAKmwB,OAAOtoB,OAAS,IAU7Bib,OAAQ,SAAUqJ,GAEd,IAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAKmwB,OAAOtoB,OAAQC,IAEpC,GAAI9H,KAAKmwB,OAAOroB,KAAOqkB,EAGnB,MADAnsB,MAAKmwB,OAAOroB,GAAG0uF,eAAgB,GACxB,CAIf,QAAO,GAUXjiE,MAAO,WAECv0B,KAAKmwB,OAAOtoB,OAAS,IAGrB7H,KAAKmwB,OAAOmE,KAAKt0B,KAAK20B,aAEtB30B,KAAKi8F,SAAWj8F,KAAKmwB,OAAO,GAAG0sE,OAUvCloE,YAAa,SAAUlmB,EAAGI,GAEtB,MAAIJ,GAAEouF,KAAOhuF,EAAEguF,MAEJ,EAEFpuF,EAAEouF,KAAOhuF,EAAEguF,KAET,EAGJ,GAUXG,mBAAoB,WAIhB,IAFAh9F,KAAKkqB,GAAKlqB,KAAKmwB,OAAOtoB,OAEf7H,KAAKkqB,MAEJlqB,KAAKmwB,OAAOnwB,KAAKkqB,IAAIssE,eAErBx2F,KAAKmwB,OAAOhN,OAAOnjB,KAAKkqB,GAAI,EAIpClqB,MAAKiqB,KAAOjqB,KAAKmwB,OAAOtoB,OACxB7H,KAAKkqB,GAAK,GAYd3L,OAAQ,SAAUI,GAEd,GAAI3e,KAAK6gB,OAEL,OAAO,CAoBX,IAjBA7gB,KAAK+7B,QAAUpd,EAAO3e,KAAKo8F,KAC3Bp8F,KAAKo8F,KAAOz9E,EAGR3e,KAAK+7B,QAAU/7B,KAAKk8F,SAKpBl8F,KAAKi9F,aAAat+E,EAAO3e,KAAK+7B,SAGlC/7B,KAAKq8F,QAAU,EAGfr8F,KAAKg9F,qBAEDh9F,KAAK+7F,SAAW/7F,KAAKo8F,MAAQp8F,KAAKi8F,UAAYj8F,KAAKiqB,KAAO,EAC9D,CACI,KAAOjqB,KAAKkqB,GAAKlqB,KAAKiqB,MAAQjqB,KAAK+7F,SAE3B/7F,KAAKo8F,MAAQp8F,KAAKmwB,OAAOnwB,KAAKkqB,IAAI2yE,OAAS78F,KAAKmwB,OAAOnwB,KAAKkqB,IAAIssE,eAGhEx2F,KAAKu8F,SAAYv8F,KAAKo8F,KAAOp8F,KAAKmwB,OAAOnwB,KAAKkqB,IAAIuqB,OAAUz0C,KAAKo8F,KAAOp8F,KAAKmwB,OAAOnwB,KAAKkqB,IAAI2yE,MAEzF78F,KAAKu8F,SAAW,IAEhBv8F,KAAKu8F,SAAWv8F,KAAKo8F,KAAOp8F,KAAKmwB,OAAOnwB,KAAKkqB,IAAIuqB,OAGjDz0C,KAAKmwB,OAAOnwB,KAAKkqB,IAAIk9B,QAAS,GAE9BpnD,KAAKmwB,OAAOnwB,KAAKkqB,IAAI2yE,KAAO78F,KAAKu8F,SACjCv8F,KAAKmwB,OAAOnwB,KAAKkqB,IAAIoJ,SAASrsB,MAAMjH,KAAKmwB,OAAOnwB,KAAKkqB,IAAInH,gBAAiB/iB,KAAKmwB,OAAOnwB,KAAKkqB,IAAIvjB,OAE1F3G,KAAKmwB,OAAOnwB,KAAKkqB,IAAI0yE,YAAc,GAExC58F,KAAKmwB,OAAOnwB,KAAKkqB,IAAI0yE,cACrB58F,KAAKmwB,OAAOnwB,KAAKkqB,IAAI2yE,KAAO78F,KAAKu8F,SACjCv8F,KAAKmwB,OAAOnwB,KAAKkqB,IAAIoJ,SAASrsB,MAAMjH,KAAKmwB,OAAOnwB,KAAKkqB,IAAInH,gBAAiB/iB,KAAKmwB,OAAOnwB,KAAKkqB,IAAIvjB,QAI/F3G,KAAKq8F,UACLr8F,KAAKmwB,OAAOnwB,KAAKkqB,IAAIssE,eAAgB,EACrCx2F,KAAKmwB,OAAOnwB,KAAKkqB,IAAIoJ,SAASrsB,MAAMjH,KAAKmwB,OAAOnwB,KAAKkqB,IAAInH,gBAAiB/iB,KAAKmwB,OAAOnwB,KAAKkqB,IAAIvjB,OAGnG3G,KAAKkqB,IASTlqB,MAAKmwB,OAAOtoB,OAAS7H,KAAKq8F,QAE1Br8F,KAAKu0B,SAILv0B,KAAKg8F,SAAU,EACfh8F,KAAK03F,WAAW74E,SAAS7e,OAIjC,OAAIA,KAAKg8F,UAAWh8F,KAAKw7F,aAe7Bh5E,MAAO,WAEExiB,KAAK+7F,UAKV/7F,KAAKy4B,aAAc,EAEfz4B,KAAK6gB,SAKT7gB,KAAKo7F,cAAgBp7F,KAAKwa,KAAKmE,KAAKA,KAEpC3e,KAAK6gB,QAAS,KASlBi2E,OAAQ,YAEA92F,KAAK6gB,QAAW7gB,KAAK+7F,UAKzB/7F,KAAKo7F,cAAgBp7F,KAAKwa,KAAKmE,KAAKA,KAEpC3e,KAAK6gB,QAAS,IAUlBo8E,aAAc,SAAUC,GAEpB,IAAK,GAAIp1F,GAAI,EAAGA,EAAI9H,KAAKmwB,OAAOtoB,OAAQC,IAEpC,IAAK9H,KAAKmwB,OAAOroB,GAAG0uF,cACpB,CAEI,GAAI7uF,GAAI3H,KAAKmwB,OAAOroB,GAAG+0F,KAAOK,CAE1Bv1F,GAAI,IAEJA,EAAI,GAIR3H,KAAKmwB,OAAOroB,GAAG+0F,KAAO78F,KAAKo8F,KAAOz0F,EAI1C,GAAIsM,GAAIjU,KAAKi8F,SAAWiB,CAEpBjpF,GAAI,EAEJjU,KAAKi8F,SAAWj8F,KAAKo8F,KAIrBp8F,KAAKi8F,SAAWj8F,KAAKo8F,KAAOnoF,GAUpCyO,OAAQ,WAEJ,GAAK1iB,KAAK6gB,OAAV,CAKA,GAAIuY,GAAMp5B,KAAKwa,KAAKmE,KAAKA,IACzB3e,MAAKm8F,aAAe/iE,EAAMp5B,KAAKo8F,KAC/Bp8F,KAAKo8F,KAAOhjE,EAEZp5B,KAAKi9F,aAAaj9F,KAAKo7F,eAEvBp7F,KAAK6gB,QAAS,EACd7gB,KAAKy4B,aAAc,IASvBs+D,QAAS,WAED/2F,KAAKy4B,aAMLz4B,KAAK0iB,UAWbkB,UAAW,WAEP5jB,KAAK03F,WAAW9zE,YAChB5jB,KAAKmwB,OAAOtoB,OAAS,EACrB7H,KAAKiqB,KAAO,EACZjqB,KAAKkqB,GAAK,GAUdpG,QAAS,WAEL9jB,KAAK03F,WAAW9zE,YAChB5jB,KAAK+7F,SAAU,EACf/7F,KAAKmwB,UACLnwB,KAAKiqB,KAAO,EACZjqB,KAAKkqB,GAAK,IAWlB3iB,OAAO2E,eAAe7L,EAAO06F,MAAM10F,UAAW,QAE1C2F,IAAK,WACD,MAAOhM,MAAKi8F,YAUpB10F,OAAO2E,eAAe7L,EAAO06F,MAAM10F,UAAW,YAE1C2F,IAAK,WAED,MAAIhM,MAAK+7F,SAAW/7F,KAAKi8F,SAAWj8F,KAAKo8F,KAE9Bp8F,KAAKi8F,SAAWj8F,KAAKo8F,KAIrB,KAYnB70F,OAAO2E,eAAe7L,EAAO06F,MAAM10F,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKmwB,OAAOtoB,UAU3BN,OAAO2E,eAAe7L,EAAO06F,MAAM10F,UAAW,MAE1C2F,IAAK,WAED,MAAIhM,MAAK+7F,QAEE/7F,KAAKo8F,KAAOp8F,KAAKk7F,SAAWl7F,KAAKm8F,YAIjC,KAYnB50F,OAAO2E,eAAe7L,EAAO06F,MAAM10F,UAAW,WAE1C2F,IAAK,WAED,MAAIhM,MAAK+7F,QAEY,KAAV/7F,KAAKg6F,GAIL,KAOnB35F,EAAO06F,MAAM10F,UAAU8B,YAAc9H,EAAO06F,MA6B5C16F,EAAOy8F,WAAa,SAAUvB,EAAO9mD,EAAOooD,EAAMD,EAAax1C,EAAM9zB,EAAUvQ,EAAiBpc,GAO5F3G,KAAKu7F,MAAQA,EAKbv7F,KAAKy0C,MAAQA,EAKbz0C,KAAK68F,KAAOA,EAKZ78F,KAAK48F,YAAcA,EAAc,EAKjC58F,KAAKonD,KAAOA,EAKZpnD,KAAKszB,SAAWA,EAKhBtzB,KAAK+iB,gBAAkBA,EAKvB/iB,KAAK2G,KAAOA,EAMZ3G,KAAKw2F,eAAgB,GAIzBn2F,EAAOy8F,WAAWz2F,UAAU8B,YAAc9H,EAAOy8F,WAgBjDz8F,EAAOioD,iBAAmB,SAAUlxB,GAKhCp3B,KAAKo3B,OAASA,EAKdp3B,KAAKwa,KAAO4c,EAAO5c,KASnBxa,KAAKm9F,aAAe,KAMpBn9F,KAAKo9F,YAAc,KAMnBp9F,KAAKq9F,iBAAkB,EAMvBr9F,KAAKs9F,UAAW,EAOhBt9F,KAAKu9F,WAAa,KAMlBv9F,KAAKw9F,UAMLx9F,KAAKy9F,kBAITp9F,EAAOioD,iBAAiBjiD,WAYpBmoD,cAAe,SAAUE,EAAW/9B,GAEhC,GAAkBjnB,SAAdglD,EAEA,OAAO,CAGX,IAAI1uD,KAAKs9F,SAGL,IAAK,GAAII,KAAQ19F,MAAKw9F,OAElBx9F,KAAKw9F,OAAOE,GAAMxf,gBAAgBxvB,EAwB1C,OApBA1uD,MAAKu9F,WAAa7uC,EAEJhlD,SAAVinB,GAAiC,OAAVA,EAEvB3wB,KAAK2wB,MAAQ,EAIQ,gBAAVA,GAEP3wB,KAAK4vD,UAAYj/B,EAIjB3wB,KAAK2wB,MAAQA,EAIrB3wB,KAAKs9F,UAAW,GAET,GAaXK,cAAe,SAAUjvC,EAAW/9B,GAIhC,GAFA3wB,KAAKu9F,WAAa7uC,EAAUljD,QAExBxL,KAAKs9F,SAGL,IAAK,GAAII,KAAQ19F,MAAKw9F,OAElBx9F,KAAKw9F,OAAOE,GAAMxf,gBAAgBl+E,KAAKu9F,WAsB/C,OAlBc7zF,UAAVinB,GAAiC,OAAVA,EAEvB3wB,KAAK2wB,MAAQ,EAIQ,gBAAVA,GAEP3wB,KAAK4vD,UAAYj/B,EAIjB3wB,KAAK2wB,MAAQA,EAIrB3wB,KAAKs9F,UAAW,GAET,GAeXzrF,IAAK,SAAUzG,EAAM+0E,EAAQh5B,EAAWC,EAAMw2C,GAoC1C,MAlCAzd,GAASA,MACTh5B,EAAYA,GAAa,GAEZz9C,SAAT09C,IAAsBA,GAAO,GAGT19C,SAApBk0F,IAIIA,KAFAzd,GAA+B,gBAAdA,GAAO,KAUhCngF,KAAKy9F,iBAELz9F,KAAKu9F,WAAWM,gBAAgB1d,EAAQyd,EAAiB59F,KAAKy9F,eAE9Dz9F,KAAKw9F,OAAOpyF,GAAQ,GAAI/K,GAAO4mD,UAAUjnD,KAAKwa,KAAMxa,KAAKo3B,OAAQhsB,EAAMpL,KAAKu9F,WAAYv9F,KAAKy9F,cAAet2C,EAAWC,GAEvHpnD,KAAKo9F,YAAcp9F,KAAKw9F,OAAOpyF,GAK3BpL,KAAKo3B,OAAOs4B,gBAEZ1vD,KAAKo3B,OAAOu4B,gBAAiB,GAG1B3vD,KAAKw9F,OAAOpyF,IAYvB0yF,eAAgB,SAAU3d,EAAQyd,GAENl0F,SAApBk0F,IAAiCA,GAAkB,EAEvD,KAAK,GAAI91F,GAAI,EAAGA,EAAIq4E,EAAOt4E,OAAQC,IAE/B,GAAI81F,KAAoB,GAEpB,GAAIzd,EAAOr4E,GAAK9H,KAAKu9F,WAAW1oE,MAE5B,OAAO,MAKX,IAAI70B,KAAKu9F,WAAWQ,eAAe5d,EAAOr4E,OAAQ,EAE9C,OAAO,CAKnB,QAAO,GAiBXo/C,KAAM,SAAU97C,EAAM+7C,EAAWC,EAAMC,GAEnC,GAAIrnD,KAAKw9F,OAAOpyF,GAEZ,MAAIpL,MAAKo9F,cAAgBp9F,KAAKw9F,OAAOpyF,GAE7BpL,KAAKo9F,YAAYY,aAAc,GAE/Bh+F,KAAKo9F,YAAYv8E,QAAS,EACnB7gB,KAAKo9F,YAAYl2C,KAAKC,EAAWC,EAAMC,IAG3CrnD,KAAKo9F,aAIRp9F,KAAKo9F,aAAep9F,KAAKo9F,YAAYY,WAErCh+F,KAAKo9F,YAAY9gE,OAGrBt8B,KAAKo9F,YAAcp9F,KAAKw9F,OAAOpyF,GAC/BpL,KAAKo9F,YAAYv8E,QAAS,EAC1B7gB,KAAKm9F,aAAen9F,KAAKo9F,YAAYD,aAC9Bn9F,KAAKo9F,YAAYl2C,KAAKC,EAAWC,EAAMC,KAc1D/qB,KAAM,SAAUlxB,EAAM+9C,GAECz/C,SAAfy/C,IAA4BA,GAAa,IAEzCnpD,KAAKo9F,aAAgC,gBAAThyF,IAAqBA,IAASpL,KAAKo9F,YAAYhyF,MAE3EpL,KAAKo9F,YAAY9gE,KAAK6sB,IAY9B5qC,OAAQ,WAEJ,QAAIve,KAAKq9F,kBAAoBr9F,KAAKo3B,OAAOvc,cAKrC7a,KAAKo9F,cAAep9F,KAAKo9F,YAAY7+E,YAErCve,KAAKm9F,aAAen9F,KAAKo9F,YAAYD,cAC9B,KAaf5rE,KAAM,SAAUV,GAER7wB,KAAKo9F,cAELp9F,KAAKo9F,YAAY7rE,KAAKV,GACtB7wB,KAAKm9F,aAAen9F,KAAKo9F,YAAYD,eAW7C3rE,SAAU,SAAUX,GAEZ7wB,KAAKo9F,cAELp9F,KAAKo9F,YAAY5rE,SAASX,GAC1B7wB,KAAKm9F,aAAen9F,KAAKo9F,YAAYD,eAY7Cc,aAAc,SAAU7yF,GAEpB,MAAoB,gBAATA,IAEHpL,KAAKw9F,OAAOpyF,GAELpL,KAAKw9F,OAAOpyF,GAIpB,MASX8yF,aAAc,aAadp6E,QAAS,WAEL,GAAI45E,GAAO,IAEX,KAAK,GAAIA,KAAQ19F,MAAKw9F,OAEdx9F,KAAKw9F,OAAOxyF,eAAe0yF,IAE3B19F,KAAKw9F,OAAOE,GAAM55E,SAI1B9jB,MAAKw9F,UACLx9F,KAAKy9F,iBACLz9F,KAAKu9F,WAAa,KAClBv9F,KAAKo9F,YAAc,KACnBp9F,KAAKm9F,aAAe,KACpBn9F,KAAKo3B,OAAS,KACdp3B,KAAKwa,KAAO,OAMpBna,EAAOioD,iBAAiBjiD,UAAU8B,YAAc9H,EAAOioD,iBAOvD/gD,OAAO2E,eAAe7L,EAAOioD,iBAAiBjiD,UAAW,aAErD2F,IAAK,WACD,MAAOhM,MAAKu9F,cAUpBh2F,OAAO2E,eAAe7L,EAAOioD,iBAAiBjiD,UAAW,cAErD2F,IAAK,WAED,MAAOhM,MAAKu9F,WAAW1oE;IAS/BttB,OAAO2E,eAAe7L,EAAOioD,iBAAiBjiD,UAAW,UAErD2F,IAAK,WAED,MAAOhM,MAAKo9F,YAAYxF,UAI5B3rF,IAAK,SAAU1C,GAEXvJ,KAAKo9F,YAAYv8E,OAAStX,KAUlChC,OAAO2E,eAAe7L,EAAOioD,iBAAiBjiD,UAAW,QAErD2F,IAAK,WAED,GAAIhM,KAAKo9F,YAEL,MAAOp9F,MAAKo9F,YAAYhyF,QAWpC7D,OAAO2E,eAAe7L,EAAOioD,iBAAiBjiD,UAAW,SAErD2F,IAAK,WAED,GAAIhM,KAAKm9F,aAEL,MAAOn9F,MAAKm9F,aAAaxtE,OAKjC1jB,IAAK,SAAU1C,GAEU,gBAAVA,IAAsBvJ,KAAKu9F,YAAkD,OAApCv9F,KAAKu9F,WAAWY,SAAS50F,KAEzEvJ,KAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAAS50F,GAEzCvJ,KAAKm9F,cAELn9F,KAAKo3B,OAAO82B,SAASluD,KAAKm9F,kBAY1C51F,OAAO2E,eAAe7L,EAAOioD,iBAAiBjiD,UAAW,aAErD2F,IAAK,WAED,GAAIhM,KAAKm9F,aAEL,MAAOn9F,MAAKm9F,aAAa/xF,MAKjCa,IAAK,SAAU1C,GAEU,gBAAVA,IAAsBvJ,KAAKu9F,YAAwD,OAA1Cv9F,KAAKu9F,WAAWa,eAAe70F,IAE/EvJ,KAAKm9F,aAAen9F,KAAKu9F,WAAWa,eAAe70F,GAE/CvJ,KAAKm9F,eAELn9F,KAAKq+F,YAAcr+F,KAAKm9F,aAAaxtE,MAErC3vB,KAAKo3B,OAAO82B,SAASluD,KAAKm9F,gBAK9B/0F,QAAQG,KAAK,yBAA2BgB,MA2BpDlJ,EAAO4mD,UAAY,SAAUzsC,EAAMgP,EAAQpe,EAAMsjD,EAAWyxB,EAAQh5B,EAAWC,GAE9D19C,SAAT09C,IAAsBA,GAAO,GAKjCpnD,KAAKwa,KAAOA,EAMZxa,KAAKwqD,QAAUhhC,EAMfxpB,KAAKu9F,WAAa7uC,EAKlB1uD,KAAKoL,KAAOA,EAMZpL,KAAKs+F,WACLt+F,KAAKs+F,QAAUt+F,KAAKs+F,QAAQz3F,OAAOs5E,GAKnCngF,KAAKy0C,MAAQ,IAAO0S,EAKpBnnD,KAAKonD,KAAOA,EAKZpnD,KAAKu+F,UAAY,EAMjBv+F,KAAKqnD,gBAAiB,EAMtBrnD,KAAKw+F,YAAa,EAMlBx+F,KAAKg+F,WAAY,EAMjBh+F,KAAK43F,UAAW,EAOhB53F,KAAKy+F,gBAAkB,EAOvBz+F,KAAKq+F,YAAc,EAOnBr+F,KAAK0+F,WAAa,EAOlB1+F,KAAK2+F,WAAa,EAKlB3+F,KAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQt+F,KAAKq+F,cAK/Dr+F,KAAKs3F,QAAU,GAAIj3F,GAAO+a,OAW1Bpb,KAAK4+F,SAAW,KAKhB5+F,KAAK03F,WAAa,GAAIr3F,GAAO+a,OAK7Bpb,KAAKu3F,OAAS,GAAIl3F,GAAO+a,OAMzBpb,KAAK6+F,YAAa,EAGlB7+F,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAKuiB,QAASviB,MACpCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAKyiB,SAAUziB,OAI1CK,EAAO4mD,UAAU5gD,WAWb6gD,KAAM,SAAUC,EAAWC,EAAMC,GAsC7B,MApCyB,gBAAdF,KAGPnnD,KAAKy0C,MAAQ,IAAO0S,GAGJ,iBAATC,KAGPpnD,KAAKonD,KAAOA,GAGc,mBAAnBC,KAGPrnD,KAAKqnD,eAAiBA,GAG1BrnD,KAAKg+F,WAAY,EACjBh+F,KAAKw+F,YAAa,EAClBx+F,KAAK6gB,QAAS,EACd7gB,KAAKu+F,UAAY,EAEjBv+F,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KACrC3e,KAAK++F,eAAiB/+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKy0C,MAEjDz0C,KAAKq+F,YAAcr+F,KAAK6+F,WAAa7+F,KAAKs+F,QAAQz2F,OAAS,EAAI,EAC/D7H,KAAKg/F,oBAAmB,GAAO,GAE/Bh/F,KAAKwqD,QAAQr6B,OAAO8uE,0BAA0Bj/F,KAAKwqD,QAASxqD,MAE5DA,KAAKs3F,QAAQz4E,SAAS7e,KAAKwqD,QAASxqD,MAEpCA,KAAKwqD,QAAQlD,WAAW81C,YAAcp9F,KACtCA,KAAKwqD,QAAQlD,WAAW61C,aAAen9F,KAAKm9F,aAErCn9F,MASXojB,QAAS,WAELpjB,KAAKg+F,WAAY,EACjBh+F,KAAKw+F,YAAa,EAClBx+F,KAAK6gB,QAAS,EACd7gB,KAAKu+F,UAAY,EAEjBv+F,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KACrC3e,KAAK++F,eAAiB/+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKy0C,MAEjDz0C,KAAKq+F,YAAc,EAEnBr+F,KAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQt+F,KAAKq+F,cAE/Dr+F,KAAKwqD,QAAQ0D,SAASluD,KAAKm9F,cAE3Bn9F,KAAKwqD,QAAQlD,WAAW81C,YAAcp9F,KACtCA,KAAKwqD,QAAQlD,WAAW61C,aAAen9F,KAAKm9F,aAE5Cn9F,KAAKs3F,QAAQz4E,SAAS7e,KAAKwqD,QAASxqD,OAUxC4I,QAAS,WAGL,MAFA5I,MAAKm6F,UAAYn6F,KAAKm6F,SAEfn6F,MAWXk/F,YAAa,WAGT,MAFAl/F,MAAK03F,WAAWzxE,QAAQjmB,KAAK4I,QAAQtC,KAAKtG,OAEnCA,KAAK4I,WAUhBslD,SAAU,SAASixC,EAASC,GAExB,GAAIC,EAQJ,IAN2B31F,SAAvB01F,IAEAA,GAAqB,GAIF,gBAAZD,GAEP,IAAK,GAAIr3F,GAAI,EAAGA,EAAI9H,KAAKs+F,QAAQz2F,OAAQC,IAEjC9H,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQx2F,IAAIsD,OAAS+zF,IAEnDE,EAAav3F,OAIpB,IAAuB,gBAAZq3F,GAEZ,GAAIC,EAEAC,EAAaF,MAIb,KAAK,GAAIr3F,GAAI,EAAGA,EAAI9H,KAAKs+F,QAAQz2F,OAAQC,IAEjC9H,KAAKs+F,QAAQx2F,KAAOq3F,IAEpBE,EAAav3F,EAMzBu3F,KAGAr/F,KAAKq+F,YAAcgB,EAAa,EAGhCr/F,KAAK++F,eAAiB/+F,KAAKwa,KAAKmE,KAAKA,KAErC3e,KAAKue,WAab+d,KAAM,SAAU6sB,EAAYm2C,GAEL51F,SAAfy/C,IAA4BA,GAAa,GACpBz/C,SAArB41F,IAAkCA,GAAmB,GAEzDt/F,KAAKg+F,WAAY,EACjBh+F,KAAKw+F,YAAa,EAClBx+F,KAAK6gB,QAAS,EAEVsoC,IAEAnpD,KAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQ,IAC1Dt+F,KAAKwqD,QAAQ0D,SAASluD,KAAKm9F,eAG3BmC,IAEAt/F,KAAKwqD,QAAQr6B,OAAOovE,6BAA6Bv/F,KAAKwqD,QAASxqD,MAC/DA,KAAK03F,WAAW74E,SAAS7e,KAAKwqD,QAASxqD,QAU/CuiB,QAAS,WAEDviB,KAAKg+F,YAELh+F,KAAK0+F,WAAa1+F,KAAK++F,eAAiB/+F,KAAKwa,KAAKmE,KAAKA,OAU/D8D,SAAU,WAEFziB,KAAKg+F,YAELh+F,KAAK++F,eAAiB/+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK0+F,aAUzDngF,OAAQ,WAEJ,OAAIve,KAAK43F,cAKL53F,KAAKg+F,WAAah+F,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAK++F,kBAE9C/+F,KAAK2+F,WAAa,EAGlB3+F,KAAK0+F,WAAa1+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK++F,eAE7C/+F,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KAEjC3e,KAAK0+F,WAAa1+F,KAAKy0C,QAGvBz0C,KAAK2+F,WAAa54F,KAAKI,MAAMnG,KAAK0+F,WAAa1+F,KAAKy0C,OACpDz0C,KAAK0+F,YAAe1+F,KAAK2+F,WAAa3+F,KAAKy0C,OAI/Cz0C,KAAK++F,eAAiB/+F,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAKy0C,MAAQz0C,KAAK0+F,YAE3D1+F,KAAK6+F,WACL7+F,KAAKq+F,aAAer+F,KAAK2+F,WAEzB3+F,KAAKq+F,aAAer+F,KAAK2+F,YAGxB3+F,KAAK6+F,YAAc7+F,KAAKq+F,aAAer+F,KAAKs+F,QAAQz2F,QAAU7H,KAAK6+F,YAAc7+F,KAAKq+F,cAAe,EAElGr+F,KAAKonD,MAGLpnD,KAAKq+F,YAAct4F,KAAKoJ,IAAInP,KAAKq+F,aAAer+F,KAAKs+F,QAAQz2F,OAEzD7H,KAAK6+F,aACL7+F,KAAKq+F,YAAcr+F,KAAKs+F,QAAQz2F,OAAS,EAAI7H,KAAKq+F,aAGtDr+F,KAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQt+F,KAAKq+F,cAG3Dr+F,KAAKm9F,cAELn9F,KAAKwqD,QAAQ0D,SAASluD,KAAKm9F,cAG/Bn9F,KAAKu+F,YACLv+F,KAAKwqD,QAAQr6B,OAAOqvE,yBAAyBx/F,KAAKwqD,QAASxqD,MAC3DA,KAAKu3F,OAAO14E,SAAS7e,KAAKwqD,QAASxqD,OAE/BA,KAAK4+F,WAEL5+F,KAAK4+F,SAAS//E,SAAS7e,KAAMA,KAAKm9F,gBAGzBn9F,KAAKu9F,cASlBv9F,KAAKu4F,YACE,GAKJv4F,KAAKg/F,oBAAmB,MAoB3CA,mBAAoB,SAAUS,EAAcC,GAIxC,GAFiBh2F,SAAbg2F,IAA0BA,GAAW,IAEpC1/F,KAAKu9F,WAGN,OAAO,CAIX,IAAI/hB,GAAMx7E,KAAKm9F,aAAaxtE,KAS5B,OAPA3vB,MAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQt+F,KAAKq+F,cAE3Dr+F,KAAKm9F,eAAiBuC,IAAcA,GAAYlkB,IAAQx7E,KAAKm9F,aAAaxtE,QAE1E3vB,KAAKwqD,QAAQ0D,SAASluD,KAAKm9F,eAG3Bn9F,KAAK4+F,WAAYa,IAEjBz/F,KAAK4+F,SAAS//E,SAAS7e,KAAMA,KAAKm9F,gBAGzBn9F,KAAKu9F,aAetBhsE,KAAM,SAAUV,GAEKnnB,SAAbmnB,IAA0BA,EAAW,EAEzC,IAAIF,GAAQ3wB,KAAKq+F,YAAcxtE,CAE3BF,IAAS3wB,KAAKs+F,QAAQz2F,SAElB7H,KAAKonD,KAELz2B,GAAS3wB,KAAKs+F,QAAQz2F,OAItB8oB,EAAQ3wB,KAAKs+F,QAAQz2F,OAAS,GAIlC8oB,IAAU3wB,KAAKq+F,cAEfr+F,KAAKq+F,YAAc1tE,EACnB3wB,KAAKg/F,oBAAmB,KAWhCxtE,SAAU,SAAUX,GAECnnB,SAAbmnB,IAA0BA,EAAW,EAEzC,IAAIF,GAAQ3wB,KAAKq+F,YAAcxtE,CAE3BF,GAAQ,IAEJ3wB,KAAKonD,KAELz2B,EAAQ3wB,KAAKs+F,QAAQz2F,OAAS8oB,EAI9BA,KAIJA,IAAU3wB,KAAKq+F,cAEfr+F,KAAKq+F,YAAc1tE,EACnB3wB,KAAKg/F,oBAAmB,KAWhC9gB,gBAAiB,SAAUxvB,GAEvB1uD,KAAKu9F,WAAa7uC,EAClB1uD,KAAKm9F,aAAen9F,KAAKu9F,WAAav9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQt+F,KAAKq+F,YAAcr+F,KAAKs+F,QAAQz2F,SAAW,MAS3Hic,QAAS,WAEA9jB,KAAKu9F,aAMVv9F,KAAKwa,KAAK+H,QAAQO,OAAO9iB,KAAKuiB,QAASviB,MACvCA,KAAKwa,KAAKiI,SAASK,OAAO9iB,KAAKyiB,SAAUziB,MAEzCA,KAAKwa,KAAO,KACZxa,KAAKwqD,QAAU,KACfxqD,KAAKs+F,QAAU,KACft+F,KAAKu9F,WAAa,KAClBv9F,KAAKm9F,aAAe,KACpBn9F,KAAKg+F,WAAY,EAEjBh+F,KAAKs3F,QAAQ9wE,UACbxmB,KAAKu3F,OAAO/wE,UACZxmB,KAAK03F,WAAWlxE,UAEZxmB,KAAK4+F,UAEL5+F,KAAK4+F,SAASp4E,YAWtB+xE,SAAU,WAENv4F,KAAKq+F,YAAcr+F,KAAKs+F,QAAQz2F,OAAS,EACzC7H,KAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQt+F,KAAKq+F,cAE/Dr+F,KAAKg+F,WAAY,EACjBh+F,KAAKw+F,YAAa,EAClBx+F,KAAK6gB,QAAS,EAEd7gB,KAAKwqD,QAAQr6B,OAAOovE,6BAA6Bv/F,KAAKwqD,QAASxqD,MAE/DA,KAAK03F,WAAW74E,SAAS7e,KAAKwqD,QAASxqD,MAEnCA,KAAKqnD,gBAELrnD,KAAKwqD,QAAQuC,SAOzB1sD,EAAO4mD,UAAU5gD,UAAU8B,YAAc9H,EAAO4mD,UAMhD1/C,OAAO2E,eAAe7L,EAAO4mD,UAAU5gD,UAAW,UAE9C2F,IAAK,WAED,MAAOhM,MAAK43F,UAIhB3rF,IAAK,SAAU1C,GAEXvJ,KAAK43F,SAAWruF,EAEZA,EAGAvJ,KAAKy+F,gBAAkBz+F,KAAKwa,KAAKmE,KAAKA,KAKlC3e,KAAKg+F,YAELh+F,KAAK++F,eAAiB/+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKy0C,UAYjEltC,OAAO2E,eAAe7L,EAAO4mD,UAAU5gD,UAAW,YAE9C2F,IAAK,WAED,MAAOhM,MAAK6+F,YAIhB5yF,IAAK,SAAU1C,GAEXvJ,KAAK6+F,WAAat1F,KAW1BhC,OAAO2E,eAAe7L,EAAO4mD,UAAU5gD,UAAW,cAE9C2F,IAAK,WACD,MAAOhM,MAAKs+F,QAAQz2F,UAS5BN,OAAO2E,eAAe7L,EAAO4mD,UAAU5gD,UAAW,SAE9C2F,IAAK,WAED,MAA0B,QAAtBhM,KAAKm9F,aAEEn9F,KAAKm9F,aAAaxtE,MAIlB3vB,KAAKq+F,aAKpBpyF,IAAK,SAAU1C,GAEXvJ,KAAKm9F,aAAen9F,KAAKu9F,WAAWY,SAASn+F,KAAKs+F,QAAQ/0F,IAEhC,OAAtBvJ,KAAKm9F,eAELn9F,KAAKq+F,YAAc90F,EACnBvJ,KAAKwqD,QAAQ0D,SAASluD,KAAKm9F,cAEvBn9F,KAAK4+F,UAEL5+F,KAAK4+F,SAAS//E,SAAS7e,KAAMA,KAAKm9F,kBAYlD51F,OAAO2E,eAAe7L,EAAO4mD,UAAU5gD,UAAW,SAE9C2F,IAAK,WAED,MAAOjG,MAAK+H,MAAM,IAAO9N,KAAKy0C,QAIlCxoC,IAAK,SAAU1C,GAEPA,GAAS,IAETvJ,KAAKy0C,MAAQ,IAAOlrC,MAWhChC,OAAO2E,eAAe7L,EAAO4mD,UAAU5gD,UAAW,gBAE9C2F,IAAK,WAED,MAA0B,QAAlBhM,KAAK4+F,UAIjB3yF,IAAK,SAAU1C,GAEPA,GAA2B,OAAlBvJ,KAAK4+F,SAEd5+F,KAAK4+F,SAAW,GAAIv+F,GAAO+a,OAErB7R,GAA2B,OAAlBvJ,KAAK4+F,WAEpB5+F,KAAK4+F,SAASp4E,UACdxmB,KAAK4+F,SAAW,SAqB5Bv+F,EAAO4mD,UAAU04C,mBAAqB,SAAU9U,EAAQn6E,EAAO4rB,EAAMsjE,EAAQC,GAE1Dn2F,SAAXk2F,IAAwBA,EAAS,GAErC,IAAI7xF,MACA4iB,EAAQ,EAEZ,IAAIjgB,EAAQ4rB,EAER,IAAK,GAAIx0B,GAAI4I,EAAO5I,GAAKw0B,EAAMx0B,IAKvB6oB,EAHmB,gBAAZkvE,GAGCx/F,EAAOmI,MAAMgC,IAAI1C,EAAEN,WAAYq4F,EAAS,IAAK,GAI7C/3F,EAAEN,WAGdmpB,EAAQk6D,EAASl6D,EAAQivE,EAEzB7xF,EAAO6E,KAAK+d,OAKhB,KAAK,GAAI7oB,GAAI4I,EAAO5I,GAAKw0B,EAAMx0B,IAKvB6oB,EAHmB,gBAAZkvE,GAGCx/F,EAAOmI,MAAMgC,IAAI1C,EAAEN,WAAYq4F,EAAS,IAAK,GAI7C/3F,EAAEN,WAGdmpB,EAAQk6D,EAASl6D,EAAQivE,EAEzB7xF,EAAO6E,KAAK+d,EAIpB,OAAO5iB,IAsBX1N,EAAOi4D,MAAQ,SAAU3oC,EAAO1pB,EAAGwG,EAAGsD,EAAOC,EAAQ5E,GAKjDpL,KAAK2vB,MAAQA,EAKb3vB,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAKdhQ,KAAKoL,KAAOA,EAKZpL,KAAKyY,QAAU1S,KAAKI,MAAM4J,EAAQ,GAKlC/P,KAAK0Y,QAAU3S,KAAKI,MAAM6J,EAAS,GAKnChQ,KAAK6N,SAAWxN,EAAO0F,KAAK8H,SAAS,EAAG,EAAGkC,EAAOC,GAMlDhQ,KAAK8/F,SAAU,EAMf9/F,KAAK+/F,kBAAoB,KAMzB//F,KAAKovD,SAAU,EAKfpvD,KAAKuvD,YAAcx/C,EAKnB/P,KAAKwvD,YAAcx/C,EAMnBhQ,KAAKqvD,kBAAoB,EAMzBrvD,KAAKsvD,kBAAoB,EAMzBtvD,KAAKggG,kBAAoB,EAMzBhgG,KAAKigG,kBAAoB,EAKzBjgG,KAAK4K,MAAQ5K,KAAKiG,EAAIjG,KAAK+P,MAK3B/P,KAAK2O,OAAS3O,KAAKyM,EAAIzM,KAAKgQ,QAIhC3P,EAAOi4D,MAAMjyD,WASTyS,OAAQ,SAAU/I,EAAOC,GAErBhQ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EACdhQ,KAAKyY,QAAU1S,KAAKI,MAAM4J,EAAQ,GAClC/P,KAAK0Y,QAAU3S,KAAKI,MAAM6J,EAAS,GACnChQ,KAAK6N,SAAWxN,EAAO0F,KAAK8H,SAAS,EAAG,EAAGkC,EAAOC,GAClDhQ,KAAKuvD,YAAcx/C,EACnB/P,KAAKwvD,YAAcx/C,EACnBhQ,KAAK4K,MAAQ5K,KAAKiG,EAAI8J,EACtB/P,KAAK2O,OAAS3O,KAAKyM,EAAIuD,GAgB3BkwF,QAAS,SAAU9wC,EAAS+wC,EAAaC,EAAcC,EAAOC,EAAOC,EAAWC,GAE5ExgG,KAAKovD,QAAUA,EAEXA,IAEApvD,KAAKuvD,YAAc4wC,EACnBngG,KAAKwvD,YAAc4wC,EACnBpgG,KAAKyY,QAAU1S,KAAKI,MAAMg6F,EAAc,GACxCngG,KAAK0Y,QAAU3S,KAAKI,MAAMi6F,EAAe,GACzCpgG,KAAKqvD,kBAAoBgxC,EACzBrgG,KAAKsvD,kBAAoBgxC,EACzBtgG,KAAKggG,kBAAoBO,EACzBvgG,KAAKigG,kBAAoBO,IAYjCh1F,MAAO,WAEH,GAAIuC,GAAS,GAAI1N,GAAOi4D,MAAMt4D,KAAK2vB,MAAO3vB,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,OAAQhQ,KAAKoL,KAExF,KAAK,GAAIpC,KAAQhJ,MAETA,KAAKgL,eAAehC,KAEpB+E,EAAO/E,GAAQhJ,KAAKgJ,GAI5B,OAAO+E,IAWX0yF,QAAS,SAAU1zF,GAWf,MATYrD,UAARqD,EAEAA,EAAM,GAAI1M,GAAOkN,UAAUvN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAI5DjD,EAAIS,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAGxCjD,IAMf1M,EAAOi4D,MAAMjyD,UAAU8B,YAAc9H,EAAOi4D,MAc5Cj4D,EAAO83D,UAAY,WAMfn4D,KAAKs+F,WAMLt+F,KAAK0gG,gBAITrgG,EAAO83D,UAAU9xD,WASbgyD,SAAU,SAAU1nC,GAWhB,MATAA,GAAMhB,MAAQ3vB,KAAKs+F,QAAQz2F,OAE3B7H,KAAKs+F,QAAQ1rF,KAAK+d,GAEC,KAAfA,EAAMvlB,OAENpL,KAAK0gG,YAAY/vE,EAAMvlB,MAAQulB,EAAMhB,OAGlCgB,GAWXwtE,SAAU,SAAUxuE,GAOhB,MALIA,IAAS3vB,KAAKs+F,QAAQz2F,SAEtB8nB,EAAQ,GAGL3vB,KAAKs+F,QAAQ3uE,IAWxByuE,eAAgB,SAAUhzF,GAEtB,MAAsC,gBAA3BpL,MAAK0gG,YAAYt1F,GAEjBpL,KAAKs+F,QAAQt+F,KAAK0gG,YAAYt1F,IAGlC,MAWX2yF,eAAgB,SAAU3yF,GAEtB,MAA8B,OAA1BpL,KAAK0gG,YAAYt1F,IAezBI,MAAO,WAKH,IAAK,GAHDuC,GAAS,GAAI1N,GAAO83D,UAGfrwD,EAAI,EAAGA,EAAI9H,KAAKs+F,QAAQz2F,OAAQC,IAErCiG,EAAOuwF,QAAQ1rF,KAAK5S,KAAKs+F,QAAQx2F,GAAG0D,QAGxC,KAAK,GAAIyE,KAAKjQ,MAAK0gG,YAEX1gG,KAAK0gG,YAAY11F,eAAeiF,IAEhClC,EAAO2yF,YAAY9tF,KAAK5S,KAAK0gG,YAAYzwF,GAIjD,OAAOlC,IAaX4yF,cAAe,SAAUjwF,EAAOC,EAAK5C,GAElBrE,SAAXqE,IAAwBA,KAE5B,KAAK,GAAIjG,GAAI4I,EAAO5I,GAAK6I,EAAK7I,IAE1BiG,EAAO6E,KAAK5S,KAAKs+F,QAAQx2F,GAG7B,OAAOiG,IAcXqyE,UAAW,SAAUD,EAAQyd,EAAiB7vF,GAK1C,GAHwBrE,SAApBk0F,IAAiCA,GAAkB,GACxCl0F,SAAXqE,IAAwBA,MAEbrE,SAAXy2E,GAA0C,IAAlBA,EAAOt4E,OAG/B,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAKs+F,QAAQz2F,OAAQC,IAGrCiG,EAAO6E,KAAK5S,KAAKs+F,QAAQx2F,QAM7B,KAAK,GAAIA,GAAI,EAAGA,EAAIq4E,EAAOt4E,OAAQC,IAG3B81F,EAGA7vF,EAAO6E,KAAK5S,KAAKm+F,SAAShe,EAAOr4E,KAKjCiG,EAAO6E,KAAK5S,KAAKo+F,eAAeje,EAAOr4E,IAKnD,OAAOiG,IAcX8vF,gBAAiB,SAAU1d,EAAQyd,EAAiB7vF,GAKhD,GAHwBrE,SAApBk0F,IAAiCA,GAAkB,GACxCl0F,SAAXqE,IAAwBA,MAEbrE,SAAXy2E,GAA0C,IAAlBA,EAAOt4E,OAG/B,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAKs+F,QAAQz2F,OAAQC,IAErCiG,EAAO6E,KAAK5S,KAAKs+F,QAAQx2F,GAAG6nB,WAMhC,KAAK,GAAI7nB,GAAI,EAAGA,EAAIq4E,EAAOt4E,OAAQC,IAG3B81F,GAAmB59F,KAAKs+F,QAAQne,EAAOr4E,IAEvCiG,EAAO6E,KAAK5S,KAAKs+F,QAAQne,EAAOr4E,IAAI6nB,OAIhC3vB,KAAKo+F,eAAeje,EAAOr4E,KAE3BiG,EAAO6E,KAAK5S,KAAKo+F,eAAeje,EAAOr4E,IAAI6nB,MAM3D,OAAO5hB,IASX+V,QAAS,WAEL9jB,KAAKs+F,QAAU,KACft+F,KAAK0gG,YAAc,OAM3BrgG,EAAO83D,UAAU9xD,UAAU8B,YAAc9H,EAAO83D,UAOhD5wD,OAAO2E,eAAe7L,EAAO83D,UAAU9xD,UAAW,SAE9C2F,IAAK,WACD,MAAOhM,MAAKs+F,QAAQz2F,UAiB5BxH,EAAOugG,iBAeHC,YAAa,SAAUrmF,EAAMzO,EAAK+0F,EAAYC,EAAaC,EAAUC,EAAQC,GAEzE,GAAIlyC,GAAMjjD,CAOV,IALmB,gBAARA,KAEPijD,EAAMx0C,EAAKsF,MAAMmvC,SAASljD,IAGlB,OAARijD,EAEA,MAAO,KAGX,IAAIj/C,GAAQi/C,EAAIj/C,MACZC,EAASg/C,EAAIh/C,MAEb8wF,IAAc,IAEdA,EAAa/6F,KAAKI,OAAO4J,EAAQhK,KAAKkM,KAAI,EAAI6uF,KAG9CC,GAAe,IAEfA,EAAch7F,KAAKI,OAAO6J,EAASjK,KAAKkM,KAAI,EAAI8uF,IAGpD,IAAII,GAAMp7F,KAAKI,OAAO4J,EAAQkxF,IAAWH,EAAaI,IAClDE,EAASr7F,KAAKI,OAAO6J,EAASixF,IAAWF,EAAcG,IACvDrsE,EAAQssE,EAAMC,CAQlB,IANIJ,KAAa,IAEbnsE,EAAQmsE,GAIE,IAAVjxF,GAA0B,IAAXC,GAAgBD,EAAQ+wF,GAAc9wF,EAAS+wF,GAAyB,IAAVlsE,EAG7E,MADAzsB,SAAQG,KAAK,wCAA0CwD,EAAM,uEACtD,IAQX,KAAK,GAJD22B,GAAO,GAAIriC,GAAO83D,UAClBlyD,EAAIg7F,EACJx0F,EAAIw0F,EAECn5F,EAAI,EAAGA,EAAI+sB,EAAO/sB,IAEvB46B,EAAK21B,SAAS,GAAIh4D,GAAOi4D,MAAMxwD,EAAG7B,EAAGwG,EAAGq0F,EAAYC,EAAa,KAEjE96F,GAAK66F,EAAaI,EAEdj7F,EAAI66F,EAAa/wF,IAEjB9J,EAAIg7F,EACJx0F,GAAKs0F,EAAcG,EAI3B,OAAOx+D,IAYX2+D,SAAU,SAAU7mF,EAAM8mF,GAGtB,IAAKA,EAAa,OAId,MAFAl5F,SAAQG,KAAK,iGACbH,SAAQC,IAAIi5F,EAWhB,KAAK,GAFDC,GAJA7+D,EAAO,GAAIriC,GAAO83D,UAGlBgoB,EAASmhB,EAAa,OAGjBx5F,EAAI,EAAGA,EAAIq4E,EAAOt4E,OAAQC,IAE/By5F,EAAW7+D,EAAK21B,SAAS,GAAIh4D,GAAOi4D,MAChCxwD,EACAq4E,EAAOr4E,GAAG6oB,MAAM1qB,EAChBk6E,EAAOr4E,GAAG6oB,MAAMlkB,EAChB0zE,EAAOr4E,GAAG6oB,MAAMrT,EAChB6iE,EAAOr4E,GAAG6oB,MAAMpT,EAChB4iE,EAAOr4E,GAAG05F,WAGVrhB,EAAOr4E,GAAGsnD,SAEVmyC,EAASrB,QACL/f,EAAOr4E,GAAGsnD,QACV+wB,EAAOr4E,GAAG25F,WAAWnkF,EACrB6iE,EAAOr4E,GAAG25F,WAAWlkF,EACrB4iE,EAAOr4E,GAAG45F,iBAAiBz7F,EAC3Bk6E,EAAOr4E,GAAG45F,iBAAiBj1F,EAC3B0zE,EAAOr4E,GAAG45F,iBAAiBpkF,EAC3B6iE,EAAOr4E,GAAG45F,iBAAiBnkF,EAKvC,OAAOmlB,IAYXi/D,cAAe,SAAUnnF,EAAM8mF,GAG3B,GAAIM,IAAa,SAAU,YAAY,aAAa,YAAa,YAYjE,IAVAA,EAAUn6F,QAAS,SAASsE,GACxB,IAAKu1F,EAAKv1F,GAIN,MAFA3D,SAAQG,KAAK,oFAAsFwD,EAAM,cACzG3D,SAAQC,IAAIi5F,KAMQ,GAAzBA,EAAa,OAAEz5F,OAGd,MAFAO,SAAQG,KAAK,uGACbH,SAAQC,IAAIi5F,EAYhB,KAAK,GAFDC,GANA7+D,EAAO,GAAIriC,GAAO83D,UAElB0pC,EAAaP,EAAiB,WAC9BQ,EAAYR,EAAgB,UAE5BnhB,EAASmhB,EAAa,OAAE,GAAU,MAG7Bx5F,EAAI,EAAGA,EAAIq4E,EAAOt4E,OAAQC,IAE/By5F,EAAW7+D,EAAK21B,SAAS,GAAIh4D,GAAOi4D,MAChCxwD,EACAq4E,EAAOr4E,GAAG7B,EACVk6E,EAAOr4E,GAAG2E,EACVq1F,EACAD,EACA,SAAW/5F,IAIfy5F,EAASrB,SAAQ,EAGrB,OAAOx9D,IAYXq/D,aAAc,SAAUvnF,EAAM8mF,GAG1B,IAAKA,EAAa,OAId,MAFAl5F,SAAQG,KAAK,sGACbH,SAAQC,IAAIi5F,EAKhB,IAIIC,GAJA7+D,EAAO,GAAIriC,GAAO83D,UAGlBgoB,EAASmhB,EAAa,OAEtBx5F,EAAI,CAER,KAAK,GAAIiE,KAAOo0E,GAEZohB,EAAW7+D,EAAK21B,SAAS,GAAIh4D,GAAOi4D,MAChCxwD,EACAq4E,EAAOp0E,GAAK4kB,MAAM1qB,EAClBk6E,EAAOp0E,GAAK4kB,MAAMlkB,EAClB0zE,EAAOp0E,GAAK4kB,MAAMrT,EAClB6iE,EAAOp0E,GAAK4kB,MAAMpT,EAClBxR,IAGAo0E,EAAOp0E,GAAKqjD,SAEZmyC,EAASrB,QACL/f,EAAOp0E,GAAKqjD,QACZ+wB,EAAOp0E,GAAK01F,WAAWnkF,EACvB6iE,EAAOp0E,GAAK01F,WAAWlkF,EACvB4iE,EAAOp0E,GAAK21F,iBAAiBz7F,EAC7Bk6E,EAAOp0E,GAAK21F,iBAAiBj1F,EAC7B0zE,EAAOp0E,GAAK21F,iBAAiBpkF,EAC7B6iE,EAAOp0E,GAAK21F,iBAAiBnkF,GAIrCzV,GAGJ,OAAO46B,IAYXs/D,QAAS,SAAUxnF,EAAMynF,GAGrB,IAAKA,EAAIC,qBAAqB,gBAG1B,WADA95F,SAAQG,KAAK,8FAoBjB,KAAK,GAbDg5F,GAEAn2F,EACAulB,EACA1qB,EACAwG,EACAsD,EACAC,EACAmyF,EACAC,EACAtB,EACAC,EAbAr+D,EAAO,GAAIriC,GAAO83D,UAClBgoB,EAAS8hB,EAAIC,qBAAqB,cAc7Bp6F,EAAI,EAAGA,EAAIq4E,EAAOt4E,OAAQC,IAE/B6oB,EAAQwvD,EAAOr4E,GAAGu6F,WAElBj3F,EAAOulB,EAAMvlB,KAAK7B,MAClBtD,EAAIoE,SAASsmB,EAAM1qB,EAAEsD,MAAO,IAC5BkD,EAAIpC,SAASsmB,EAAMlkB,EAAElD,MAAO,IAC5BwG,EAAQ1F,SAASsmB,EAAM5gB,MAAMxG,MAAO,IACpCyG,EAAS3F,SAASsmB,EAAM3gB,OAAOzG,MAAO,IAEtC44F,EAAS,KACTC,EAAS,KAELzxE,EAAMwxE,SAENA,EAASp8F,KAAKoJ,IAAI9E,SAASsmB,EAAMwxE,OAAO54F,MAAO,KAC/C64F,EAASr8F,KAAKoJ,IAAI9E,SAASsmB,EAAMyxE,OAAO74F,MAAO,KAC/Cu3F,EAAaz2F,SAASsmB,EAAMmwE,WAAWv3F,MAAO,IAC9Cw3F,EAAc12F,SAASsmB,EAAMowE,YAAYx3F,MAAO,KAGpDg4F,EAAW7+D,EAAK21B,SAAS,GAAIh4D,GAAOi4D,MAAMxwD,EAAG7B,EAAGwG,EAAGsD,EAAOC,EAAQ5E,IAGnD,OAAX+2F,GAA8B,OAAXC,GAEnBb,EAASrB,SAAQ,EAAMnwF,EAAOC,EAAQmyF,EAAQC,EAAQtB,EAAYC,EAI1E,OAAOr+D,KAuCfriC,EAAOs5B,MAAQ,SAAUnf,GAKrBxa,KAAKwa,KAAOA,EAMZxa,KAAKsiG,gBAAiB,EAOtBtiG,KAAKuiG,QACDj3E,UACAlC,SACAoZ,WACAviB,SACA2zC,SACA/B,QACAyvC,QACAW,OACA5hF,WACAgzC,WACAmvC,UACA1uC,cACA2uC,cACA10B,UACAva,kBAOJxzD,KAAK0iG,WAML1iG,KAAK2iG,aAAe,GAAI5xC,OAMxB/wD,KAAK4iG,SAAW,KAKhB5iG,KAAK6iG,cAAgB,GAAIxiG,GAAO+a,OAMhCpb,KAAK8iG,aAEL9iG,KAAK8iG,UAAUziG,EAAOs5B,MAAMl5B,QAAUT,KAAKuiG,OAAOj3E,OAClDtrB,KAAK8iG,UAAUziG,EAAOs5B,MAAMx4B,OAASnB,KAAKuiG,OAAOn5E,MACjDppB,KAAK8iG,UAAUziG,EAAOs5B,MAAMopE,SAAW/iG,KAAKuiG,OAAO//D,QACnDxiC,KAAK8iG,UAAUziG,EAAOs5B,MAAMqpE,OAAShjG,KAAKuiG,OAAOtiF,MACjDjgB,KAAK8iG,UAAUziG,EAAOs5B,MAAMt4B,MAAQrB,KAAKuiG,OAAO1wC,KAChD7xD,KAAK8iG,UAAUziG,EAAOs5B,MAAMspE,SAAWjjG,KAAKuiG,OAAOliF,QACnDrgB,KAAK8iG,UAAUziG,EAAOs5B,MAAMj4B,SAAW1B,KAAKuiG,OAAOlvC,QACnDrzD,KAAK8iG,UAAUziG,EAAOs5B,MAAMupE,QAAUljG,KAAKuiG,OAAOC,OAClDxiG,KAAK8iG,UAAUziG,EAAOs5B,MAAM73B,YAAc9B,KAAKuiG,OAAOzuC,WACtD9zD,KAAK8iG,UAAUziG,EAAOs5B,MAAMwpE,YAAcnjG,KAAKuiG,OAAOE,WACtDziG,KAAK8iG,UAAUziG,EAAOs5B,MAAMypE,MAAQpjG,KAAKuiG,OAAOjB,KAChDthG,KAAK8iG,UAAUziG,EAAOs5B,MAAM0pE,KAAOrjG,KAAKuiG,OAAON,IAC/CjiG,KAAK8iG,UAAUziG,EAAOs5B,MAAM92B,OAAS7C,KAAKuiG,OAAO3uC,MACjD5zD,KAAK8iG,UAAUziG,EAAOs5B,MAAM2pE,QAAUtjG,KAAKuiG,OAAOx0B,OAClD/tE,KAAK8iG,UAAUziG,EAAOs5B,MAAM4pE,gBAAkBvjG,KAAKuiG,OAAO/uC,cAE1DxzD,KAAKwjG,kBACLxjG,KAAKyjG,mBAQTpjG,EAAOs5B,MAAMl5B,OAAS,EAMtBJ,EAAOs5B,MAAMx4B,MAAQ,EAMrBd,EAAOs5B,MAAMopE,QAAU,EAMvB1iG,EAAOs5B,MAAMqpE,MAAQ,EAMrB3iG,EAAOs5B,MAAMt4B,KAAO,EAMpBhB,EAAOs5B,MAAMspE,QAAU,EAMvB5iG,EAAOs5B,MAAMj4B,QAAU,EAMvBrB,EAAOs5B,MAAMupE,OAAS,EAMtB7iG,EAAOs5B,MAAM73B,WAAa,EAM1BzB,EAAOs5B,MAAMwpE,WAAa,GAM1B9iG,EAAOs5B,MAAMypE,KAAO,GAMpB/iG,EAAOs5B,MAAM0pE,IAAM,GAMnBhjG,EAAOs5B,MAAM92B,MAAQ,GAMrBxC,EAAOs5B,MAAM2pE,OAAS,GAMtBjjG,EAAOs5B,MAAM4pE,eAAiB,GAO9BljG,EAAOs5B,MAAMh0B,QAAU,KAOvBtF,EAAOs5B,MAAM+pE,QAAU,KAEvBrjG,EAAOs5B,MAAMtzB,WAcTs9F,UAAW,SAAU53F,EAAKuf,EAAQjH,GAEd3a,SAAZ2a,IAAyBA,EAAUiH,EAAOsV,WAAW,OAEzD5gC,KAAKuiG,OAAOj3E,OAAOvf,IAASuf,OAAQA,EAAQjH,QAASA,IAczDw1C,SAAU,SAAU9tD,EAAK8nD,EAAKnxB,GAEtB1iC,KAAKq9E,cAActxE,IAEnB/L,KAAK4jG,YAAY73F,EAGrB,IAAIijD,IACAjjD,IAAKA,EACL8nD,IAAKA,EACLnxB,KAAMA,EACNwsB,KAAM,GAAIppD,MAAKoyD,YAAYx1B,GAC3B/R,MAAO,GAAItwB,GAAOi4D,MAAM,EAAG,EAAG,EAAG51B,EAAK3yB,MAAO2yB,EAAK1yB,OAAQjE,GAC1D2iD,UAAW,GAAIruD,GAAO83D,UAkB1B,OAfAnJ,GAAIN,UAAU2J,SAAS,GAAIh4D,GAAOi4D,MAAM,EAAG,EAAG,EAAG51B,EAAK3yB,MAAO2yB,EAAK1yB,OAAQ6jD,IAE1E7zD,KAAKuiG,OAAOn5E,MAAMrd,GAAOijD,EAEzBhvD,KAAK6jG,YAAYhwC,EAAK7E,GAEV,cAARjjD,EAEA1L,EAAOs5B,MAAMh0B,QAAU,GAAIG,MAAKgpD,QAAQE,EAAIE,MAE/B,cAARnjD,IAEL1L,EAAOs5B,MAAM+pE,QAAU,GAAI59F,MAAKgpD,QAAQE,EAAIE,OAGzCF,GAaXw0C,gBAAiB,WAEb,GAAIx0C,GAAM,GAAI+B,MAEd/B,GAAI3jD,IAAM,wKAEV,IAAItC,GAAM/I,KAAK65D,SAAS,YAAa,KAAM7K,EAG3CjmD,GAAImmD,KAAKC,YAAa,EAGtB9uD,EAAOs5B,MAAMh0B,QAAU,GAAIG,MAAKgpD,QAAQ/lD,EAAImmD,OAahDu0C,gBAAiB,WAEb,GAAIz0C,GAAM,GAAI+B,MAEd/B,GAAI3jD,IAAM,4WAEV,IAAItC,GAAM/I,KAAK65D,SAAS,YAAa,KAAM7K,EAG3C3uD,GAAOs5B,MAAM+pE,QAAU,GAAI59F,MAAKgpD,QAAQ/lD,EAAImmD,OAchD40C,SAAU,SAAU/3F,EAAK8nD,EAAKnxB,EAAM/H,EAAUopE,GAEzBr6F,SAAbixB,IAA0BA,GAAW,EAAMopE,GAAW,GACzCr6F,SAAbq6F,IAA0BppE,GAAW,EAAOopE,GAAW,EAE3D,IAAIC,IAAU,CAEVD,KAEAC,GAAU,GAGdhkG,KAAKuiG,OAAOtiF,MAAMlU,IACd8nD,IAAKA,EACLnxB,KAAMA,EACNuhE,YAAY,EACZD,QAASA,EACTrpE,SAAUA,EACVopE,SAAUA,EACVzgE,OAAQtjC,KAAKwa,KAAKyF,MAAMikF,aAG5BlkG,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAOtiF,MAAMlU,KAY5Co4F,QAAS,SAAUp4F,EAAK8nD,EAAKnxB,GAEzB1iC,KAAKuiG,OAAO1wC,KAAK9lD,IAAS8nD,IAAKA,EAAKnxB,KAAMA,GAE1C1iC,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAO1wC,KAAK9lD,KAa3Cq4F,eAAgB,SAAUr4F,EAAK8nD,EAAKwtC,EAAUgD,GAE1CrkG,KAAKuiG,OAAOliF,QAAQtU,IAAS8nD,IAAKA,EAAKnxB,KAAM2+D,EAAUgD,OAAQA,GAE/DrkG,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAOliF,QAAQtU,KAa9Cu4F,WAAY,SAAUv4F,EAAK8nD,EAAK0wC,EAASF,GAErCrkG,KAAKuiG,OAAOlvC,QAAQtnD,IAAS8nD,IAAKA,EAAKnxB,KAAM6hE,EAASF,OAAQA,GAE9DrkG,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAOlvC,QAAQtnD,KAW9Cy4F,UAAW,SAAUz4F,EAAK04F,GAEtBzkG,KAAKuiG,OAAOC,OAAOz2F,GAAO04F,GAa9B1wC,cAAe,SAAUhoD,EAAK+nD,EAAYpF,GAYtC,MAVAoF,GAAW/nD,IAAMA,EAECrC,SAAdglD,IAEAA,EAAY,GAAIruD,GAAO83D,UACvBzJ,EAAU2J,SAASvE,EAAWsE,eAGlCp4D,KAAKuiG,OAAOzuC,WAAW/nD,IAAS22B,KAAMoxB,EAAYpF,UAAWA,GAEtDoF,GAgBX4wC,cAAe,SAAU34F,EAAK8nD,EAAKnxB,EAAMiiE,EAAWC,EAAW7xC,EAAUC,GAErE,GAAIjqD,IACA8qD,IAAKA,EACLnxB,KAAMA,EACNgwB,KAAM,KACNxD,KAAM,GAAIppD,MAAKoyD,YAAYx1B,GAGdh5B,UAAbqpD,IAA0BA,EAAW,GACxBrpD,SAAbspD,IAA0BA,EAAW,GAEvB,SAAd4xC,EAEA77F,EAAI2pD,KAAOryD,EAAOwkG,aAAaC,eAAeH,EAAW57F,EAAImmD,KAAM6D,EAAUC,GAI7EjqD,EAAI2pD,KAAOryD,EAAOwkG,aAAaE,cAAcJ,EAAW57F,EAAImmD,KAAM6D,EAAUC,GAGhFhzD,KAAKuiG,OAAOE,WAAW12F,GAAOhD,EAE9B/I,KAAK6jG,YAAYhwC,EAAK9qD,IAY1Bi8F,QAAS,SAAUj5F,EAAK8nD,EAAKnxB,GAEzB1iC,KAAKuiG,OAAOjB,KAAKv1F,IAAS8nD,IAAKA,EAAKnxB,KAAMA,GAE1C1iC,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAOjB,KAAKv1F,KAY3Ck5F,OAAQ,SAAUl5F,EAAK8nD,EAAKnxB,GAExB1iC,KAAKuiG,OAAON,IAAIl2F,IAAS8nD,IAAKA,EAAKnxB,KAAMA,GAEzC1iC,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAON,IAAIl2F,KAa1Cm5F,SAAU,SAAUn5F,EAAK8nD,EAAKnxB,EAAMyiE,GAEhCnlG,KAAKuiG,OAAO3uC,MAAM7nD,IAAS8nD,IAAKA,EAAKnxB,KAAMA,EAAMyiE,OAAQA,EAAQ7hE,QAAQ,GAEzEtjC,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAO3uC,MAAM7nD,KAY5Cq5F,UAAW,SAAUr5F,EAAK8nD,EAAKnxB,GAE3B1iC,KAAKuiG,OAAOx0B,OAAOhiE,IAAS8nD,IAAKA,EAAKnxB,KAAMA,GAE5C1iC,KAAK6jG,YAAYhwC,EAAK7zD,KAAKuiG,OAAOx0B,OAAOhiE,KAW7C4nD,iBAAkB,SAAU5nD,EAAKy2B,GAE7BxiC,KAAKuiG,OAAO/uC,cAAcznD,IAASy2B,QAASA,EAAS7R,MAAO,GAAItwB,GAAOi4D,MAAM,EAAG,EAAG,EAAG91B,EAAQzyB,MAAOyyB,EAAQxyB,OAAQ,GAAI,MAiB7Hq1F,eAAgB,SAAUt5F,EAAK8nD,EAAKnxB,EAAMo+D,EAAYC,EAAaC,EAAUC,EAAQC,GAEhEx3F,SAAbs3F,IAA0BA,GAAW,GAC1Bt3F,SAAXu3F,IAAwBA,EAAS,GACrBv3F,SAAZw3F,IAAyBA,EAAU,EAEvC,IAAIn4F,IACAgD,IAAKA,EACL8nD,IAAKA,EACLnxB,KAAMA,EACNo+D,WAAYA,EACZC,YAAaA,EACbE,OAAQA,EACRC,QAASA,EACThyC,KAAM,GAAIppD,MAAKoyD,YAAYx1B,GAC3BgsB,UAAWruD,EAAOugG,gBAAgBC,YAAY7gG,KAAKwa,KAAMkoB,EAAMo+D,EAAYC,EAAaC,EAAUC,EAAQC,GAG9GlhG,MAAKuiG,OAAOn5E,MAAMrd,GAAOhD,EAEzB/I,KAAK6jG,YAAYhwC,EAAK9qD,IAc1Bu8F,gBAAiB,SAAUv5F,EAAK8nD,EAAKnxB,EAAMiiE,EAAWN,GAElD,GAAIt7F,IACAgD,IAAKA,EACL8nD,IAAKA,EACLnxB,KAAMA,EACNwsB,KAAM,GAAIppD,MAAKoyD,YAAYx1B,GAG3B2hE,KAAWhkG,EAAOu5B,OAAO2rE,2BAEzBx8F,EAAI2lD,UAAYruD,EAAOugG,gBAAgBoB,QAAQhiG,KAAKwa,KAAMmqF,EAAW54F,GAEhEs4F,IAAWhkG,EAAOu5B,OAAO4rE,yBAE9Bz8F,EAAI2lD,UAAYruD,EAAOugG,gBAAgBe,cAAc3hG,KAAKwa,KAAMmqF,EAAW54F,GAKvEvF,MAAMa,QAAQs9F,EAAUxkB,QAExBp3E,EAAI2lD,UAAYruD,EAAOugG,gBAAgBS,SAASrhG,KAAKwa,KAAMmqF,EAAW54F,GAItEhD,EAAI2lD,UAAYruD,EAAOugG,gBAAgBmB,aAAa/hG,KAAKwa,KAAMmqF,EAAW54F,GAIlF/L,KAAKuiG,OAAOn5E,MAAMrd,GAAOhD,EAEzB/I,KAAK6jG,YAAYhwC,EAAK9qD,IAc1B08F,YAAa,SAAU15F,GAEnB,GAAI0a,GAAQzmB,KAERigB,EAAQjgB,KAAK0lG,SAAS35F,EAEtBkU,KAEAA,EAAMyiB,KAAKr3B,IAAM4U,EAAM4zC,IAEvB5zC,EAAMyiB,KAAKrW,iBAAiB,iBAAkB,WAC1C,MAAO5F,GAAMk/E,oBAAoB55F,KAClC,GAEHkU,EAAMyiB,KAAK1iB,SAWnB2lF,oBAAqB,SAAU55F,GAE3B,GAAIkU,GAAQjgB,KAAK0lG,SAAS35F,EAEtBkU,KAEAA,EAAMqjB,QAAS,EACftjC,KAAK6iG,cAAchkF,SAAS9S,KAWpC65F,YAAa,SAAU75F,EAAKinB,EAAUzpB,GAElC,GAAI0W,GAAQjgB,KAAK0lG,SAAS35F,EAEtBkU,KAEAA,EAAM+S,GAAYzpB,IAY1Bs8F,aAAc,SAAU95F,EAAK22B,GAEzB,GAAIziB,GAAQjgB,KAAK0lG,SAAS35F,EAE1BkU,GAAMyiB,KAAOA,EACbziB,EAAM+jF,SAAU,EAChB/jF,EAAMgkF,YAAa,GAWvB6B,eAAgB,SAAU/5F,GAEtB,GAAIkU,GAAQjgB,KAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMqpE,MAAO,iBAElD,IAAI/iF,EAEA,MAAOA,GAAM+jF,SAarB+B,aAAc,SAAUh6F,GAEpB,GAAIkU,GAAQjgB,KAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMqpE,MAAO,iBAElD,IAAI/iF,EAEA,MAAQA,GAAM+jF,UAAYhkG,KAAKwa,KAAKyF,MAAMikF,aAiBlD8B,SAAU,SAAUlmF,EAAO/T,GAEvB,QAAI/L,KAAK8iG,UAAUhjF,GAAO/T,IAmB9Bk6F,SAAU,SAAUpyC,GAEhB,QAAI7zD,KAAK0iG,QAAQ1iG,KAAK6jG,YAAYhwC,KAgBtCqyC,eAAgB,SAAUn6F,GAEtB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMl5B,OAAQsL,IAW9CsxE,cAAe,SAAUtxE,GAErB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMx4B,MAAO4K,IAW7Co6F,gBAAiB,SAAUp6F,GAEvB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMopE,QAASh3F,IAW/Cq6F,cAAe,SAAUr6F,GAErB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMqpE,MAAOj3F,IAW7Cs6F,aAAc,SAAUt6F,GAEpB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMt4B,KAAM0K,IAW5Cu6F,gBAAiB,SAAUv6F,GAEvB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMspE,QAASl3F,IAW/Cw6F,gBAAiB,SAAUx6F,GAEvB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMj4B,QAASqK,IAW/Cy6F,eAAgB,SAAUz6F,GAEtB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMupE,OAAQn3F,IAW9C06F,mBAAoB,SAAU16F,GAE1B,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAM73B,WAAYiK,IAWlD26F,mBAAoB,SAAU36F,GAE1B,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMwpE,WAAYp3F,IAWlD46F,aAAc,SAAU56F,GAEpB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAMypE,KAAMr3F,IAW5C66F,YAAa,SAAU76F,GAEnB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAM0pE,IAAKt3F,IAW3C86F,cAAe,SAAU96F,GAErB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAM92B,MAAOkJ,IAW7C+6F,eAAgB,SAAU/6F,GAEtB,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAM2pE,OAAQv3F,IAW9Cg7F,sBAAuB,SAAUh7F,GAE7B,MAAO/L,MAAKgmG,SAAS3lG,EAAOs5B,MAAM4pE,eAAgBx3F,IAqBtDq6E,QAAS,SAAUr6E,EAAK+T,EAAO4T,EAAQV,GAEnC,MAAKhzB,MAAKgmG,SAASlmF,EAAO/T,GASLrC,SAAbspB,EAEOhzB,KAAK8iG,UAAUhjF,GAAO/T,GAItB/L,KAAK8iG,UAAUhjF,GAAO/T,GAAKinB,IAblCU,GAEAtrB,QAAQG,KAAK,gBAAkBmrB,EAAS,UAAY3nB,EAAM,yBAe3D,OAeXswD,UAAW,SAAUtwD,GAEjB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMl5B,OAAQ,YAAa,WAoB/DwuD,SAAU,SAAUljD,EAAKi7F,GAETt9F,SAARqC,GAA6B,OAARA,IAErBA,EAAM,aAGGrC,SAATs9F,IAAsBA,GAAO,EAEjC,IAAIh4C,GAAMhvD,KAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMx4B,MAAO,WAOhD,OALY,QAAR6tD,IAEAA,EAAMhvD,KAAKomF,QAAQ,YAAa/lF,EAAOs5B,MAAMx4B,MAAO,aAGpD6lG,EAEOh4C,EAIAA,EAAItsB,MAcnBukE,gBAAiB,SAAUl7F,GAEvB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMopE,QAAS,kBAAmB,UAetE2C,SAAU,SAAU35F,GAEhB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMqpE,MAAO,aAejDkE,aAAc,SAAUn7F,GAEpB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMqpE,MAAO,eAAgB,SAejEmE,QAAS,SAAUp7F,GAEf,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMt4B,KAAM,UAAW,SAmB3D+lG,eAAgB,SAAUr7F,EAAKwpB,EAAQ8xE,GAEnC,GAAI3kE,GAAO1iC,KAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMspE,QAAS,iBAAkB,OAErE,IAAa,OAATvgE,GAA4Bh5B,SAAX6rB,GAAmC,OAAXA,EAEzC,MAAOmN,EAIP,IAAIA,EAAKnN,GACT,CACI,GAAI+xE,GAAW5kE,EAAKnN,EAGpB,KAAI+xE,IAAYD,EAmBZ,MAAOC,EAjBP,KAAK,GAAIC,KAAWD,GAMhB,GAHAC,EAAUD,EAASC,GAGfA,EAAQF,aAAeA,EAEvB,MAAOE,EAKfn/F,SAAQG,KAAK,kEAAoE8+F,EAAa,OAASt7F,EAAM,SASjH3D,SAAQG,KAAK,qDAAuDwD,EAAM,MAAQwpB,EAAS,IAInG,OAAO,OAeXiyE,eAAgB,SAAUz7F,GAEtB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMj4B,QAAS,mBAenD+lG,UAAW,SAAU17F,GAEjB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMupE,OAAQ,cAelDwE,cAAe,SAAU37F,GAErB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAM73B,WAAY,gBAAiB,SAevEk6E,cAAe,SAAUjwE,GAErB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMwpE,WAAY,kBAmBtDwE,QAAS,SAAU57F,EAAKP,GAEpB,GAAIk3B,GAAO1iC,KAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAMypE,KAAM,UAAW,OAE3D,OAAI1gE,GAEIl3B,EAEOnL,EAAOmI,MAAM0C,QAAO,EAAM1E,MAAMa,QAAQq7B,SAAiBA,GAIzDA,EAKJ,MAgBfklE,OAAQ,SAAU77F,GAEd,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAM0pE,IAAK,SAAU,SAezDwE,SAAU,SAAU97F,GAEhB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAM92B,MAAO,aAejDilG,UAAW,SAAU/7F,GAEjB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAM2pE,OAAQ,YAAa,SAe/DyE,iBAAkB,SAAUh8F,GAExB,MAAO/L,MAAKomF,QAAQr6E,EAAK1L,EAAOs5B,MAAM4pE,eAAgB,qBAgB1DyE,eAAgB,SAAUj8F,EAAK+T,GAI3B,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOs5B,MAAMx4B,OAEzCnB,KAAKomF,QAAQr6E,EAAK+T,EAAO,iBAAkB,SAYtDq+E,SAAU,SAAUpyF,EAAK+T,GAIrB,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOs5B,MAAMx4B,OAEzCnB,KAAKomF,QAAQr6E,EAAK+T,EAAO,WAAY,UAYhDmoF,cAAe,SAAUl8F,EAAK+T,GAE1B,GAAI4iB,GAAO1iC,KAAKyuD,aAAa1iD,EAAK+T,EAElC,OAAI4iB,GAEOA,EAAK7N,MAIL,GAiBf45B,aAAc,SAAU1iD,EAAK+T,GAIzB,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOs5B,MAAMx4B,OAEzCnB,KAAKomF,QAAQr6E,EAAK+T,EAAO,eAAgB,cAYpDyuC,aAAc,SAAUxiD,EAAK+T,GAIzB,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOs5B,MAAMx4B,OAEM,OAA9CnB,KAAKomF,QAAQr6E,EAAK+T,EAAO,GAAI,cAYzCo+D,gBAAiB,SAAUnyE,EAAK2iD,EAAW5uC,GAEzBpW,SAAVoW,IAAuBA,EAAQzf,EAAOs5B,MAAMx4B,OAE5CnB,KAAK8iG,UAAUhjF,GAAO/T,KAEtB/L,KAAK8iG,UAAUhjF,GAAO/T,GAAK2iD,UAAYA,IAc/Cw5C,gBAAiB,SAAUn8F,EAAK4jB,EAAO7P,GAEnC,GAAI4iB,GAAO1iC,KAAKyuD,aAAa1iD,EAAK+T,EAElC,OAAI4iB,GAEOA,EAAKy7D,SAASxuE,GAId,MAcfyuE,eAAgB,SAAUryF,EAAKX,EAAM0U,GAEjC,GAAI4iB,GAAO1iC,KAAKyuD,aAAa1iD,EAAK+T,EAElC,OAAI4iB,GAEOA,EAAK07D,eAAehzF,GAIpB,MAcf+8F,OAAQ,SAAUt0C,GAEd,GAAIA,GAAM7zD,KAAK6jG,YAAYhwC,EAE3B,OAAIA,GAEO7zD,KAAK0iG,QAAQ7uC,IAIpBzrD,QAAQG,KAAK,sCAAwCsrD,EAAO,uCACrD,OAYfu0C,QAAS,SAAUtoF,GAEDpW,SAAVoW,IAAuBA,EAAQzf,EAAOs5B,MAAMx4B,MAEhD,IAAI4L,KAEJ,IAAI/M,KAAK8iG,UAAUhjF,GAEf,IAAK,GAAI/T,KAAO/L,MAAK8iG,UAAUhjF,GAEf,cAAR/T,GAA+B,cAARA,GAEvBgB,EAAI6F,KAAK7G,EAKrB,OAAOgB,IAiBXs7F,aAAc,SAAUt8F,SAEb/L,MAAKuiG,OAAOj3E,OAAOvf,IAgB9B63F,YAAa,SAAU73F,EAAKu8F,GAEG5+F,SAAvB4+F,IAAoCA,GAAqB,EAE7D,IAAIt5C,GAAMhvD,KAAKivD,SAASljD,GAAK,EAEzBu8F,IAAsBt5C,EAAIE,MAE1BF,EAAIE,KAAKprC,gBAGN9jB,MAAKuiG,OAAOn5E,MAAMrd,IAiB7Bw8F,YAAa,SAAUx8F,SAEZ/L,MAAKuiG,OAAOtiF,MAAMlU,IAa7By8F,WAAY,SAAUz8F,SAEX/L,MAAKuiG,OAAO1wC,KAAK9lD,IAa5B08F,cAAe,SAAU18F,SAEd/L,MAAKuiG,OAAOliF,QAAQtU,IAa/B28F,cAAe,SAAU38F,SAEd/L,MAAKuiG,OAAOlvC,QAAQtnD,IAa/B48F,aAAc,SAAU58F,SAEb/L,MAAKuiG,OAAOC,OAAOz2F,IAa9B68F,iBAAkB,SAAU78F,SAEjB/L,MAAKuiG,OAAOzuC,WAAW/nD,IAalC88F,iBAAkB,SAAU98F,SAEjB/L,MAAKuiG,OAAOE,WAAW12F,IAalC+8F,WAAY,SAAU/8F,SAEX/L,MAAKuiG,OAAOjB,KAAKv1F,IAa5Bg9F,UAAW,SAAUh9F,SAEV/L,MAAKuiG,OAAON,IAAIl2F,IAa3Bi9F,YAAa,SAAUj9F,SAEZ/L,MAAKuiG,OAAO3uC,MAAM7nD,IAa7Bk9F,aAAc,SAAUl9F,SAEb/L,MAAKuiG,OAAOx0B,OAAOhiE,IAa9Bm9F,oBAAqB,SAAUn9F,SAEpB/L,MAAKuiG,OAAO/uC,cAAcznD,IAarCo9F,kBAAmB,SAAUp9F,SAElB/L,MAAKuiG,OAAO1B,YAAY90F,IAanCq9F,mBAAoB,SAAUr9F,SAEnB/L,MAAKuiG,OAAO8G,MAAMt9F,IAW7ByvB,gBAAiB,WAEb,IAAK,GAAIzvB,KAAO/L,MAAKuiG,OAAOn5E,MAExBppB,KAAKuiG,OAAOn5E,MAAMrd,GAAKmjD,KAAKo6C,gBAepCzF,YAAa,SAAUhwC,EAAKnxB,GAExB,MAAK1iC,MAAKsiG,gBAKVtiG,KAAK2iG,aAAat3F,IAAMrL,KAAKwa,KAAKwF,KAAKupF,QAAU11C,EAEjD7zD,KAAK4iG,SAAW5iG,KAAK2iG,aAAat3F,IAGlCrL,KAAK2iG,aAAat3F,IAAM,GAGpBq3B,IAEA1iC,KAAK0iG,QAAQ1iG,KAAK4iG,UAAYlgE,GAG3B1iC,KAAK4iG,UAhBD,MA0Bf9+E,QAAS,WAEL,IAAK,GAAIhc,GAAI,EAAGA,EAAI9H,KAAK8iG,UAAUj7F,OAAQC,IAC3C,CACI,GAAIgY,GAAQ9f,KAAK8iG,UAAUh7F,EAE3B,KAAK,GAAIiE,KAAO+T,GAEA,cAAR/T,GAA+B,cAARA,IAEnB+T,EAAM/T,GAAc,SAEpB+T,EAAM/T,GAAK+X,gBAGRhE,GAAM/T,IAKzB/L,KAAK0iG,QAAU,KACf1iG,KAAK2iG,aAAe,KACpB3iG,KAAK4iG,SAAW,OAMxBviG,EAAOs5B,MAAMtzB,UAAU8B,YAAc9H,EAAOs5B,MAuB5Ct5B,EAAOu5B,OAAS,SAAUpf,GAOtBxa,KAAKwa,KAAOA,EAOZxa,KAAK8f,MAAQtF,EAAKsF,MAOlB9f,KAAKm/B,aAAc,EAOnBn/B,KAAKwpG,WAAY,EAOjBxpG,KAAKypG,WAAY,EAUjBzpG,KAAK0pG,cAAgB,KAOrB1pG,KAAK2pG,aAAc,EASnB3pG,KAAKupG,QAAU,GAoBfvpG,KAAK4kE,KAAO,GASZ5kE,KAAK4pG,SACDtI,KAAM,mBACNW,IAAK,mBASTjiG,KAAK6pG,YAAc,GAAIxpG,GAAO+a,OAO9Bpb,KAAK8pG,eAAiB,GAAIzpG,GAAO+a,OAWjCpb,KAAK+pG,eAAiB,GAAI1pG,GAAO+a,OAUjCpb,KAAKgqG,YAAc,GAAI3pG,GAAO+a,OAa9Bpb,KAAKiqG,eAAiB,GAAI5pG,GAAO+a,OAWjCpb,KAAKkqG,YAAc,GAAI7pG,GAAO+a,OAU9Bpb,KAAKmqG,mBAAoB,EAMzBnqG,KAAKoqG,4BAA6B,EASlCpqG,KAAKqqG,gBAAiB,EAUtBrqG,KAAKsqG,qBAAuB,EAM5BtqG,KAAKuqG,oBAAsB,EAU3BvqG,KAAKwqG,aAcLxqG,KAAKyqG,gBAQLzqG,KAAK0qG,gBAAkB,EASvB1qG,KAAK2qG,kBAAmB,EAOxB3qG,KAAK4qG,gBAAkB,EAOvB5qG,KAAK6qG,gBAAkB,EAOvB7qG,KAAK8qG,iBAAmB,EAOxB9qG,KAAK+qG,iBAAmB,GAQ5B1qG,EAAOu5B,OAAOoxE,yBAA2B,EAMzC3qG,EAAOu5B,OAAOqxE,wBAA0B,EAMxC5qG,EAAOu5B,OAAO2rE,2BAA6B,EAM3CllG,EAAOu5B,OAAOsxE,yBAA2B,EAMzC7qG,EAAOu5B,OAAOuxE,oBAAsB,EAMpC9qG,EAAOu5B,OAAO4rE,yBAA2B,EAEzCnlG,EAAOu5B,OAAOvzB,WAcV+kG,iBAAkB,SAAUh0E,EAAQtZ,GAEhCA,EAAYA,GAAa,EAEzB9d,KAAK0pG,eAAkBtyE,OAAQA,EAAQtZ,UAAWA,EAAW/N,MAAOqnB,EAAOrnB,MAAOC,OAAQonB,EAAOpnB,OAAQ0D,KAAM,MAE7F,IAAdoK,EAGA9d,KAAK0pG,cAAch2F,KAAO,GAAIrT,GAAOkN,UAAU,EAAG,EAAG,EAAG6pB,EAAOpnB,QAK/DhQ,KAAK0pG,cAAch2F,KAAO,GAAIrT,GAAOkN,UAAU,EAAG,EAAG6pB,EAAOrnB,MAAO,GAGvEqnB,EAAO4b,KAAKhzC,KAAK0pG,cAAch2F,MAE/B0jB,EAAOvc,SAAU,GAYrB/B,OAAQ,WAEA9Y,KAAK0pG,eAAiB1pG,KAAK0pG,cAAc15F,SAAWhQ,KAAK0pG,cAActyE,OAAOpnB,SAE9EhQ,KAAK0pG,cAAch2F,KAAK1D,OAAShQ,KAAK0pG,cAActyE,OAAOpnB,SAenEq7F,eAAgB,SAAUnjG,EAAM6D,GAE5B,MAAO/L,MAAKsrG,cAAcpjG,EAAM6D,IAAO,GAe3Cu/F,cAAe,SAAUpjG,EAAM6D,GAI3B,IAAK,GAFDw/F,IAAY,EAEPzjG,EAAI,EAAGA,EAAI9H,KAAKwqG,UAAU3iG,OAAQC,IAC3C,CACI,GAAIo6E,GAAOliF,KAAKwqG,UAAU1iG,EAE1B,IAAIo6E,EAAKh6E,OAASA,GAAQg6E,EAAKn2E,MAAQA,IAEnCw/F,EAAYzjG,GAGPo6E,EAAKspB,SAAWtpB,EAAKupB,SAEtB,MAKZ,MAAOF,IAeXG,SAAU,SAAUxjG,EAAM6D,GAEtB,GAAI4/F,GAAY3rG,KAAKsrG,cAAcpjG,EAAM6D,EAEzC,OAAI4/F,IAAY,IAEHh8E,MAAOg8E,EAAWzpB,KAAMliF,KAAKwqG,UAAUmB,KAmBxDjsF,MAAO,SAAUyhB,EAAM47D,GAECrzF,SAAhBqzF,IAA6BA,GAAc,GAE3C/8F,KAAKm/B,cAKLgC,IAEAnhC,KAAK0pG,cAAgB,MAGzB1pG,KAAKwpG,WAAY,EAEjBxpG,KAAK0qG,gBAAkB,EACvB1qG,KAAKwqG,UAAU3iG,OAAS,EACxB7H,KAAKyqG,aAAa5iG,OAAS,EAE3B7H,KAAK2qG,kBAAmB,EACxB3qG,KAAK6qG,gBAAkB,EACvB7qG,KAAK4qG,gBAAkB,EACvB5qG,KAAK8qG,iBAAmB,EACxB9qG,KAAK+qG,iBAAmB,EAEpBhO,IAEA/8F,KAAK6pG,YAAYjmF,YACjB5jB,KAAK8pG,eAAelmF,YACpB5jB,KAAK+pG,eAAenmF,YACpB5jB,KAAKgqG,YAAYpmF,YACjB5jB,KAAKiqG,eAAermF,YACpB5jB,KAAKkqG,YAAYtmF,eAkBzBgoF,cAAe,SAAU1jG,EAAM6D,EAAK8nD,EAAKonB,EAAY4wB,EAAWC,GAI5D,GAFkBpiG,SAAdmiG,IAA2BA,GAAY,GAE/BniG,SAARqC,GAA6B,KAARA,EAGrB,MADA3D,SAAQG,KAAK,kDAAoDL,GAC1DlI,IAGX,IAAY0J,SAARmqD,GAA6B,OAARA,EACzB,CACI,IAAIi4C,EAOA,MADA1jG,SAAQG,KAAK,8CAAgDL,EAAO,SAAW6D,GACxE/L,IALP6zD,GAAM9nD,EAAM+/F,EASpB,GAAI5pB,IACAh6E,KAAMA,EACN6D,IAAKA,EACL64D,KAAM5kE,KAAK4kE,KACX/Q,IAAKA,EACLk4C,UAAW/rG,KAAKuqG,oBAAsB,EACtC7nE,KAAM,KACN+oE,SAAS,EACTD,QAAQ,EACRnlB,OAAO,EAGX,IAAIpL,EAEA,IAAK,GAAIjyE,KAAQiyE,GAEbiH,EAAKl5E,GAAQiyE,EAAWjyE,EAIhC,IAAI2iG,GAAY3rG,KAAKsrG,cAAcpjG,EAAM6D,EAEzC,IAAI8/F,GAAaF,GAAY,EAC7B,CACI,GAAIK,GAAchsG,KAAKwqG,UAAUmB,EAE5BK,GAAYP,SAAYO,EAAYR,QAMrCxrG,KAAKwqG,UAAU53F,KAAKsvE,GACpBliF,KAAK6qG,mBALL7qG,KAAKwqG,UAAUmB,GAAazpB,MAQ3BypB,MAAc,IAEnB3rG,KAAKwqG,UAAU53F,KAAKsvE,GACpBliF,KAAK6qG,kBAGT,OAAO7qG,OAcXisG,kBAAmB,SAAU/jG,EAAM6D,EAAK8nD,EAAKonB,GAEzC,MAAOj7E,MAAK4rG,cAAc1jG,EAAM6D,EAAK8nD,EAAKonB,GAAY,IA0B1DixB,KAAM,SAAUngG,EAAK8nD,EAAKnxB,EAAM3f,GAM5B,GAJYrZ,SAARmqD,IAAqBA,EAAM,MAClBnqD,SAATg5B,IAAsBA,EAAO,MACTh5B,SAApBqZ,IAAiCA,EAAkB,OAElD8wC,IAAQnxB,EAIT,MAFAt6B,SAAQG,KAAK,qEAENvI,IAGX,IAAIksG,IACAhkG,KAAM,WACN6D,IAAKA,EACL8nD,IAAKA,EACL+Q,KAAM5kE,KAAK4kE,KACXmnC,WAAW,EACXrpE,KAAM,KACN+oE,SAAS,EACTD,QAAQ,EACRnlB,OAAO,EACPtjE,gBAAiBA,EAIjB2f,KAEoB,gBAATA,KAEPA,EAAO0gE,KAAKlsF,MAAMwrB,IAGtBwpE,EAAKxpE,KAAOA,MAGZwpE,EAAKV,QAAS,EAKlB,KAAK,GAAI1jG,GAAI,EAAGA,EAAI9H,KAAKwqG,UAAU3iG,OAAS,EAAGC,IAC/C,CACI,GAAIo6E,GAAOliF,KAAKwqG,UAAU1iG,EAE1B,KAAKo6E,IAAUA,EAAKspB,SAAWtpB,EAAKupB,SAAyB,aAAdvpB,EAAKh6E,KACpD,CACIlI,KAAKwqG,UAAUrnF,OAAOrb,EAAG,EAAGokG,GAC5BlsG,KAAK4qG,iBACL,QAIR,MAAO5qG,OA2BXopB,MAAO,SAAUrd,EAAK8nD,EAAKg4C,GAEvB,MAAO7rG,MAAK4rG,cAAc,QAAS7/F,EAAK8nD,EAAKnqD,OAAWmiG,EAAW,SA4BvEM,OAAQ,SAAUrgG,EAAMsgG,GAEpB,GAAI5lG,MAAMa,QAAQ+kG,GAEd,IAAK,GAAItkG,GAAI,EAAGA,EAAIgE,EAAKjE,OAAQC,IAE7B9H,KAAKopB,MAAMtd,EAAKhE,GAAIskG,EAAKtkG,QAK7B,KAAK,GAAIA,GAAI,EAAGA,EAAIgE,EAAKjE,OAAQC,IAE7B9H,KAAKopB,MAAMtd,EAAKhE,GAIxB,OAAO9H,OAyBX6xD,KAAM,SAAU9lD,EAAK8nD,EAAKg4C,GAEtB,MAAO7rG,MAAK4rG,cAAc,OAAQ7/F,EAAK8nD,EAAKnqD,OAAWmiG,EAAW,SA0BtEvK,KAAM,SAAUv1F,EAAK8nD,EAAKg4C,GAEtB,MAAO7rG,MAAK4rG,cAAc,OAAQ7/F,EAAK8nD,EAAKnqD,OAAWmiG,EAAW,UAyBtE99B,OAAQ,SAAUhiE,EAAK8nD,EAAKg4C,GAExB,MAAO7rG,MAAK4rG,cAAc,SAAU7/F,EAAK8nD,EAAKnqD,OAAWmiG,EAAW,UAyBxE5J,IAAK,SAAUl2F,EAAK8nD,EAAKg4C,GAErB,MAAO7rG,MAAK4rG,cAAc,MAAO7/F,EAAK8nD,EAAKnqD,OAAWmiG,EAAW,SA6BrEQ,OAAQ,SAAUtgG,EAAK8nD,EAAKvgC,EAAUvQ,GAMlC,MAJiBrZ,UAAb4pB,IAA0BA,GAAW,GAErCA,KAAa,GAA6B5pB,SAApBqZ,IAAiCA,EAAkB/iB,MAEtEA,KAAK4rG,cAAc,SAAU7/F,EAAK8nD,GAAOk4C,WAAW,EAAMz4E,SAAUA,EAAUvQ,gBAAiBA,IAAmB,EAAO,QA+BpIy/E,OAAQ,SAAUz2F,EAAK8nD,EAAKvgC,EAAUvQ,GAOlC,MALiBrZ,UAAb4pB,IAA0BA,GAAW,GAGrCA,KAAa,GAA6B5pB,SAApBqZ,IAAiCA,EAAkBuQ,GAEtEtzB,KAAK4rG,cAAc,SAAU7/F,EAAK8nD,GAAOvgC,SAAUA,EAAUvQ,gBAAiBA,IAAmB,EAAO,SAoCnHupF,YAAa,SAAUvgG,EAAK8nD,EAAKitC,EAAYC,EAAaC,EAAUC,EAAQC,GAMxE,MAJiBx3F,UAAbs3F,IAA0BA,GAAW,GAC1Bt3F,SAAXu3F,IAAwBA,EAAS,GACrBv3F,SAAZw3F,IAAyBA,EAAU,GAEhClhG,KAAK4rG,cAAc,cAAe7/F,EAAK8nD,GAAOitC,WAAYA,EAAYC,YAAaA,EAAaC,SAAUA,EAAUC,OAAQA,EAAQC,QAASA,IAAW,EAAO,SA6B1K3vC,MAAO,SAAUxlD,EAAKqgG,EAAMG,GAExB,MAAIvsG,MAAKwa,KAAKyF,MAAMusF,QAETxsG,MAGQ0J,SAAf6iG,IAA4BA,GAAa,GAEzB,gBAATH,KAEPA,GAAQA,IAGLpsG,KAAK4rG,cAAc,QAAS7/F,EAAKqgG,GAAQp0C,OAAQ,KAAMu0C,WAAYA,MA4B9E/6C,YAAa,SAAUzlD,EAAKqgG,EAAMK,EAASC,EAAUH,GAEjD,MAAIvsG,MAAKwa,KAAKyF,MAAMusF,QAETxsG,MAGK0J,SAAZ+iG,IAAyBA,EAAU,MACtB/iG,SAAbgjG,IAA0BA,EAAW,MACtBhjG,SAAf6iG,IAA4BA,GAAa,GAE7CvsG,KAAKuxD,MAAMxlD,EAAKqgG,EAAMG,GAElBE,EAEAzsG,KAAKshG,KAAKv1F,EAAM,cAAe0gG,GAE1BC,GAEmB,gBAAbA,KAEPA,EAAWtJ,KAAKlsF,MAAMw1F,IAG1B1sG,KAAK8f,MAAMklF,QAAQj5F,EAAM,cAAe,GAAI2gG,IAI5CtkG,QAAQG,KAAK,8FAGVvI,OAgBX2sG,YAAa,SAAU5gG,EAAKqgG,EAAMK,EAASC,EAAUH,GAEjD,MAAOvsG,MAAKwxD,YAAYzlD,EAAKqgG,EAAMK,EAASC,EAAUH,IAiC1D34C,MAAO,SAAU7nD,EAAKqgG,EAAMQ,EAAWC,GAqBnC,MAnBkBnjG,UAAdkjG,IAIIA,EAFA5sG,KAAKwa,KAAKkS,OAAOo2D,QAEL,aAIA,kBAILp5E,SAAXmjG,IAAwBA,GAAS,GAEjB,gBAATT,KAEPA,GAAQA,IAGLpsG,KAAK4rG,cAAc,QAAS7/F,EAAKqgG,GAAQp0C,OAAQ,KAAM60C,OAAQA,EAAQD,UAAWA,KAiC7Fv5C,QAAS,SAAUtnD,EAAK8nD,EAAKnxB,EAAM2hE,GAmB/B,GAjBY36F,SAARmqD,IAAqBA,EAAM,MAClBnqD,SAATg5B,IAAsBA,EAAO,MAClBh5B,SAAX26F,IAAwBA,EAAShkG,EAAOuuD,QAAQk+C,KAE/Cj5C,GAAQnxB,IAILmxB,EAFAwwC,IAAWhkG,EAAOuuD,QAAQk+C,IAEpB/gG,EAAM,OAINA,EAAM,SAKhB22B,EACJ,CACI,OAAQ2hE,GAGJ,IAAKhkG,GAAOuuD,QAAQk+C,IAChB,KAGJ,KAAKzsG,GAAOuuD,QAAQm+C,WAEI,gBAATrqE,KAEPA,EAAO0gE,KAAKlsF,MAAMwrB,IAK9B1iC,KAAK8f,MAAMwkF,WAAWv4F,EAAK,KAAM22B,EAAM2hE,OAIvCrkG,MAAK4rG,cAAc,UAAW7/F,EAAK8nD,GAAOwwC,OAAQA,GAGtD,OAAOrkG,OAmCXqgB,QAAS,SAAUtU,EAAK8nD,EAAKnxB,EAAM2hE,GA0B/B,MAxBY36F,UAARmqD,IAAqBA,EAAM,MAClBnqD,SAATg5B,IAAsBA,EAAO,MAClBh5B,SAAX26F,IAAwBA,EAAShkG,EAAOutB,QAAQo/E,kBAE/Cn5C,GAAQnxB,IAETmxB,EAAM9nD,EAAM,SAIZ22B,GAEoB,gBAATA,KAEPA,EAAO0gE,KAAKlsF,MAAMwrB,IAGtB1iC,KAAK8f,MAAMskF,eAAer4F,EAAK,KAAM22B,EAAM2hE,IAI3CrkG,KAAK4rG,cAAc,UAAW7/F,EAAK8nD,GAAOwwC,OAAQA,IAG/CrkG,MA0CXyiG,WAAY,SAAU12F,EAAKkhG,EAAYC,EAAUvI,EAAW5xC,EAAUC,GAmBlE,GAjBmBtpD,SAAfujG,GAA2C,OAAfA,IAE5BA,EAAalhG,EAAM,QAGNrC,SAAbwjG,IAA0BA,EAAW,MACvBxjG,SAAdi7F,IAA2BA,EAAY,MAE1B,OAAbuI,GAAmC,OAAdvI,IAErBuI,EAAWnhG,EAAM,QAGJrC,SAAbqpD,IAA0BA,EAAW,GACxBrpD,SAAbspD,IAA0BA,EAAW,GAGrCk6C,EAEAltG,KAAK4rG,cAAc,aAAc7/F,EAAKkhG;AAAcC,SAAUA,EAAUn6C,SAAUA,EAAUC,SAAUA,QAKtG,IAAyB,gBAAd2xC,GACX,CACI,GAAIrD,GAAMW,CAEV,KAEIX,EAAO8B,KAAKlsF,MAAMytF,GAEtB,MAAQ15F,GAEJg3F,EAAMjiG,KAAKmtG,SAASxI,GAGxB,IAAK1C,IAAQX,EAET,KAAM,IAAItqF,OAAM,iDAGpBhX,MAAK4rG,cAAc,aAAc7/F,EAAKkhG,GAAcC,SAAU,KAAMvI,UAAWrD,GAAQW,EACnF2C,UAActD,EAAO,OAAS,MAAQvuC,SAAUA,EAAUC,SAAUA,IAIhF,MAAOhzD,OA4CXotG,eAAgB,SAAUrhG,EAAKkhG,EAAYC,EAAUvI,GAEjD,MAAO3kG,MAAKqpG,MAAMt9F,EAAKkhG,EAAYC,EAAUvI,EAAWtkG,EAAOu5B,OAAOoxE,2BA4C1EqC,cAAe,SAAUthG,EAAKkhG,EAAYC,EAAUvI,GAEhD,MAAO3kG,MAAKqpG,MAAMt9F,EAAKkhG,EAAYC,EAAUvI,EAAWtkG,EAAOu5B,OAAOqxE,0BA4C1EqC,SAAU,SAAUvhG,EAAKkhG,EAAYC,EAAUvI,GAU3C,MARiBj7F,UAAbwjG,IAA0BA,EAAW,MACvBxjG,SAAdi7F,IAA2BA,EAAY,MAEtCuI,GAAavI,IAEduI,EAAWnhG,EAAM,QAGd/L,KAAKqpG,MAAMt9F,EAAKkhG,EAAYC,EAAUvI,EAAWtkG,EAAOu5B,OAAO2rE,6BA2C1E8D,MAAO,SAAUt9F,EAAKkhG,EAAYC,EAAUvI,EAAWN,GAwBnD,GAtBmB36F,SAAfujG,GAA2C,OAAfA,IAE5BA,EAAalhG,EAAM,QAGNrC,SAAbwjG,IAA0BA,EAAW,MACvBxjG,SAAdi7F,IAA2BA,EAAY,MAC5Bj7F,SAAX26F,IAAwBA,EAAShkG,EAAOu5B,OAAOoxE,0BAE9CkC,GAAavI,IAIVuI,EAFA7I,IAAWhkG,EAAOu5B,OAAO2rE,2BAEdx5F,EAAM,OAINA,EAAM,SAKrBmhG,EAEAltG,KAAK4rG,cAAc,eAAgB7/F,EAAKkhG,GAAcC,SAAUA,EAAU7I,OAAQA,QAGtF,CACI,OAAQA,GAGJ,IAAKhkG,GAAOu5B,OAAOoxE,yBAEU,gBAAdrG,KAEPA,EAAYvB,KAAKlsF,MAAMytF,GAE3B,MAGJ,KAAKtkG,GAAOu5B,OAAO2rE,2BAEf,GAAyB,gBAAdZ,GACX,CACI,GAAI1C,GAAMjiG,KAAKmtG,SAASxI,EAExB,KAAK1C,EAED,KAAM,IAAIjrF,OAAM,iDAGpB2tF,GAAY1C,GAKxBjiG,KAAK4rG,cAAc,eAAgB7/F,EAAKkhG,GAAcC,SAAU,KAAMvI,UAAWA,EAAWN,OAAQA,IAIxG,MAAOrkG,OAiBXutG,cAAe,SAAUj6E,EAAUvQ,GAE/B/iB,KAAKuqG,qBAEL,KACIj3E,EAASxsB,KAAKic,GAAmB/iB,KAAMA,MACzC,QACEA,KAAKuqG,sBAGT,MAAOvqG,OAcXwtG,aAAc,SAAUtlG,EAAM6D,GAE1B,GAAI0hG,GAAQztG,KAAK0rG,SAASxjG,EAAM6D,EAOhC,OALI0hG,KAEAA,EAAMvrB,KAAK6pB,WAAY,GAGpB/rG,MAaX0tG,WAAY,SAAUxlG,EAAM6D,GAExB,GAAI0hG,GAAQztG,KAAK0rG,SAASxjG,EAAM6D,EAE5B0hG,KAEKA,EAAMjC,QAAWiC,EAAMhC,SAExBzrG,KAAKwqG,UAAUrnF,OAAOsqF,EAAM99E,MAAO,KAY/C/L,UAAW,WAEP5jB,KAAKwqG,UAAU3iG,OAAS,EACxB7H,KAAKyqG,aAAa5iG,OAAS,GAS/B6I,MAAO,WAEC1Q,KAAKwpG,YAKTxpG,KAAKypG,WAAY,EACjBzpG,KAAKwpG,WAAY,EAEjBxpG,KAAK2tG,iBAEL3tG,KAAK4tG,qBAiBTA,iBAAkB,WAEd,IAAK5tG,KAAKwpG,UAIN,MAFAphG,SAAQG,KAAK,uDACbvI,MAAK6tG,iBAAgB,EAKzB,KAAK,GAAI/lG,GAAI,EAAGA,EAAI9H,KAAKyqG,aAAa5iG,OAAQC,IAC9C,CACI,GAAIo6E,GAAOliF,KAAKyqG,aAAa3iG,IAEzBo6E,EAAKspB,QAAUtpB,EAAKmE,SAEpBrmF,KAAKyqG,aAAatnF,OAAOrb,EAAG,GAC5BA,IAEAo6E,EAAKupB,SAAU,EACfvpB,EAAK4rB,WAAa,KAClB5rB,EAAK6rB,cAAgB,KAEjB7rB,EAAKmE,OAELrmF,KAAKkqG,YAAYrrF,SAASqjE,EAAKn2E,IAAKm2E,GAGtB,aAAdA,EAAKh6E,MAELlI,KAAK+qG,mBACL/qG,KAAKiqG,eAAeprF,SAAS7e,KAAKguG,SAAU9rB,EAAKn2E,KAAMm2E,EAAKmE,MAAOrmF,KAAK+qG,iBAAkB/qG,KAAK6qG,kBAE5E,aAAd3oB,EAAKh6E,MAAuBg6E,EAAKmE,QAGtCrmF,KAAK8qG,mBACL9qG,KAAK+pG,eAAelrF,SAASqjE,EAAKn2E,KAAMm2E,EAAKmE,MAAOrmF,KAAK8qG,iBAAkB9qG,KAAK4qG,mBAW5F,IAAK,GAJDqD,IAAY,EAEZC,EAAgBluG,KAAKqqG,eAAiBhqG,EAAO0F,KAAKyP,MAAMxV,KAAKsqG,qBAAsB,EAAG,IAAM,EAEvFxiG,EAAI9H,KAAK0qG,gBAAiB5iG,EAAI9H,KAAKwqG,UAAU3iG,OAAQC,IAC9D,CACI,GAAIo6E,GAAOliF,KAAKwqG,UAAU1iG,EAuD1B,IApDkB,aAAdo6E,EAAKh6E,OAAwBg6E,EAAKmE,OAASnE,EAAKspB,QAAU1jG,IAAM9H,KAAK0qG,kBAGrE1qG,KAAKmuG,YAAYjsB,GAEjBliF,KAAK8qG,mBACL9qG,KAAK+pG,eAAelrF,SAASqjE,EAAKn2E,KAAMm2E,EAAKmE,MAAOrmF,KAAK8qG,iBAAkB9qG,KAAK4qG,kBAGhF1oB,EAAKspB,QAAUtpB,EAAKmE,MAGhBv+E,IAAM9H,KAAK0qG,kBAEX1qG,KAAK0qG,gBAAkB5iG,EAAI,IAGzBo6E,EAAKupB,SAAWzrG,KAAKyqG,aAAa5iG,OAASqmG,IAG/B,aAAdhsB,EAAKh6E,MAAwBg6E,EAAKx/C,KAS5BurE,IAEDjuG,KAAK2qG,mBAEN3qG,KAAK2qG,kBAAmB,EACxB3qG,KAAK6pG,YAAYhrF,YAGrB7e,KAAKyqG,aAAa73F,KAAKsvE,GACvBA,EAAKupB,SAAU,EACfzrG,KAAKgqG,YAAYnrF,SAAS7e,KAAKguG,SAAU9rB,EAAKn2E,IAAKm2E,EAAKruB,KAExD7zD,KAAKouG,SAASlsB,KAjBdliF,KAAKyqG,aAAa73F,KAAKsvE,GACvBA,EAAKupB,SAAU,EAEfzrG,KAAKouG,SAASlsB,MAkBjBA,EAAKspB,QAAUtpB,EAAK6pB,YAErBkC,GAAY,GAKZjuG,KAAKyqG,aAAa5iG,QAAUqmG,GAC3BD,GAAajuG,KAAK8qG,mBAAqB9qG,KAAK4qG,gBAE7C,MAQR,GAJA5qG,KAAK2tG,iBAID3tG,KAAK0qG,iBAAmB1qG,KAAKwqG,UAAU3iG,OAEvC7H,KAAK6tG,sBAEJ,KAAK7tG,KAAKyqG,aAAa5iG,OAC5B,CAGIO,QAAQG,KAAK,6EAEb,IAAIke,GAAQzmB,IAEZ2lF,YAAW,WACPl/D,EAAMonF,iBAAgB,IACvB,OAYXA,gBAAiB,SAAUQ,GAEnBruG,KAAKypG,YAKTzpG,KAAKypG,WAAY,EACjBzpG,KAAKwpG,WAAY,EAGZ6E,GAAaruG,KAAK2qG,mBAEnB3qG,KAAK2qG,kBAAmB,EACxB3qG,KAAK6pG,YAAYhrF,YAGrB7e,KAAK8pG,eAAejrF,WAEpB7e,KAAKwa,KAAK0F,MAAMyD,eAEhB3jB,KAAK0f,UAaT4uF,cAAe,SAAUpsB,EAAMqsB,GAEN7kG,SAAjB6kG,IAA8BA,EAAe,IAEjDrsB,EAAKspB,QAAS,EACdtpB,EAAKmE,QAAUkoB,EAEXA,IAEArsB,EAAKqsB,aAAeA,EAEpBnmG,QAAQG,KAAK,mBAAqB25E,EAAKh6E,KAAO,IAAMg6E,EAAKn2E,IAAM,MAAawiG,IAIhFvuG,KAAK4tG,oBAWTO,YAAa,SAAUjC,GAEnB,GAAIsC,GAAWtC,EAAKxpE,KAAKwpE,EAAKngG,IAE9B,KAAKyiG,EAGD,WADApmG,SAAQG,KAAK,mBAAqB2jG,EAAKngG,IAAM,wCAIjD,KAAK,GAAIjE,GAAI,EAAGA,EAAI0mG,EAAS3mG,OAAQC,IACrC,CACI,GAAIo6E,GAAOssB,EAAS1mG,EAEpB,QAAQo6E,EAAKh6E,MAET,IAAK,QACDlI,KAAKopB,MAAM84D,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK2pB,UACpC,MAEJ,KAAK,OACD7rG,KAAK6xD,KAAKqwB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK2pB,UACnC,MAEJ,KAAK,OACD7rG,KAAKshG,KAAKpf,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK2pB,UACnC,MAEJ,KAAK,MACD7rG,KAAKiiG,IAAI/f,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK2pB,UAClC,MAEJ,KAAK,SACD7rG,KAAKqsG,OAAOnqB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK5uD,SAAU44E,EAAKnpF,iBAAmB/iB,KACvE,MAEJ,KAAK,SACDA,KAAKwiG,OAAOtgB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK5uD,SAAU44E,EAAKnpF,iBAAmB/iB,KACvE,MAEJ,KAAK,cACDA,KAAKssG,YAAYpqB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK4e,WAAY5e,EAAK6e,YAAa7e,EAAK8e,SAAU9e,EAAK+e,OAAQ/e,EAAKgf,QACzG,MAEJ,KAAK,QACDlhG,KAAK4zD,MAAMsuB,EAAKn2E,IAAKm2E,EAAKkqB,KAC1B,MAEJ,KAAK,QACDpsG,KAAKuxD,MAAM2wB,EAAKn2E,IAAKm2E,EAAKkqB,KAAMlqB,EAAKqqB,WACrC,MAEJ,KAAK,cACDvsG,KAAK2sG,YAAYzqB,EAAKn2E,IAAKm2E,EAAKkqB,KAAMlqB,EAAKuqB,QAASvqB,EAAKwqB,SAAUxqB,EAAKqqB,WACxE,MAEJ,KAAK,UACDvsG,KAAKqzD,QAAQ6uB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMriC,EAAOuuD,QAAQszB,EAAKmiB,QAChE,MAEJ,KAAK,UACDrkG,KAAKqgB,QAAQ6hE,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMriC,EAAOu5B,OAAOsoD,EAAKmiB,QAC/D,MAEJ,KAAK,aACDrkG,KAAKyiG,WAAWvgB,EAAKn2E,IAAKm2E,EAAK+qB,WAAY/qB,EAAKgrB,SAAUhrB,EAAKyiB,UAAWziB,EAAKnvB,SAAUmvB,EAAKlvB,SAC9F,MAEJ,KAAK,iBACDhzD,KAAKotG,eAAelrB,EAAKn2E,IAAKm2E,EAAK+qB,WAAY/qB,EAAKgrB,SAAUhrB,EAAKyiB,UACnE,MAEJ,KAAK,gBACD3kG,KAAKqtG,cAAcnrB,EAAKn2E,IAAKm2E,EAAK+qB,WAAY/qB,EAAKgrB,SAAUhrB,EAAKyiB,UAClE,MAEJ,KAAK,WACD3kG,KAAKstG,SAASprB,EAAKn2E,IAAKm2E,EAAK+qB,WAAY/qB,EAAKgrB,SAAUhrB,EAAKyiB,UAC7D,MAEJ,KAAK,QACD3kG,KAAKqpG,MAAMnnB,EAAKn2E,IAAKm2E,EAAK+qB,WAAY/qB,EAAKgrB,SAAUhrB,EAAKyiB,UAAWtkG,EAAOu5B,OAAOsoD,EAAKmiB,QACxF,MAEJ,KAAK,SACDrkG,KAAK+tE,OAAOmU,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAK2pB,cAkBrD4C,aAAc,SAAU56C,EAAKquB,GAEzB,QAAKruB,IAKDA,EAAIhN,MAAM,8CAEHgN,EAIA7zD,KAAKupG,QAAUrnB,EAAKtd,KAAO/Q,IAc1Cu6C,SAAU,SAAUlsB,GAGhB,OAAQA,EAAKh6E,MAET,IAAK,WACDlI,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,OAAQliF,KAAK2uG,aACnE,MAEJ,KAAK,QACL,IAAK,cACL,IAAK,eACL,IAAK,aACD3uG,KAAK4uG,aAAa1sB,EAClB,MAEJ,KAAK,QACDA,EAAKruB,IAAM7zD,KAAK6uG,YAAY3sB,EAAKruB,KAE7BquB,EAAKruB,IAGD7zD,KAAKwa,KAAKyF,MAAM6uF,cAEhB9uG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,cAAeliF,KAAK2uG,cAErE3uG,KAAKwa,KAAKyF,MAAM8uF,eAErB/uG,KAAKgvG,aAAa9sB,GAKtBliF,KAAKivG,UAAU/sB,EAAM,KAAM,kFAE/B,MAEJ,KAAK,QACDA,EAAKruB,IAAM7zD,KAAKkvG,YAAYhtB,EAAKruB,KAE7BquB,EAAKruB,IAEDquB,EAAK2qB,OAEL7sG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,OAAQliF,KAAK2uG,cAInE3uG,KAAKmvG,aAAajtB,GAKtBliF,KAAKivG,UAAU/sB,EAAM,KAAM,kFAE/B,MAEJ,KAAK,OAEDliF,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,OAAQliF,KAAKovG,iBACnE,MAEJ,KAAK,MAEDpvG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,OAAQliF,KAAKqvG,gBACnE,MAEJ,KAAK,UAEGntB,EAAKmiB,SAAWhkG,EAAOuuD,QAAQm+C,WAE/B/sG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,OAAQliF,KAAKovG,kBAE9DltB,EAAKmiB,SAAWhkG,EAAOuuD,QAAQk+C,IAEpC9sG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,OAAQliF,KAAKsvG,iBAInEtvG,KAAKsuG,cAAcpsB,EAAM,2BAA6BA,EAAKmiB,OAE/D,MAEJ,KAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UACDrkG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,OAAQliF,KAAK2uG,aACnE,MAEJ,KAAK,SACD3uG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAAO,cAAeliF,KAAK2uG,gBAUtFC,aAAc,SAAU1sB,GAEpB,GAAIz7D,GAAQzmB,IAEZkiF,GAAKx/C,KAAO,GAAIquB,OAChBmxB,EAAKx/C,KAAKt3B,KAAO82E,EAAKn2E,IAElB/L,KAAK2pG,cAELznB,EAAKx/C,KAAKinE,YAAc3pG,KAAK2pG,aAGjCznB,EAAKx/C,KAAK6sE,OAAS,WACXrtB,EAAKx/C,KAAK6sE,SAEVrtB,EAAKx/C,KAAK6sE,OAAS,KACnBrtB,EAAKx/C,KAAK8sE,QAAU,KACpB/oF,EAAMkoF,aAAazsB,KAI3BA,EAAKx/C,KAAK8sE,QAAU,WACZttB,EAAKx/C,KAAK6sE,SAEVrtB,EAAKx/C,KAAK6sE,OAAS,KACnBrtB,EAAKx/C,KAAK8sE,QAAU,KACpB/oF,EAAMwoF,UAAU/sB,KAIxBA,EAAKx/C,KAAKr3B,IAAMrL,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAGxCA,EAAKx/C,KAAK61D,UAAYrW,EAAKx/C,KAAK3yB,OAASmyE,EAAKx/C,KAAK1yB,SAEnDkyE,EAAKx/C,KAAK6sE,OAAS,KACnBrtB,EAAKx/C,KAAK8sE,QAAU,KACpBxvG,KAAK2uG,aAAazsB,KAS1BitB,aAAc,SAAUjtB,GAEpB,GAAIz7D,GAAQzmB,IAEZkiF,GAAKx/C,KAAO5W,SAAS4vD,cAAc,SACnCwG,EAAKx/C,KAAKt3B,KAAO82E,EAAKn2E,IACtBm2E,EAAKx/C,KAAK+sE,UAAW,EACrBvtB,EAAKx/C,KAAKgtE,UAAW,CAErB,IAAIC,GAAiB,WAEjBztB,EAAKx/C,KAAKnV,oBAAoB20D,EAAK0qB,UAAW+C,GAAgB,GAC9DztB,EAAKx/C,KAAK8sE,QAAU,KACpBttB,EAAKx/C,KAAKktE,SAAU,EACpBvvG,EAAOE,MAAMkmB,EAAMjM,KAAK7F,IAAIqL,KAAK2uF,aAAazsB,GAIlDA,GAAKx/C,KAAK8sE,QAAU,WAChBttB,EAAKx/C,KAAKnV,oBAAoB20D,EAAK0qB,UAAW+C,GAAgB,GAC9DztB,EAAKx/C,KAAK8sE,QAAU,KACpBttB,EAAKx/C,KAAKktE,SAAU,EACpBnpF,EAAMwoF,UAAU/sB,IAGpBA,EAAKx/C,KAAKrW,iBAAiB61D,EAAK0qB,UAAW+C,GAAgB,GAE3DztB,EAAKx/C,KAAKr3B,IAAMrL,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAC5CA,EAAKx/C,KAAK1iB,QAQdgvF,aAAc,SAAU9sB,GAEpB,GAAIz7D,GAAQzmB,IAEZ,IAAIA,KAAKwa,KAAKyF,MAAMikF,YAGhBhiB,EAAKx/C,KAAO,GAAImtE,OAChB3tB,EAAKx/C,KAAKt3B,KAAO82E,EAAKn2E,IACtBm2E,EAAKx/C,KAAKniB,QAAU,OACpB2hE,EAAKx/C,KAAKr3B,IAAMrL,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAE5CliF,KAAK2uG,aAAazsB,OAGtB,CACIA,EAAKx/C,KAAO,GAAImtE,OAChB3tB,EAAKx/C,KAAKt3B,KAAO82E,EAAKn2E,GAEtB,IAAI+jG,GAAmB,WACnB5tB,EAAKx/C,KAAKnV,oBAAoB,iBAAkBuiF,GAAkB,GAClE5tB,EAAKx/C,KAAK8sE,QAAU,KACpB/oF,EAAMkoF,aAAazsB,GAGvBA,GAAKx/C,KAAK8sE,QAAU,WAChBttB,EAAKx/C,KAAKnV,oBAAoB,iBAAkBuiF,GAAkB,GAClE5tB,EAAKx/C,KAAK8sE,QAAU,KACpB/oF,EAAMwoF,UAAU/sB,IAGpBA,EAAKx/C,KAAKniB,QAAU,OACpB2hE,EAAKx/C,KAAKr3B,IAAMrL,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GAC5CA,EAAKx/C,KAAKrW,iBAAiB,iBAAkByjF,GAAkB,GAC/D5tB,EAAKx/C,KAAK1iB,SAkBlB0uF,QAAS,SAAUxsB,EAAMruB,EAAK3rD,EAAMqnG,EAAQC,GAExC,GAAIxvG,KAAKmqG,mBAAqBpiG,OAAOgoG,eAGjC,WADA/vG,MAAKgwG,eAAe9tB,EAAMruB,EAAK3rD,EAAMqnG,EAAQC,EAIjD,IAAIS,GAAM,GAAIC,eACdD,GAAIE,KAAK,MAAOt8C,GAAK,GACrBo8C,EAAIG,aAAeloG,EAEflI,KAAK4pG,QAAQ1nB,EAAKh6E,OAElB+nG,EAAII,iBAAiB,SAAUrwG,KAAK4pG,QAAQ1nB,EAAKh6E,OAGrDsnG,EAAUA,GAAWxvG,KAAKivG,SAE1B,IAAIxoF,GAAQzmB,IAEZiwG,GAAIV,OAAS,WAET,IACI,MAAsB,IAAlBU,EAAIvqB,YAAmBuqB,EAAIjX,QAAU,KAAOiX,EAAIjX,QAAU,IACnDwW,EAAQ1oG,KAAK2f,EAAOy7D,EAAM+tB,GAG1BV,EAAOzoG,KAAK2f,EAAOy7D,EAAM+tB,GAEtC,MAAOhlG,GAKAwb,EAAMgjF,UAMH1hG,OAAgB,SAEhBK,QAAQi+E,MAAMp7E,GANlBwb,EAAM6nF,cAAcpsB,EAAMj3E,EAAEqlG,SAAW,eAYnDL,EAAIT,QAAU,WAEV,IAEI,MAAOA,GAAQ1oG,KAAK2f,EAAOy7D,EAAM+tB,GAEnC,MAAOhlG,GAEAwb,EAAMgjF,UAMH1hG,OAAgB,SAEhBK,QAAQi+E,MAAMp7E,GANlBwb,EAAM6nF,cAAcpsB,EAAMj3E,EAAEqlG,SAAW,eAanDpuB,EAAK6rB,cAAgBkC,EACrB/tB,EAAK4rB,WAAaj6C,EAElBo8C,EAAIM,QAmBRP,eAAgB,SAAU9tB,EAAMruB,EAAK3rD,EAAMqnG,EAAQC,GAG1CxvG,KAAKoqG,4BACJpqG,KAAKwa,KAAKkS,OAAOs2D,MAAMhjF,KAAKwa,KAAKkS,OAAOu2D,WAAa,MAEvDjjF,KAAKoqG,4BAA6B,EAClChiG,QAAQG,KAAK,wDAIjB,IAAI0nG,GAAM,GAAIloG,QAAOgoG,cACrBE,GAAIE,KAAK,MAAOt8C,GAAK,GACrBo8C,EAAIG,aAAeloG,EAKnB+nG,EAAIO,QAAU,IAEdhB,EAAUA,GAAWxvG,KAAKivG,SAE1B,IAAIxoF,GAAQzmB,IAEZiwG,GAAIT,QAAU,WACV,IACI,MAAOA,GAAQ1oG,KAAK2f,EAAOy7D,EAAM+tB,GACnC,MAAOhlG,GACLwb,EAAM6nF,cAAcpsB,EAAMj3E,EAAEqlG,SAAW,eAI/CL,EAAIQ,UAAY,WACZ,IACI,MAAOjB,GAAQ1oG,KAAK2f,EAAOy7D,EAAM+tB,GACnC,MAAOhlG,GACLwb,EAAM6nF,cAAcpsB,EAAMj3E,EAAEqlG,SAAW,eAI/CL,EAAIS,WAAa,aAEjBT,EAAIV,OAAS,WACT,IACI,MAAsB,IAAlBU,EAAIvqB,YAAmBuqB,EAAIjX,QAAU,KAAOiX,EAAIjX,QAAU,IACnDwW,EAAQ1oG,KAAK2f,EAAOy7D,EAAM+tB,GAG1BV,EAAOzoG,KAAK2f,EAAOy7D,EAAM+tB,GAGtC,MAAOhlG,GACLwb,EAAM6nF,cAAcpsB,EAAMj3E,EAAEqlG,SAAW,eAI/CpuB,EAAK6rB,cAAgBkC,EACrB/tB,EAAK4rB,WAAaj6C,EAIlB8xB,WAAW,WACPsqB,EAAIM,QACL,IAcPrB,YAAa,SAAU9C,GAEnB,IAAK,GAAItkG,GAAI,EAAGA,EAAIskG,EAAKvkG,OAAQC,IACjC,CACI,GACI6oG,GADA98C,EAAMu4C,EAAKtkG,EAGf,IAAI+rD,EAAI+8C,KAKJ,GAHAD,EAAY98C,EAAI3rD,KAChB2rD,EAAMA,EAAI+8C,IAEN5wG,KAAKwa,KAAKkS,OAAOq9D,aAAa4mB,GAE9B,MAAO98C,OAIf,CAEI,GAA6B,IAAzBA,EAAIvjC,QAAQ,UAA2C,IAAzBujC,EAAIvjC,QAAQ,SAE1C,MAAOujC,EAGPA,GAAIvjC,QAAQ,MAAQ,IAEpBujC,EAAMA,EAAIzpD,OAAO,EAAGypD,EAAIvjC,QAAQ,MAGpC,IAAIw7E,GAAYj4C,EAAIzpD,QAAQrE,KAAKoM,IAAI,EAAG0hD,EAAIg9C,YAAY,OAASxpC,EAAAA,GAAY,EAI7E,IAFAspC,EAAY7E,EAAU7gE,cAElBjrC,KAAKwa,KAAKkS,OAAOq9D,aAAa4mB,GAE9B,MAAOvE,GAAKtkG,IAKxB,MAAO,OAcX+mG,YAAa,SAAUzC,GAEnB,GAAIpsG,KAAKwa,KAAKyF,MAAMusF,QAEhB,MAAO,KAGX,KAAK,GAAI1kG,GAAI,EAAGA,EAAIskG,EAAKvkG,OAAQC,IACjC,CACI,GACIgpG,GADAj9C,EAAMu4C,EAAKtkG,EAGf,IAAI+rD,EAAI+8C,KAKJ,GAHAE,EAAYj9C,EAAI3rD,KAChB2rD,EAAMA,EAAI+8C,IAEN5wG,KAAKwa,KAAKkS,OAAOo9D,aAAagnB,GAE9B,MAAOj9C,OAIf,CAEI,GAA6B,IAAzBA,EAAIvjC,QAAQ,UAA2C,IAAzBujC,EAAIvjC,QAAQ,SAE1C,MAAOujC,EAGPA,GAAIvjC,QAAQ,MAAQ,IAEpBujC,EAAMA,EAAIzpD,OAAO,EAAGypD,EAAIvjC,QAAQ,MAGpC,IAAIw7E,GAAYj4C,EAAIzpD,QAAQrE,KAAKoM,IAAI,EAAG0hD,EAAIg9C,YAAY,OAASxpC,EAAAA,GAAY,EAI7E,IAFAypC,EAAYhF,EAAU7gE,cAElBjrC,KAAKwa,KAAKkS,OAAOo9D,aAAagnB,GAE9B,MAAO1E,GAAKtkG,IAKxB,MAAO,OAaXmnG,UAAW,SAAU/sB,EAAM+tB,EAAKc,GAE5B,GAAIl9C,GAAMquB,EAAK4rB,YAAc9tG,KAAKyuG,aAAavsB,EAAKruB,IAAKquB,GACrDouB,EAAU,gCAAkCz8C,GAE3Ck9C,GAAUd,IAEXc,EAASd,EAAIjX,QAGb+X,IAEAT,EAAUA,EAAU,KAAOS,EAAS,KAGxC/wG,KAAKsuG,cAAcpsB,EAAMouB,IAY7B3B,aAAc,SAAUzsB,EAAM+tB,GAE1B,GAAIe,IAAW,CAEf,QAAQ9uB,EAAKh6E,MAET,IAAK,WAGD,GAAIw6B,GAAO0gE,KAAKlsF,MAAM+4F,EAAIgB,aAC1B/uB,GAAKx/C,KAAOA,KACZ,MAEJ,KAAK,QAED1iC,KAAK8f,MAAM+5C,SAASqoB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAC7C,MAEJ,KAAK,cAED1iC,KAAK8f,MAAMulF,eAAenjB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMw/C,EAAK4e,WAAY5e,EAAK6e,YAAa7e,EAAK8e,SAAU9e,EAAK+e,OAAQ/e,EAAKgf,QAC7H,MAEJ,KAAK,eAED,GAAqB,MAAjBhf,EAAKgrB,SAELltG,KAAK8f,MAAMwlF,gBAAgBpjB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMw/C,EAAKyiB,UAAWziB,EAAKmiB,YAO/E,IAFA2M,GAAW,EAEP9uB,EAAKmiB,QAAUhkG,EAAOu5B,OAAOoxE,0BAA4B9oB,EAAKmiB,QAAUhkG,EAAOu5B,OAAOqxE,yBAA2B/oB,EAAKmiB,QAAUhkG,EAAOu5B,OAAO4rE,yBAE9IxlG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKgrB,SAAUhrB,GAAO,OAAQliF,KAAKovG,sBAEvE,CAAA,GAAIltB,EAAKmiB,QAAUhkG,EAAOu5B,OAAO2rE,2BAMlC,KAAM,IAAIvuF,OAAM,gDAAkDkrE,EAAKmiB,OAJvErkG,MAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKgrB,SAAUhrB,GAAO,OAAQliF,KAAKqvG,iBAOhF,KAEJ,KAAK,aAEIntB,EAAKgrB,UAON8D,GAAW,EACXhxG,KAAK0uG,QAAQxsB,EAAMliF,KAAKyuG,aAAavsB,EAAKgrB,SAAUhrB,GAAO,OAAQ,SAAUA,EAAM+tB,GAC/E,GAAI3O,EAEJ,KAGIA,EAAO8B,KAAKlsF,MAAM+4F,EAAIgB,cAE1B,MAAOhmG,IAEDq2F,GAEFpf,EAAK0iB,UAAY,OACjB5kG,KAAKovG,iBAAiBltB,EAAM+tB,KAI5B/tB,EAAK0iB,UAAY,MACjB5kG,KAAKqvG,gBAAgBntB,EAAM+tB,OAxBnCjwG,KAAK8f,MAAM4kF,cAAcxiB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMw/C,EAAKyiB,UAAWziB,EAAK0iB,UAAW1iB,EAAKnvB,SAAUmvB,EAAKlvB,SA4BhH,MAEJ,KAAK,QAED,GAAIkvB,EAAK2qB,OAEL,IAEI3qB,EAAKx/C,KAAOutE,EAAIiB,SAEpB,MAAOjmG,GAEH,KAAM,IAAI+L,OAAM,sDAAwDkrE,EAAKn2E,KAIrF/L,KAAK8f,MAAMolF,SAAShjB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMw/C,EAAK2qB,OACxD,MAEJ,KAAK,QAEG7sG,KAAKwa,KAAKyF,MAAM6uF,eAEhB5sB,EAAKx/C,KAAOutE,EAAIiB,SAEhBlxG,KAAK8f,MAAMgkF,SAAS5hB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,MAAM,GAAM,GAErDw/C,EAAKqqB,YAELvsG,KAAKwa,KAAKyF,MAAMkxF,OAAOjvB,EAAKn2E,MAKhC/L,KAAK8f,MAAMgkF,SAAS5hB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,MAAM,GAAO,EAE9D,MAEJ,KAAK,OACDw/C,EAAKx/C,KAAOutE,EAAIgB,aAChBjxG,KAAK8f,MAAMqkF,QAAQjiB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAC5C,MAEJ,KAAK,SACDw/C,EAAKx/C,KAAOutE,EAAIgB,aAChBjxG,KAAK8f,MAAMslF,UAAUljB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAC9C,MAEJ,KAAK,UACD,GAAIA,GAAO0gE,KAAKlsF,MAAM+4F,EAAIgB,aAC1BjxG,MAAK8f,MAAMskF,eAAeliB,EAAKn2E,IAAKm2E,EAAKruB,IAAKnxB,EAAMw/C,EAAKmiB,OACzD,MAEJ,KAAK,SACDniB,EAAKx/C,KAAO5W,SAAS4vD,cAAc,UACnCwG,EAAKx/C,KAAK0uE,SAAW,aACrBlvB,EAAKx/C,KAAKx6B,KAAO,kBACjBg6E,EAAKx/C,KAAK2uE,OAAQ,EAClBnvB,EAAKx/C,KAAKmvB,KAAOo+C,EAAIgB,aACrBnlF,SAASwlF,KAAK5mB,YAAYxI,EAAKx/C,MAC3Bw/C,EAAK5uD,WAEL4uD,EAAKx/C,KAAOw/C,EAAK5uD,SAASxsB,KAAKo7E,EAAKn/D,gBAAiBm/D,EAAKn2E,IAAKkkG,EAAIgB,cAEvE,MAEJ,KAAK,SACG/uB,EAAK5uD,SAEL4uD,EAAKx/C,KAAOw/C,EAAK5uD,SAASxsB,KAAKo7E,EAAKn/D,gBAAiBm/D,EAAKn2E,IAAKkkG,EAAIiB,UAInEhvB,EAAKx/C,KAAOutE,EAAIiB,SAGpBlxG,KAAK8f,MAAM0kF,UAAUtiB,EAAKn2E,IAAKm2E,EAAKx/C,MAKxCsuE,GAEAhxG,KAAKsuG,cAAcpsB,IAa3BktB,iBAAkB,SAAUltB,EAAM+tB,GAE9B,GAAIvtE,GAAO0gE,KAAKlsF,MAAM+4F,EAAIgB,aAER,aAAd/uB,EAAKh6E,KAELlI,KAAK8f,MAAMwkF,WAAWpiB,EAAKn2E,IAAKm2E,EAAKruB,IAAKnxB,EAAMw/C,EAAKmiB,QAElC,eAAdniB,EAAKh6E,KAEVlI,KAAK8f,MAAM4kF,cAAcxiB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMA,EAAMw/C,EAAK0iB,UAAW1iB,EAAKnvB,SAAUmvB,EAAKlvB,UAE/E,SAAdkvB,EAAKh6E,KAEVlI,KAAK8f,MAAMklF,QAAQ9iB,EAAKn2E,IAAKm2E,EAAKruB,IAAKnxB,GAIvC1iC,KAAK8f,MAAMwlF,gBAAgBpjB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMA,EAAMw/C,EAAKmiB,QAGzErkG,KAAKsuG,cAAcpsB,IAWvBotB,gBAAiB,SAAUptB,EAAM+tB,GAE7B,GAAIvtE,GAAOutE,EAAIgB,YAEfjxG,MAAK8f,MAAMwkF,WAAWpiB,EAAKn2E,IAAKm2E,EAAKruB,IAAKnxB,EAAMw/C,EAAKmiB,QAErDrkG,KAAKsuG,cAAcpsB,IAYvBmtB,gBAAiB,SAAUntB,EAAM+tB,GAG7B,GAAIvtE,GAAOutE,EAAIgB,aACXhP,EAAMjiG,KAAKmtG,SAASzqE,EAExB,KAAKu/D,EACL,CACI,GAAImO,GAAeH,EAAIG,cAAgBH,EAAIsB,WAG3C,OAFAnpG,SAAQG,KAAK,mBAAqB25E,EAAKn2E,IAAM,kBAAoBqkG,EAAe,SAChFpwG,MAAKsuG,cAAcpsB,EAAM,eAIX,eAAdA,EAAKh6E,KAELlI,KAAK8f,MAAM4kF,cAAcxiB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMu/D,EAAK/f,EAAK0iB,UAAW1iB,EAAKnvB,SAAUmvB,EAAKlvB,UAE9E,iBAAdkvB,EAAKh6E,KAEVlI,KAAK8f,MAAMwlF,gBAAgBpjB,EAAKn2E,IAAKm2E,EAAKruB,IAAKquB,EAAKx/C,KAAMu/D,EAAK/f,EAAKmiB,QAEjD,QAAdniB,EAAKh6E,MAEVlI,KAAK8f,MAAMmlF,OAAO/iB,EAAKn2E,IAAKm2E,EAAKruB,IAAKouC,GAG1CjiG,KAAKsuG,cAAcpsB,IAYvBirB,SAAU,SAAUzqE,GAEhB,GAAIu/D,EAEJ,KAEI,GAAIl6F,OAAkB,UACtB,CACI,GAAIypG,GAAY,GAAIC,UACpBxP,GAAMuP,EAAUE,gBAAgBhvE,EAAM,gBAItCu/D,GAAM,GAAI0P,eAAc,oBAExB1P,EAAI2P,MAAQ,QACZ3P,EAAI4P,QAAQnvE,GAGpB,MAAOz3B,GAEHg3F,EAAM,KAGV,MAAKA,IAAQA,EAAIhb,kBAAmBgb,EAAIC,qBAAqB,eAAer6F,OAMjEo6F,EAJA,MAiBf0L,eAAgB,WAER3tG,KAAK0pG,gBAEgC,IAAjC1pG,KAAK0pG,cAAc5rF,UAEnB9d,KAAK0pG,cAAch2F,KAAK3D,MAAQhK,KAAKI,MAAOnG,KAAK0pG,cAAc35F,MAAQ,IAAO/P,KAAKguG,UAInFhuG,KAAK0pG,cAAch2F,KAAK1D,OAASjK,KAAKI,MAAOnG,KAAK0pG,cAAc15F,OAAS,IAAOhQ,KAAKguG,UAGrFhuG,KAAK0pG,cAActyE,OAEnBp3B,KAAK0pG,cAActyE,OAAO8xB,aAK1BlpD,KAAK0pG,cAAgB,OAajCoI,iBAAkB,WAEd,MAAO9xG,MAAK+qG,kBAWhBtnF,iBAAkB,WAEd,MAAOzjB,MAAK6qG,gBAAkB7qG,KAAK+qG,kBAWvCgH,iBAAkB,WAEd,MAAO/xG,MAAK4qG,iBAWhBlnF,iBAAkB,WAEd,MAAO1jB,MAAK4qG,gBAAkB5qG,KAAK8qG,mBAe3CvjG,OAAO2E,eAAe7L,EAAOu5B,OAAOvzB,UAAW,iBAE3C2F,IAAK,WACD,GAAIgiG,GAAYhuG,KAAK+qG,iBAAmB/qG,KAAK6qG,gBAAmB,GAChE,OAAOxqG,GAAO0F,KAAKyP,MAAMw4F,GAAY,EAAG,EAAG,QAWnDzmG,OAAO2E,eAAe7L,EAAOu5B,OAAOvzB,UAAW,YAE3C2F,IAAK,WACD,MAAOjG,MAAK+H,MAAM9N,KAAKgyG,kBAK/B3xG,EAAOu5B,OAAOvzB,UAAU8B,YAAc9H,EAAOu5B,OAa7Cv5B,EAAOwkG,cAYHpC,WAAY,SAAUR,EAAKnvD,EAAaigB,EAAUC,GAE9C,MAAOhzD,MAAK+kG,cAAc9C,EAAKnvD,EAAaigB,EAAUC,IAc1D+xC,cAAe,SAAU9C,EAAKnvD,EAAaigB,EAAUC,GAEjD,GAAItwB,MACAuvE,EAAOhQ,EAAIC,qBAAqB,QAAQ,GACxCgQ,EAASjQ,EAAIC,qBAAqB,UAAU,EAEhDx/D,GAAKgwB,KAAOu/C,EAAKE,aAAa,QAC9BzvE,EAAK14B,KAAOK,SAAS4nG,EAAKE,aAAa,QAAS,IAChDzvE,EAAKy1C,WAAa9tE,SAAS6nG,EAAOC,aAAa,cAAe,IAAMn/C,EACpEtwB,EAAKmwB,QAIL,KAAK,GAFDu/C,GAAUnQ,EAAIC,qBAAqB,QAE9Bp6F,EAAI,EAAGA,EAAIsqG,EAAQvqG,OAAQC,IACpC,CACI,GAAI44C,GAAWr2C,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,MAAO,GAEvDzvE,GAAKmwB,MAAMnS,IACPz6C,EAAGoE,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,KAAM,IAC1C1lG,EAAGpC,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,KAAM,IAC1CpiG,MAAO1F,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,SAAU,IAClDniG,OAAQ3F,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,UAAW,IACpDl/C,QAAS5oD,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,WAAY,IACtDj/C,QAAS7oD,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,WAAY,IACtDn1B,SAAU3yE,SAAS+nG,EAAQtqG,GAAGqqG,aAAa,YAAa,IAAMp/C,EAC9DgqB,YAIR,GAAIs1B,GAAWpQ,EAAIC,qBAAqB,UAExC,KAAKp6F,EAAI,EAAGA,EAAIuqG,EAASxqG,OAAQC,IACjC,CACI,GAAImkC,GAAQ5hC,SAASgoG,EAASvqG,GAAGqqG,aAAa,SAAU,IACpDG,EAASjoG,SAASgoG,EAASvqG,GAAGqqG,aAAa,UAAW,IACtDl/E,EAAS5oB,SAASgoG,EAASvqG,GAAGqqG,aAAa,UAAW,GAE1DzvE,GAAKmwB,MAAMy/C,GAAQv1B,QAAQ9wC,GAAShZ,EAGxC,MAAOjzB,MAAKuyG,mBAAmBz/D,EAAapQ,IAchDoiE,eAAgB,SAAUxD,EAAMxuD,EAAaigB,EAAUC,GAEnD,GAAItwB,IACAgwB,KAAM4uC,EAAK5uC,KAAKu/C,KAAKO,MACrBxoG,KAAMK,SAASi3F,EAAK5uC,KAAKu/C,KAAKt5C,MAAO,IACrCwf,WAAY9tE,SAASi3F,EAAK5uC,KAAKw/C,OAAOO,YAAa,IAAMz/C,EACzDH,SAqCJ,OAlCAyuC,GAAK5uC,KAAKG,MAAY,KAAEprD,QAEpB,SAAmB0xE,GAEf,GAAIz4B,GAAWr2C,SAAS8uE,EAAOu5B,IAAK,GAEpChwE,GAAKmwB,MAAMnS,IACPz6C,EAAGoE,SAAS8uE,EAAOt5C,GAAI,IACvBpzB,EAAGpC,SAAS8uE,EAAOr5C,GAAI,IACvB/vB,MAAO1F,SAAS8uE,EAAOniD,OAAQ,IAC/BhnB,OAAQ3F,SAAS8uE,EAAOliD,QAAS,IACjCg8B,QAAS5oD,SAAS8uE,EAAOw5B,SAAU,IACnCz/C,QAAS7oD,SAAS8uE,EAAOy5B,SAAU,IACnC51B,SAAU3yE,SAAS8uE,EAAO05B,UAAW,IAAM9/C,EAC3CgqB,cAMRukB,EAAK5uC,KAAK2/C,UAAY/Q,EAAK5uC,KAAK2/C,SAASt1B,SAEzCukB,EAAK5uC,KAAK2/C,SAASt1B,QAAQt1E,QAEvB,SAAsBs1E,GAElBr6C,EAAKmwB,MAAMkqB,EAAQ+1B,SAAS/1B,QAAQA,EAAQg2B,QAAU1oG,SAAS0yE,EAAQi2B,QAAS,MAQrFhzG,KAAKuyG,mBAAmBz/D,EAAapQ,IAahD6vE,mBAAoB,SAAUz/D,EAAamgE,GAcvC,MAZA1rG,QAAOuE,KAAKmnG,EAAepgD,OAAOprD,QAE9B,SAAoBi5C,GAEhB,GAAIy4B,GAAS85B,EAAepgD,MAAMnS,EAElCy4B,GAAO32C,QAAU,GAAI18B,MAAKgpD,QAAQhc,EAAa,GAAIzyC,GAAOkN,UAAU4rE,EAAOlzE,EAAGkzE,EAAO1sE,EAAG0sE,EAAOppE,MAAOopE,EAAOnpE,WAM9GijG,IAqBf5yG,EAAOo2D,YAAc,SAAUj8C,EAAMzO,GAMjC/L,KAAKwa,KAAOA,EAMZxa,KAAK+L,IAAMA,EAMX/L,KAAKirB,OAASjrB,KAAKwa,KAAKsF,MAAM6nF,QAAQ57F,EAAM,eAM5C/L,KAAKkzG,YAAc,KAOnBlzG,KAAK0vG,UAAW,EAMhB1vG,KAAKmzG,SAEL,KAAK,GAAIp6D,KAAK/4C,MAAKirB,OAAOmoF,UAC1B,CACI,GAAI/8C,GAASr2D,KAAKirB,OAAOmoF,UAAUr6D,GAC/B94B,EAAQjgB,KAAKwa,KAAK3I,IAAIoO,MAAMjgB,KAAK+L,IAErCkU,GAAMozF,UAAUt6D,EAAGsd,EAAO3lD,MAAQ2lD,EAAO1lD,IAAM0lD,EAAO3lD,MAAQ,KAAM2lD,EAAOjP,MAE3EpnD,KAAKmzG,OAAOp6D,GAAK94B,EAGjBjgB,KAAKirB,OAAOykF,WAEZ1vG,KAAKkzG,YAAclzG,KAAKirB,OAAOykF,SAC/B1vG,KAAKknD,KAAKlnD,KAAKkzG,aACflzG,KAAK0vG,SAAW1vG,KAAKmzG,OAAOnzG,KAAKkzG,eAKzC7yG,EAAOo2D,YAAYpwD,WAUf6gD,KAAM,SAAUmP,EAAQr8C,GAIpB,MAFetQ,UAAXsQ,IAAwBA,EAAS,GAE9Bha,KAAKmzG,OAAO98C,GAAQnP,KAAKmP,EAAQ,KAAMr8C,IAUlDsiB,KAAM,SAAU+5B,GAEZ,GAAKA,EASDr2D,KAAKmzG,OAAO98C,GAAQ/5B,WAPpB,KAAK,GAAIvwB,KAAO/L,MAAKmzG,OAEjBnzG,KAAKmzG,OAAOpnG,GAAKuwB,QAiB7BtwB,IAAK,SAASqqD,GAEV,MAAOr2D,MAAKmzG,OAAO98C,KAM3Bh2D,EAAOo2D,YAAYpwD,UAAU8B,YAAc9H,EAAOo2D,YAkBlDp2D,EAAOm2D,MAAQ,SAAUh8C,EAAMzO,EAAKiO,EAAQotC,EAAMtP,GAE/BpuC,SAAXsQ,IAAwBA,EAAS,GACxBtQ,SAAT09C,IAAsBA,GAAO,GACjB19C,SAAZouC,IAAyBA,EAAUt9B,EAAKyF,MAAMqzF,iBAMlDtzG,KAAKwa,KAAOA,EAKZxa,KAAKoL,KAAOW,EAKZ/L,KAAK+L,IAAMA,EAKX/L,KAAKonD,KAAOA,EAKZpnD,KAAKuzG,WAKLvzG,KAAKqkB,QAAU,KAKfrkB,KAAK0vG,UAAW,EAKhB1vG,KAAKwzG,cAAgB,EAMrBxzG,KAAK+4F,UAAY,EAKjB/4F,KAAKyzG,YAAc,EAKnBzzG,KAAK6b,SAAW,EAKhB7b,KAAK0zG,WAAa,EAKlB1zG,KAAKuZ,SAAW,EAKhBvZ,KAAK2zG,SAAW,EAMhB3zG,KAAK6gB,QAAS,EAKd7gB,KAAK4zG,eAAiB,EAKtB5zG,KAAK6zG,WAAa,EAMlB7zG,KAAKg+F,WAAY,EAMjBh+F,KAAK8zG,cAAgB,GAKrB9zG,KAAK+zG,UAAY,KAMjB/zG,KAAKg0G,iBAAkB,EAMvBh0G,KAAKi0G,UAAW,EAMhBj0G,KAAKk0G,eAAgB,EAMrBl0G,KAAK8uG,cAAgB9uG,KAAKwa,KAAKyF,MAAM6uF,cAKrC9uG,KAAK+uG,cAAgB/uG,KAAKwa,KAAKyF,MAAM8uF,cAKrC/uG,KAAKm0G,aAAe,KAKpBn0G,KAAKo0G,eAAiB,KAKtBp0G,KAAKq0G,SAAW,KAMhBr0G,KAAKs0G,OAAS,KAEVt0G,KAAK8uG,eAEL9uG,KAAKqkB,QAAUrkB,KAAKwa,KAAKyF,MAAMoE,QAC/BrkB,KAAKo0G,eAAiBp0G,KAAKwa,KAAKyF,MAAMs0F,WAEN7qG,SAA5B1J,KAAKqkB,QAAQmwF,WAEbx0G,KAAKq0G,SAAWr0G,KAAKqkB,QAAQowF,iBAI7Bz0G,KAAKq0G,SAAWr0G,KAAKqkB,QAAQmwF,aAGjCx0G,KAAKq0G,SAASK,KAAKnrG,MAAQyQ,EAASha,KAAKwa,KAAKyF,MAAMjG,OAEhD89B,GAEA93C,KAAKq0G,SAASv8D,QAAQ93C,KAAKo0G,iBAG1Bp0G,KAAK+uG,gBAEN/uG,KAAKwa,KAAKsF,MAAM4lF,SAAS35F,IAAQ/L,KAAKwa,KAAKsF,MAAMimF,aAAah6F,IAE9D/L,KAAKs0G,OAASt0G,KAAKwa,KAAKsF,MAAMonF,aAAan7F,GAC3C/L,KAAKwzG,cAAgB,EAEjBxzG,KAAKs0G,OAAOz4F,WAEZ7b,KAAKwzG,cAAgBxzG,KAAKs0G,OAAOz4F,WAKrC7b,KAAKwa,KAAKsF,MAAM+iF,cAAchxF,IAAI7R,KAAK20G,iBAAkB30G,OAOjEA,KAAK40G,UAAY,GAAIv0G,GAAO+a,OAK5Bpb,KAAK60G,OAAS,GAAIx0G,GAAO+a,OAKzBpb,KAAKuiB,QAAU,GAAIliB,GAAO+a,OAK1Bpb,KAAKyiB,SAAW,GAAIpiB,GAAO+a,OAK3Bpb,KAAKu3F,OAAS,GAAIl3F,GAAO+a,OAKzBpb,KAAK80G,OAAS,GAAIz0G,GAAO+a,OAKzBpb,KAAK+0G,OAAS,GAAI10G,GAAO+a,OAKzBpb,KAAKg1G,iBAAmB,GAAI30G,GAAO+a,OAKnCpb,KAAKsb,eAAiB,GAAIjb,GAAO+a,OAMjCpb,KAAKi1G,QAAUj7F,EAMfha,KAAKk1G,QAAU,KAMfl1G,KAAKm1G,QAAS,EAMdn1G,KAAKo1G,YAAc,EAMnBp1G,KAAKq1G,cAAgB,EAMrBr1G,KAAKs1G,YAAc,EAMnBt1G,KAAKu1G,WAAa,EAMlBv1G,KAAKw1G,YAAc,EAMnBx1G,KAAKy1G,UAAY,EAMjBz1G,KAAKw4B,SAAU,EAMfx4B,KAAK01G,2BAA4B,GAIrCr1G,EAAOm2D,MAAMnwD,WAQTsuG,iBAAkB,SAAU5oG,GAEpBA,IAAQ/L,KAAK+L,MAEb/L,KAAKs0G,OAASt0G,KAAKwa,KAAKsF,MAAMonF,aAAalnG,KAAK+L,KAChD/L,KAAKwzG,cAAgBxzG,KAAKs0G,OAAOz4F,WAgBzCw3F,UAAW,SAAUjoG,EAAMsF,EAAOmL,EAAU7B,EAAQotC,GAE/B19C,SAAbmS,GAAuC,OAAbA,IAAqBA,EAAW,GAC/CnS,SAAXsQ,GAAmC,OAAXA,IAAmBA,EAAS,GAC3CtQ,SAAT09C,IAAsBA,GAAO,GAEjCpnD,KAAKuzG,QAAQnoG,IACTA,KAAMA,EACNsF,MAAOA,EACP4rB,KAAM5rB,EAAQmL,EACd7B,OAAQA,EACR6B,SAAUA,EACV63F,WAAuB,IAAX73F,EACZurC,KAAMA,IAUduuD,aAAc,SAAUvqG,SAEbpL,MAAKuzG,QAAQnoG,IAWxBwqG,eAAgB,WAEZ51G,KAAKs0G,OAAOuB,QAAU,KACtB71G,KAAKg+F,WAAY,EACjBh+F,KAAKyzG,YAAczzG,KAAK0zG,WACxB1zG,KAAKs8B,QAST/d,OAAQ,WAEJ,MAAKve,MAAKwa,KAAKsF,MAAMsmF,cAAcpmG,KAAK+L,MAMpC/L,KAAK81G,YAAc91G,KAAK01G,4BAExB11G,KAAK40G,UAAU/1F,SAAS7e,MACxBA,KAAK01G,2BAA4B,GAGjC11G,KAAKg0G,iBAAmBh0G,KAAKwa,KAAKsF,MAAMimF,aAAa/lG,KAAK+L,OAE1D/L,KAAKg0G,iBAAkB,EACvBh0G,KAAKknD,KAAKlnD,KAAKo1G,YAAap1G,KAAKq1G,cAAer1G,KAAKs1G,YAAat1G,KAAKy1G,iBAGvEz1G,KAAKg+F,YAELh+F,KAAKyzG,YAAczzG,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK+4F,UAE1C/4F,KAAKyzG,aAAezzG,KAAK0zG,aAErB1zG,KAAK8uG,cAED9uG,KAAKonD,MAGLpnD,KAAKu3F,OAAO14E,SAAS7e,MAGrBA,KAAKg+F,WAAY,EAEU,KAAvBh+F,KAAK8zG,eAEL9zG,KAAKyzG,YAAc,EACnBzzG,KAAK+4F,UAAY/4F,KAAKwa,KAAKmE,KAAKA,KAChC3e,KAAKg+F,WAAY,IAIjBh+F,KAAKg1G,iBAAiBn2F,SAAS7e,KAAK8zG,cAAe9zG,MACnDA,KAAKknD,KAAKlnD,KAAK8zG,cAAe,EAAG9zG,KAAKga,QAAQ,GAAM,KAM7B,KAAvBha,KAAK8zG,eAEL9zG,KAAKs8B,OAMTt8B,KAAKonD,MAELpnD,KAAKu3F,OAAO14E,SAAS7e,MAEM,KAAvBA,KAAK8zG,gBAEL9zG,KAAKyzG,YAAc,EACnBzzG,KAAK+4F,UAAY/4F,KAAKwa,KAAKmE,KAAKA,MAIpC3e,KAAKg+F,WAAY,EAEjBh+F,KAAKknD,KAAKlnD,KAAK8zG,cAAe,EAAG9zG,KAAKga,QAAQ,GAAM,IAIpDha,KAAKs8B,eAxEjBt8B,MAAK8jB,WAsFbiyF,SAAU,SAAU/7F,GAEhBha,KAAKknD,KAAK,KAAM,EAAGltC,GAAQ,IAe/BktC,KAAM,SAAUmP,EAAQ98C,EAAUS,EAAQotC,EAAM4uD,GAK5C,GAHetsG,SAAX2sD,GAAwBA,KAAW,GAAoB,OAAXA,IAAmBA,EAAS,IACvD3sD,SAAjBssG,IAA8BA,GAAe,GAE7Ch2G,KAAKg+F,YAAch+F,KAAKk0G,gBAAkB8B,IAAiBh2G,KAAKi0G,SAGhE,MAAOj0G,KAGX,IAAIA,KAAKs0G,QAAUt0G,KAAKg+F,YAAch+F,KAAKk0G,gBAAkBl0G,KAAKi0G,UAAY+B,GAE1E,GAAIh2G,KAAK8uG,cACT,CACI,GAAyBplG,SAArB1J,KAAKs0G,OAAOh4E,KAEZt8B,KAAKs0G,OAAO2B,QAAQ,OAIpB,KACIj2G,KAAKs0G,OAAOh4E,KAAK,GAErB,MAAOrxB,IAIPjL,KAAKm0G,aAELn0G,KAAKs0G,OAAOt8D,WAAWh4C,KAAKm0G,cAEvBn0G,KAAKq0G,UAEVr0G,KAAKs0G,OAAOt8D,WAAWh4C,KAAKq0G,cAG3Br0G,MAAK+uG,gBAEV/uG,KAAKs0G,OAAO9xF,QACZxiB,KAAKs0G,OAAOb,YAAc,EAIlC,IAAe,KAAXp9C,GAAiB9uD,OAAOuE,KAAK9L,KAAKuzG,SAAS1rG,OAAS,EAIpD,MAAO7H,KAGX,IAAe,KAAXq2D,EACJ,CAGI,GAFAr2D,KAAK8zG,cAAgBz9C,GAEjBr2D,KAAKuzG,QAAQl9C,GA2Bb,MAAOr2D,KAxBPA,MAAKuZ,SAAWvZ,KAAKuzG,QAAQl9C,GAAQ3lD,MACrC1Q,KAAKga,OAASha,KAAKuzG,QAAQl9C,GAAQr8C,OACnCha,KAAKonD,KAAOpnD,KAAKuzG,QAAQl9C,GAAQjP,KACjCpnD,KAAK6b,SAAW7b,KAAKuzG,QAAQl9C,GAAQx6C,SACrC7b,KAAK0zG,WAAa1zG,KAAKuzG,QAAQl9C,GAAQq9C,WAEjB,mBAAX15F,KAEPha,KAAKga,OAASA,GAGE,mBAATotC,KAEPpnD,KAAKonD,KAAOA,GAGhBpnD,KAAKo1G,YAAc/+C,EACnBr2D,KAAKq1G,cAAgBr1G,KAAKuZ,SAC1BvZ,KAAKs1G,YAAct1G,KAAKga,OACxBha,KAAKy1G,UAAYz1G,KAAKonD,SAU1B7tC,GAAWA,GAAY,EAER7P,SAAXsQ,IAAwBA,EAASha,KAAKi1G,SAC7BvrG,SAAT09C,IAAsBA,EAAOpnD,KAAKonD,MAEtCpnD,KAAKuZ,SAAWxT,KAAKoM,IAAI,EAAGoH,GAC5BvZ,KAAKga,OAASA,EACdha,KAAKonD,KAAOA,EACZpnD,KAAK6b,SAAW,EAChB7b,KAAK0zG,WAAa,EAElB1zG,KAAKo1G,YAAc/+C,EACnBr2D,KAAKq1G,cAAgB97F,EACrBvZ,KAAKs1G,YAAct7F,EACnBha,KAAKy1G,UAAYruD,CAwHrB,OArHIpnD,MAAK8uG,cAGD9uG,KAAKwa,KAAKsF,MAAMgmF,eAAe9lG,KAAK+L,MAEpC/L,KAAKs0G,OAASt0G,KAAKqkB,QAAQ6xF,qBAEvBl2G,KAAKm0G,aAELn0G,KAAKs0G,OAAOx8D,QAAQ93C,KAAKm0G,cAIzBn0G,KAAKs0G,OAAOx8D,QAAQ93C,KAAKq0G,UAG7Br0G,KAAKk1G,QAAUl1G,KAAKwa,KAAKsF,MAAMonF,aAAalnG,KAAK+L,KACjD/L,KAAKs0G,OAAOt8C,OAASh4D,KAAKk1G,QAEtBl1G,KAAKonD,MAAmB,KAAXiP,IAEbr2D,KAAKs0G,OAAOltD,MAAO,GAGlBpnD,KAAKonD,MAAmB,KAAXiP,IAEdr2D,KAAKs0G,OAAOuB,QAAU71G,KAAK41G,eAAetvG,KAAKtG,OAGnDA,KAAKwzG,cAAgBxzG,KAAKs0G,OAAOt8C,OAAOn8C,SAElB,IAAlB7b,KAAK6b,WAEL7b,KAAK6b,SAAW7b,KAAKwzG,cACrBxzG,KAAK0zG,WAAa3tG,KAAKG,KAA0B,IAArBlG,KAAKwzG,gBAIX9pG,SAAtB1J,KAAKs0G,OAAO5jG,MAEZ1Q,KAAKs0G,OAAO6B,YAAY,EAAGn2G,KAAKuZ,SAAUvZ,KAAK6b,UAI3C7b,KAAKonD,MAAmB,KAAXiP,EAEbr2D,KAAKs0G,OAAO5jG,MAAM,EAAG,GAIrB1Q,KAAKs0G,OAAO5jG,MAAM,EAAG1Q,KAAKuZ,SAAUvZ,KAAK6b,UAIjD7b,KAAKg+F,WAAY,EACjBh+F,KAAK+4F,UAAY/4F,KAAKwa,KAAKmE,KAAKA,KAChC3e,KAAKyzG,YAAc,EACnBzzG,KAAK2zG,SAAW3zG,KAAK+4F,UAAY/4F,KAAK0zG,WACtC1zG,KAAK60G,OAAOh2F,SAAS7e,QAIrBA,KAAKg0G,iBAAkB,EAEnBh0G,KAAKwa,KAAKsF,MAAM4lF,SAAS1lG,KAAK+L,MAAQ/L,KAAKwa,KAAKsF,MAAM4lF,SAAS1lG,KAAK+L,KAAKk4F,cAAe,GAExFjkG,KAAKwa,KAAKyF,MAAMkxF,OAAOnxG,KAAK+L,IAAK/L,OAMrCA,KAAKwa,KAAKsF,MAAM4lF,SAAS1lG,KAAK+L,MAAQ/L,KAAKwa,KAAKsF,MAAM4lF,SAAS1lG,KAAK+L,KAAKu3B,QAEzEtjC,KAAKwa,KAAKsF,MAAM2lF,YAAYzlG,KAAK+L,KACjC/L,KAAKg0G,iBAAkB,GAInBh0G,KAAKs0G,SAAWt0G,KAAKwa,KAAKkS,OAAOwO,UAAuC,IAA3Bl7B,KAAKs0G,OAAO5uB,aAEzD1lF,KAAKs0G,OAAOptD,OAEZlnD,KAAKwzG,cAAgBxzG,KAAKs0G,OAAOz4F,SAEX,IAAlB7b,KAAK6b,WAEL7b,KAAK6b,SAAW7b,KAAKwzG,cACrBxzG,KAAK0zG,WAAkC,IAArB1zG,KAAKwzG,eAG3BxzG,KAAKs0G,OAAOb,YAAczzG,KAAKuZ,SAC/BvZ,KAAKs0G,OAAO8B,MAAQp2G,KAAKm1G,OAErBn1G,KAAKm1G,QAAUn1G,KAAKwa,KAAKyF,MAAMo2F,KAE/Br2G,KAAKs0G,OAAOt6F,OAAS,EAIrBha,KAAKs0G,OAAOt6F,OAASha,KAAKi1G,QAG9Bj1G,KAAKg+F,WAAY,EACjBh+F,KAAK+4F,UAAY/4F,KAAKwa,KAAKmE,KAAKA,KAChC3e,KAAKyzG,YAAc,EACnBzzG,KAAK2zG,SAAW3zG,KAAK+4F,UAAY/4F,KAAK0zG,WAEtC1zG,KAAK60G,OAAOh2F,SAAS7e,OAIrBA,KAAKg0G,iBAAkB,EAK5Bh0G,MAaXojB,QAAS,SAAUizC,EAAQ98C,EAAUS,EAAQotC,GAEzCiP,EAASA,GAAU,GACnB98C,EAAWA,GAAY,EACvBS,EAASA,GAAU,EACNtQ,SAAT09C,IAAsBA,GAAO,GAEjCpnD,KAAKknD,KAAKmP,EAAQ98C,EAAUS,EAAQotC,GAAM,IAS9C5kC,MAAO,WAECxiB,KAAKg+F,WAAah+F,KAAKs0G,SAEvBt0G,KAAK6gB,QAAS,EACd7gB,KAAK4zG,eAAiB5zG,KAAKyzG,YAC3BzzG,KAAK6zG,WAAa7zG,KAAKwa,KAAKmE,KAAKA,KACjC3e,KAAKu1G,WAAav1G,KAAKs0G,OAAOb,YAC9BzzG,KAAKuiB,QAAQ1D,SAAS7e,MACtBA,KAAKs8B,SAUb5Z,OAAQ,WAEJ,GAAI1iB,KAAK6gB,QAAU7gB,KAAKs0G,OACxB,CACI,GAAIt0G,KAAK8uG,cACT,CACI,GAAI7+F,GAAIlK,KAAKoM,IAAI,EAAGnS,KAAKuZ,SAAYvZ,KAAK4zG,eAAiB,IAE3D5zG,MAAKs0G,OAASt0G,KAAKqkB,QAAQ6xF,qBAC3Bl2G,KAAKs0G,OAAOt8C,OAASh4D,KAAKk1G,QAEtBl1G,KAAKm0G,aAELn0G,KAAKs0G,OAAOx8D,QAAQ93C,KAAKm0G,cAIzBn0G,KAAKs0G,OAAOx8D,QAAQ93C,KAAKq0G,UAGzBr0G,KAAKonD,OAELpnD,KAAKs0G,OAAOltD,MAAO,GAGlBpnD,KAAKonD,MAA+B,KAAvBpnD,KAAK8zG,gBAEnB9zG,KAAKs0G,OAAOuB,QAAU71G,KAAK41G,eAAetvG,KAAKtG,MAGnD,IAAI6b,GAAW7b,KAAK6b,SAAY7b,KAAK4zG,eAAiB,GAE5BlqG,UAAtB1J,KAAKs0G,OAAO5jG,MAEZ1Q,KAAKs0G,OAAO6B,YAAY,EAAGlmG,EAAG4L,GAK1B7b,KAAKonD,MAAQpnD,KAAKwa,KAAKkS,OAAOkO,OAGS,KAAnC56B,KAAKwa,KAAKkS,OAAOk2D,cAEjB5iF,KAAKs0G,OAAO5jG,MAAM,GAIlB1Q,KAAKs0G,OAAO5jG,MAAM,EAAGT,GAKzBjQ,KAAKs0G,OAAO5jG,MAAM,EAAGT,EAAG4L,OAMhC7b,MAAKs0G,OAAOb,YAAczzG,KAAKu1G,WAC/Bv1G,KAAKs0G,OAAOptD,MAGhBlnD,MAAKg+F,WAAY,EACjBh+F,KAAK6gB,QAAS,EACd7gB,KAAK+4F,WAAc/4F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK6zG,WAC9C7zG,KAAKyiB,SAAS5D,SAAS7e,QAU/Bs8B,KAAM,WAEF,GAAIt8B,KAAKg+F,WAAah+F,KAAKs0G,OAEvB,GAAIt0G,KAAK8uG,cACT,CACI,GAAyBplG,SAArB1J,KAAKs0G,OAAOh4E,KAEZt8B,KAAKs0G,OAAO2B,QAAQ,OAIpB,KACIj2G,KAAKs0G,OAAOh4E,KAAK,GAErB,MAAOrxB,IAMPjL,KAAKm0G,aAELn0G,KAAKs0G,OAAOt8D,WAAWh4C,KAAKm0G,cAEvBn0G,KAAKq0G,UAEVr0G,KAAKs0G,OAAOt8D,WAAWh4C,KAAKq0G,cAG3Br0G,MAAK+uG,gBAEV/uG,KAAKs0G,OAAO9xF,QACZxiB,KAAKs0G,OAAOb,YAAc,EAOlC,IAHAzzG,KAAKg0G,iBAAkB,EACvBh0G,KAAKg+F,WAAY,GAEZh+F,KAAK6gB,OACV,CACI,GAAIy1F,GAAat2G,KAAK8zG,aAEK,MAAvB9zG,KAAK8zG,eAEL9zG,KAAKg1G,iBAAiBn2F,SAAS7e,KAAK8zG,cAAe9zG,MAGvDA,KAAK8zG,cAAgB,GAEE,OAAnB9zG,KAAK+zG,WAEL/zG,KAAK+zG,UAAUz3E,OAGnBt8B,KAAK80G,OAAOj2F,SAAS7e,KAAMs2G,KAiBnCC,OAAQ,SAAU16F,EAAUurC,EAAMiP,GAEjB3sD,SAAT09C,IAAsBA,GAAO,GAClB19C,SAAX2sD,IAAwBA,EAASr2D,KAAK8zG,eAEtC9zG,KAAK6gB,SAKT7gB,KAAKknD,KAAKmP,EAAQ,EAAG,EAAGjP,GAExBpnD,KAAKw2G,OAAO36F,EAAU,KAY1B46F,QAAS,SAAU56F,GAEf7b,KAAKw2G,OAAO36F,EAAU,IAa1B26F,OAAQ,SAAU36F,EAAU7B,GAExB,GAAKha,KAAKg+F,YAAah+F,KAAK6gB,QAAU7G,IAAWha,KAAKga,OAAtD,CAOA,GAFiBtQ,SAAbmS,IAA0BA,EAAW,KAE1BnS,SAAXsQ,EAGA,WADA5R,SAAQG,KAAK,4CAIjBvI,MAAK+zG,UAAY/zG,KAAKwa,KAAK3I,IAAIs/C,MAAMnxD,MAAMoM,IAAM4N,OAAQA,GAAU6B,EAAUxb,EAAOyyF,OAAOK,OAAOC,MAAM,GAExGpzF,KAAK+zG,UAAUrc,WAAW7lF,IAAI7R,KAAK02G,aAAc12G,QAUrD02G,aAAc,WAEV12G,KAAKsb,eAAeuD,SAAS7e,KAAMA,KAAKga,QAEpB,IAAhBha,KAAKga,QAELha,KAAKs8B,QAgBbq6E,mBAAoB,SAAUC,GAItB52G,KAAK+uG,eAAiB/uG,KAAKs0G,SAE3Bt0G,KAAKs0G,OAAOt6F,OAAS48F,EAAe52G,KAAKi1G,UAWjDnxF,QAAS,SAAUhB,GAEApZ,SAAXoZ,IAAwBA,GAAS,GAErC9iB,KAAKs8B,OAEDxZ,EAEA9iB,KAAKwa,KAAKyF,MAAM6C,OAAO9iB,OAIvBA,KAAKuzG,WACLvzG,KAAKqkB,QAAU,KACfrkB,KAAKk1G,QAAU,KACfl1G,KAAKm0G,aAAe,KAEpBn0G,KAAK40G,UAAUpuF,UACfxmB,KAAK60G,OAAOruF,UACZxmB,KAAKuiB,QAAQiE,UACbxmB,KAAKyiB,SAAS+D,UACdxmB,KAAKu3F,OAAO/wE,UACZxmB,KAAK80G,OAAOtuF,UACZxmB,KAAK+0G,OAAOvuF,UACZxmB,KAAKg1G,iBAAiBxuF,aAOlCnmB,EAAOm2D,MAAMnwD,UAAU8B,YAAc9H,EAAOm2D,MAO5CjvD,OAAO2E,eAAe7L,EAAOm2D,MAAMnwD,UAAW,cAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKsF,MAAM4lF,SAAS1lG,KAAK+L,KAAKk4F,cAUlD18F,OAAO2E,eAAe7L,EAAOm2D,MAAMnwD,UAAW,aAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKsF,MAAMgmF,eAAe9lG,KAAK+L,QASnDxE,OAAO2E,eAAe7L,EAAOm2D,MAAMnwD,UAAW,QAE1C2F,IAAK,WAED,MAAQhM,MAAKm1G,QAAUn1G,KAAKwa,KAAKyF,MAAMo2F,MAI3CpqG,IAAK,SAAU1C,GAEXA,EAAQA,IAAS,EAEbA,IAAUvJ,KAAKm1G,SAKf5rG,GAEAvJ,KAAKm1G,QAAS,EACdn1G,KAAKw1G,YAAcx1G,KAAKs1G,YAEpBt1G,KAAK8uG,cAEL9uG,KAAKq0G,SAASK,KAAKnrG,MAAQ,EAEtBvJ,KAAK+uG,eAAiB/uG,KAAKs0G,SAEhCt0G,KAAKs0G,OAAOt6F,OAAS,KAKzBha,KAAKm1G,QAAS,EAEVn1G,KAAK8uG,cAEL9uG,KAAKq0G,SAASK,KAAKnrG,MAAQvJ,KAAKw1G,YAE3Bx1G,KAAK+uG,eAAiB/uG,KAAKs0G,SAEhCt0G,KAAKs0G,OAAOt6F,OAASha,KAAKw1G,cAIlCx1G,KAAK+0G,OAAOl2F,SAAS7e,UAU7BuH,OAAO2E,eAAe7L,EAAOm2D,MAAMnwD,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKi1G,SAGhBhpG,IAAK,SAAU1C,GAQX,MALIvJ,MAAKwa,KAAKkS,OAAOo2D,SAAW9iF,KAAK+uG,gBAEjCxlG,EAAQvJ,KAAKwa,KAAK0E,KAAK1J,MAAMjM,EAAO,EAAG,IAGvCvJ,KAAKm1G,YAELn1G,KAAKw1G,YAAcjsG,IAIvBvJ,KAAKs1G,YAAc/rG,EACnBvJ,KAAKi1G,QAAU1rG,OAEXvJ,KAAK8uG,cAEL9uG,KAAKq0G,SAASK,KAAKnrG,MAAQA,EAEtBvJ,KAAK+uG,eAAiB/uG,KAAKs0G,SAEhCt0G,KAAKs0G,OAAOt6F,OAASzQ,QA+BjClJ,EAAO25B,aAAe,SAAUxf,GAK5Bxa,KAAKwa,KAAOA,EAKZxa,KAAK62G,cAAgB,GAAIx2G,GAAO+a,OAMhCpb,KAAK82G,eAAiB,GAAIz2G,GAAO+a,OAMjCpb,KAAK+0G,OAAS,GAAI10G,GAAO+a,OAMzBpb,KAAK+2G,SAAW,GAAI12G,GAAO+a,OAM3Bpb,KAAKqkB,QAAU,KAMfrkB,KAAK8uG,eAAgB,EAMrB9uG,KAAK+uG,eAAgB,EAMrB/uG,KAAKwsG,SAAU,EAMfxsG,KAAKszG,iBAAkB,EAMvBtzG,KAAKkkG,aAAc,EAMnBlkG,KAAKg3G,SAAW,GAShBh3G,KAAKy8B,aAAc,EAOnBz8B,KAAKi3G,YAAa,EAOlBj3G,KAAKm1G,QAAS,EAOdn1G,KAAKk3G,cAAgB,KAOrBl3G,KAAKi1G,QAAU,EAMfj1G,KAAKm3G,WAMLn3G,KAAKo3G,WAAa,GAAI/2G,GAAO4zB,SAM7Bj0B,KAAKq3G,WAAY,EAMjBr3G,KAAKs3G,eAAiB,KAMtBt3G,KAAKu3G,cAAgB,MAIzBl3G,EAAO25B,aAAa3zB,WAOhBsW,KAAM,WAQF,GANI3c,KAAKwa,KAAKkS,OAAOkQ,KAAO58B,KAAKwa,KAAKkS,OAAOiO,YAAa,IAEtD36B,KAAKg3G,SAAW,GAIhBjvG,OAAqB,aACzB,CAEI,GAAIA,OAAqB,aAAEyvG,gBAAiB,EAIxC,MAFAx3G,MAAKwsG,SAAU,OACfxsG,KAAKkkG,aAAc,EAKvB,IAAIn8F,OAAqB,aAAE0vG,mBAAoB,EAI3C,MAFAz3G,MAAK+uG,eAAgB,OACrB/uG,KAAKkkG,aAAc,GAK3B,GAAIn8F,OAAqB,cAAKA,OAAqB,aAAE2vG,aAEjD13G,KAAKqkB,QAAUtc,OAAqB,aAAE2vG,iBAItC,IAAM3vG,OAAqB,aAEvB,IACI/H,KAAKqkB,QAAU,GAAItc,QAAqB,aAC1C,MAAOs+E,GACLrmF,KAAKqkB,QAAU,KACfrkB,KAAK8uG,eAAgB,EACrB9uG,KAAKkkG,aAAc,MAGtB,IAAMn8F,OAA2B,mBAElC,IACI/H,KAAKqkB,QAAU,GAAItc,QAA2B,mBAChD,MAAOs+E,GACLrmF,KAAKqkB,QAAU,KACfrkB,KAAK8uG,eAAgB,EACrB9uG,KAAKkkG,aAAc,EAK/B,GAAqB,OAAjBlkG,KAAKqkB,QACT,CAEI,GAAwB3a,SAApB3B,OAAc,MAGd,YADA/H,KAAKwsG,SAAU,EAKfxsG,MAAK+uG,eAAgB,MAKzB/uG,MAAK8uG,eAAgB,EAEWplG,SAA5B1J,KAAKqkB,QAAQmwF,WAEbx0G,KAAKu0G,WAAav0G,KAAKqkB,QAAQowF,iBAI/Bz0G,KAAKu0G,WAAav0G,KAAKqkB,QAAQmwF,aAGnCx0G,KAAKu0G,WAAWG,KAAKnrG,MAAQ,EAC7BvJ,KAAKu0G,WAAWz8D,QAAQ93C,KAAKqkB,QAAQ45C,YAGpCj+D,MAAKwsG,WAGDxsG,KAAKwa,KAAKkS,OAAOwO,UAAYl7B,KAAKwa,KAAKkS,OAAOkQ,KAAQ70B,OAAqB,cAAKA,OAAqB,aAAE4vG,mBAExG33G,KAAK43G,gBAYjBA,aAAc,WAEN53G,KAAKwsG,SAAYzkG,OAAqB,cAAKA,OAAqB,aAAEyvG,gBAAiB,IAKnFx3G,KAAKwa,KAAKkS,OAAO40D,WAAa,EAE9BthF,KAAKwa,KAAKuF,MAAMif,MAAMwP,qBAAqBxuC,KAAK63G,OAAQ73G,MAAM,GAI9DA,KAAKwa,KAAKuF,MAAMif,MAAMwP,qBAAqBxuC,KAAK63G,OAAQ73G,MAG5DA,KAAKkkG,aAAc,IAUvB2T,OAAQ,WAEJ,GAAI73G,KAAKwsG,UAAYxsG,KAAKkkG,aAAsC,OAAvBlkG,KAAKk3G,cAE1C,OAAO,CAIX,IAAIl3G,KAAK+uG,cAEL/uG,KAAKkkG,aAAc,EACnBlkG,KAAKk3G,cAAgB,SAEpB,IAAIl3G,KAAK8uG,cACd,CAII,GAAI92C,GAASh4D,KAAKqkB,QAAQ6uD,aAAa,EAAG,EAAG,MAC7ClzE,MAAKk3G,cAAgBl3G,KAAKqkB,QAAQ6xF,qBAClCl2G,KAAKk3G,cAAcl/C,OAASA,EAC5Bh4D,KAAKk3G,cAAcp/D,QAAQ93C,KAAKqkB,QAAQ45C,aAEPv0D,SAA7B1J,KAAKk3G,cAAcxmG,MAEnB1Q,KAAKk3G,cAAcY,OAAO,GAI1B93G,KAAKk3G,cAAcxmG,MAAM,GAKjC,OAAO,GASXqnG,QAAS,WAEL,IAAI/3G,KAAKwsG,QAKT,IAAK,GAAI1kG,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAEjC9H,KAAKm3G,QAAQrvG,IAEb9H,KAAKm3G,QAAQrvG,GAAGw0B,QAW5B06D,SAAU,WAEN,IAAIh3F,KAAKwsG,QAKT,IAAK,GAAI1kG,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAEjC9H,KAAKm3G,QAAQrvG,IAEb9H,KAAKm3G,QAAQrvG,GAAG0a,SAW5By0E,UAAW,WAEP,IAAIj3F,KAAKwsG,QAKT,IAAK,GAAI1kG,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAEjC9H,KAAKm3G,QAAQrvG,IAEb9H,KAAKm3G,QAAQrvG,GAAG4a,UAa5ByuF,OAAQ,SAAUplG,EAAKkU,GAEnBA,EAAQA,GAAS,IAEjB,IAAI+3F,GAAYh4G,KAAKwa,KAAKsF,MAAMonF,aAAan7F,EAE7C,IAAIisG,GAEIh4G,KAAKwa,KAAKsF,MAAMgmF,eAAe/5F,MAAS,EAC5C,CACI/L,KAAKwa,KAAKsF,MAAM8lF,YAAY75F,EAAK,cAAc,EAE/C,IAAI0a,GAAQzmB,IAEZ,KACIA,KAAKqkB,QAAQ4zF,gBAAgBD,EAAW,SAAUhgD,GAE1CA,IAEAvxC,EAAMjM,KAAKsF,MAAM+lF,aAAa95F,EAAKisD,GACnCvxC,EAAMowF,cAAch4F,SAAS9S,EAAKkU,MAI9C,MAAOhV,OAiBnBitG,mBAAoB,SAAUC,EAAO7kF,EAAUvQ,GAEtB,gBAAVo1F,KAEPA,GAAUA,IAGdn4G,KAAKo3G,WAAW13F,OAEhB,KAAK,GAAI5X,GAAI,EAAGA,EAAIqwG,EAAMtwG,OAAQC,IAE1BqwG,EAAMrwG,YAAczH,GAAOm2D,MAEtBx2D,KAAKwa,KAAKsF,MAAMgmF,eAAeqS,EAAMrwG,GAAGiE,MAEzC/L,KAAKo3G,WAAWvlG,IAAIsmG,EAAMrwG,GAAGiE,KAG3B/L,KAAKwa,KAAKsF,MAAMgmF,eAAeqS,EAAMrwG,KAE3C9H,KAAKo3G,WAAWvlG,IAAIsmG,EAAMrwG,GAKJ,KAA1B9H,KAAKo3G,WAAWviF,OAEhB70B,KAAKq3G,WAAY,EACjB/jF,EAASxsB,KAAKic,KAId/iB,KAAKq3G,WAAY,EACjBr3G,KAAKs3G,eAAiBhkF,EACtBtzB,KAAKu3G,cAAgBx0F,IAW7BxE,OAAQ,WAEJ,IAAIve,KAAKwsG,QAAT,EAKIxsG,KAAKkkG,aAAsC,OAAvBlkG,KAAKk3G,eAA2Bl3G,KAAKk3G,cAAckB,gBAAkBp4G,KAAKk3G,cAAcmB,eAAiBr4G,KAAKk3G,cAAckB,gBAAkBp4G,KAAKk3G,cAAcoB,iBAErLt4G,KAAKkkG,aAAc;AACnBlkG,KAAKk3G,cAAgB,KAGzB,KAAK,GAAIpvG,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAErC9H,KAAKm3G,QAAQrvG,GAAGyW,QAGpB,IAAIve,KAAKq3G,UACT,CAGI,IAFA,GAAItrG,GAAM/L,KAAKo3G,WAAWnrE,MAEnBlgC,GAEC/L,KAAKwa,KAAKsF,MAAMgmF,eAAe/5F,IAE/B/L,KAAKo3G,WAAWt0F,OAAO/W,GAG3BA,EAAM/L,KAAKo3G,WAAW7lF,IAGI,KAA1BvxB,KAAKo3G,WAAWviF,QAEhB70B,KAAKq3G,WAAY,EACjBr3G,KAAKs3G,eAAexwG,KAAK9G,KAAKu3G,mBAgB1C1lG,IAAK,SAAU9F,EAAKiO,EAAQotC,EAAMtP,GAEfpuC,SAAXsQ,IAAwBA,EAAS,GACxBtQ,SAAT09C,IAAsBA,GAAO,GACjB19C,SAAZouC,IAAyBA,EAAU93C,KAAKszG,gBAE5C,IAAIrzF,GAAQ,GAAI5f,GAAOm2D,MAAMx2D,KAAKwa,KAAMzO,EAAKiO,EAAQotC,EAAMtP,EAI3D,OAFA93C,MAAKm3G,QAAQvkG,KAAKqN,GAEXA,GAWXwxC,UAAW,SAAS1lD,GAEhB,GAAIylD,GAAc,GAAInxD,GAAOo2D,YAAYz2D,KAAKwa,KAAMzO,EAEpD,OAAOylD,IAWX1uC,OAAQ,SAAU7C,GAId,IAFA,GAAInY,GAAI9H,KAAKm3G,QAAQtvG,OAEdC,KAEH,GAAI9H,KAAKm3G,QAAQrvG,KAAOmY,EAIpB,MAFAjgB,MAAKm3G,QAAQrvG,GAAGgc,SAAQ,GACxB9jB,KAAKm3G,QAAQh0F,OAAOrb,EAAG,IAChB,CAIf,QAAO,GAYXywG,YAAa,SAAUxsG,GAKnB,IAHA,GAAIjE,GAAI9H,KAAKm3G,QAAQtvG,OACjB0uB,EAAU,EAEPzuB,KAEC9H,KAAKm3G,QAAQrvG,GAAGiE,MAAQA,IAExB/L,KAAKm3G,QAAQrvG,GAAGgc,SAAQ,GACxB9jB,KAAKm3G,QAAQh0F,OAAOrb,EAAG,GACvByuB,IAIR,OAAOA,IAaX2wB,KAAM,SAAUn7C,EAAKiO,EAAQotC,GAEzB,IAAIpnD,KAAKwsG,QAAT,CAKA,GAAIvsF,GAAQjgB,KAAK6R,IAAI9F,EAAKiO,EAAQotC,EAIlC,OAFAnnC,GAAMinC,OAECjnC,IAUXyc,QAAS,WAEL,IAAI18B,KAAKm1G,OAAT,CAKAn1G,KAAKm1G,QAAS,EAEVn1G,KAAK8uG,gBAEL9uG,KAAKw1G,YAAcx1G,KAAKu0G,WAAWG,KAAKnrG,MACxCvJ,KAAKu0G,WAAWG,KAAKnrG,MAAQ,EAIjC,KAAK,GAAIzB,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAEjC9H,KAAKm3G,QAAQrvG,GAAGinG,gBAEhB/uG,KAAKm3G,QAAQrvG,GAAGuuG,MAAO,EAI/Br2G,MAAK+0G,OAAOl2F,aAUhBge,UAAW,WAEP,GAAK78B,KAAKm1G,SAAUn1G,KAAKi3G,WAAzB,CAKAj3G,KAAKm1G,QAAS,EAEVn1G,KAAK8uG,gBAEL9uG,KAAKu0G,WAAWG,KAAKnrG,MAAQvJ,KAAKw1G,YAItC,KAAK,GAAI1tG,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAEjC9H,KAAKm3G,QAAQrvG,GAAGinG,gBAEhB/uG,KAAKm3G,QAAQrvG,GAAGuuG,MAAO,EAI/Br2G,MAAK+2G,SAASl4F,aASlBiF,QAAS,WAEL9jB,KAAK+3G,SAEL,KAAK,GAAIjwG,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAEjC9H,KAAKm3G,QAAQrvG,IAEb9H,KAAKm3G,QAAQrvG,GAAGgc,SAIxB9jB,MAAKm3G,WAELn3G,KAAK62G,cAAcrwF,UAEfxmB,KAAKqkB,UAEDtc,OAAqB,aAGrBA,OAAqB,aAAE2vG,aAAe13G,KAAKqkB,QAIvCrkB,KAAKqkB,QAAQm0F,OAEbx4G,KAAKqkB,QAAQm0F,WASjCn4G,EAAO25B,aAAa3zB,UAAU8B,YAAc9H,EAAO25B,aAMnDzyB,OAAO2E,eAAe7L,EAAO25B,aAAa3zB,UAAW,QAEjD2F,IAAK,WAED,MAAOhM,MAAKm1G,QAIhBlpG,IAAK,SAAU1C,GAIX,GAFAA,EAAQA,IAAS,EAGjB,CACI,GAAIvJ,KAAKm1G,OAEL,MAGJn1G,MAAKi3G,YAAa,EAClBj3G,KAAK08B,cAGT,CACI,IAAK18B,KAAKm1G,OAEN,MAGJn1G,MAAKi3G,YAAa,EAClBj3G,KAAK68B,gBAUjBt1B,OAAO2E,eAAe7L,EAAO25B,aAAa3zB,UAAW,UAEjD2F,IAAK,WAED,MAAOhM,MAAKi1G,SAIhBhpG,IAAK,SAAU1C,GAWX,GATIA,EAAQ,EAERA,EAAQ,EAEHA,EAAQ,IAEbA,EAAQ,GAGRvJ,KAAKi1G,UAAY1rG,EACrB,CAGI,GAFAvJ,KAAKi1G,QAAU1rG,EAEXvJ,KAAK8uG,cAEL9uG,KAAKu0G,WAAWG,KAAKnrG,MAAQA,MAK7B,KAAK,GAAIzB,GAAI,EAAGA,EAAI9H,KAAKm3G,QAAQtvG,OAAQC,IAEjC9H,KAAKm3G,QAAQrvG,GAAGinG,eAEhB/uG,KAAKm3G,QAAQrvG,GAAG6uG,mBAAmBptG,EAK/CvJ,MAAK82G,eAAej4F,SAAStV,OAoDzClJ,EAAOk5B,aAAe,SAAU/e,EAAMzK,EAAOC,GAQzChQ,KAAKwa,KAAOA,EAQZxa,KAAKy4G,IAAMp4G,EAAO+qB,IAOlBprB,KAAKk1C,KAAO,KAOZl1C,KAAK+P,MAAQ,EAOb/P,KAAKgQ,OAAS,EASdhQ,KAAK04G,SAAW,KAUhB14G,KAAK28E,SAAW,KAShB38E,KAAK24G,UAAY,KAUjB34G,KAAK44G,UAAY,KASjB54G,KAAKoO,OAAS,GAAI/N,GAAO2M,MAUzBhN,KAAK64G,gBAAiB,EAUtB74G,KAAK84G,eAAgB,EAWrB94G,KAAK+4G,sBAAuB,EAO5B/4G,KAAKg5G,wBAAyB,EAO9Bh5G,KAAKi5G,sBAAuB,EA0B5Bj5G,KAAKk5G,oBAAsB,GAAI74G,GAAO+a,OAUtCpb,KAAKm5G,0BAA4B,GAAI94G,GAAO+a,OAU5Cpb,KAAKo5G,0BAA4B,GAAI/4G,GAAO+a,OAe5Cpb,KAAKq5G,iBAAmB,KAQxBr5G,KAAKs5G,yBAA2B,KAuBhCt5G,KAAKu5G,iBAAmB,GAAIl5G,GAAO+a,OAWnCpb,KAAKw5G,mBAAqB,GAAIn5G,GAAO+a,OAWrCpb,KAAKy5G,kBAAoB,GAAIp5G,GAAO+a,OAUpCpb,KAAK05G,kBAAoB15G,KAAKy4G,IAAIkB,uBAOlC35G,KAAKF,YAAc,GAAIO,GAAO2M,MAAM,EAAG,GAQvChN,KAAK45G,oBAAsB,GAAIv5G,GAAO2M,MAAM,EAAG,GAS/ChN,KAAKihG,QAAUp2F,KAAM,EAAG6D,IAAK,EAAG9D,MAAO,EAAG+D,OAAQ,EAAG1I,EAAG,EAAGwG,EAAG,GAO9DzM,KAAK2a,OAAS,GAAIta,GAAOkN,UAOzBvN,KAAK65G,YAAc,EAOnB75G,KAAK85G,kBAAoB,EAQzB95G,KAAKmsB,MAAQ,KAebnsB,KAAK+5G,mBACDnvG,MAAO,SACP+D,OAAQ,IA6BZ3O,KAAKg6G,eACDC,oBAAoB,EACpBC,oBAAqB,KACrBC,WAAW,EACXC,SAAU,KACVC,4BAA4B,EAC5BC,iBAAiB,EACjBC,gBAAiB,IAQrBv6G,KAAKw6G,WAAan6G,EAAOk5B,aAAakhF,SAOtCz6G,KAAK06G,qBAAuBr6G,EAAOk5B,aAAakhF,SAUhDz6G,KAAK26G,gBAAiB,EAUtB36G,KAAK2qF,WAAa,KAOlB3qF,KAAK46G,kBAAoB,GAAIv6G,GAAO2M,MAAM,EAAG,GAW7ChN,KAAK66G,oBAAsB,IAiB3B76G,KAAK86G,aAAe,GAAIz6G,GAAO+a,OAO/Bpb,KAAK+6G,SAAW,KAOhB/6G,KAAKg7G,gBAAkB,KAMvBh7G,KAAKi7G,kBAAoB,KAOzBj7G,KAAKk7G,mBAAqB,KAO1Bl7G,KAAKm7G,UAAY,GAAI96G,GAAOkN,UAO5BvN,KAAKo7G,iBAAmB,GAAI/6G,GAAO2M,MAAM,EAAG,GAO5ChN,KAAKq7G,eAAiB,GAAIh7G,GAAO2M,MAAM,EAAG,GAO1ChN,KAAKs7G,YAAc,EASnBt7G,KAAKu7G,gBAAkB,EAOvBv7G,KAAKw7G,qBAAuB,IAO5Bx7G,KAAKy7G,cAAgB,GAAIp7G,GAAOkN,UAOhCvN,KAAK07G,YAAc,GAAIr7G,GAAOkN,UAO9BvN,KAAK27G,wBAA0B,GAAIt7G,GAAOkN,UAO1CvN,KAAK47G,sBAAwB,GAAIv7G,GAAOkN,UAMxCvN,KAAK67G,SAAU,EAEXrhG,EAAKyQ,QAELjrB,KAAKkrB,YAAY1Q,EAAKyQ,QAG1BjrB,KAAK87G,WAAW/rG,EAAOC,IAU3B3P,EAAOk5B,aAAawiF,UAAY,EAQhC17G,EAAOk5B,aAAakhF,SAAW,EAQ/Bp6G,EAAOk5B,aAAayiF,SAAW,EAQ/B37G,EAAOk5B,aAAa0iF,OAAS,EAQ7B57G,EAAOk5B,aAAa2iF,WAAa,EAEjC77G,EAAOk5B,aAAalzB,WAQhBsW,KAAM,WAIF,GAAIw/F,GAASn8G,KAAKg6G,aAElBmC,GAAOlC,mBAAqBj6G,KAAKwa,KAAKkS,OAAOs4D,aAAehlF,KAAKwa,KAAKkS,OAAOwO,SAGxEl7B,KAAKwa,KAAKkS,OAAOk4D,MAAS5kF,KAAKwa,KAAKkS,OAAOg3D,QAAW1jF,KAAKwa,KAAKkS,OAAO20D,UAEpErhF,KAAKwa,KAAKkS,OAAO8X,UAAYxkC,KAAKwa,KAAKkS,OAAOkO,OAE9CuhF,EAAO/B,SAAW,GAAI/5G,GAAO2M,MAAM,EAAG,GAItCmvG,EAAO/B,SAAW,GAAI/5G,GAAO2M,MAAM,EAAG,IAI1ChN,KAAKwa,KAAKkS,OAAO20D,SAEjB86B,EAAOjC,oBAAsB,SAC7BiC,EAAO5B,gBAAkB,mBAIzB4B,EAAOjC,oBAAsB,GAC7BiC,EAAO5B,gBAAkB,GAK7B,IAAI9zF,GAAQzmB,IAEZA,MAAKo8G,mBAAqB,SAASjwF,GAC/B,MAAO1F,GAAM41F,kBAAkBlwF,IAGnCnsB,KAAKs8G,cAAgB,SAASnwF,GAC1B,MAAO1F,GAAM81F,aAAapwF,IAI9BpkB,OAAOskB,iBAAiB,oBAAqBrsB,KAAKo8G,oBAAoB,GACtEr0G,OAAOskB,iBAAiB,SAAUrsB,KAAKs8G,eAAe,GAElDt8G,KAAKg6G,cAAcC,qBAEnBj6G,KAAKw8G,kBAAoB,SAASrwF,GAC9B,MAAO1F,GAAMg2F,iBAAiBtwF,IAGlCnsB,KAAK08G,iBAAmB,SAASvwF,GAC7B,MAAO1F,GAAMk2F,gBAAgBxwF,IAGjCL,SAASO,iBAAiB,yBAA0BrsB,KAAKw8G,mBAAmB,GAC5E1wF,SAASO,iBAAiB,sBAAuBrsB,KAAKw8G,mBAAmB,GACzE1wF,SAASO,iBAAiB,qBAAsBrsB,KAAKw8G,mBAAmB,GACxE1wF,SAASO,iBAAiB,mBAAoBrsB,KAAKw8G,mBAAmB,GAEtE1wF,SAASO,iBAAiB,wBAAyBrsB,KAAK08G,kBAAkB,GAC1E5wF,SAASO,iBAAiB,qBAAsBrsB,KAAK08G,kBAAkB,GACvE5wF,SAASO,iBAAiB,oBAAqBrsB,KAAK08G,kBAAkB,GACtE5wF,SAASO,iBAAiB,kBAAmBrsB,KAAK08G,kBAAkB,IAGxE18G,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAK48G,aAAc58G,MAI1CA,KAAKy4G,IAAIptF,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,QAE1CpO,KAAK2a,OAAOnN,MAAMxN,KAAKoO,OAAOnI,EAAGjG,KAAKoO,OAAO3B,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAEjEhQ,KAAK68G,YAAY78G,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAG5ChQ,KAAK05G,kBAAoB15G,KAAKy4G,IAAIkB,qBAAqB35G,KAAKg6G,cAAcE,qBAEtE75G,EAAOy8G,WAEP98G,KAAKk1C,KAAO,GAAI70C,GAAOy8G,SAAS98G,KAAMA,KAAK+P,MAAO/P,KAAKgQ,SAG3DhQ,KAAK67G,SAAU,EAEgB,OAA3B77G,KAAKi7G,oBAELj7G,KAAKmuD,UAAYnuD,KAAKi7G,kBACtBj7G,KAAKi7G,kBAAoB,OAYjC/vF,YAAa,SAAUD,GAESvhB,SAAxBuhB,EAAkB,YAEdjrB,KAAK67G,QAEL77G,KAAKmuD,UAAYljC,EAAkB,UAInCjrB,KAAKi7G,kBAAoBhwF,EAAkB,WAIbvhB,SAAlCuhB,EAA4B,sBAE5BjrB,KAAK+8G,oBAAsB9xF,EAA4B,qBAGvDA,EAAyB,mBAEzBjrB,KAAKq5G,iBAAmBpuF,EAAyB,mBAezD6wF,WAAY,SAAU/rG,EAAOC,GAEzB,GAAIhJ,GACA0M,EAAO,GAAIrT,GAAOkN,SAEG,MAArBvN,KAAKwa,KAAKgP,SAEsB,gBAArBxpB,MAAKwa,KAAKgP,OAGjBxiB,EAAS8kB,SAAS0+D,eAAexqF,KAAKwa,KAAKgP,QAEtCxpB,KAAKwa,KAAKgP,QAAwC,IAA9BxpB,KAAKwa,KAAKgP,OAAOze,WAG1C/D,EAAShH,KAAKwa,KAAKgP,SAKtBxiB,GAaDhH,KAAK2qF,WAAa3jF,EAClBhH,KAAK26G,gBAAiB,EAEtB36G,KAAKg9G,gBAAgBh9G,KAAKy7G,eAE1B/nG,EAAK3D,MAAQ/P,KAAKy7G,cAAc1rG,MAChC2D,EAAK1D,OAAShQ,KAAKy7G,cAAczrG,OAEjChQ,KAAKoO,OAAOnC,IAAIjM,KAAKy7G,cAAcx1G,EAAGjG,KAAKy7G,cAAchvG,KAlBzDzM,KAAK2qF,WAAa,KAClB3qF,KAAK26G,gBAAiB,EAEtBjnG,EAAK3D,MAAQ/P,KAAKy4G,IAAIwE,aAAaltG,MACnC2D,EAAK1D,OAAShQ,KAAKy4G,IAAIwE,aAAajtG,OAEpChQ,KAAKoO,OAAOnC,IAAI,EAAG,GAevB,IAAIiwD,GAAW,EACXC,EAAY,CAEK,iBAAVpsD,GAEPmsD,EAAWnsD,GAKX/P,KAAK46G,kBAAkB30G,EAAIoE,SAAS0F,EAAO,IAAM,IACjDmsD,EAAWxoD,EAAK3D,MAAQ/P,KAAK46G,kBAAkB30G,GAG7B,gBAAX+J,GAEPmsD,EAAYnsD,GAKZhQ,KAAK46G,kBAAkBnuG,EAAIpC,SAAS2F,EAAQ,IAAM,IAClDmsD,EAAYzoD,EAAK1D,OAAShQ,KAAK46G,kBAAkBnuG,GAGrDyvD,EAAWn2D,KAAKI,MAAM+1D,GACtBC,EAAYp2D,KAAKI,MAAMg2D,GAEvBn8D,KAAKm7G,UAAU3tG,MAAM,EAAG,EAAG0uD,EAAUC,GAErCn8D,KAAKk9G,iBAAiBhhD,EAAUC,GAAW,IAU/CygD,aAAc,WAEV58G,KAAKm9G,aAAY,IAmBrBN,YAAa,SAAU9sG,EAAOC,GAE1BhQ,KAAKm7G,UAAU3tG,MAAM,EAAG,EAAGuC,EAAOC,GAE9BhQ,KAAKo9G,mBAAqB/8G,EAAOk5B,aAAa0iF,QAE9Cj8G,KAAKk9G,iBAAiBntG,EAAOC,GAAQ,GAGzChQ,KAAKm9G,aAAY,IAoBrBE,aAAc,SAAUC,EAAQC,EAAQC,EAAOC,GAE3Cz9G,KAAKo7G,iBAAiB5tG,MAAM8vG,EAAQC,GACpCv9G,KAAKq7G,eAAe7tG,MAAc,EAARgwG,EAAmB,EAARC,GACrCz9G,KAAKm9G,aAAY,IAwBrBO,kBAAmB,SAAUpqF,EAAUjP,GAEnCrkB,KAAK+6G,SAAWznF,EAChBtzB,KAAKg7G,gBAAkB32F,GAY3Bs5F,iBAAkB,WAEd,IAAKt9G,EAAOkN,UAAU0M,eAAeja,KAAMA,KAAK27G,2BAC3Ct7G,EAAOkN,UAAU0M,eAAeja,KAAKwa,KAAMxa,KAAK47G,uBACrD,CACI,GAAI7rG,GAAQ/P,KAAK+P,MACbC,EAAShQ,KAAKgQ,MAElBhQ,MAAK27G,wBAAwBnuG,MAAM,EAAG,EAAGuC,EAAOC,GAChDhQ,KAAK47G,sBAAsBpuG,MAAM,EAAG,EAAGxN,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAE9DhQ,KAAKk1C,MAELl1C,KAAKk1C,KAAK6lE,SAAShrG,EAAOC,GAG9BhQ,KAAK86G,aAAaj8F,SAAS7e,KAAM+P,EAAOC,GAGpChQ,KAAKo9G,mBAAqB/8G,EAAOk5B,aAAa0iF,SAE9Cj8G,KAAKwa,KAAK0F,MAAMpH,OAAO/I,EAAOC,GAC9BhQ,KAAKwa,KAAKwF,KAAKlH,OAAO/I,EAAOC,MAqBzC4tG,UAAW,SAAUlF,EAAUC,EAAWh8B,EAAUi8B,GAEhD54G,KAAK04G,SAAWA,EAChB14G,KAAK24G,UAAYA,EAEO,mBAAbh8B,KAEP38E,KAAK28E,SAAWA,GAGK,mBAAdi8B,KAEP54G,KAAK44G,UAAYA,IAWzB57F,UAAW,WAEP,KAAIhd,KAAKwa,KAAKmE,KAAKA,KAAQ3e,KAAKs7G,YAAct7G,KAAKu7G,iBAAnD,CAKA,GAAIsC,GAAe79G,KAAKu7G,eACxBv7G,MAAKw7G,qBAAuBqC,GAAgB,IAAM,EAAI,IAEtD79G,KAAKy4G,IAAIptF,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,OAE1C,IAAI0vG,GAAY99G,KAAKy7G,cAAc1rG,MAC/BguG,EAAa/9G,KAAKy7G,cAAczrG,OAChC2K,EAAS3a,KAAKg9G,gBAAgBh9G,KAAKy7G,eAEnCuC,EAAgBrjG,EAAO5K,QAAU+tG,GAAanjG,EAAO3K,SAAW+tG,EAGhEE,EAAqBj+G,KAAKk+G,0BAE1BF,GAAiBC,KAEbj+G,KAAK+6G,UAEL/6G,KAAK+6G,SAASj0G,KAAK9G,KAAKg7G,gBAAiBh7G,KAAM2a,GAGnD3a,KAAKm+G,eAELn+G,KAAK29G,mBAIT,IAAIS,GAAkC,EAAvBp+G,KAAKu7G,eAGhBv7G,MAAKu7G,gBAAkBsC,IAEvBO,EAAWr4G,KAAKkM,IAAI4rG,EAAc79G,KAAKw7G,uBAG3Cx7G,KAAKu7G,gBAAkBl7G,EAAO0F,KAAKyP,MAAM4oG,EAAU,GAAIp+G,KAAK66G,qBAC5D76G,KAAKs7G,YAAct7G,KAAKwa,KAAKmE,KAAKA,OAUtCoC,YAAa,WAET/gB,KAAKgd,YAGLhd,KAAKu7G,gBAAkBv7G,KAAK66G,qBAahCqC,iBAAkB,SAAUntG,EAAOC,EAAQ8I,GAEvC9Y,KAAK+P,MAAQA,EAAQ/P,KAAK46G,kBAAkB30G,EAC5CjG,KAAKgQ,OAASA,EAAShQ,KAAK46G,kBAAkBnuG,EAE9CzM,KAAKwa,KAAKzK,MAAQ/P,KAAK+P,MACvB/P,KAAKwa,KAAKxK,OAAShQ,KAAKgQ,OAExBhQ,KAAK85G,kBAAoB95G,KAAK+P,MAAQ/P,KAAKgQ,OAC3ChQ,KAAKq+G,yBAEDvlG,IAGA9Y,KAAKwa,KAAKid,SAAS3e,OAAO9Y,KAAK+P,MAAO/P,KAAKgQ,QAG3ChQ,KAAKwa,KAAKoC,OAAO6C,QAAQzf,KAAK+P,MAAO/P,KAAKgQ,QAG1ChQ,KAAKwa,KAAKC,MAAM3B,OAAO9Y,KAAK+P,MAAO/P,KAAKgQ,UAYhDquG,uBAAwB,WAEpBr+G,KAAKF,YAAYmG,EAAIjG,KAAKwa,KAAKzK,MAAQ/P,KAAK+P,MAC5C/P,KAAKF,YAAY2M,EAAIzM,KAAKwa,KAAKxK,OAAShQ,KAAKgQ,OAE7ChQ,KAAK45G,oBAAoB3zG,EAAIjG,KAAK+P,MAAQ/P,KAAKwa,KAAKzK,MACpD/P,KAAK45G,oBAAoBntG,EAAIzM,KAAKgQ,OAAShQ,KAAKwa,KAAKxK,OAErDhQ,KAAK65G,YAAc75G,KAAK+P,MAAQ/P,KAAKgQ,OAGjChQ,KAAKwa,KAAK8Q,QAEVtrB,KAAKy4G,IAAIptF,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,QAG9CpO,KAAK2a,OAAOnN,MAAMxN,KAAKoO,OAAOnI,EAAGjG,KAAKoO,OAAO3B,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAG7DhQ,KAAKwa,KAAKuF,OAAS/f,KAAKwa,KAAKuF,MAAMlL,OAEnC7U,KAAKwa,KAAKuF,MAAMlL,MAAMrH,MAAMxN,KAAKF,YAAYmG,EAAGjG,KAAKF,YAAY2M,IAmBzE6xG,iBAAkB,SAAUzF,EAAgBC,GAElBpvG,SAAlBovG,IAA+BA,GAAgB,GAEnD94G,KAAK64G,eAAiBA,EACtB74G,KAAK84G,cAAgBA,EAErB94G,KAAKm9G,aAAY,IAYrBoB,oBAAqB,SAAUC,GAE3B,MAAoB,qBAAhBA,GAAsD,uBAAhBA,EAE/B,WAEc,sBAAhBA,GAAuD,wBAAhBA,EAErC,YAIA,MAYfN,uBAAwB,WAEpB,GAAIO,GAAsBz+G,KAAK05G,kBAC3BgF,EAAsB1+G,KAAK+4G,oBAE/B/4G,MAAK05G,kBAAoB15G,KAAKy4G,IAAIkB,qBAAqB35G,KAAKg6G,cAAcE,qBAE1El6G,KAAK+4G,qBAAwB/4G,KAAK64G,iBAAmB74G,KAAK2+G,aACrD3+G,KAAK84G,gBAAkB94G,KAAK4+G,UAEjC,IAAIC,GAAUJ,IAAwBz+G,KAAK05G,kBACvCoF,EAAqBJ,IAAwB1+G,KAAK+4G,oBAmBtD,OAjBI+F,KAEI9+G,KAAK+4G,qBAEL/4G,KAAKm5G,0BAA0Bt6F,WAI/B7e,KAAKo5G,0BAA0Bv6F,aAInCggG,GAAWC,IAEX9+G,KAAKk5G,oBAAoBr6F,SAAS7e,KAAMy+G,EAAqBC,GAG1DG,GAAWC,GAWtBzC,kBAAmB,SAAUlwF,GAEzBnsB,KAAKmsB,MAAQA,EAEbnsB,KAAKm9G,aAAY,IAWrBZ,aAAc,SAAUpwF,GAEpBnsB,KAAKmsB,MAAQA,EAEbnsB,KAAKm9G,aAAY,IAUrB4B,UAAW,WAEP,GAAI3E,GAAWp6G,KAAKg6G,cAAcI,QAE9BA,IAEAryG,OAAOqyG,SAASA,EAASn0G,EAAGm0G,EAAS3tG,IAyB7CwvB,QAAS,WAELj8B,KAAK++G,YACL/+G,KAAKm9G,aAAY,IAUrBgB,aAAc,WAEV,GAAIhwD,GAAYnuD,KAAKo9G,gBAErB,IAAIjvD,IAAc9tD,EAAOk5B,aAAa0iF,OAGlC,WADAj8G,MAAKg/G,YAoDT,IAhDAh/G,KAAK++G,YAED/+G,KAAKg6G,cAAcK,6BAInBvuF,SAASm7D,gBAAgB/pE,MAAMy7F,UAAY5wG,OAAOwC,YAAc,MAGhEvK,KAAK+4G,qBAEL/4G,KAAKi/G,aAID9wD,IAAc9tD,EAAOk5B,aAAawiF,UAElC/7G,KAAKk/G,cAEA/wD,IAAc9tD,EAAOk5B,aAAayiF,UAElCh8G,KAAKm/G,cAAgBn/G,KAAKo/G,gBAC3Bp/G,KAAKg6G,cAAcM,iBAKnBt6G,KAAKq/G,YAAW,GAChBr/G,KAAKs/G,cACLt/G,KAAKq/G,cAILr/G,KAAKq/G,aAGJlxD,IAAc9tD,EAAOk5B,aAAakhF,UAEvCz6G,KAAK+P,MAAQ/P,KAAKwa,KAAKzK,MACvB/P,KAAKgQ,OAAShQ,KAAKwa,KAAKxK,QAEnBm+C,IAAc9tD,EAAOk5B,aAAa2iF,aAEvCl8G,KAAK+P,MAAS/P,KAAKwa,KAAKzK,MAAQ/P,KAAKo7G,iBAAiBn1G,EAAKjG,KAAKq7G,eAAep1G,EAC/EjG,KAAKgQ,OAAUhQ,KAAKwa,KAAKxK,OAAShQ,KAAKo7G,iBAAiB3uG,EAAKzM,KAAKq7G,eAAe5uG,IAIpFzM,KAAKg6G,cAAcM,kBACnBnsD,IAAc9tD,EAAOk5B,aAAayiF,UAAY7tD,IAAc9tD,EAAOk5B,aAAa2iF,YACrF,CACI,GAAIvhG,GAAS3a,KAAKg9G,gBAAgBh9G,KAAK07G,YACvC17G,MAAK+P,MAAQhK,KAAKkM,IAAIjS,KAAK+P,MAAO4K,EAAO5K,OACzC/P,KAAKgQ,OAASjK,KAAKkM,IAAIjS,KAAKgQ,OAAQ2K,EAAO3K,QAI/ChQ,KAAK+P,MAAqB,EAAb/P,KAAK+P,MAClB/P,KAAKgQ,OAAuB,EAAdhQ,KAAKgQ,OAEnBhQ,KAAKu/G,gBAoBTvC,gBAAiB,SAAUh2G,GAEvB,GAAI2T,GAAS3T,GAAU,GAAI3G,GAAOkN,UAC9Bo9E,EAAa3qF,KAAKo/G,eAClBnC,EAAej9G,KAAKy4G,IAAIwE,aACxBuC,EAAex/G,KAAKy4G,IAAI+G,YAE5B,IAAK70B,EAKL,CAEI,GAAI80B,GAAa90B,EAAW+0B,wBACxBC,EAAch1B,EAAuB,aAAIA,EAAWi1B,aAAaF,wBAA0B/0B,EAAW+0B,uBAE1G/kG,GAAOnN,MAAMiyG,EAAW50G,KAAO80G,EAAW90G,KAAM40G,EAAW/wG,IAAMixG,EAAWjxG,IAAK+wG,EAAW1vG,MAAO0vG,EAAWzvG,OAE9G,IAAI6vG,GAAK7/G,KAAK+5G,iBAEd,IAAI8F,EAAGj1G,MACP,CACI,GAAIk1G,GAA4B,WAAbD,EAAGj1G,MAAqB40G,EAAevC,CAC1DtiG,GAAO/P,MAAQ7E,KAAKkM,IAAI0I,EAAO/P,MAAOk1G,EAAa/vG,OAGvD,GAAI8vG,EAAGlxG,OACP,CACI,GAAImxG,GAA6B,WAAdD,EAAGlxG,OAAsB6wG,EAAevC,CAC3DtiG,GAAOhM,OAAS5I,KAAKkM,IAAI0I,EAAOhM,OAAQmxG,EAAa9vG,aArBzD2K,GAAOnN,MAAM,EAAG,EAAGyvG,EAAaltG,MAAOktG,EAAajtG,OA6BxD,OAJA2K,GAAOnN,MACHzH,KAAK+H,MAAM6M,EAAO1U,GAAIF,KAAK+H,MAAM6M,EAAOlO,GACxC1G,KAAK+H,MAAM6M,EAAO5K,OAAQhK,KAAK+H,MAAM6M,EAAO3K,SAEzC2K,GAcXolG,YAAa,SAAUjkG,EAAYC,GAE/B,GAAIikG,GAAehgH,KAAKg9G,gBAAgBh9G,KAAK07G,aACzCpwF,EAAStrB,KAAKwa,KAAK8Q,OACnB21E,EAASjhG,KAAKihG,MAElB,IAAInlF,EACJ,CACImlF,EAAOp2F,KAAOo2F,EAAOr2F,MAAQ,CAE7B,IAAIq1G,GAAe30F,EAAOo0F,uBAE1B,IAAI1/G,KAAK+P,MAAQiwG,EAAajwG,QAAU/P,KAAK+4G,qBAC7C,CACI,GAAImH,GAAcD,EAAap1G,KAAOm1G,EAAa/5G,EAC/Ck6G,EAAcH,EAAajwG,MAAQ,EAAM/P,KAAK+P,MAAQ,CAE1DowG,GAAap6G,KAAKoM,IAAIguG,EAAY,EAElC,IAAI/xG,GAAS+xG,EAAaD,CAE1Bjf,GAAOp2F,KAAO9E,KAAK+H,MAAMM,GAG7Bkd,EAAOpO,MAAMkjG,WAAanf,EAAOp2F,KAAO,KAEpB,IAAhBo2F,EAAOp2F,OAEPo2F,EAAOr2F,QAAUo1G,EAAajwG,MAAQkwG,EAAalwG,MAAQkxF,EAAOp2F,MAClEygB,EAAOpO,MAAMmjG,YAAcpf,EAAOr2F,MAAQ,MAIlD,GAAImR,EACJ,CACIklF,EAAOvyF,IAAMuyF,EAAOtyF,OAAS,CAE7B,IAAIsxG,GAAe30F,EAAOo0F,uBAE1B,IAAI1/G,KAAKgQ,OAASgwG,EAAahwG,SAAWhQ,KAAK+4G,qBAC/C,CACI,GAAImH,GAAcD,EAAavxG,IAAMsxG,EAAavzG,EAC9C0zG,EAAcH,EAAahwG,OAAS,EAAMhQ,KAAKgQ,OAAS,CAE5DmwG,GAAap6G,KAAKoM,IAAIguG,EAAY,EAElC,IAAI/xG,GAAS+xG,EAAaD,CAC1Bjf,GAAOvyF,IAAM3I,KAAK+H,MAAMM,GAG5Bkd,EAAOpO,MAAMojG,UAAYrf,EAAOvyF,IAAM,KAEnB,IAAfuyF,EAAOvyF,MAEPuyF,EAAOtyF,SAAWqxG,EAAahwG,OAASiwG,EAAajwG,OAASixF,EAAOvyF,KACrE4c,EAAOpO,MAAMqjG,aAAetf,EAAOtyF,OAAS,MAKpDsyF,EAAOh7F,EAAIg7F,EAAOp2F,KAClBo2F,EAAOx0F,EAAIw0F,EAAOvyF,KAYtBswG,WAAY,WAERh/G,KAAKs/G,YAAY,GAAI,GAErB,IAAI3kG,GAAS3a,KAAKg9G,gBAAgBh9G,KAAK07G,YACvC17G,MAAKk9G,iBAAiBviG,EAAO5K,MAAO4K,EAAO3K,QAAQ,IAYvDuvG,aAAc,WAELv/G,KAAK+4G,uBAEN/4G,KAAK+P,MAAQ1P,EAAO0F,KAAKyP,MAAMxV,KAAK+P,MAAO/P,KAAK04G,UAAY,EAAG14G,KAAK28E,UAAY38E,KAAK+P,OACrF/P,KAAKgQ,OAAS3P,EAAO0F,KAAKyP,MAAMxV,KAAKgQ,OAAQhQ,KAAK24G,WAAa,EAAG34G,KAAK44G,WAAa54G,KAAKgQ,SAG7FhQ,KAAKs/G,cAEAt/G,KAAKg6G,cAAcG,YAEhBn6G,KAAKm/G,cAAgBn/G,KAAKs5G,yBAE1Bt5G,KAAK+/G,aAAY,GAAM,GAIvB//G,KAAK+/G,YAAY//G,KAAKwgH,sBAAuBxgH,KAAKygH,sBAI1DzgH,KAAKq+G,0BAYTiB,YAAa,SAAUoB,EAAUC,GAEZj3G,SAAbg3G,IAA0BA,EAAW1gH,KAAK+P,MAAQ,MACpCrG,SAAdi3G,IAA2BA,EAAY3gH,KAAKgQ,OAAS,KAEzD,IAAIsb,GAAStrB,KAAKwa,KAAK8Q,MAElBtrB,MAAKg6G,cAAcG,YAEpB7uF,EAAOpO,MAAMkjG,WAAa,GAC1B90F,EAAOpO,MAAMojG,UAAY,GACzBh1F,EAAOpO,MAAMmjG,YAAc,GAC3B/0F,EAAOpO,MAAMqjG,aAAe,IAGhCj1F,EAAOpO,MAAMnN,MAAQ2wG,EACrBp1F,EAAOpO,MAAMlN,OAAS2wG,GAW1BxD,YAAa,SAAUt/F,GAEfA,IAEA7d,KAAKy7G,cAAc1rG,MAAQ,EAC3B/P,KAAKy7G,cAAczrG,OAAS,GAGhChQ,KAAKu7G,gBAAkBv7G,KAAKw7G,sBAUhC97F,MAAO,SAAUsD,GAETA,GAAchjB,KAAKk1C,MAEnBl1C,KAAKk1C,KAAKx1B,SAWlBu/F,WAAY,WAERj/G,KAAK+P,MAAQ/P,KAAKy4G,IAAIwE,aAAaltG,MACnC/P,KAAKgQ,OAAShQ,KAAKy4G,IAAIwE,aAAajtG,QAWxCqvG,WAAY,SAAUuB,GAElB,GAIIC,GAJAlmG,EAAS3a,KAAKg9G,gBAAgBh9G,KAAK07G,aACnC3rG,EAAQ4K,EAAO5K,MACfC,EAAS2K,EAAO3K,MAMhB6wG,GAFAD,EAEa76G,KAAKoM,IAAKnC,EAAShQ,KAAKwa,KAAKxK,OAAUD,EAAQ/P,KAAKwa,KAAKzK,OAIzDhK,KAAKkM,IAAKjC,EAAShQ,KAAKwa,KAAKxK,OAAUD,EAAQ/P,KAAKwa,KAAKzK,OAG1E/P,KAAK+P,MAAQhK,KAAK+H,MAAM9N,KAAKwa,KAAKzK,MAAQ8wG,GAC1C7gH,KAAKgQ,OAASjK,KAAK+H,MAAM9N,KAAKwa,KAAKxK,OAAS6wG,IAWhD3B,YAAa,WAET,GAAIvkG,GAAS3a,KAAKg9G,gBAAgBh9G,KAAK07G,YAEvC17G,MAAK+P,MAAQ4K,EAAO5K,MACpB/P,KAAKgQ,OAAS2K,EAAO3K,OAEjBhQ,KAAKm/G,eAMLn/G,KAAK28E,WAEL38E,KAAK+P,MAAQhK,KAAKkM,IAAIjS,KAAK+P,MAAO/P,KAAK28E,WAGvC38E,KAAK44G,YAEL54G,KAAKgQ,OAASjK,KAAKkM,IAAIjS,KAAKgQ,OAAQhQ,KAAK44G,cAcjDkI,uBAAwB,WAEpB,GAAIC,GAAWj1F,SAAS4vD,cAAc,MAMtC,OAJAqlC,GAAS7jG,MAAM+jF,OAAS,IACxB8f,EAAS7jG,MAAMwK,QAAU,IACzBq5F,EAAS7jG,MAAM8jG,WAAa,OAErBD,GAmBXE,gBAAiB,SAAUvpF,EAAWwpF,GAElC,GAAIlhH,KAAKm/G,aAEL,OAAO,CAGX,KAAKn/G,KAAKg6G,cAAcC,mBACxB,CAEI,GAAIxzF,GAAQzmB,IAIZ,YAHA2lF,YAAW,WACPl/D,EAAMk2F,mBACP,IAIP,GAA2C,mBAAvC38G,KAAKg6G,cAAcO,gBACvB,CACI,GAAIx6F,GAAQ/f,KAAKwa,KAAKuF,KAEtB,IAAIA,EAAM8e,eACN9e,EAAM8e,gBAAkB9e,EAAM+e,eAC7BoiF,GAAmBA,KAAoB,GAGxC,WADAnhG,GAAM8e,cAAcgO,mBAAmB,kBAAmB7sC,KAAKihH,gBAAiBjhH,MAAO03B,GAAW,IAKjF,mBAAdA,IAA6B13B,KAAKwa,KAAK4J,aAAe/jB,EAAOI,SAEpET,KAAKwa,KAAKsC,MAAMse,SAAW1D,EAG/B,IAAIqpF,GAAW/gH,KAAKq5G,gBAEf0H,KAED/gH,KAAKmhH,uBAELnhH,KAAKs5G,yBAA2Bt5G,KAAK8gH,yBACrCC,EAAW/gH,KAAKs5G,yBAGpB,IAAI8H,IACAC,cAAeN,EAKnB,IAFA/gH,KAAKu5G,iBAAiB16F,SAAS7e,KAAMohH,GAEjCphH,KAAKs5G,yBACT,CAGI,GAAIhuF,GAAStrB,KAAKwa,KAAK8Q,OACnB9B,EAAS8B,EAAOq/D,UACpBnhE,GAAOmgE,aAAao3B,EAAUz1F,GAC9By1F,EAASr2B,YAAYp/D,GAYzB,MATItrB,MAAKwa,KAAKkS,OAAOy4D,mBAEjB47B,EAAS/gH,KAAKwa,KAAKkS,OAAOu4D,mBAAmBuC,QAAQ85B,sBAIrDP,EAAS/gH,KAAKwa,KAAKkS,OAAOu4D,sBAGvB,GAWXs8B,eAAgB,WAEZ,SAAKvhH,KAAKm/G,eAAiBn/G,KAAKg6G,cAAcC,sBAK9CnuF,SAAS9rB,KAAKwa,KAAKkS,OAAOw4D,qBAEnB,IAWXi8B,qBAAsB,WAElB,GAAIJ,GAAW/gH,KAAKs5G,wBAEpB,IAAIyH,GAAYA,EAASp2B,WACzB,CAGI,GAAInhE,GAASu3F,EAASp2B,UACtBnhE,GAAOmgE,aAAa3pF,KAAKwa,KAAK8Q,OAAQy1F,GACtCv3F,EAAO8I,YAAYyuF,GAGvB/gH,KAAKs5G,yBAA2B,MAYpCkI,eAAgB,SAAUC,GAEtB,GAAIC,KAAkB1hH,KAAKs5G,yBACvByH,EAAW/gH,KAAKs5G,0BAA4Bt5G,KAAKq5G,gBAEjDoI,IAEIC,GAAiB1hH,KAAK+8G,sBAAwB18G,EAAOk5B,aAAawiF,YAG9DgF,IAAa/gH,KAAKwa,KAAK8Q,SAEvBtrB,KAAKk7G,oBACDyG,YAAaZ,EAAS7jG,MAAMnN,MAC5B6xG,aAAcb,EAAS7jG,MAAMlN,QAGjC+wG,EAAS7jG,MAAMnN,MAAQ,OACvBgxG,EAAS7jG,MAAMlN,OAAS,SAO5BhQ,KAAKk7G,qBAEL6F,EAAS7jG,MAAMnN,MAAQ/P,KAAKk7G,mBAAmByG,YAC/CZ,EAAS7jG,MAAMlN,OAAShQ,KAAKk7G,mBAAmB0G,aAEhD5hH,KAAKk7G,mBAAqB,MAI9Bl7G,KAAKk9G,iBAAiBl9G,KAAKm7G,UAAUprG,MAAO/P,KAAKm7G,UAAUnrG,QAAQ,GACnEhQ,KAAKs/G,gBAYb7C,iBAAkB,SAAUtwF,GAExBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKm/G,cAELn/G,KAAKwhH,gBAAe,GAEpBxhH,KAAKm+G,eACLn+G,KAAKm9G,aAAY,KAIjBn9G,KAAKwhH,gBAAe,GAEpBxhH,KAAKmhH,uBAELnhH,KAAKm+G,eACLn+G,KAAKm9G,aAAY,IAGrBn9G,KAAKw5G,mBAAmB36F,SAAS7e,KAAMA,KAAK+P,MAAO/P,KAAKgQ,SAY5D2sG,gBAAiB,SAAUxwF,GAEvBnsB,KAAKmsB,MAAQA,EAEbnsB,KAAKmhH,uBAEL/4G,QAAQG,KAAK,+FAEbvI,KAAKy5G,kBAAkB56F,SAAS7e,OAmBpC6hH,YAAa,SAAUzqF,EAAQrnB,EAAOC,EAAQ8xG,GAM1C,GAJcp4G,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,QACxBtG,SAAdo4G,IAA2BA,GAAY,IAEtC1qF,IAAWA,EAAc,MAE1B,MAAOA,EAMX,IAHAA,EAAOviB,MAAM5O,EAAI,EACjBmxB,EAAOviB,MAAMpI,EAAI,EAEZ2qB,EAAOrnB,OAAS,GAAOqnB,EAAOpnB,QAAU,GAAOD,GAAS,GAAOC,GAAU,EAE1E,MAAOonB,EAGX,IAAI2qF,GAAUhyG,EACViyG,EAAW5qF,EAAOpnB,OAASD,EAASqnB,EAAOrnB,MAE3CkyG,EAAW7qF,EAAOrnB,MAAQC,EAAUonB,EAAOpnB,OAC3CkyG,EAAUlyG,EAEVmyG,EAAgBF,EAAUlyG,CA0B9B,OAtBIoyG,GAFAA,EAEeL,GAICA,EAGhBK,GAEA/qF,EAAOrnB,MAAQhK,KAAKI,MAAM47G,GAC1B3qF,EAAOpnB,OAASjK,KAAKI,MAAM67G,KAI3B5qF,EAAOrnB,MAAQhK,KAAKI,MAAM87G,GAC1B7qF,EAAOpnB,OAASjK,KAAKI,MAAM+7G,IAOxB9qF,GAWXtT,QAAS,WAEL9jB,KAAKwa,KAAKiI,SAASK,OAAO9iB,KAAK48G,aAAc58G,MAE7C+H,OAAOwlB,oBAAoB,oBAAqBvtB,KAAKo8G,oBAAoB,GACzEr0G,OAAOwlB,oBAAoB,SAAUvtB,KAAKs8G,eAAe,GAErDt8G,KAAKg6G,cAAcC,qBAEnBnuF,SAASyB,oBAAoB,yBAA0BvtB,KAAKw8G,mBAAmB,GAC/E1wF,SAASyB,oBAAoB,sBAAuBvtB,KAAKw8G,mBAAmB,GAC5E1wF,SAASyB,oBAAoB,qBAAsBvtB,KAAKw8G,mBAAmB,GAC3E1wF,SAASyB,oBAAoB,mBAAoBvtB,KAAKw8G,mBAAmB,GAEzE1wF,SAASyB,oBAAoB,wBAAyBvtB,KAAK08G,kBAAkB,GAC7E5wF,SAASyB,oBAAoB,qBAAsBvtB,KAAK08G,kBAAkB,GAC1E5wF,SAASyB,oBAAoB,oBAAqBvtB,KAAK08G,kBAAkB,GACzE5wF,SAASyB,oBAAoB,kBAAmBvtB,KAAK08G,kBAAkB,MAOnFr8G,EAAOk5B,aAAalzB,UAAU8B,YAAc9H,EAAOk5B,aAYnDhyB,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,kBAEjD2F,IAAK,WACD,GAAIhM,KAAK26G,gBACJ36G,KAAKm/G,eAAiBn/G,KAAKs5G,yBAE5B,MAAO,KAGX,IAAI3uB,GAAa3qF,KAAKwa,KAAK8Q,QAAUtrB,KAAKwa,KAAK8Q,OAAOq/D,UACtD,OAAOA,IAAc,QA0C7BpjF,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,aAEjD2F,IAAK,WAED,MAAOhM,MAAKw6G,YAIhBvuG,IAAK,SAAU1C,GAaX,MAXIA,KAAUvJ,KAAKw6G,aAEVx6G,KAAKm/G,eAENn/G,KAAKk9G,iBAAiBl9G,KAAKm7G,UAAUprG,MAAO/P,KAAKm7G,UAAUnrG,QAAQ,GACnEhQ,KAAKm9G,aAAY,IAGrBn9G,KAAKw6G,WAAajxG,GAGfvJ,KAAKw6G,cAcpBjzG,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,uBAEjD2F,IAAK,WAED,MAAOhM,MAAK06G,sBAIhBzuG,IAAK,SAAU1C,GAmBX,MAjBIA,KAAUvJ,KAAK06G,uBAGX16G,KAAKm/G,cAELn/G,KAAKwhH,gBAAe,GACpBxhH,KAAK06G,qBAAuBnxG,EAC5BvJ,KAAKwhH,gBAAe,GAEpBxhH,KAAKm9G,aAAY,IAIjBn9G,KAAK06G,qBAAuBnxG,GAI7BvJ,KAAK06G,wBAgBpBnzG,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,oBAEjD2F,IAAK,WAED,MAAOhM,MAAKm/G,aAAen/G,KAAK06G,qBAAuB16G,KAAKw6G,cAkBpEjzG,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,yBAEjD2F,IAAK,WAED,MAAOhM,MAAKg5G,wBAIhB/sG,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKg5G,yBAEfh5G,KAAKg5G,uBAAyBzvG,EAC9BvJ,KAAKm9G,aAAY,OA0B7B51G,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,uBAEjD2F,IAAK,WAED,MAAOhM,MAAKi5G,sBAIhBhtG,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKi5G,uBAEfj5G,KAAKi5G,qBAAuB1vG,EAC5BvJ,KAAKm9G,aAAY,OAa7B51G,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,gBAEjD2F,IAAK,WACD,SAAU8f,SAA4B,mBAClCA,SAAkC,yBAClCA,SAA+B,sBAC/BA,SAA8B,wBAY1CvkB,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,cAEjD2F,IAAK,WACD,MAA4D,aAArDhM,KAAKu+G,oBAAoBv+G,KAAK05G,sBAY7CnyG,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,eAEjD2F,IAAK,WACD,MAA4D,cAArDhM,KAAKu+G,oBAAoBv+G,KAAK05G,sBAe7CnyG,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,kBAEjD2F,IAAK,WACD,MAAQhM,MAAKgQ,OAAShQ,KAAK+P,SAenCxI,OAAO2E,eAAe7L,EAAOk5B,aAAalzB,UAAW,mBAEjD2F,IAAK,WACD,MAAQhM,MAAK+P,MAAQ/P,KAAKgQ,UA2BlC3P,EAAOmI,MAAM4xB,MAAQ,SAAU5f,GAK3Bxa,KAAKwa,KAAOA,EAKZxa,KAAKo3B,OAAS,KAKdp3B,KAAKoiH,IAAM,KAKXpiH,KAAKsrB,OAAS,KAKdtrB,KAAKqkB,QAAU,KAMfrkB,KAAK0yD,KAAO,eAKZ1yD,KAAKqiH,YAAc,IAKnBriH,KAAKm4E,WAAa,GAKlBn4E,KAAKsiH,cAAe,EAMpBtiH,KAAKg+E,SAAW,EAMhBh+E,KAAKi+E,SAAW,EAMhBj+E,KAAKuiH,aAAe,EAKpBviH,KAAKynB,OAAQ,GAIjBpnB,EAAOmI,MAAM4xB,MAAM/zB,WAQfsW,KAAM,WAEE3c,KAAKwa,KAAK4J,aAAe/jB,EAAOI,OAEhCT,KAAKqkB,QAAUrkB,KAAKwa,KAAK6J,SAIzBrkB,KAAKoiH,IAAM,GAAI/hH,GAAOiuD,WAAWtuD,KAAKwa,KAAM,UAAWxa,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,SAAQ,IAC1FhQ,KAAKo3B,OAASp3B,KAAKwa,KAAKqF,KAAKuJ,MAAM,EAAG,EAAGppB,KAAKoiH,KAC9CpiH,KAAKwa,KAAKsC,MAAMC,SAAS/c,KAAKo3B,QAE9Bp3B,KAAKwa,KAAK3F,MAAMimG,aAAajpG,IAAI7R,KAAK8Y,OAAQ9Y,MAE9CA,KAAKsrB,OAASxlB,KAAK66B,WAAWjgB,OAAO1gB,KAAMA,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QACtEhQ,KAAKqkB,QAAUrkB,KAAKsrB,OAAOsV,WAAW,QAe9C9nB,OAAQ,SAAU0pG,EAAczyG,EAAOC,GAEnChQ,KAAKoiH,IAAItpG,OAAO/I,EAAOC,GAEvBhQ,KAAKsrB,OAAOvb,MAAQA,EACpB/P,KAAKsrB,OAAOtb,OAASA,GAUzBgN,UAAW,WAEHhd,KAAKynB,OAASznB,KAAKo3B,SAEnBp3B,KAAKoiH,IAAInkG,QACTje,KAAKoiH,IAAI5oD,KAAKx5D,KAAKsrB,OAAQ,EAAG,GAE9BtrB,KAAKqkB,QAAQ8uB,UAAU,EAAG,EAAGnzC,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QACxDhQ,KAAKynB,OAAQ,IAUrB/H,MAAO,WAEC1f,KAAKqkB,SAELrkB,KAAKqkB,QAAQ8uB,UAAU,EAAG,EAAGnzC,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAGxDhQ,KAAKo3B,QAELp3B,KAAKoiH,IAAInkG,SAejBvN,MAAO,SAAUzK,EAAGwG,EAAGuR,EAAOqkG,GAET,gBAANp8G,KAAkBA,EAAI,GAChB,gBAANwG,KAAkBA,EAAI,GACjCuR,EAAQA,GAAS,mBACGtU,SAAhB24G,IAA6BA,EAAc,GAE/CriH,KAAKg+E,SAAW/3E,EAChBjG,KAAKi+E,SAAWxxE,EAChBzM,KAAKyiH,aAAezkG,EACpBhe,KAAKqiH,YAAcA,EAEnBriH,KAAKynB,OAAQ,EAEbznB,KAAKqkB,QAAQC,OACbtkB,KAAKqkB,QAAQE,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACzCvkB,KAAKqkB,QAAQq6C,YAAc1gD,EAC3Bhe,KAAKqkB,QAAQo1C,UAAYz7C,EACzBhe,KAAKqkB,QAAQquC,KAAO1yD,KAAK0yD,KACzB1yD,KAAKqkB,QAAQs4C,YAAc38D,KAAKuiH,cAUpCjmF,KAAM,WAEFt8B,KAAKqkB,QAAQG,WAUjBpT,KAAM,WAIF,IAAK,GAFDnL,GAAIjG,KAAKg+E,SAEJl2E,EAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAE9B9H,KAAKsiH,eAELtiH,KAAKqkB,QAAQo1C,UAAY,aACzBz5D,KAAKqkB,QAAQ85C,SAASp3D,UAAUe,GAAI7B,EAAI,EAAGjG,KAAKi+E,SAAW,GAC3Dj+E,KAAKqkB,QAAQo1C,UAAYz5D,KAAKyiH,cAGlCziH,KAAKqkB,QAAQ85C,SAASp3D,UAAUe,GAAI7B,EAAGjG,KAAKi+E,UAE5Ch4E,GAAKjG,KAAKqiH,WAGdriH,MAAKi+E,UAAYj+E,KAAKm4E,YAa1BuqC,UAAW,SAAUziG,EAAOha,EAAGwG,EAAGuR,GAE9Bhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,UAAY6O,EAAMlU,IAAM,YAAckU,EAAMzF,KAAKyF,MAAMikF,aACjElkG,KAAKoR,KAAK,cAAgBpR,KAAKwa,KAAKsF,MAAMimF,aAAa9lF,EAAMlU,KAAO,sBAAwBkU,EAAM+zF,iBAClGh0G,KAAKoR,KAAK,YAAc6O,EAAM61F,UAAY,cAAgB71F,EAAMgkF,YAChEjkG,KAAKoR,KAAK,mBAAqB6O,EAAMuzF,cAAgB,aAAevzF,EAAM+9E,WAC1Eh+F,KAAKoR,KAAK,SAAW6O,EAAMwzF,aAC3BzzG,KAAKoR,KAAK,WAAa6O,EAAMjG,OAAS,WAAaiG,EAAMo2F,MACzDr2G,KAAKoR,KAAK,aAAe6O,EAAM6uF,cAAgB,WAAa7uF,EAAM8uF,eAEtC,KAAxB9uF,EAAM6zF,gBAEN9zG,KAAKoR,KAAK,WAAa6O,EAAM6zF,cAAgB,cAAgB7zF,EAAMpE,SAAW,SAAWoE,EAAMyzF,WAAa,KAC5G1zG,KAAKoR,KAAK,UAAY6O,EAAMszF,QAAQtzF,EAAM6zF,eAAepjG,MAAQ,UAAYuP,EAAMszF,QAAQtzF,EAAM6zF,eAAex3E,MAChHt8B,KAAKoR,KAAK,aAAe6O,EAAM1G,WAGnCvZ,KAAKs8B,QAaTqmF,WAAY,SAAU/lG,EAAQ3W,EAAGwG,EAAGuR,GAEhChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,WAAawL,EAAO7M,MAAQ,MAAQ6M,EAAO5M,OAAS,KAC9DhQ,KAAKoR,KAAK,MAAQwL,EAAO3W,EAAI,OAAS2W,EAAOnQ,GAEzCmQ,EAAOjC,QAEP3a,KAAKoR,KAAK,aAAewL,EAAOjC,OAAO1U,EAAI,OAAS2W,EAAOjC,OAAOlO,EAAI,OAASmQ,EAAOjC,OAAO5K,MAAQ,OAAS6M,EAAOjC,OAAO3K,QAGhIhQ,KAAKoR,KAAK,WAAawL,EAAOlC,KAAKzU,EAAI,OAAS2W,EAAOlC,KAAKjO,EAAI,OAASmQ,EAAOlC,KAAK3K,MAAQ,OAAS6M,EAAOlC,KAAK1K,QAElHhQ,KAAKoR,KAAK,kBAAoBwL,EAAO3B,aACrCjb,KAAKs8B,QAaTi/D,MAAO,SAAUA,EAAOt1F,EAAGwG,EAAGuR,GAE1Bhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,mBAAqBmqF,EAAMQ,QAAU,aAAeR,EAAMS,QAAU,KAC9Eh8F,KAAKoR,KAAK,cAAgBmqF,EAAMhqE,KAAO,cAAgBgqE,EAAM1/E,UAC7D7b,KAAKoR,KAAK,WAAamqF,EAAM16E,OAAS,YAAc06E,EAAM1zF,QAC1D7H,KAAKs8B,QAcTxT,QAAS,SAAUA,EAAS85F,EAAUC,EAAWC,EAAS9kG,GAEvC,MAAX8K,IAKapf,SAAbk5G,IAA0BA,GAAW,GACzCC,EAAYA,GAAa,oBACzBC,EAAUA,GAAW,oBAEjBF,KAAa,GAAQ95F,EAAQmf,QAAS,IAK1CjoC,KAAK0Q,MAAMoY,EAAQ7iB,EAAG6iB,EAAQrc,EAAI,IAAKuR,GACvChe,KAAKqkB,QAAQ+5C,YACbp+D,KAAKqkB,QAAQg6C,IAAIv1C,EAAQ7iB,EAAG6iB,EAAQrc,EAAGqc,EAAQ0U,OAAOnwB,OAAQ,EAAa,EAAVtH,KAAK+G,IAElEgc,EAAQjE,OAER7kB,KAAKqkB,QAAQo1C,UAAYopD,EAIzB7iH,KAAKqkB,QAAQo1C,UAAYqpD,EAG7B9iH,KAAKqkB,QAAQse,OACb3iC,KAAKqkB,QAAQi6C,YAGbt+D,KAAKqkB,QAAQ+5C,YACbp+D,KAAKqkB,QAAQk6C,OAAOz1C,EAAQyhB,aAAatkC,EAAG6iB,EAAQyhB,aAAa99B,GACjEzM,KAAKqkB,QAAQm6C,OAAO11C,EAAQvP,SAAStT,EAAG6iB,EAAQvP,SAAS9M,GACzDzM,KAAKqkB,QAAQo6C,UAAY,EACzBz+D,KAAKqkB,QAAQs6C,SACb3+D,KAAKqkB,QAAQi6C,YAGbt+D,KAAKoR,KAAK,OAAS0X,EAAQnU,GAAK,YAAcmU,EAAQjE,QACtD7kB,KAAKoR,KAAK,YAAc0X,EAAQi6F,OAAS,aAAej6F,EAAQk6F,QAChEhjH,KAAKoR,KAAK,aAAe0X,EAAQ7iB,EAAI,cAAgB6iB,EAAQrc,EAAI,QAAUqc,EAAQuc,YACnFrlC,KAAKoR,KAAK,aAAe0X,EAAQjN,SAAW,OAC5C7b,KAAKoR,KAAK,YAAc0X,EAAQkf,OAAS,WAAalf,EAAQmf,MAC9DjoC,KAAKs8B,UAaT2mF,gBAAiB,SAAU7rF,EAAQnxB,EAAGwG,EAAGuR,GAErChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,kBAAoBgmB,EAAOrnB,MAAQ,MAAQqnB,EAAOpnB,OAAS,KACrEhQ,KAAKoR,KAAK,MAAQgmB,EAAOrX,MAAMiyB,WAAWjpB,QAAQ,GAAK,OAASqO,EAAOrX,MAAMkyB,WAAWlpB,QAAQ,IAChG/oB,KAAKoR,KAAK,SAAWgmB,EAAOrX,MAAMuyB,cAAgB,cAAgBlb,EAAOrX,MAAM20B,eAAe3rB,QAAQ,IACtG/oB,KAAKoR,KAAK,SAAWgmB,EAAOrX,MAAMmyB,cAAgB,cAAgB9a,EAAOrX,MAAMuxB,eAAevoB,QAAQ,IACtG/oB,KAAKoR,KAAK,cAAgBgmB,EAAOrX,MAAMy0B,WAAa,cAAgBpd,EAAOrX,MAAM40B,WACjF30C,KAAKs8B,QAaTvwB,IAAK,SAAUA,EAAK9F,EAAGwG,EAAGuR,GAEtBhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,KAExBhe,KAAKoR,KAAK,OAAQrF,EAAI8yC,QAAS,UAAW9yC,EAAIi8B,QAC9ChoC,KAAKoR,KAAK,YAAarF,EAAIm3G,SAAU,UAAWn3G,EAAIo3G,QACpDnjH,KAAKoR,KAAK,aAAcrF,EAAIm8B,SAASnf,QAAQ,GAAI,YAAahd,EAAI8P,SAASkN,QAAQ,IAEnF/oB,KAAKs8B,QAYT8mF,UAAW,SAAUn9G,EAAGwG,EAAGuR,GAEvBhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,SACVpR,KAAKoR,KAAK,MAAQpR,KAAKwa,KAAKuF,MAAM9Z,EAAI,OAASjG,KAAKwa,KAAKuF,MAAMtT,GAC/DzM,KAAKoR,KAAK,YAAcpR,KAAKwa,KAAKuF,MAAMgjG,OAAS,aAAe/iH,KAAKwa,KAAKuF,MAAMijG,QAChFhjH,KAAKoR,KAAK,YAAcpR,KAAKwa,KAAKuF,MAAMlL,MAAM5O,EAAE8iB,QAAQ,GAAK,aAAe/oB,KAAKwa,KAAKuF,MAAMlL,MAAM5O,EAAE8iB,QAAQ,IAC5G/oB,KAAKoR,KAAK,aAAepR,KAAKwa,KAAKuF,MAAM8e,cAAc8K,QAAU,cAAgB3pC,KAAKwa,KAAKuF,MAAM8e,cAAc+K,SAC/G5pC,KAAKs8B,QAYT+mF,aAAc,SAAUjsF,EAAQpZ,EAAOslG,GAEnC,GAAI3oG,GAASyc,EAAO9pB,WAEpBqN,GAAO1U,GAAKjG,KAAKwa,KAAKoC,OAAO3W,EAC7B0U,EAAOlO,GAAKzM,KAAKwa,KAAKoC,OAAOnQ,EAE7BzM,KAAKujH,UAAU5oG,EAAQqD,EAAOslG,IAYlCE,aAAc,SAAU7xD,EAAM3zC,EAAOslG,GAEjC,GAAI5/C,GAAW/R,EAAK+R,SAEhB+/C,EAAOzjH,IAEX0jE,GAASj8D,QAAQ,SAASi8G,GACtBD,EAAKF,UAAUG,EAAS1lG,EAAOslG,IAChCtjH,OAaP2jH,WAAY,SAAUvsF,EAAQnxB,EAAGwG,EAAGuR,GAEhChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GAEjBhe,KAAKoR,KAAK,aAAoBgmB,EAAOrnB,MAAQ,MAAQqnB,EAAOpnB,OAAS,aAAeonB,EAAO/N,OAAOpjB,EAAI,MAAQmxB,EAAO/N,OAAO5c,GAC5HzM,KAAKoR,KAAK,MAAQgmB,EAAOnxB,EAAE8iB,QAAQ,GAAK,OAASqO,EAAO3qB,EAAEsc,QAAQ,IAClE/oB,KAAKoR,KAAK,UAAYgmB,EAAOlpB,MAAM6a,QAAQ,GAAK,cAAgBqO,EAAOP,SAAS9N,QAAQ,IACxF/oB,KAAKoR,KAAK,YAAcgmB,EAAOvc,QAAU,eAAiBuc,EAAOqwB,UACjEznD,KAAKoR,KAAK,aAAegmB,EAAOuwB,QAAQ1hD,EAAE8iB,QAAQ,GAAK,OAASqO,EAAOuwB,QAAQl7C,EAAEsc,QAAQ,GAAK,OAASqO,EAAOuwB,QAAQ53C,MAAMgZ,QAAQ,GAAK,OAASqO,EAAOuwB,QAAQ33C,OAAO+Y,QAAQ,IAEhL/oB,KAAKs8B,QAaTsnF,aAAc,SAAUxsF,EAAQnxB,EAAGwG,EAAGuR,GAElChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,KAEpBoZ,EAAOhsB,MAEPpL,KAAKoR,KAAKgmB,EAAOhsB,MAGrBpL,KAAKoR,KAAK,KAAMgmB,EAAOnxB,EAAE8iB,QAAQ,GAAI,KAAMqO,EAAO3qB,EAAEsc,QAAQ,IAC5D/oB,KAAKoR,KAAK,SAAUgmB,EAAO7d,SAAStT,EAAE8iB,QAAQ,GAAI,SAAUqO,EAAO7d,SAAS9M,EAAEsc,QAAQ,IACtF/oB,KAAKoR,KAAK,WAAYgmB,EAAO3c,MAAMxU,EAAE8iB,QAAQ,GAAI,WAAYqO,EAAO3c,MAAMhO,EAAEsc,QAAQ,IAEpF/oB,KAAKs8B,QAaTunF,SAAU,SAAUzyG,EAAMnL,EAAGwG,EAAGuR,GAE5Bhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,IACxBhe,KAAKoR,KAAK,WAAYA,EAAKV,MAAMzK,EAAE8iB,QAAQ,GAAI,WAAY3X,EAAKV,MAAMjE,EAAEsc,QAAQ,IAChF/oB,KAAKoR,KAAK,SAAUA,EAAKT,IAAI1K,EAAE8iB,QAAQ,GAAI,SAAU3X,EAAKT,IAAIlE,EAAEsc,QAAQ,IACxE/oB,KAAKoR,KAAK,UAAWA,EAAKvJ,OAAOkhB,QAAQ,GAAI,SAAU3X,EAAKlD,OAC5DlO,KAAKs8B,QAaTy9B,MAAO,SAAU9zD,EAAGwG,EAAGuR,EAAOhU,GAE1BA,EAAOA,GAAQ,EAEfhK,KAAK0Q,QACL1Q,KAAKqkB,QAAQo1C,UAAYz7C,EACzBhe,KAAKqkB,QAAQq1C,SAASzzD,EAAGwG,EAAGzC,EAAMA,GAClChK,KAAKs8B,QAaTwnF,KAAM,SAAUvuF,EAAQvX,EAAOslG,EAAQS,GAEpBr6G,SAAX45G,IAAwBA,GAAS,GACnB55G,SAAdq6G,IAA2BA,EAAY,GAE3C/lG,EAAQA,GAAS,oBAEjBhe,KAAK0Q,QAEL1Q,KAAKqkB,QAAQo1C,UAAYz7C,EACzBhe,KAAKqkB,QAAQq6C,YAAc1gD,EAEvBuX,YAAkBl1B,GAAOkN,WAA2B,IAAdw2G,EAElCT,EAEAtjH,KAAKqkB,QAAQq1C,SAASnkC,EAAOtvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGsvB,EAAO9oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG8oB,EAAOxlB,MAAOwlB,EAAOvlB,QAIzGhQ,KAAKqkB,QAAQovD,WAAWl+C,EAAOtvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGsvB,EAAO9oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG8oB,EAAOxlB,MAAOwlB,EAAOvlB,QAG1GulB,YAAkBl1B,GAAOmM,QAAwB,IAAdu3G,GAExC/jH,KAAKqkB,QAAQ+5C,YACbp+D,KAAKqkB,QAAQg6C,IAAI9oC,EAAOtvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGsvB,EAAO9oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG8oB,EAAOloB,OAAQ,EAAa,EAAVtH,KAAK+G,IAAQ,GAC9G9M,KAAKqkB,QAAQi6C,YAETglD,EAEAtjH,KAAKqkB,QAAQse,OAIb3iC,KAAKqkB,QAAQs6C,UAGZppC,YAAkBl1B,GAAO2M,OAAuB,IAAd+2G,EAEvC/jH,KAAKqkB,QAAQq1C,SAASnkC,EAAOtvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGsvB,EAAO9oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG,EAAG,IAElF8oB,YAAkBl1B,GAAOgQ,MAAsB,IAAd0zG,KAEtC/jH,KAAKqkB,QAAQo6C,UAAY,EACzBz+D,KAAKqkB,QAAQ+5C,YACbp+D,KAAKqkB,QAAQk6C,OAAQhpC,EAAO7kB,MAAMzK,EAAI,GAAOjG,KAAKwa,KAAKoC,OAAO3W,EAAIsvB,EAAO7kB,MAAMjE,EAAI,GAAOzM,KAAKwa,KAAKoC,OAAOnQ,GAC3GzM,KAAKqkB,QAAQm6C,OAAQjpC,EAAO5kB,IAAI1K,EAAI,GAAOjG,KAAKwa,KAAKoC,OAAO3W,EAAIsvB,EAAO5kB,IAAIlE,EAAI,GAAOzM,KAAKwa,KAAKoC,OAAOnQ,GACvGzM,KAAKqkB,QAAQi6C,YACbt+D,KAAKqkB,QAAQs6C,UAGjB3+D,KAAKs8B,QAYTinF,UAAW,SAAUhuF,EAAQvX,EAAOslG,GAEjB55G,SAAX45G,IAAwBA,GAAS,GAErCtlG,EAAQA,GAAS,uBAEjBhe,KAAK0Q,QAED4yG,GAEAtjH,KAAKqkB,QAAQo1C,UAAYz7C,EACzBhe,KAAKqkB,QAAQq1C,SAASnkC,EAAOtvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGsvB,EAAO9oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG8oB,EAAOxlB,MAAOwlB,EAAOvlB,UAIzGhQ,KAAKqkB,QAAQq6C,YAAc1gD,EAC3Bhe,KAAKqkB,QAAQovD,WAAWl+C,EAAOtvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGsvB,EAAO9oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG8oB,EAAOxlB,MAAOwlB,EAAOvlB,SAG/GhQ,KAAKs8B,QAcTu1B,KAAM,SAAUA,EAAM5rD,EAAGwG,EAAGuR,EAAO00C,GAE/B10C,EAAQA,GAAS,mBACjB00C,EAAOA,GAAQ,eAEf1yD,KAAK0Q,QACL1Q,KAAKqkB,QAAQquC,KAAOA,EAEhB1yD,KAAKsiH,eAELtiH,KAAKqkB,QAAQo1C,UAAY,aACzBz5D,KAAKqkB,QAAQ85C,SAAStM,EAAM5rD,EAAI,EAAGwG,EAAI,IAG3CzM,KAAKqkB,QAAQo1C,UAAYz7C,EACzBhe,KAAKqkB,QAAQ85C,SAAStM,EAAM5rD,EAAGwG,GAE/BzM,KAAKs8B,QAWT0nF,SAAU,SAAUC,EAAUjmG,GAE1BA,EAAQA,GAAS,oBAEjBhe,KAAK0Q,OAEL,IAAIiK,GAASspG,EAAStpG,MAEtB,IAA8B,IAA1BspG,EAASjzB,MAAMnpF,OACnB,CACI7H,KAAKqkB,QAAQq6C,YAAc1gD,EAC3Bhe,KAAKqkB,QAAQovD,WAAW94D,EAAO1U,EAAG0U,EAAOlO,EAAGkO,EAAO5K,MAAO4K,EAAO3K,QACjEhQ,KAAK6xD,KAAK,SAAWoyD,EAASlzB,QAAQlpF,OAAQ8S,EAAO1U,EAAI,EAAG0U,EAAOlO,EAAI,GAAI,eAAgB,gBAE3FzM,KAAKqkB,QAAQq6C,YAAc,cAE3B,KAAK,GAAI52D,GAAI,EAAGA,EAAIm8G,EAASlzB,QAAQlpF,OAAQC,IAEzC9H,KAAKqkB,QAAQovD,WAAWwwC,EAASlzB,QAAQjpF,GAAG7B,EAAGg+G,EAASlzB,QAAQjpF,GAAG2E,EAAGw3G,EAASlzB,QAAQjpF,GAAGiI,MAAOk0G,EAASlzB,QAAQjpF,GAAGkI,YAKzH,KAAK,GAAIlI,GAAI,EAAGA,EAAIm8G,EAASjzB,MAAMnpF,OAAQC,IAEvC9H,KAAKgkH,SAASC,EAASjzB,MAAMlpF,GAIrC9H,MAAKs8B,QAcT1M,KAAM,SAAUwH,EAAQpZ,EAAOslG,GAEvBlsF,EAAOxH,OAEP5vB,KAAK0Q,QAED0mB,EAAOxH,KAAK1nB,OAAS7H,EAAOutB,QAAQC,OAEpCxtB,EAAOutB,QAAQ2kC,OAAO2xD,KAAKtjG,OAAO5gB,KAAKqkB,QAAS+S,EAAOxH,KAAM5R,EAAOslG,GAE/DlsF,EAAOxH,KAAK1nB,OAAS7H,EAAOutB,QAAQu2F,MAEzC9jH,EAAOutB,QAAQw2F,MAAMF,KAAKtjG,OAAO5gB,KAAKqkB,QAAS+S,EAAOxH,KAAM5R,EAAOslG,GAE9DlsF,EAAOxH,KAAK1nB,OAAS7H,EAAOutB,QAAQy2F,OAEzChkH,EAAOutB,QAAQ02F,MAAMC,WAAWvkH,KAAKqkB,QAAS+S,EAAOxH,KAAM5R,GAG/Dhe,KAAKs8B,SAcbkoF,SAAU,SAAUptF,EAAQnxB,EAAGwG,EAAGuR,GAE1BoZ,EAAOxH,OAEP5vB,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,KAEpBoZ,EAAOxH,KAAK1nB,OAAS7H,EAAOutB,QAAQC,OAEpCxtB,EAAOutB,QAAQ2kC,OAAO2xD,KAAKO,eAAezkH,KAAMo3B,EAAOxH,MAElDwH,EAAOxH,KAAK1nB,OAAS7H,EAAOutB,QAAQy2F,OAEzCrkH,KAAKwa,KAAK6F,QAAQqkG,MAAMD,eAAezkH,KAAMo3B,EAAOxH,MAGxD5vB,KAAKs8B,SAYbqoF,WAAY,WAER3kH,KAAK0Q,QAEL1Q,KAAKqkB,QAAQzP,WAAW5U,KAAKwa,KAAKoC,OAAOlC,KAAKzU,GAAIjG,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAG,GAC3EzM,KAAKwa,KAAK6F,QAAQqkG,MAAME,gBAAgB5kH,KAAKqkB,SAE7CrkB,KAAKs8B,QAYTuoF,UAAW,SAAUj1F,EAAM5R,GAEvBhe,KAAK0Q,QACLrQ,EAAOutB,QAAQ02F,MAAMC,WAAWvkH,KAAKqkB,QAASuL,EAAM5R,GACpDhe,KAAKs8B,QAcTwoF,YAAa,SAAU9pG,GAanB,GAXsBtR,SAAlBsR,IAA+BA,EAAgBhb,KAAKwa,KAAKC,OAEzDO,EAAchQ,eAAe,iBAE7B5C,QAAQC,IAAI,IAAM2S,EAAc6Y,cAAgB,IAAK7Y,GAIrD5S,QAAQC,IAAI,KAAM2S,GAGlBA,EAAc2Q,UAAY3Q,EAAc2Q,SAAS9jB,OAAS,EAE1D,IAAK,GAAIC,GAAI,EAAGA,EAAIkT,EAAc2Q,SAAS9jB,OAAQC,IAE/C9H,KAAKwa,KAAKqJ,MAAMihG,YAAY9pG,EAAc2Q,SAAS7jB,KAW/Dgc,QAAS,WAELhe,KAAK66B,WAAW7d,OAAO9iB,QAM/BK,EAAOmI,MAAM4xB,MAAM/zB,UAAU8B,YAAc9H,EAAOmI,MAAM4xB,MAmBxD/5B,EAAO+qB,KAYHC,UAAW,SAAUsa,EAASn3B,GAE1BA,EAAQA,GAAS,GAAInO,GAAO2M,KAE5B,IAAI+3G,GAAMp/E,EAAQ+5E,wBAEdX,EAAY1+G,EAAO+qB,IAAI45F,QACvBC,EAAa5kH,EAAO+qB,IAAI85F,QACxBC,EAAYr5F,SAASm7D,gBAAgBk+B,UACrCC,EAAat5F,SAASm7D,gBAAgBm+B,UAK1C,OAHA52G,GAAMvI,EAAI8+G,EAAIl6G,KAAOo6G,EAAaG,EAClC52G,EAAM/B,EAAIs4G,EAAIr2G,IAAMqwG,EAAYoG,EAEzB32G,GAiBXlB,UAAW,SAAUq4B,EAAS0/E,GAM1B,MAJgB37G,UAAZ27G,IAAyBA,EAAU,GAEvC1/E,EAAUA,IAAYA,EAAQ56B,SAAW46B,EAAQ,GAAKA,KAEjDA,GAAgC,IAArBA,EAAQ56B,WAMb/K,KAAKslH,UAAU3/E,EAAQ+5E,wBAAyB2F,IAc/DC,UAAW,SAAUC,EAAQF,GAEzBA,GAAWA,GAAW,CAEtB,IAAIt3G,IAAWgC,MAAO,EAAGC,OAAQ,EAAGnF,KAAM,EAAGD,MAAO,EAAG8D,IAAK,EAAGC,OAAQ,EAKvE,OAHAZ,GAAOgC,OAAShC,EAAOnD,MAAQ26G,EAAO36G,MAAQy6G,IAAYt3G,EAAOlD,KAAO06G,EAAO16G,KAAOw6G,GACtFt3G,EAAOiC,QAAUjC,EAAOY,OAAS42G,EAAO52G,OAAS02G,IAAYt3G,EAAOW,IAAM62G,EAAO72G,IAAM22G,GAEhFt3G,GAWXy3G,eAAgB,SAAUjwF,GAEtBA,EAAS,MAAQA,EAASv1B,KAAKi9G,aAAe,IAAM1nF,EAAOxqB,SAAW/K,KAAKsN,UAAUioB,GAAUA,CAE/F,IAAIjY,GAAIiY,EAAc,MAClBhY,EAAIgY,EAAe,MAYvB,OAViB,kBAANjY,KAEPA,EAAIA,EAAExW,KAAKyuB,IAGE,kBAANhY,KAEPA,EAAIA,EAAEzW,KAAKyuB,IAGRjY,EAAIC,GAiBfkoG,iBAAkB,SAAU9/E,EAAS0/E;AAEjC,GAAIn4G,GAAIlN,KAAKsN,UAAUq4B,EAAS0/E,EAEhC,SAASn4G,GAAKA,EAAEyB,QAAU,GAAKzB,EAAEtC,OAAS,GAAKsC,EAAEwB,KAAO1O,KAAKw/G,aAAazvG,OAAS7C,EAAErC,MAAQ7K,KAAKw/G,aAAaxvG,QA6BnH2pG,qBAAsB,SAAU+L,GAE5B,GAAIC,GAAS59G,OAAO49G,OAChBnH,EAAcmH,EAAOnH,aAAemH,EAAOC,gBAAkBD,EAAOE,aAExE,IAAIrH,GAA2C,gBAArBA,GAAYt2G,KAGlC,MAAOs2G,GAAYt2G,IAElB,IAA2B,gBAAhBs2G,GAGZ,MAAOA,EAGX,IAAIt7G,GAAW,mBACXD,EAAY,mBAEhB,IAAwB,WAApByiH,EAEA,MAAQC,GAAO31G,OAAS21G,EAAO51G,MAAS7M,EAAWD,CAElD,IAAwB,aAApByiH,EAEL,MAAQ1lH,MAAKi9G,aAAajtG,OAAShQ,KAAKi9G,aAAaltG,MAAS7M,EAAWD,CAExE,IAAwB,uBAApByiH,GAA0E,gBAAvB39G,QAAOy2G,YAG/D,MAA+B,KAAvBz2G,OAAOy2G,aAA4C,MAAvBz2G,OAAOy2G,YAAuBt7G,EAAWD,CAE5E,IAAI8E,OAAO+9G,WAChB,CACI,GAAI/9G,OAAO+9G,WAAW,2BAA2B17B,QAE7C,MAAOlnF,EAEN,IAAI6E,OAAO+9G,WAAW,4BAA4B17B,QAEnD,MAAOnnF,GAIf,MAAQjD,MAAKi9G,aAAajtG,OAAShQ,KAAKi9G,aAAaltG,MAAS7M,EAAWD,GAqB7Eg6G,aAAc,GAAI58G,GAAOkN,UAqBzBiyG,aAAc,GAAIn/G,GAAOkN,UAczBw4G,eAAgB,GAAI1lH,GAAOkN,WAI/BlN,EAAO43B,OAAOoB,UAAU,SAAU3M,GAG9B,GAAIw4F,GAAUn9G,QAAW,eAAiBA,QACtC,WAAc,MAAOA,QAAOi+G,aAC5B,WAAc,MAAOl6F,UAASm7D,gBAAgBg+B,YAE9CD,EAAUj9G,QAAW,eAAiBA,QACtC,WAAc,MAAOA,QAAOk+G,aAC5B,WAAc,MAAOn6F,UAASm7D,gBAAgB83B,UAUlDx3G,QAAO2E,eAAe7L,EAAO+qB,IAAK,WAC9Bpf,IAAKk5G,IAWT39G,OAAO2E,eAAe7L,EAAO+qB,IAAK,WAC9Bpf,IAAKg5G,IAGTz9G,OAAO2E,eAAe7L,EAAO+qB,IAAI6xF,aAAc,KAC3CjxG,IAAKk5G,IAGT39G,OAAO2E,eAAe7L,EAAO+qB,IAAI6xF,aAAc,KAC3CjxG,IAAKg5G,IAGTz9G,OAAO2E,eAAe7L,EAAO+qB,IAAIo0F,aAAc,KAC3Cj2G,MAAO,IAGXhC,OAAO2E,eAAe7L,EAAO+qB,IAAIo0F,aAAc,KAC3Cj2G,MAAO,GAGX,IAAI28G,GAAiBx5F,EAAO20D,SACvBv1D,SAASm7D,gBAAgBk/B,aAAep+G,OAAOuC,YAC/CwhB,SAASm7D,gBAAgBm/B,cAAgBr+G,OAAOwC,WAKrD,IAAI27G,EACJ,CAII,GAAIC,GAAc,WACd,MAAOpgH,MAAKoM,IAAIpK,OAAOuC,WAAYwhB,SAASm7D,gBAAgBk/B,cAE5DC,EAAe,WACf,MAAOrgH,MAAKoM,IAAIpK,OAAOwC,YAAauhB,SAASm7D,gBAAgBm/B,cAIjE7+G,QAAO2E,eAAe7L,EAAO+qB,IAAI6xF,aAAc,SAC3CjxG,IAAKm6G,IAGT5+G,OAAO2E,eAAe7L,EAAO+qB,IAAI6xF,aAAc,UAC3CjxG,IAAKo6G,IAGT7+G,OAAO2E,eAAe7L,EAAO+qB,IAAIo0F,aAAc,SAC3CxzG,IAAKm6G,IAGT5+G,OAAO2E,eAAe7L,EAAO+qB,IAAIo0F,aAAc,UAC3CxzG,IAAKo6G,QAKT7+G,QAAO2E,eAAe7L,EAAO+qB,IAAI6xF,aAAc,SAC3CjxG,IAAK,WACD,MAAOjE,QAAOuC,cAItB/C,OAAO2E,eAAe7L,EAAO+qB,IAAI6xF,aAAc,UAC3CjxG,IAAK,WACD,MAAOjE,QAAOwC,eAItBhD,OAAO2E,eAAe7L,EAAO+qB,IAAIo0F,aAAc,SAE3CxzG,IAAK,WACD,GAAIyC,GAAIqd,SAASm7D,gBAAgBk/B,YAC7Bt3G,EAAI9G,OAAOuC,UAEf,OAAOmE,GAAII,EAAIA,EAAIJ,KAK3BlH,OAAO2E,eAAe7L,EAAO+qB,IAAIo0F,aAAc,UAE3CxzG,IAAK,WACD,GAAIyC,GAAIqd,SAASm7D,gBAAgBm/B,aAC7Bv3G,EAAI9G,OAAOwC,WAEf,OAAOkE,GAAII,EAAIA,EAAIJ,IAU/BlH,QAAO2E,eAAe7L,EAAO+qB,IAAI26F,eAAgB,KAC7Cx8G,MAAO,IAGXhC,OAAO2E,eAAe7L,EAAO+qB,IAAI26F,eAAgB,KAC7Cx8G,MAAO,IAGXhC,OAAO2E,eAAe7L,EAAO+qB,IAAI26F,eAAgB,SAE7C/5G,IAAK,WACD,GAAIiI,GAAI6X,SAASm7D,eACjB,OAAOlhF,MAAKoM,IAAI8B,EAAEkyG,YAAalyG,EAAEoyG,YAAapyG,EAAEqyG,gBAKxD/+G,OAAO2E,eAAe7L,EAAO+qB,IAAI26F,eAAgB,UAE7C/5G,IAAK,WACD,GAAIiI,GAAI6X,SAASm7D,eACjB,OAAOlhF,MAAKoM,IAAI8B,EAAEmyG,aAAcnyG,EAAEsyG,aAActyG,EAAEuyG,kBAK3D,MAAM,GAoBTnmH,EAAO4zB,SAAW,SAAUiC,GAOxBl2B,KAAKuZ,SAAW,EAMhBvZ,KAAKk2B,KAAOA,OAIhB71B,EAAO4zB,SAAS5tB,WAUZwL,IAAK,SAAUg0E,GAOX,MALK7lF,MAAKwqB,OAAOq7D,IAEb7lF,KAAKk2B,KAAKtjB,KAAKizE,GAGZA,GAWX/zD,SAAU,SAAU+zD,GAEhB,MAAO7lF,MAAKk2B,KAAK5F,QAAQu1D,IAa7B4gC,SAAU,SAAUzzF,EAAUzpB,GAI1B,IAFA,GAAIzB,GAAI9H,KAAKk2B,KAAKruB,OAEXC,KAEH,GAAI9H,KAAKk2B,KAAKpuB,GAAGkrB,KAAczpB,EAE3B,MAAOvJ,MAAKk2B,KAAKpuB,EAIzB,OAAO,OAWX0iB,OAAQ,SAAUq7D,GAEd,MAAQ7lF,MAAKk2B,KAAK5F,QAAQu1D,IAAQ,GAStCnmE,MAAO,WAEH1f,KAAKk2B,KAAKruB,OAAS,GAWvBib,OAAQ,SAAU+iE,GAEd,GAAIrK,GAAMx7E,KAAKk2B,KAAK5F,QAAQu1D,EAE5B,IAAIrK,GAAM,EAGN,MADAx7E,MAAKk2B,KAAK/S,OAAOq4D,EAAK,GACfqK,GAYfjzD,OAAQ,SAAU7mB,EAAKxC,GAInB,IAFA,GAAIzB,GAAI9H,KAAKk2B,KAAKruB,OAEXC,KAEC9H,KAAKk2B,KAAKpuB,KAEV9H,KAAKk2B,KAAKpuB,GAAGiE,GAAOxC,IAgBhCkqB,QAAS,SAAU1nB,GAMf,IAJA,GAAIpF,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAE7Ce,EAAI9H,KAAKk2B,KAAKruB,OAEXC,KAEC9H,KAAKk2B,KAAKpuB,IAAM9H,KAAKk2B,KAAKpuB,GAAGiE,IAE7B/L,KAAKk2B,KAAKpuB,GAAGiE,GAAK9E,MAAMjH,KAAKk2B,KAAKpuB,GAAInB,IAYlDid,UAAW,SAAUE,GAEDpa,SAAZoa,IAAyBA,GAAU,EAIvC,KAFA,GAAIhc,GAAI9H,KAAKk2B,KAAKruB,OAEXC,KAEH,GAAI9H,KAAKk2B,KAAKpuB,GACd,CACI,GAAI+9E,GAAO7lF,KAAK8iB,OAAO9iB,KAAKk2B,KAAKpuB,GAE7Bgc,IAEA+hE,EAAK/hE,UAKjB9jB,KAAKuZ,SAAW,EAChBvZ,KAAKk2B,UAYb3uB,OAAO2E,eAAe7L,EAAO4zB,SAAS5tB,UAAW,SAE7C2F,IAAK,WACD,MAAOhM,MAAKk2B,KAAKruB,UAWzBN,OAAO2E,eAAe7L,EAAO4zB,SAAS5tB,UAAW,SAE7C2F,IAAK,WAID,MAFAhM,MAAKuZ,SAAW,EAEZvZ,KAAKk2B,KAAKruB,OAAS,EAEZ7H,KAAKk2B,KAAK,GAIV,QAanB3uB,OAAO2E,eAAe7L,EAAO4zB,SAAS5tB,UAAW,QAE7C2F,IAAK,WAED,MAAIhM,MAAKuZ,SAAWvZ,KAAKk2B,KAAKruB,QAE1B7H,KAAKuZ,WAEEvZ,KAAKk2B,KAAKl2B,KAAKuZ,WAIf,QAOnBlZ,EAAO4zB,SAAS5tB,UAAU8B,YAAc9H,EAAO4zB,SAc/C5zB,EAAOy1B,YAcHC,cAAe,SAAUg7D,EAASl7D,EAAYhuB,GAE1C,GAAgB,OAAZkpF,EAAoB,MAAO,KACZrnF,UAAfmsB,IAA4BA,EAAa,GAC9BnsB,SAAX7B,IAAwBA,EAASkpF,EAAQlpF,OAE7C,IAAI6+G,GAAc7wF,EAAa9vB,KAAKI,MAAMJ,KAAK4D,SAAW9B,EAE1D,OAAgC6B,UAAzBqnF,EAAQ21B,GAA6B,KAAO31B,EAAQ21B,IAgB/DC,iBAAkB,SAAU51B,EAASl7D,EAAYhuB,GAE7C,GAAe,MAAXkpF,EACA,MAAO,KAGQrnF,UAAfmsB,IAA4BA,EAAa,GAC9BnsB,SAAX7B,IAAwBA,EAASkpF,EAAQlpF,OAE7C,IAAI6+G,GAAc7wF,EAAa9vB,KAAKI,MAAMJ,KAAK4D,SAAW9B,EAC1D,IAAI6+G,EAAc31B,EAAQlpF,OAC1B,CACI,GAAI0uB,GAAUw6D,EAAQ5tE,OAAOujG,EAAa,EAC1C,OAAsBh9G,UAAf6sB,EAAQ,GAAmB,KAAOA,EAAQ,GAIjD,MAAO,OAYfqwF,QAAS,SAAUzyG,GAEf,IAAK,GAAIrM,GAAIqM,EAAMtM,OAAS,EAAGC,EAAI,EAAGA,IACtC,CACI,GAAI+P,GAAI9R,KAAKI,MAAMJ,KAAK4D,UAAY7B,EAAI,IACpC++G,EAAO1yG,EAAMrM,EACjBqM,GAAMrM,GAAKqM,EAAM0D,GACjB1D,EAAM0D,GAAKgvG,EAGf,MAAO1yG,IAWX2yG,gBAAiB,SAAU3yG,GAOvB,IAAK,GALD4yG,GAAiB5yG,EAAMtM,OACvBm/G,EAAiB7yG,EAAM,GAAGtM,OAE1ByJ,EAAS,GAAI9K,OAAMwgH,GAEdl/G,EAAI,EAAGA,EAAIk/G,EAAgBl/G,IACpC,CACIwJ,EAAOxJ,GAAK,GAAItB,OAAMugH,EAEtB,KAAK,GAAIlvG,GAAIkvG,EAAiB,EAAGlvG,GAAI,EAAIA,IAErCvG,EAAOxJ,GAAG+P,GAAK1D,EAAM0D,GAAG/P,GAIhC,MAAOwJ,IAcX21G,aAAc,SAAU7yG,EAAQ0J,GAO5B,GALyB,gBAAdA,KAEPA,GAAcA,EAAY,IAAO,KAAO,KAG1B,KAAdA,GAAoBA,KAAc,KAAsB,eAAdA,EAE1C1J,EAAS/T,EAAOy1B,WAAWgxF,gBAAgB1yG,GAC3CA,EAASA,EAAOxL,cAEf,IAAIkV,KAAc,IAAqB,MAAdA,GAAmC,gBAAdA,EAE/C1J,EAASA,EAAOxL,UAChBwL,EAAS/T,EAAOy1B,WAAWgxF,gBAAgB1yG,OAE1C,IAA4B,MAAxBrO,KAAKoJ,IAAI2O,IAAoC,cAAdA,EACxC,CACI,IAAK,GAAIhW,GAAI,EAAGA,EAAIsM,EAAOvM,OAAQC,IAE/BsM,EAAOtM,GAAGc,SAGdwL,GAASA,EAAOxL,UAGpB,MAAOwL,IAaX8yG,YAAa,SAAU39G,EAAO49G,GAE1B,IAAKA,EAAIt/G,OAEL,MAAOu/G,IAEN,IAAmB,IAAfD,EAAIt/G,QAAgB0B,EAAQ49G,EAAI,GAErC,MAAOA,GAAI,EAIf,KADA,GAAIr/G,GAAI,EACDq/G,EAAIr/G,GAAKyB,GACZzB,GAGJ,IAAIu/G,GAAMF,EAAIr/G,EAAI,GACdw/G,EAAQx/G,EAAIq/G,EAAIt/G,OAAUs/G,EAAIr/G,GAAKqQ,OAAOiC,iBAE9C,OAASktG,GAAO/9G,GAAWA,EAAQ89G,EAAQC,EAAOD,GAiBtDE,YAAa,SAAUpzG,GAEnB,GAAIsC,GAAItC,EAAMhL,KAGd,OAFAgL,GAAM89D,QAAQx7D,GAEPA,GAiBX+wG,WAAY,SAAUrzG,GAElB,GAAIsC,GAAItC,EAAMk3B,OAGd,OAFAl3B,GAAMvB,KAAK6D,GAEJA,GAkBXvF,OAAQ,SAAUiD,GAEd,GAAIsC,GAAItC,EAAMk3B,OAGd,OAFAl3B,GAAMvB,KAAK6D,GAEJA,GAaXgxG,YAAa,SAAU/2G,EAAOC,GAI1B,IAAK,GAFDW,MAEKxJ,EAAI4I,EAAO5I,GAAK6I,EAAK7I,IAE1BwJ,EAAOsB,KAAK9K,EAGhB,OAAOwJ,IAqCXo2G,gBAAiB,SAAUh3G,EAAOC,EAAK0rB,GAErB3yB,SAAVgH,GAAiC,OAAVA,IAAkBA,EAAQ,GAEzChH,SAARiH,GAA6B,OAARA,IAErBA,EAAMD,EACNA,EAAQ,GAGChH,SAAT2yB,IAAsBA,EAAO,EAKjC,KAAK,GAHD/qB,MACAujB,EAAQ9uB,KAAKoM,IAAI9R,EAAO0F,KAAK8oF,mBAAmBl+E,EAAMD,IAAU2rB,GAAQ,IAAK,GAExEv0B,EAAI,EAAGA,EAAI+sB,EAAO/sB,IAEvBwJ,EAAOsB,KAAKlC,GACZA,GAAS2rB,CAGb,OAAO/qB,KAuBfjR,EAAOsnH,WAAa,WAOhB3nH,KAAKuxB,KAAO,KAOZvxB,KAAK+4D,KAAO,KAOZ/4D,KAAKisC,MAAQ,KAObjsC,KAAKkJ,KAAO,KAOZlJ,KAAK60B,MAAQ,GAIjBx0B,EAAOsnH,WAAWthH,WASdwL,IAAK,SAAUg0E,GAGX,MAAmB,KAAf7lF,KAAK60B,OAA8B,OAAf70B,KAAKisC,OAAgC,OAAdjsC,KAAKkJ,MAEhDlJ,KAAKisC,MAAQ45C,EACb7lF,KAAKkJ,KAAO28E,EACZ7lF,KAAKuxB,KAAOs0D,EACZA,EAAK9sB,KAAO/4D,KACZA,KAAK60B,QACEgxD,IAIX7lF,KAAKkJ,KAAKqoB,KAAOs0D,EAEjBA,EAAK9sB,KAAO/4D,KAAKkJ,KAEjBlJ,KAAKkJ,KAAO28E,EAEZ7lF,KAAK60B,QAEEgxD,IASXnmE,MAAO,WAEH1f,KAAKisC,MAAQ,KACbjsC,KAAKkJ,KAAO,KACZlJ,KAAKuxB,KAAO,KACZvxB,KAAK+4D,KAAO,KACZ/4D,KAAK60B,MAAQ,GAUjB/R,OAAQ,SAAU+iE,GAEd,MAAmB,KAAf7lF,KAAK60B,OAEL70B,KAAK0f,aACLmmE,EAAKt0D,KAAOs0D,EAAK9sB,KAAO,QAIxB8sB,IAAS7lF,KAAKisC,MAGdjsC,KAAKisC,MAAQjsC,KAAKisC,MAAM1a,KAEnBs0D,IAAS7lF,KAAKkJ,OAGnBlJ,KAAKkJ,KAAOlJ,KAAKkJ,KAAK6vD,MAGtB8sB,EAAK9sB,OAGL8sB,EAAK9sB,KAAKxnC,KAAOs0D,EAAKt0D,MAGtBs0D,EAAKt0D,OAGLs0D,EAAKt0D,KAAKwnC,KAAO8sB,EAAK9sB,MAG1B8sB,EAAKt0D,KAAOs0D,EAAK9sB,KAAO,KAEL,OAAf/4D,KAAKisC,QAELjsC,KAAKkJ,KAAO,UAGhBlJ,MAAK60B,UAWTpB,QAAS,SAAUH,GAEf,GAAKtzB,KAAKisC,OAAUjsC,KAAKkJ,KAAzB,CAKA,GAAI0+G,GAAS5nH,KAAKisC,KAElB,GAEQ27E,IAAUA,EAAOt0F,IAEjBs0F,EAAOt0F,GAAUxsB,KAAK8gH,GAG1BA,EAASA,EAAOr2F,WAGdq2F,GAAU5nH,KAAKkJ,KAAKqoB,SAMlClxB,EAAOsnH,WAAWthH,UAAU8B,YAAc9H,EAAOsnH,WAmBjDtnH,EAAO65B,OAAS,SAAU1f,GAKtBxa,KAAKwa,KAAOA,EAKZxa,KAAKoiH,IAAM,KAKXpiH,KAAKsrB,OAAS,KAKdtrB,KAAK03D,IAAM,KAKX13D,KAAK6nH,WACCC,EAAG,OAAQC,EAAG,UAAWC,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW5nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW75C,EAAG,YAC/M2gH,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW5nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW75C,EAAG,YAClN2gH,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW5nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW75C,EAAG,SAClN2gH,EAAG,OAAQC,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW5nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW75C,EAAG,YAC/M2gH,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW5nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW75C,EAAG,UAU5N9G,EAAO65B,OAAOsuF,aAAe,EAO7BnoH,EAAO65B,OAAOuuF,YAAc,EAO5BpoH,EAAO65B,OAAOwuF,YAAc,EAO5BroH,EAAO65B,OAAOyuF,YAAc,EAO5BtoH,EAAO65B,OAAO0uF,yBAA2B,EAEzCvoH,EAAO65B,OAAO7zB,WAiCVm8B,QAAS,SAAUz2B,EAAK22B,EAAMmmF,EAAYC,EAAaC,GAEhCr/G,SAAfm/G,IAA4BA,EAAa,GACzBn/G,SAAhBo/G,IAA6BA,EAAcD,GAC/Bn/G,SAAZq/G,IAAyBA,EAAU,EAEvC,IAAIzrG,GAAIolB,EAAK,GAAG76B,OAASghH,EACrBtrG,EAAImlB,EAAK76B,OAASihH,CAGL,QAAb9oH,KAAKoiH,MAELpiH,KAAKoiH,IAAMpiH,KAAKwa,KAAKqF,KAAKi0C,aAC1B9zD,KAAKsrB,OAAStrB,KAAKoiH,IAAI92F,OACvBtrB,KAAK03D,IAAM13D,KAAKoiH,IAAI/9F,SAGxBrkB,KAAKoiH,IAAItpG,OAAOwE,EAAGC,GACnBvd,KAAKoiH,IAAInkG,OAGT,KAAK,GAAIxR,GAAI,EAAGA,EAAIi2B,EAAK76B,OAAQ4E,IAI7B,IAAK,GAFD00F,GAAMz+D,EAAKj2B,GAENxG,EAAI,EAAGA,EAAIk7F,EAAIt5F,OAAQ5B,IAChC,CACI,GAAIgO,GAAIktF,EAAIl7F,EAEF,OAANgO,GAAmB,MAANA,IAEbjU,KAAK03D,IAAI+B,UAAYz5D,KAAK6nH,SAASkB,GAAS90G,GAC5CjU,KAAK03D,IAAIgC,SAASzzD,EAAI4iH,EAAYp8G,EAAIq8G,EAAaD,EAAYC,IAK3E,MAAO9oH,MAAKoiH,IAAIzoD,gBAAgB5tD,IAgBpCmpC,KAAM,SAAUnpC,EAAKgE,EAAOC,EAAQmhB,EAAWC,EAAYpT,GAGtC,OAAbhe,KAAKoiH,MAELpiH,KAAKoiH,IAAMpiH,KAAKwa,KAAKqF,KAAKi0C,aAC1B9zD,KAAKsrB,OAAStrB,KAAKoiH,IAAI92F,OACvBtrB,KAAK03D,IAAM13D,KAAKoiH,IAAI/9F,SAGxBrkB,KAAKoiH,IAAItpG,OAAO/I,EAAOC,GAEvBhQ,KAAK03D,IAAI+B,UAAYz7C,CAErB,KAAK,GAAIvR,GAAI,EAAGA,EAAIuD,EAAQvD,GAAK2kB,EAE7BpxB,KAAK03D,IAAIgC,SAAS,EAAGjtD,EAAGsD,EAAO,EAGnC,KAAK,GAAI9J,GAAI,EAAGA,EAAI8J,EAAO9J,GAAKkrB,EAE5BnxB,KAAK03D,IAAIgC,SAASzzD,EAAG,EAAG,EAAG+J,EAG/B,OAAOhQ,MAAKoiH,IAAIzoD,gBAAgB5tD,KAMxC1L,EAAO65B,OAAO7zB,UAAU8B,YAAc9H,EAAO65B,OAsB7C75B,EAAOy8G,SAAW,SAAU5lB,EAASnnF,EAAOC,GAKxChQ,KAAKwa,KAAO08E,EAAQ18E,KAKpBxa,KAAKk3F,QAAUA,EAGfl3F,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAKgpH,aAAe,GAAI3oH,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GACtDhQ,KAAKm1C,YAAc,GAAI90C,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GACrDhQ,KAAKipH,WAAa,GAAI5oH,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GACpDhQ,KAAKkpH,WAAa,GAAI7oH,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GAMpDhQ,KAAKmpH,eAAiB,GAAI9oH,GAAO2M,MAAM,EAAG,GAC1ChN,KAAKopH,cAAgB,GAAI/oH,GAAO2M,MAAM,EAAG,GACzChN,KAAKqpH,aAAe,GAAIhpH,GAAO2M,MAAM,EAAG,GACxChN,KAAKspH,aAAe,GAAIjpH,GAAO2M,MAAM,EAAG,GAMxChN,KAAKupH,YAAc,GAAIlpH,GAAO2M,MAAM,EAAG,GACvChN,KAAKwpH,WAAa,GAAInpH,GAAO2M,MAAM,EAAG,GACtChN,KAAKo1C,mBAAqB,GAAI/0C,GAAO2M,MAAM,EAAG,GAC9ChN,KAAKypH,UAAY,GAAIppH,GAAO2M,MAAM,EAAG,GACrChN,KAAK0pH,UAAY,GAAIrpH,GAAO2M,MAAM,EAAG,GAErChN,KAAK2pH,YAAc,EACnB3pH,KAAK4pH,aAAe,EACpB5pH,KAAK6pH,cAAgB,EACrB7pH,KAAK8pH,cAAgB,EAErB9pH,KAAK+pH,OAASh6G,EAAQC,EACtBhQ,KAAKgqH,OAASh6G,EAASD,EAEvB/P,KAAK6gH,WAAa,EAElB7gH,KAAKiqH,WAIT5pH,EAAOy8G,SAASz2G,WASZoZ,QAAS,SAAU1P,EAAOC,GAGtBhQ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAK+pH,OAASh6G,EAAQC,EACtBhQ,KAAKgqH,OAASh6G,EAASD,EAEvB/P,KAAK0pH,UAAY,GAAIrpH,GAAO2M,MAAM,EAAG,GAErChN,KAAKkpH,WAAWn5G,MAAQ/P,KAAK+P,MAC7B/P,KAAKkpH,WAAWl5G,OAAShQ,KAAKgQ,OAE9BhQ,KAAKi8B,WAeTiuF,kBAAmB,SAAUn6G,EAAOC,EAAQ2b,EAAU1C,GAE/Bvf,SAAfuf,IAA4BA,GAAa,GAE7CjpB,KAAK2pH,YAAc55G,EACnB/P,KAAK4pH,aAAe55G,EAEpBhQ,KAAKgpH,aAAaj5G,MAAQA,EAC1B/P,KAAKgpH,aAAah5G,OAASA,CAE3B,IAAIm6G,GAAQ,GAAI9pH,GAAO+pH,UAAUpqH,KAAMA,KAAKmpH,eAAgBnpH,KAAKgpH,aAAchpH,KAAKupH,YAcpF,OAZItgG,IAEAjpB,KAAKwa,KAAKC,MAAM5I,IAAIs4G,GAGxBnqH,KAAKiqH,OAAOr3G,KAAKu3G,GAEO,mBAAbx+F,IAAgD,aAAbA,IAE1Cw+F,EAAM55F,YAAY5E,GAGfw+F,GAWXE,iBAAkB,SAAU1+F,EAAU1C,GAEfvf,SAAfuf,IAA4BA,GAAa,EAE7C,IAAIkhG,GAAQ,GAAI9pH,GAAO+pH,UAAUpqH,KAAMA,KAAKopH,cAAeppH,KAAKm1C,YAAan1C,KAAKwpH,WAclF,OAZIvgG,IAEAjpB,KAAKwa,KAAKC,MAAM5I,IAAIs4G,GAGxBnqH,KAAKiqH,OAAOr3G,KAAKu3G,GAEO,mBAAbx+F,IAAgD,aAAbA,IAE1Cw+F,EAAM55F,YAAY5E,GAGfw+F,GAWXG,gBAAiB,SAAU3+F,GAEvB,GAAIw+F,GAAQ,GAAI9pH,GAAO+pH,UAAUpqH,KAAMA,KAAKqpH,aAAcrpH,KAAKipH,WAAYjpH,KAAKwpH,WAWhF,OATAxpH,MAAKwa,KAAKC,MAAM5I,IAAIs4G,GAEpBnqH,KAAKiqH,OAAOr3G,KAAKu3G,GAEO,mBAAbx+F,IAEPw+F,EAAM55F,YAAY5E,GAGfw+F,GAWXI,iBAAkB,SAAU5+F,GAExB,GAAIw+F,GAAQ,GAAI9pH,GAAO+pH,UAAUpqH,KAAMA,KAAKspH,aAActpH,KAAKkpH,WAAYlpH,KAAK0pH,UAWhF,OATA1pH,MAAKwa,KAAKC,MAAM5I,IAAIs4G,GAEpBnqH,KAAKiqH,OAAOr3G,KAAKu3G,GAEO,mBAAbx+F,IAEPw+F,EAAM55F,YAAY5E,GAGfw+F,GASXzqG,MAAO,WAIH,IAFA,GAAI5X,GAAI9H,KAAKiqH,OAAOpiH,OAEbC,KAEE9H,KAAKiqH,OAAOniH,GAAG0iH,UAGhBxqH,KAAKiqH,OAAOniH,GAAGyR,SAAW,KAC1BvZ,KAAKiqH,OAAOniH,GAAG+M,MAAQ,KACvB7U,KAAKiqH,OAAO1jH,MAAMuB,EAAG,KAajCizG,SAAU,SAAUhrG,EAAOC,GAEvBhQ,KAAK+pH,OAASh6G,EAAQC,EACtBhQ,KAAKgqH,OAASh6G,EAASD,EAEvB/P,KAAKi8B,QAAQlsB,EAAOC,IASxBisB,QAAS,WAELj8B,KAAK6gH,WAAa96G,KAAKkM,IAAKjS,KAAKk3F,QAAQlnF,OAAShQ,KAAKgQ,OAAUhQ,KAAKk3F,QAAQnnF,MAAQ/P,KAAK+P,OAE3F/P,KAAKm1C,YAAYplC,MAAQhK,KAAK+H,MAAM9N,KAAK+P,MAAQ/P,KAAK6gH,YACtD7gH,KAAKm1C,YAAYnlC,OAASjK,KAAK+H,MAAM9N,KAAKgQ,OAAShQ,KAAK6gH,YAExD7gH,KAAKwpH,WAAWv9G,IAAIjM,KAAKm1C,YAAYplC,MAAQ/P,KAAK+P,MAAO/P,KAAKm1C,YAAYnlC,OAAShQ,KAAKgQ,QACxFhQ,KAAKo1C,mBAAmBnpC,IAAIjM,KAAK+P,MAAQ/P,KAAKm1C,YAAYplC,MAAO/P,KAAKgQ,OAAShQ,KAAKm1C,YAAYnlC,QAEhGhQ,KAAKypH,UAAUx9G,IAAIjM,KAAKipH,WAAWl5G,MAAQ/P,KAAK+P,MAAO/P,KAAKipH,WAAWj5G,OAAShQ,KAAKgQ,QAErFhQ,KAAKipH,WAAWl5G,MAAQhK,KAAK+H,MAAM9N,KAAKk3F,QAAQnnF,MAAQ/P,KAAKo1C,mBAAmBnvC,GAChFjG,KAAKipH,WAAWj5G,OAASjK,KAAK+H,MAAM9N,KAAKk3F,QAAQlnF,OAAShQ,KAAKo1C,mBAAmB3oC,GAElFzM,KAAKm1C,YAAYzjC,SAAS1R,KAAKk3F,QAAQv8E,OAAOlC,QAASzY,KAAKk3F,QAAQv8E,OAAOjC,SAC3E1Y,KAAKkpH,WAAWx3G,SAAS1R,KAAKk3F,QAAQv8E,OAAOlC,QAASzY,KAAKk3F,QAAQv8E,OAAOjC,SAE1E1Y,KAAKopH,cAAcn9G,IAAIjM,KAAKm1C,YAAYlvC,EAAGjG,KAAKm1C,YAAY1oC,GAC5DzM,KAAKspH,aAAar9G,IAAIjM,KAAKkpH,WAAWjjH,EAAGjG,KAAKkpH,WAAWz8G,IAU7Dg+G,UAAW,SAAUrzF,GAEjBp3B,KAAKk3F,QAAQ2qB,YAAYzqF,GAEzBA,EAAOnxB,EAAIjG,KAAKk3F,QAAQv8E,OAAOlC,QAC/B2e,EAAO3qB,EAAIzM,KAAKk3F,QAAQv8E,OAAOjC,SASnCmL,MAAO,WAUH7jB,KAAKwa,KAAKqJ,MAAMguC,KAAK7xD,KAAKm1C,YAAYplC,MAAQ,MAAQ/P,KAAKm1C,YAAYnlC,OAAQhQ,KAAKm1C,YAAYlvC,EAAI,EAAGjG,KAAKm1C,YAAY1oC,EAAI,IAC5HzM,KAAKwa,KAAKqJ,MAAMigG,KAAK9jH,KAAKm1C,YAAa,oBAAoB,KAYnE90C,EAAOy8G,SAASz2G,UAAU8B,YAAc9H,EAAOy8G,SAuB/Cz8G,EAAO+pH,UAAY,SAAUlzB,EAAS39E,EAAUoB,EAAQ9F,GAEpDxU,EAAOmtB,MAAM1mB,KAAK9G,KAAMk3F,EAAQ18E,KAAM,KAAM,cAAgB08E,EAAQ18E,KAAKsE,IAAI40C,QAAQ,GAKrF1zD,KAAKk3F,QAAUA,EAAQA,QAKvBl3F,KAAKk1C,KAAOgiD,EAOZl3F,KAAKwqH,SAAU,EAKfxqH,KAAKuZ,SAAWA,EAKhBvZ,KAAK2a,OAASA,EAKd3a,KAAK6U,MAAQA,EAKb7U,KAAK0qH,QAAU/vG,EAAO+vG,QAKtB1qH,KAAK2qH,UAAY,GAAItqH,GAAO2M,MAAM2N,EAAOvL,UAAW,GAKpDpP,KAAK4qH,SAAWjwG,EAAOiwG,SAKvB5qH,KAAK6qH,WAAalwG,EAAOkwG,WAKzB7qH,KAAK8qH,aAAe,GAAIzqH,GAAO2M,MAAM2N,EAAOvL,UAAWuL,EAAOhM,QAK9D3O,KAAK+qH,YAAcpwG,EAAOowG,aAI9B1qH,EAAO+pH,UAAU/jH,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACxDhG,EAAO+pH,UAAU/jH,UAAU8B,YAAc9H,EAAO+pH,UAOhD/pH,EAAO+pH,UAAU/jH,UAAUyS,OAAS,aAQpCzY,EAAO+pH,UAAU/jH,UAAUwd,MAAQ,WAE/B7jB,KAAKwa,KAAKqJ,MAAMguC,KAAK7xD,KAAK2a,OAAO5K,MAAQ,MAAQ/P,KAAK2a,OAAO3K,OAAQhQ,KAAK2a,OAAO1U,EAAI,EAAGjG,KAAK2a,OAAOlO,EAAI,IACxGzM,KAAKwa,KAAKqJ,MAAMigG,KAAK9jH,KAAK2a,OAAQ,oBAAoB,GAEtD3a,KAAKwa,KAAKqJ,MAAMigG,KAAK9jH,KAAK0qH,QAAS,wBACnC1qH,KAAKwa,KAAKqJ,MAAMigG,KAAK9jH,KAAK2qH,UAAW,wBACrC3qH,KAAKwa,KAAKqJ,MAAMigG,KAAK9jH,KAAK4qH,SAAU,yBAexCvqH,EAAO+sB,OAeHwtC,UAAW,SAAU1tD,EAAG4d,EAAGjc,EAAGJ,GAE1B,MAAIpO,GAAO43B,OAAOsjC,eAEJ9sD,GAAK,GAAOI,GAAK,GAAOic,GAAM,EAAK5d,KAAQ,GAI3CA,GAAK,GAAO4d,GAAK,GAAOjc,GAAM,EAAKJ,KAAQ,GAwB7DwrD,YAAa,SAAUlvC,EAAMhe,EAAK4uD,EAAKC,GAkCnC,MAhCYlyD,UAARqD,GAA6B,OAARA,IAAgBA,EAAM1M,EAAO+sB,MAAM4sC,eAChDtwD,SAARiyD,GAA6B,OAARA,IAAgBA,GAAM,GACnCjyD,SAARkyD,GAA6B,OAARA,IAAgBA,GAAM,GAE3Cv7D,EAAO43B,OAAOsjC,eAEdxuD,EAAI0B,GAAa,WAAPsc,KAAuB,GACjChe,EAAI8B,GAAa,SAAPkc,KAAuB,GACjChe,EAAI+d,GAAa,MAAPC,KAAuB,EACjChe,EAAIG,EAAa,IAAP6d,IAIVhe,EAAIG,GAAa,WAAP6d,KAAuB,GACjChe,EAAI+d,GAAa,SAAPC,KAAuB,GACjChe,EAAI8B,GAAa,MAAPkc,KAAuB,EACjChe,EAAI0B,EAAa,IAAPsc,GAGdhe,EAAIiR,MAAQ+M,EACZhe,EAAIge,KAAO,QAAUhe,EAAIG,EAAI,IAAMH,EAAI+d,EAAI,IAAM/d,EAAI8B,EAAI,IAAO9B,EAAI0B,EAAI,IAAO,IAE3EktD,GAEAt7D,EAAO+sB,MAAM49F,SAASj+G,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,EAAG9B,GAG3C6uD,GAEAv7D,EAAO+sB,MAAM69F,SAASl+G,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,EAAG9B,GAGxCA,GAeXm+G,SAAU,SAAUngG,EAAMhe,GActB,MAZKA,KAEDA,EAAM1M,EAAO+sB,MAAM4sC,eAGvBjtD,EAAIG,GAAa,WAAP6d,KAAuB,GACjChe,EAAI+d,GAAa,SAAPC,KAAuB,GACjChe,EAAI8B,GAAa,MAAPkc,KAAuB,EACjChe,EAAI0B,EAAa,IAAPsc,EAEVhe,EAAIge,KAAO,QAAUhe,EAAIG,EAAI,IAAMH,EAAI+d,EAAI,IAAM/d,EAAI8B,EAAI,IAAM9B,EAAI0B,EAAI,IAEhE1B,GAgBXo+G,OAAQ,SAAUj+G,EAAG4d,EAAGjc,EAAGJ,GAEvB,MAAQvB,IAAK,GAAO4d,GAAK,GAAOjc,GAAM,EAAKJ,GAe/C28G,OAAQ,SAAUl+G,EAAG4d,EAAGjc,EAAGJ,GAEvB,OAASA,GAAK,GAAOI,GAAK,GAAOic,GAAK,EAAK5d,KAAO,GAkBtD89G,SAAU,SAAU99G,EAAG4d,EAAGjc,EAAG9B,GAEpBA,IAEDA,EAAM1M,EAAO+sB,MAAM4sC,YAAY9sD,EAAG4d,EAAGjc,EAAG,IAG5C3B,GAAK,IACL4d,GAAK,IACLjc,GAAK,GAEL,IAAIoD,GAAMlM,KAAKkM,IAAI/E,EAAG4d,EAAGjc,GACrBsD,EAAMpM,KAAKoM,IAAIjF,EAAG4d,EAAGjc,EAOzB,IAJA9B,EAAIwQ,EAAI,EACRxQ,EAAI0J,EAAI,EACR1J,EAAI3D,GAAK+I,EAAMF,GAAO,EAElBE,IAAQF,EACZ,CACI,GAAIgC,GAAI9B,EAAMF,CAEdlF,GAAI0J,EAAI1J,EAAI3D,EAAI,GAAM6K,GAAK,EAAI9B,EAAMF,GAAOgC,GAAK9B,EAAMF,GAEnDE,IAAQjF,EAERH,EAAIwQ,GAAKuN,EAAIjc,GAAKoF,GAAK6W,EAAIjc,EAAI,EAAI,GAE9BsD,IAAQ2Y,EAEb/d,EAAIwQ,GAAK1O,EAAI3B,GAAK+G,EAAI,EAEjB9B,IAAQtD,IAEb9B,EAAIwQ,GAAKrQ,EAAI4d,GAAK7W,EAAI,GAG1BlH,EAAIwQ,GAAK,EAGb,MAAOxQ,IAkBXkuD,SAAU,SAAU19C,EAAG9G,EAAGrN,EAAG2D,GAczB,GAZKA,GAODA,EAAIG,EAAI9D,EACR2D,EAAI+d,EAAI1hB,EACR2D,EAAI8B,EAAIzF,GAPR2D,EAAM1M,EAAO+sB,MAAM4sC,YAAY5wD,EAAGA,EAAGA,GAU/B,IAANqN,EACJ,CACI,GAAIq2D,GAAI1jE,EAAI,GAAMA,GAAK,EAAIqN,GAAKrN,EAAIqN,EAAIrN,EAAIqN,EACxCxG,EAAI,EAAI7G,EAAI0jE,CAChB//D,GAAIG,EAAI7M,EAAO+sB,MAAMi+F,WAAWp7G,EAAG68D,EAAGvvD,EAAI,EAAI,GAC9CxQ,EAAI+d,EAAIzqB,EAAO+sB,MAAMi+F,WAAWp7G,EAAG68D,EAAGvvD,GACtCxQ,EAAI8B,EAAIxO,EAAO+sB,MAAMi+F,WAAWp7G,EAAG68D,EAAGvvD,EAAI,EAAI,GAalD,MANAxQ,GAAIG,EAAInH,KAAKI,MAAe,IAAR4G,EAAIG,EAAU,GAClCH,EAAI+d,EAAI/kB,KAAKI,MAAe,IAAR4G,EAAI+d,EAAU,GAClC/d,EAAI8B,EAAI9I,KAAKI,MAAe,IAAR4G,EAAI8B,EAAU,GAElCxO,EAAO+sB,MAAME,YAAYvgB,GAElBA,GAkBXk+G,SAAU,SAAU/9G,EAAG4d,EAAGjc,EAAG9B,GAEpBA,IAEDA,EAAM1M,EAAO+sB,MAAM4sC,YAAY9sD,EAAG4d,EAAGjc,EAAG,MAG5C3B,GAAK,IACL4d,GAAK,IACLjc,GAAK,GAEL,IAAIoD,GAAMlM,KAAKkM,IAAI/E,EAAG4d,EAAGjc,GACrBsD,EAAMpM,KAAKoM,IAAIjF,EAAG4d,EAAGjc,GACrBoF,EAAI9B,EAAMF,CAyBd,OAtBAlF,GAAIwQ,EAAI,EACRxQ,EAAI0J,EAAY,IAARtE,EAAY,EAAI8B,EAAI9B,EAC5BpF,EAAI2tB,EAAIvoB,EAEJA,IAAQF,IAEJE,IAAQjF,EAERH,EAAIwQ,GAAKuN,EAAIjc,GAAKoF,GAAK6W,EAAIjc,EAAI,EAAI,GAE9BsD,IAAQ2Y,EAEb/d,EAAIwQ,GAAK1O,EAAI3B,GAAK+G,EAAI,EAEjB9B,IAAQtD,IAEb9B,EAAIwQ,GAAKrQ,EAAI4d,GAAK7W,EAAI,GAG1BlH,EAAIwQ,GAAK,GAGNxQ,GAkBXu+G,SAAU,SAAU/tG,EAAG9G,EAAGikB,EAAG3tB,GAEbrD,SAARqD,IAAqBA,EAAM1M,EAAO+sB,MAAM4sC,YAAY,EAAG,EAAG,EAAG,EAAGz8C,EAAG9G,EAAG,EAAGikB,GAE7E,IAAIxtB,GAAG4d,EAAGjc,EACN/G,EAAI/B,KAAKI,MAAU,EAAJoX,GACfrT,EAAQ,EAAJqT,EAAQzV,EACZmI,EAAIyqB,GAAK,EAAIjkB,GACbq2D,EAAIpyC,GAAK,EAAIxwB,EAAIuM,GACjB9O,EAAI+yB,GAAK,GAAK,EAAIxwB,GAAKuM,EAE3B,QAAQ3O,EAAI,GAER,IAAK,GACDoF,EAAIwtB,EACJ5P,EAAInjB,EACJkH,EAAIoB,CACJ,MACJ,KAAK,GACD/C,EAAI4/D,EACJhiD,EAAI4P,EACJ7rB,EAAIoB,CACJ,MACJ,KAAK,GACD/C,EAAI+C,EACJ6a,EAAI4P,EACJ7rB,EAAIlH,CACJ,MACJ,KAAK,GACDuF,EAAI+C,EACJ6a,EAAIgiD,EACJj+D,EAAI6rB,CACJ,MACJ,KAAK,GACDxtB,EAAIvF,EACJmjB,EAAI7a,EACJpB,EAAI6rB,CACJ,MACJ,KAAK,GACDxtB,EAAIwtB,EACJ5P,EAAI7a,EACJpB,EAAIi+D,EAUZ,MANA//D,GAAIG,EAAInH,KAAKI,MAAU,IAAJ+G,GACnBH,EAAI+d,EAAI/kB,KAAKI,MAAU,IAAJ2kB,GACnB/d,EAAI8B,EAAI9I,KAAKI,MAAU,IAAJ0I,GAEnBxO,EAAO+sB,MAAME,YAAYvgB,GAElBA,GAeXs+G,WAAY,SAAUp7G,EAAG68D,EAAGnlE,GAYxB,MAVIA,GAAI,IAEJA,GAAK,GAGLA,EAAI,IAEJA,GAAK,GAGLA,EAAI,EAAI,EAEDsI,EAAc,GAAT68D,EAAI78D,GAAStI,EAGzBA,EAAI,GAEGmlE,EAGPnlE,EAAI,EAAI,EAEDsI,GAAK68D,EAAI78D,IAAM,EAAI,EAAItI,GAAK,EAGhCsI,GAuBX+pD,YAAa,SAAU9sD,EAAG4d,EAAGjc,EAAGJ,EAAG8O,EAAG9G,EAAGrN,EAAGsxB,GAExC,GAAI3tB,IAAQG,EAAGA,GAAK,EAAG4d,EAAGA,GAAK,EAAGjc,EAAGA,GAAK,EAAGJ,EAAGA,GAAK,EAAG8O,EAAGA,GAAK,EAAG9G,EAAGA,GAAK,EAAGrN,EAAGA,GAAK,EAAGsxB,EAAGA,GAAK,EAAG1c,MAAO,EAAGutG,QAAS,EAAGxgG,KAAM,GAEhI,OAAO1qB,GAAO+sB,MAAME,YAAYvgB,IAYpCugB,YAAa,SAAUvgB,GAMnB,MAJAA,GAAIge,KAAO,QAAUhe,EAAIG,EAAE1F,WAAa,IAAMuF,EAAI+d,EAAEtjB,WAAa,IAAMuF,EAAI8B,EAAErH,WAAa,IAAMuF,EAAI0B,EAAEjH,WAAa,IACnHuF,EAAIiR,MAAQ3d,EAAO+sB,MAAMo+F,SAASz+G,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,GACpD9B,EAAIw+G,QAAUlrH,EAAO+sB,MAAMq+F,WAAmB,IAAR1+G,EAAI0B,EAAS1B,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,GAE9D9B,GAeX0+G,WAAY,SAAUh9G,EAAGvB,EAAG4d,EAAGjc,GAE3B,MAAOJ,IAAK,GAAKvB,GAAK,GAAK4d,GAAK,EAAIjc,GAcxC28G,SAAU,SAAUt+G,EAAG4d,EAAGjc,GAEtB,MAAO3B,IAAK,GAAK4d,GAAK,EAAIjc,GAiB9B68G,YAAa,SAAUx+G,EAAG4d,EAAGjc,EAAGJ,EAAGo8E,GAK/B,MAHUnhF,UAAN+E,IAAmBA,EAAI,KACZ/E,SAAXmhF,IAAwBA,EAAS,KAEtB,MAAXA,EAEO,MAAQ,GAAK,KAAO39E,GAAK,KAAO4d,GAAK,GAAKjc,GAAGrH,SAAS,IAAIjB,MAAM,GAIhE,KAAOlG,EAAO+sB,MAAMu+F,eAAel9G,GAAKpO,EAAO+sB,MAAMu+F,eAAez+G,GAAK7M,EAAO+sB,MAAMu+F,eAAe7gG,GAAKzqB,EAAO+sB,MAAMu+F,eAAe98G,IAarJ+8G,SAAU,SAAUC,GAEhB,GAAIx4E,GAAMhzC,EAAO+sB,MAAM0+F,WAAWD,EAElC,IAAIx4E,EAEA,MAAOhzC,GAAO+sB,MAAMq+F,WAAWp4E,EAAI5kC,EAAG4kC,EAAInmC,EAAGmmC,EAAIvoB,EAAGuoB,EAAIxkC,IAkBhEi9G,WAAY,SAAUD,EAAK9+G,GAGvB8+G,EAAMA,EAAIjgH,QAAQ,0CAA2C,SAASqK,EAAG/I,EAAG4d,EAAGjc,GAC3E,MAAO3B,GAAIA,EAAI4d,EAAIA,EAAIjc,EAAIA,GAG/B,IAAIyC,GAAS,mDAAmDqpE,KAAKkxC,EAErE,IAAIv6G,EACJ,CACI,GAAIpE,GAAI7C,SAASiH,EAAO,GAAI,IACxBwZ,EAAIzgB,SAASiH,EAAO,GAAI,IACxBzC,EAAIxE,SAASiH,EAAO,GAAI,GAEvBvE,IAMDA,EAAIG,EAAIA,EACRH,EAAI+d,EAAIA,EACR/d,EAAI8B,EAAIA,GANR9B,EAAM1M,EAAO+sB,MAAM4sC,YAAY9sD,EAAG4d,EAAGjc,GAU7C,MAAO9B,IAeXg/G,WAAY,SAAUC,EAAKj/G,GAElBA,IAEDA,EAAM1M,EAAO+sB,MAAM4sC,cAGvB,IAAI1oD,GAAS,4EAA4EqpE,KAAKqxC,EAW9F,OATI16G,KAEAvE,EAAIG,EAAI7C,SAASiH,EAAO,GAAI,IAC5BvE,EAAI+d,EAAIzgB,SAASiH,EAAO,GAAI,IAC5BvE,EAAI8B,EAAIxE,SAASiH,EAAO,GAAI,IAC5BvE,EAAI0B,EAAkB/E,SAAd4H,EAAO,GAAmBmqE,WAAWnqE,EAAO,IAAM,EAC1DjR,EAAO+sB,MAAME,YAAYvgB,IAGtBA,GAiBXsgB,aAAc,SAAU9jB,EAAOwD,GAS3B,GALKA,IAEDA,EAAM1M,EAAO+sB,MAAM4sC,eAGF,gBAAVzwD,GAEP,MAA6B,KAAzBA,EAAM+mB,QAAQ,OAEPjwB,EAAO+sB,MAAM2+F,WAAWxiH,EAAOwD,IAKtCA,EAAI0B,EAAI,EACDpO,EAAO+sB,MAAM0+F,WAAWviH,EAAOwD,GAGzC,IAAqB,gBAAVxD,GAChB,CAGI,GAAI0iH,GAAY5rH,EAAO+sB,MAAM8+F,OAAO3iH,EAKpC,OAJAwD,GAAIG,EAAI++G,EAAU/+G,EAClBH,EAAI+d,EAAImhG,EAAUnhG,EAClB/d,EAAI8B,EAAIo9G,EAAUp9G,EAClB9B,EAAI0B,EAAIw9G,EAAUx9G,EAAI,IACf1B,EAIP,MAAOA,IAaf4+G,eAAgB,SAAU3tG,GAEtB,GAAI6tG,GAAM7tG,EAAMxW,SAAS,GACzB,OAAqB,IAAdqkH,EAAIhkH,OAAc,IAAMgkH,EAAMA,GAazCM,cAAe,SAAU11G,EAAGikB,GAEdhxB,SAAN+M,IAAmBA,EAAI,GACjB/M,SAANgxB,IAAmBA,EAAI,EAI3B,KAAK,GAFD86C,MAEKvmE,EAAI,EAAGA,GAAK,IAAKA,IAEtBumE,EAAO5iE,KAAKvS,EAAO+sB,MAAMk+F,SAASr8G,EAAI,IAAKwH,EAAGikB,GAGlD,OAAO86C,IAaX42C,cAAe,SAAU31G,EAAGrN,GAEdM,SAAN+M,IAAmBA,EAAI,IACjB/M,SAANN,IAAmBA,EAAI,GAI3B,KAAK,GAFDosE,MAEKvmE,EAAI,EAAGA,GAAK,IAAKA,IAEtBumE,EAAO5iE,KAAKvS,EAAO+sB,MAAM6tC,SAAShsD,EAAI,IAAKwH,EAAGrN,GAGlD,OAAOosE,IAgBX62C,iBAAkB,SAAUC,EAAQC,EAAQC,EAAOC,EAAapuG,GAE9C3U,SAAV2U,IAAuBA,EAAQ,IAEnC,IAAIquG,GAAOrsH,EAAO+sB,MAAM8+F,OAAOI,GAC3BK,EAAOtsH,EAAO+sB,MAAM8+F,OAAOK,GAC3Br/G,GAAOy/G,EAAKxxD,IAAMuxD,EAAKvxD,KAAOsxD,EAAeD,EAASE,EAAKvxD,IAC3DrwC,GAAO6hG,EAAKvxD,MAAQsxD,EAAKtxD,OAASqxD,EAAeD,EAASE,EAAKtxD,MAC/DvsD,GAAO89G,EAAKtxD,KAAOqxD,EAAKrxD,MAAQoxD,EAAeD,EAASE,EAAKrxD,IAEjE,OAAOh7D,GAAO+sB,MAAMq+F,WAAWptG,EAAOnR,EAAG4d,EAAGjc,IAiBhD+9G,wBAAyB,SAAU5uG,EAAO9Q,EAAG4d,EAAGjc,EAAG29G,EAAOC,GAEtD,GAAIphH,GAAMhL,EAAO+sB,MAAM8+F,OAAOluG,GAC1B6uG,GAAQ3/G,EAAI7B,EAAI8vD,KAAOsxD,EAAeD,EAASnhH,EAAI8vD,IACnD2xD,GAAQhiG,EAAIzf,EAAI+vD,OAASqxD,EAAeD,EAASnhH,EAAI+vD,MACrD2xD,GAAQl+G,EAAIxD,EAAIgwD,MAAQoxD,EAAeD,EAASnhH,EAAIgwD,IAExD,OAAOh7D,GAAO+sB,MAAMo+F,SAASqB,EAAIC,EAAIC,IAkBzCC,eAAgB,SAAUzyD,EAAIC,EAAItnD,EAAIunD,EAAIC,EAAIvnD,EAAIq5G,EAAOC,GAErD,GAAIv/G,IAAOutD,EAAKF,GAAMkyD,EAAeD,EAASjyD,EAC1CzvC,GAAO4vC,EAAKF,GAAMiyD,EAAeD,EAAShyD,EAC1C3rD,GAAOsE,EAAKD,GAAMu5G,EAAeD,EAASt5G,CAE9C,OAAO7S,GAAO+sB,MAAMo+F,SAASt+G,EAAG4d,EAAGjc,IAgBvCo+G,eAAgB,SAAUh7G,EAAKE,EAAKkM,GAOhC,GALY3U,SAARuI,IAAqBA,EAAM,GACnBvI,SAARyI,IAAqBA,EAAM,KACjBzI,SAAV2U,IAAuBA,EAAQ,KAG/BlM,EAAM,KAAOF,EAAME,EAEnB,MAAO9R,GAAO+sB,MAAMo+F,SAAS,IAAK,IAAK,IAG3C,IAAIrwD,GAAMlpD,EAAMlM,KAAK+H,MAAM/H,KAAK4D,UAAYwI,EAAMF,IAC9CmpD,EAAQnpD,EAAMlM,KAAK+H,MAAM/H,KAAK4D,UAAYwI,EAAMF,IAChDopD,EAAOppD,EAAMlM,KAAK+H,MAAM/H,KAAK4D,UAAYwI,EAAMF,GAEnD,OAAO5R,GAAO+sB,MAAMq+F,WAAWptG,EAAO88C,EAAKC,EAAOC,IActD6wD,OAAQ,SAAUluG,GAEd,MAAIA,GAAQ,UAIJK,MAAOL,IAAU,GACjBm9C,IAAKn9C,GAAS,GAAK,IACnBo9C,MAAOp9C,GAAS,EAAI,IACpBq9C,KAAc,IAARr9C,EACNvP,EAAGuP,IAAU,GACb9Q,EAAG8Q,GAAS,GAAK,IACjB8M,EAAG9M,GAAS,EAAI,IAChBnP,EAAW,IAARmP,IAMHK,MAAO,IACP88C,IAAKn9C,GAAS,GAAK,IACnBo9C,MAAOp9C,GAAS,EAAI,IACpBq9C,KAAc,IAARr9C,EACNvP,EAAG,IACHvB,EAAG8Q,GAAS,GAAK,IACjB8M,EAAG9M,GAAS,EAAI,IAChBnP,EAAW,IAARmP,IAcfkvG,UAAW,SAAUlvG,GAEjB,GAAqB,gBAAVA,GAEP,MAAO,QAAUA,EAAM9Q,EAAE1F,WAAa,IAAMwW,EAAM8M,EAAEtjB,WAAa,IAAMwW,EAAMnP,EAAErH,WAAa,KAAOwW,EAAMvP,EAAI,KAAKjH,WAAa,GAI/H,IAAI6rC,GAAMhzC,EAAO+sB,MAAM8+F,OAAOluG,EAC9B,OAAO,QAAUq1B,EAAInmC,EAAE1F,WAAa,IAAM6rC,EAAIvoB,EAAEtjB,WAAa,IAAM6rC,EAAIxkC,EAAErH,WAAa,KAAO6rC,EAAI5kC,EAAI,KAAKjH,WAAa,KAa/H2lH,SAAU,SAAUnvG,GAChB,MAAOA,KAAU,IAWrBovG,cAAe,SAAUpvG,GACrB,OAAQA,IAAU,IAAM,KAW5BqvG,OAAQ,SAAUrvG,GACd,MAAOA,IAAS,GAAK,KAWzBsvG,SAAU,SAAUtvG,GAChB,MAAOA,IAAS,EAAI,KAWxBuvG,QAAS,SAAUvvG,GACf,MAAe,KAARA,GAYXwvG,YAAa,SAAU/+G,GACnB,MAAOA,IAYXkxD,aAAc,SAAUlxD,EAAGI,GACvB,MAAQA,GAAIJ,EAAKI,EAAIJ,GAYzBixD,YAAa,SAAUjxD,EAAGI,GACtB,MAAQA,GAAIJ,EAAKA,EAAII,GAezB0wD,cAAe,SAAU9wD,EAAGI,GACxB,MAAQJ,GAAII,EAAK,KAYrB4+G,aAAc,SAAUh/G,EAAGI,GACvB,OAAQJ,EAAII,GAAK,GAYrBywD,SAAU,SAAU7wD,EAAGI,GACnB,MAAO9I,MAAKkM,IAAI,IAAKxD,EAAII,IAY7B6+G,cAAe,SAAUj/G,EAAGI,GACxB,MAAO9I,MAAKoM,IAAI,EAAG1D,EAAII,EAAI,MAc/BmxD,gBAAiB,SAAUvxD,EAAGI,GAC1B,MAAO9I,MAAKoJ,IAAIV,EAAII,IAYxB8+G,cAAe,SAAUl/G,EAAGI,GACxB,MAAO,KAAM9I,KAAKoJ,IAAI,IAAMV,EAAII,IAcpC2wD,YAAa,SAAU/wD,EAAGI,GACtB,MAAO,OAAS,IAAMJ,IAAM,IAAMI,IAAO,IAa7CoxD,eAAgB,SAAUxxD,EAAGI,GACzB,MAAOJ,GAAII,EAAI,EAAIJ,EAAII,EAAI,KAc/B4wD,aAAc,SAAUhxD,EAAGI,GACvB,MAAOA,GAAI,IAAO,EAAIJ,EAAII,EAAI,IAAQ,IAAM,GAAK,IAAMJ,IAAM,IAAMI,GAAK,KAsB5EkxD,eAAgB,SAAUtxD,EAAGI,GACzB,MAAOA,GAAI,IAAO,IAAMJ,GAAK,GAAK,KAAQI,EAAI,KAAO,IAAO,GAAK,MAAQJ,GAAK,GAAK,MAAQ,IAAMI,GAAK,KAuB1GixD,eAAgB,SAAUrxD,EAAGI,GACzB,MAAOxO,GAAO+sB,MAAMqyC,aAAa5wD,EAAGJ,IAaxCmxD,gBAAiB,SAAUnxD,EAAGI,GAC1B,MAAa,OAANA,EAAYA,EAAI9I,KAAKkM,IAAI,KAAOxD,GAAK,IAAM,IAAMI,KAa5DgxD,eAAgB,SAAUpxD,EAAGI,GACzB,MAAa,KAANA,EAAUA,EAAI9I,KAAKoM,IAAI,EAAI,KAAQ,IAAM1D,GAAM,GAAKI,IAY/D++G,iBAAkB,SAAUn/G,EAAGI,GAC3B,MAAOxO,GAAO+sB,MAAMkyC,SAAS7wD,EAAGI,IAYpCg/G,gBAAiB,SAAUp/G,EAAGI,GAC1B,MAAOxO,GAAO+sB,MAAMsgG,cAAcj/G,EAAGI,IAczCi/G,iBAAkB,SAAUr/G,EAAGI,GAC3B,MAAOA,GAAI,IAAMxO,EAAO+sB,MAAMygG,gBAAgBp/G,EAAG,EAAII,GAAKxO,EAAO+sB,MAAMwgG,iBAAiBn/G,EAAI,GAAKI,EAAI,OAezGk/G,gBAAiB,SAAUt/G,EAAGI,GAC1B,MAAOA,GAAI,IAAMxO,EAAO+sB,MAAMyyC,eAAepxD,EAAG,EAAII,GAAKxO,EAAO+sB,MAAMwyC,gBAAgBnxD,EAAI,GAAKI,EAAI,OAavGm/G,cAAe,SAAUv/G,EAAGI,GACxB,MAAOA,GAAI,IAAMxO,EAAO+sB,MAAMsyC,YAAYjxD,EAAG,EAAII,GAAKxO,EAAO+sB,MAAMuyC,aAAalxD,EAAI,GAAKI,EAAI,OAejGo/G,aAAc,SAAUx/G,EAAGI,GACvB,MAAOxO,GAAO+sB,MAAM2gG,gBAAgBt/G,EAAGI,GAAK,IAAM,EAAI,KAY1Dq/G,aAAc,SAAUz/G,EAAGI,GACvB,MAAa,OAANA,EAAYA,EAAI9I,KAAKkM,IAAI,IAAMxD,EAAIA,GAAK,IAAMI,KAYzDs/G,UAAW,SAAU1/G,EAAGI,GACpB,MAAOxO,GAAO+sB,MAAM8gG,aAAar/G,EAAGJ,IAYxC2/G,aAAc,SAAU3/G,EAAGI,GACvB,MAAO9I,MAAKkM,IAAIxD,EAAGI,GAAK9I,KAAKoM,IAAI1D,EAAGI,GAAK,MAyBjDxO,EAAOutB,QAAU,SAAUpT,EAAMyQ,GAE7BA,EAASA,MAKTjrB,KAAKwa,KAAOA,EAKZxa,KAAKirB,OAASA,EAKdjrB,KAAKquH,OAAS,KAKdruH,KAAKuY,GAAK,KAKVvY,KAAKsuH,MAAQ,KAKbtuH,KAAK0kH,MAAQ,KAKb1kH,KAAKuuH,SAAW,KAKhBvuH,KAAKwuH,OAAS,KAEdxuH,KAAKkrB,eAQT7qB,EAAOutB,QAAQC,OAAS,EAMxBxtB,EAAOutB,QAAQg7B,KAAO,EAMtBvoD,EAAOutB,QAAQu2F,MAAQ,EAMvB9jH,EAAOutB,QAAQy2F,MAAQ,EAMvBhkH,EAAOutB,QAAQ6gG,SAAW,EAM1BpuH,EAAOutB,QAAQ8gG,SAAW,EAE1BruH,EAAOutB,QAAQvnB,WAOX6kB,YAAa,WAEHlrB,KAAKirB,OAAOjgB,eAAe,WAAahL,KAAKirB,OAAe,UAAM,IAAS5qB,EAAOutB,QAAQ5iB,eAAe,YAG3GhL,KAAKquH,OAAS,GAAIhuH,GAAOutB,QAAQ2kC,OAAOvyD,KAAKwa,OAG7Cxa,KAAKirB,OAAOjgB,eAAe,UAAYhL,KAAKirB,OAAc,SAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,WAEtGhL,KAAKsuH,MAAQ,GAAIjuH,GAAOutB,QAAQw2F,MAAMpkH,KAAKwa,OAG3Cxa,KAAKirB,OAAOjgB,eAAe,OAAShL,KAAKirB,OAAW,MAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,QAEhGhL,KAAKuY,GAAK,GAAIlY,GAAOutB,QAAQ+gG,GAAG3uH,KAAKwa,KAAMxa,KAAKirB,SAGhDjrB,KAAKirB,OAAOjgB,eAAe,UAAYhL,KAAKirB,OAAc,SAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,WAEtGhL,KAAK0kH,MAAQ,GAAIrkH,GAAOutB,QAAQy2F,MAAMrkH,KAAKwa,KAAMxa,KAAKirB,SAGtDjrB,KAAKirB,OAAOjgB,eAAe,WAAahL,KAAKirB,OAAe,UAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,YAExGhL,KAAKwuH,OAAS,GAAInuH,GAAOutB,QAAQghG,OAAO5uH,KAAKwa,KAAMxa,KAAKirB,UAyBhE4jG,YAAa,SAAUC,GAEfA,IAAWzuH,EAAOutB,QAAQC,OAE1B7tB,KAAKquH,OAAS,GAAIhuH,GAAOutB,QAAQ2kC,OAAOvyD,KAAKwa,MAExCs0G,IAAWzuH,EAAOutB,QAAQg7B,KAEf,OAAZ5oD,KAAKuY,GAELvY,KAAKuY,GAAK,GAAIlY,GAAOutB,QAAQ+gG,GAAG3uH,KAAKwa,KAAMxa,KAAKirB,QAIhDjrB,KAAKuY,GAAGmH,QAGPovG,IAAWzuH,EAAOutB,QAAQu2F,MAE/BnkH,KAAKsuH,MAAQ,GAAIjuH,GAAOutB,QAAQw2F,MAAMpkH,KAAKwa,MAEtCs0G,IAAWzuH,EAAOutB,QAAQy2F,MAEZ,OAAfrkH,KAAK0kH,MAEL1kH,KAAK0kH,MAAQ,GAAIrkH,GAAOutB,QAAQ02F,MAAMtkH,KAAKwa,KAAMxa,KAAKirB,QAItDjrB,KAAK0kH,MAAMhlG,QAGVovG,IAAWzuH,EAAOutB,QAAQ8gG,WAEX,OAAhB1uH,KAAKwuH,OAELxuH,KAAKwuH,OAAS,GAAInuH,GAAOutB,QAAQghG,OAAO5uH,KAAKwa,KAAMxa,KAAKirB,QAIxDjrB,KAAKwuH,OAAO9uG,UA0BxBsQ,OAAQ,SAAUuF,EAAQu5F,EAAQjrG,GAEfna,SAAXolH,IAAwBA,EAASzuH,EAAOutB,QAAQC,QACtCnkB,SAAVma,IAAuBA,GAAQ,GAE/BirG,IAAWzuH,EAAOutB,QAAQC,OAE1B7tB,KAAKquH,OAAOr+F,OAAOuF,GAEdu5F,IAAWzuH,EAAOutB,QAAQg7B,MAAQ5oD,KAAKuY,GAE5CvY,KAAKuY,GAAGyX,OAAOuF,EAAQ1R,GAElBirG,IAAWzuH,EAAOutB,QAAQu2F,OAASnkH,KAAKsuH,MAE7CtuH,KAAKsuH,MAAMS,WAAWx5F,GAEjBu5F,IAAWzuH,EAAOutB,QAAQy2F,OAASrkH,KAAK0kH,MAE7C1kH,KAAK0kH,MAAM10F,OAAOuF,GAEbu5F,IAAWzuH,EAAOutB,QAAQ8gG,UAAY1uH,KAAKwuH,OAEhDxuH,KAAKwuH,OAAOx+F,OAAOuF,GAInBntB,QAAQG,KAAKgtB,EAAOxpB,IAAM,6EAWlCiR,UAAW,WAIHhd,KAAKuY,IAELvY,KAAKuY,GAAGyE,YAGRhd,KAAK0kH,OAEL1kH,KAAK0kH,MAAM1nG,YAGXhd,KAAKwuH,QAELxuH,KAAKwuH,OAAOxxG,aAWpBuB,OAAQ,WAIAve,KAAKuY,IAELvY,KAAKuY,GAAGgG,SAGRve,KAAK0kH,OAEL1kH,KAAK0kH,MAAMnmG,SAGXve,KAAKwuH,QAELxuH,KAAKwuH,OAAOjwG,UAWpBa,iBAAkB,WAEVpf,KAAKquH,QAELruH,KAAKquH,OAAOjvG,mBAGZpf,KAAKsuH,OAELtuH,KAAKsuH,MAAMlvG,mBAGXpf,KAAKuY,IAELvY,KAAKuY,GAAG6G,mBAGRpf,KAAK0kH,OAEL1kH,KAAK0kH,MAAMtlG,mBAGXpf,KAAKwuH,QAELxuH,KAAKwuH,OAAOpvG,oBAWpBnB,MAAO,WAECje,KAAKuY,IAELvY,KAAKuY,GAAG0F,QAGRje,KAAK0kH,OAEL1kH,KAAK0kH,MAAMzmG,QAGXje,KAAKwuH,QAELxuH,KAAKwuH,OAAOvwG,SAWpByB,MAAO,WAEC1f,KAAKuY,IAELvY,KAAKuY,GAAGmH,QAGR1f,KAAK0kH,OAEL1kH,KAAK0kH,MAAMhlG,QAGX1f,KAAKwuH,QAELxuH,KAAKwuH,OAAO9uG,SAUpBoE,QAAS,WAED9jB,KAAKuY,IAELvY,KAAKuY,GAAGuL,UAGR9jB,KAAK0kH,OAEL1kH,KAAK0kH,MAAM5gG,UAGX9jB,KAAKwuH,QAELxuH,KAAKwuH,OAAO1qG,UAGhB9jB,KAAKquH,OAAS,KACdruH,KAAKsuH,MAAQ,KACbtuH,KAAKuY,GAAK,KACVvY,KAAK0kH,MAAQ,KACb1kH,KAAKwuH,OAAS,OAMtBnuH,EAAOutB,QAAQvnB,UAAU8B,YAAc9H,EAAOutB,QAe9CvtB,EAAOutB,QAAQ2kC,OAAS,SAAU/3C,GAK9Bxa,KAAKwa,KAAOA,EAKZxa,KAAKgvH,QAAU,GAAI3uH,GAAO2M,MAK1BhN,KAAK2a,OAAS,GAAIta,GAAOkN,UAAU,EAAG,EAAGiN,EAAKC,MAAM1K,MAAOyK,EAAKC,MAAMzK,QAOtEhQ,KAAKivH,gBAAmB7uE,IAAI,EAAMpV,MAAM,EAAMngC,MAAM,EAAMD,OAAO,GAKjE5K,KAAK4wF,WAAa,GAKlB5wF,KAAK6wF,UAAY,EAKjB7wF,KAAKkvH,aAAe,EAKpBlvH,KAAKmvH,QAAS,EAMdnvH,KAAKovH,cAAgB/uH,EAAOutB,QAAQ2kC,OAAO88D,WAK3CrvH,KAAKsvH,cAAe,EAKpBtvH,KAAK43F,UAAW,EAKhB53F,KAAKgkH,SAAW,GAAI3jH,GAAOswF,SAAS3wF,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQhQ,KAAK4wF,WAAY5wF,KAAK6wF,WAM3K7wF,KAAKuvH,OAAS,EAGdvvH,KAAKof,oBAIT/e,EAAOutB,QAAQ2kC,OAAOlsD,UAAU8B,YAAc9H,EAAOutB,QAAQ2kC,OAQ7DlyD,EAAOutB,QAAQ2kC,OAAOi9D,UAAY,EAQlCnvH,EAAOutB,QAAQ2kC,OAAO88D,WAAa,EAQnChvH,EAAOutB,QAAQ2kC,OAAOk9D,WAAa,EAQnCpvH,EAAOutB,QAAQ2kC,OAAOm9D,WAAa,EAQnCrvH,EAAOutB,QAAQ2kC,OAAOo9D,WAAa,EAEnCtvH,EAAOutB,QAAQ2kC,OAAOlsD,WAWlB8wB,UAAW,SAAUlxB,EAAGwG,EAAGsD,EAAOC,GAE9BhQ,KAAK2a,OAAOnN,MAAMvH,EAAGwG,EAAGsD,EAAOC,IASnCoP,iBAAkB,WAEdpf,KAAK2a,OAAOlN,SAASzN,KAAKwa,KAAKC,MAAME,SAYzCqV,OAAQ,SAAUuF,EAAQ5J,GAELjiB,SAAbiiB,IAA0BA,GAAW,EAEzC,IAAI7jB,GAAI,CAER,IAAItB,MAAMa,QAAQkuB,GAId,IAFAztB,EAAIytB,EAAO1tB,OAEJC,KAECytB,EAAOztB,YAAczH,GAAOmtB,MAG5BxtB,KAAKgwB,OAAOuF,EAAOztB,GAAG6jB,SAAUA,IAIhC3rB,KAAK0tB,WAAW6H,EAAOztB,IAEnB6jB,GAAY4J,EAAOztB,GAAGkD,eAAe,aAAeuqB,EAAOztB,GAAG6jB,SAAS9jB,OAAS,GAEhF7H,KAAKgwB,OAAOuF,EAAOztB,IAAI,QAO/BytB,aAAkBl1B,GAAOmtB,MAGzBxtB,KAAKgwB,OAAOuF,EAAO5J,SAAUA,IAI7B3rB,KAAK0tB,WAAW6H,GAEZ5J,GAAY4J,EAAOvqB,eAAe,aAAeuqB,EAAO5J,SAAS9jB,OAAS,GAE1E7H,KAAKgwB,OAAOuF,EAAO5J,UAAU,KAiB7C+B,WAAY,SAAU6H,GAEdA,EAAOvqB,eAAe,SAA2B,OAAhBuqB,EAAO3F,OAExC2F,EAAO3F,KAAO,GAAIvvB,GAAOutB,QAAQ2kC,OAAO2xD,KAAK3uF,GAEzCA,EAAO/L,QAAU+L,EAAO/L,iBAAkBnpB,GAAOmtB,OAEjD+H,EAAO/L,OAAOyG,UAAUsF,KAYpCq6F,aAAc,SAAUhgG,GAEpB,GAAIigG,GAAgB7vH,KAAK8vH,gBAAgB,EAAGlgG,EAAMA,EAAKmgG,gBAAiBngG,EAAKogG,oBAAqBpgG,EAAKqgG,YAAargG,EAAKsgG,YAActgG,EAAKmgG,eAC5IngG,GAAKmgG,iBAAmBF,EACxBjgG,EAAKiH,UAAajH,EAAKmgG,gBAAkB/vH,KAAKwa,KAAKmE,KAAKqiE,eAExDpxD,EAAKugG,SAASlqH,EAAIjG,KAAK8vH,gBAAgB,EAAGlgG,EAAMA,EAAKugG,SAASlqH,EAAG2pB,EAAKwgG,aAAanqH,EAAG2pB,EAAKygG,KAAKpqH,EAAG2pB,EAAK0gG,YAAYrqH,GACpH2pB,EAAKugG,SAAS1jH,EAAIzM,KAAK8vH,gBAAgB,EAAGlgG,EAAMA,EAAKugG,SAAS1jH,EAAGmjB,EAAKwgG,aAAa3jH,EAAGmjB,EAAKygG,KAAK5jH,EAAGmjB,EAAK0gG,YAAY7jH,IAiBxHqjH,gBAAiB,SAAUvxE,EAAM3uB,EAAMugG,EAAUC,EAAcC,EAAMl+G,GA4CjE,MA1CYzI,UAARyI,IAAqBA,EAAM,KAElB,IAATosC,GAAc3uB,EAAK2gG,aAEnBJ,IAAanwH,KAAKgvH,QAAQ/oH,EAAI2pB,EAAKo/F,QAAQ/oH,GAAKjG,KAAKwa,KAAKmE,KAAKqiE,eAEjD,IAATziC,GAAc3uB,EAAK2gG,eAExBJ,IAAanwH,KAAKgvH,QAAQviH,EAAImjB,EAAKo/F,QAAQviH,GAAKzM,KAAKwa,KAAKmE,KAAKqiE,gBAG/DovC,EAEAD,GAAYC,EAAepwH,KAAKwa,KAAKmE,KAAKqiE,eAErCqvC,IAELA,GAAQrwH,KAAKwa,KAAKmE,KAAKqiE,eAEnBmvC,EAAWE,EAAO,EAElBF,GAAYE,EAEPF,EAAWE,EAAO,EAEvBF,GAAYE,EAIZF,EAAW,GAIfA,EAAWh+G,EAEXg+G,EAAWh+G,EAENg+G,GAAYh+G,IAEjBg+G,GAAYh+G,GAGTg+G,GAoBXrgE,QAAS,SAAU0gE,EAASC,EAASC,EAAiBC,EAAiB5tG,GAQnE,GANA2tG,EAAkBA,GAAmB,KACrCC,EAAkBA,GAAmB,KACrC5tG,EAAkBA,GAAmB2tG,EAErC1wH,KAAKuvH,OAAS,GAET/oH,MAAMa,QAAQmpH,IAAYhqH,MAAMa,QAAQopH,GAEzC,IAAK,GAAI3oH,GAAI,EAAGA,EAAI2oH,EAAQ5oH,OAAQC,IAEhC9H,KAAK4wH,eAAeJ,EAASC,EAAQ3oH,GAAI4oH,EAAiBC,EAAiB5tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQmpH,KAAahqH,MAAMa,QAAQopH,GAE9C,IAAK,GAAI3oH,GAAI,EAAGA,EAAI0oH,EAAQ3oH,OAAQC,IAEhC9H,KAAK4wH,eAAeJ,EAAQ1oH,GAAI2oH,EAASC,EAAiBC,EAAiB5tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQmpH,IAAYhqH,MAAMa,QAAQopH,GAE7C,IAAK,GAAI3oH,GAAI,EAAGA,EAAI0oH,EAAQ3oH,OAAQC,IAEhC,IAAK,GAAI+P,GAAI,EAAGA,EAAI44G,EAAQ5oH,OAAQgQ,IAEhC7X,KAAK4wH,eAAeJ,EAAQ1oH,GAAI2oH,EAAQ54G,GAAI64G,EAAiBC,EAAiB5tG,GAAiB,OAMvG/iB,MAAK4wH,eAAeJ,EAASC,EAASC,EAAiBC,EAAiB5tG,GAAiB,EAG7F,OAAQ/iB,MAAKuvH,OAAS,GAsB1BsB,QAAS,SAAUL,EAASC,EAASK,EAAiBH,EAAiB5tG,GAQnE,GANA+tG,EAAkBA,GAAmB,KACrCH,EAAkBA,GAAmB,KACrC5tG,EAAkBA,GAAmB+tG,EAErC9wH,KAAKuvH,OAAS,GAET/oH,MAAMa,QAAQmpH,IAAYhqH,MAAMa,QAAQopH,GAEzC,IAAK,GAAI3oH,GAAI,EAAGA,EAAI2oH,EAAQ5oH,OAAQC,IAEhC9H,KAAK4wH,eAAeJ,EAASC,EAAQ3oH,GAAIgpH,EAAiBH,EAAiB5tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQmpH,KAAahqH,MAAMa,QAAQopH,GAE9C,IAAK,GAAI3oH,GAAI,EAAGA,EAAI0oH,EAAQ3oH,OAAQC,IAEhC9H,KAAK4wH,eAAeJ,EAAQ1oH,GAAI2oH,EAASK,EAAiBH,EAAiB5tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQmpH,IAAYhqH,MAAMa,QAAQopH,GAE7C,IAAK,GAAI3oH,GAAI,EAAGA,EAAI0oH,EAAQ3oH,OAAQC,IAEhC,IAAK,GAAI+P,GAAI,EAAGA,EAAI44G,EAAQ5oH,OAAQgQ,IAEhC7X,KAAK4wH,eAAeJ,EAAQ1oH,GAAI2oH,EAAQ54G,GAAIi5G,EAAiBH,EAAiB5tG,GAAiB,OAMvG/iB,MAAK4wH,eAAeJ,EAASC,EAASK,EAAiBH,EAAiB5tG,GAAiB,EAG7F,OAAQ/iB,MAAKuvH,OAAS,GAc1BwB,cAAe,SAAUtiH,EAAGI,GAExB,MAAKJ,GAAEmhB,MAAS/gB,EAAE+gB,KAKXnhB,EAAEmhB,KAAK3pB,EAAI4I,EAAE+gB,KAAK3pB,EAHd,GAiBf+qH,cAAe,SAAUviH,EAAGI,GAExB,MAAKJ,GAAEmhB,MAAS/gB,EAAE+gB,KAKX/gB,EAAE+gB,KAAK3pB,EAAIwI,EAAEmhB,KAAK3pB,EAHd,GAiBfgrH,cAAe,SAAUxiH,EAAGI,GAExB,MAAKJ,GAAEmhB,MAAS/gB,EAAE+gB,KAKXnhB,EAAEmhB,KAAKnjB,EAAIoC,EAAE+gB,KAAKnjB,EAHd,GAiBfykH,cAAe,SAAUziH,EAAGI,GAExB,MAAKJ,GAAEmhB,MAAS/gB,EAAE+gB,KAKX/gB,EAAE+gB,KAAKnjB,EAAIgC,EAAEmhB,KAAKnjB,EAHd,GAoBf6nB,KAAM,SAAUkC,EAAO44F,GAEgB,OAA/B54F,EAAM5H,qBAENwgG,EAAgB54F,EAAM5H,qBAIAllB,SAAlB0lH,IAA+BA,EAAgBpvH,KAAKovH,eAGxDA,IAAkB/uH,EAAOutB,QAAQ2kC,OAAO88D,WAGxC74F,EAAMvH,KAAKqF,KAAKt0B,KAAK+wH,eAEhB3B,IAAkB/uH,EAAOutB,QAAQ2kC,OAAOk9D,WAG7Cj5F,EAAMvH,KAAKqF,KAAKt0B,KAAKgxH,eAEhB5B,IAAkB/uH,EAAOutB,QAAQ2kC,OAAOm9D,WAG7Cl5F,EAAMvH,KAAKqF,KAAKt0B,KAAKixH,eAEhB7B,IAAkB/uH,EAAOutB,QAAQ2kC,OAAOo9D,YAG7Cn5F,EAAMvH,KAAKqF,KAAKt0B,KAAKkxH,gBAiB7BN,eAAgB,SAAUJ,EAASC,EAASK,EAAiBH,EAAiB5tG,EAAiBouG,GAG3F,MAAgBznH,UAAZ+mH,GAAyBD,EAAQziG,cAAgB1tB,EAAOmB,OAExDxB,KAAKs0B,KAAKk8F,OACVxwH,MAAKoxH,mBAAmBZ,EAASM,EAAiBH,EAAiB5tG,EAAiBouG,SAKnFX,GAAYC,GAAYD,EAAQhmG,QAAWimG,EAAQjmG,SAMpDxqB,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAOi9D,YAEzCgB,EAAQziG,cAAgB1tB,EAAOmB,OAE/BxB,KAAKs0B,KAAKk8F,GAGVC,EAAQ1iG,cAAgB1tB,EAAOmB,OAE/BxB,KAAKs0B,KAAKm8F,IAKdD,EAAQziG,cAAgB1tB,EAAOY,OAE3BwvH,EAAQ1iG,cAAgB1tB,EAAOY,OAE/BjB,KAAKqxH,sBAAsBb,EAASC,EAASK,EAAiBH,EAAiB5tG,EAAiBouG,GAE3FV,EAAQ1iG,cAAgB1tB,EAAOmB,MAEpCxB,KAAKsxH,qBAAqBd,EAASC,EAASK,EAAiBH,EAAiB5tG,EAAiBouG,GAE1FV,EAAQ1iG,cAAgB1tB,EAAOsB,cAEpC3B,KAAKuxH,4BAA4Bf,EAASC,EAASK,EAAiBH,EAAiB5tG,EAAiBouG,GAIrGX,EAAQziG,cAAgB1tB,EAAOmB,MAEhCivH,EAAQ1iG,cAAgB1tB,EAAOY,OAE/BjB,KAAKsxH,qBAAqBb,EAASD,EAASM,EAAiBH,EAAiB5tG,EAAiBouG,GAE1FV,EAAQ1iG,cAAgB1tB,EAAOmB,MAEpCxB,KAAKwxH,oBAAoBhB,EAASC,EAASK,EAAiBH,EAAiB5tG,EAAiBouG,GAEzFV,EAAQ1iG,cAAgB1tB,EAAOsB,cAEpC3B,KAAKyxH,2BAA2BjB,EAASC,EAASK,EAAiBH,EAAiB5tG,EAAiBouG,GAIpGX,EAAQziG,cAAgB1tB,EAAOsB,eAEhC8uH,EAAQ1iG,cAAgB1tB,EAAOY,OAE/BjB,KAAKuxH,4BAA4Bd,EAASD,EAASM,EAAiBH,EAAiB5tG,EAAiBouG,GAEjGV,EAAQ1iG,cAAgB1tB,EAAOmB,OAEpCxB,KAAKyxH,2BAA2BhB,EAASD,EAASM,EAAiBH,EAAiB5tG,EAAiBouG,OAmBjHE,sBAAuB,SAAUK,EAASC,EAASb,EAAiBH,EAAiB5tG,EAAiBouG,GAElG,SAAKO,EAAQ9hG,OAAS+hG,EAAQ/hG,QAK1B5vB,KAAK4xH,SAASF,EAAQ9hG,KAAM+hG,EAAQ/hG,KAAM+gG,EAAiB5tG,EAAiBouG,KAExEL,GAEAA,EAAgBhqH,KAAKic,EAAiB2uG,EAASC,GAGnD3xH,KAAKuvH,WAGF,IAgBX+B,qBAAsB,SAAUl6F,EAAQZ,EAAOs6F,EAAiBH,EAAiB5tG,EAAiBouG,GAE9F,GAAqB,IAAjB36F,EAAM3uB,QAAiBuvB,EAAOxH,KAKlC,GAAI5vB,KAAKsvH,cAAgBl4F,EAAOxH,KAAK0/F,aAIjC,IAAK,GAFD30G,MAEK7S,EAAI,EAAGA,EAAI0uB,EAAMvH,KAAKpnB,OAAQC,IACvC,CACI,GAAI0oH,GAAUh6F,EAAMvH,KAAKnnB,EAGzB,IAAK0oH,GAAYA,EAAQhmG,QAAWgmG,EAAQ5gG,KAA5C,CASA,GAHAjV,EAAS61G,EAAQ5gG,KAAKtiB,UAAUqN,GAG5B3a,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAO88D,WACjD,CACI,GAAIj4F,EAAOxH,KAAKhlB,MAAQ+P,EAAO1U,EAE3B,KAEC,IAAI0U,EAAO/P,MAAQwsB,EAAOxH,KAAK3pB,EAEhC,aAGH,IAAIjG,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAOk9D,WACtD,CACI,GAAIr4F,EAAOxH,KAAK3pB,EAAI0U,EAAO/P,MAEvB,KAEC,IAAI+P,EAAO1U,EAAImxB,EAAOxH,KAAKhlB,MAE5B,aAGH,IAAI5K,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAOm9D,WACtD,CACI,GAAIt4F,EAAOxH,KAAKjhB,OAASgM,EAAOlO,EAE5B,KAEC,IAAIkO,EAAOhM,OAASyoB,EAAOxH,KAAKnjB,EAEjC,aAGH,IAAIzM,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAOo9D,WACtD,CACI,GAAIv4F,EAAOxH,KAAKnjB,EAAIkO,EAAOhM,OAEvB,KAEC,IAAIgM,EAAOlO,EAAI2qB,EAAOxH,KAAKjhB,OAE5B,SAIR3O,KAAKqxH,sBAAsBj6F,EAAQo5F,EAASM,EAAiBH,EAAiB5tG,EAAiBouG,QAIvG,CAEInxH,KAAKgkH,SAAS/lG,QAEdje,KAAKgkH,SAAStkG,MAAM1f,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQhQ,KAAK4wF,WAAY5wF,KAAK6wF,WAE3J7wF,KAAKgkH,SAAS5yB,SAAS56D,EAIvB,KAAK,GAFDq7F,GAAQ7xH,KAAKgkH,SAASzyB,SAASn6D,GAE1BtvB,EAAI,EAAGA,EAAI+pH,EAAMhqH,OAAQC,IAG1B9H,KAAK4xH,SAASx6F,EAAOxH,KAAMiiG,EAAM/pH,GAAI6oH,EAAiB5tG,EAAiBouG,KAEnEL,GAEAA,EAAgBhqH,KAAKic,EAAiBqU,EAAQy6F,EAAM/pH,GAAGsvB,QAG3Dp3B,KAAKuvH,YAmBrB6B,mBAAoB,SAAU56F,EAAOs6F,EAAiBH,EAAiB5tG,EAAiBouG,GAEpF,GAAqB,IAAjB36F,EAAM3uB,OAKV,IAAK,GAAIC,GAAI,EAAGA,EAAI0uB,EAAMvH,KAAKpnB,OAAQC,IACvC,CACI,GAAIgqH,MACAtB,EAAUh6F,EAAMvH,KAAKnnB,EAGzB,IAAK0oH,GAAYA,EAAQhmG,QAAWgmG,EAAQ5gG,KAA5C,CAMAkiG,EAAUtB,EAAQ5gG,KAAKtiB,UAAUwkH,EAEjC,KAAK,GAAIj6G,GAAI/P,EAAI,EAAG+P,EAAI2e,EAAMvH,KAAKpnB,OAAQgQ,IAC3C,CACI,GAAIk6G,MACAtB,EAAUj6F,EAAMvH,KAAKpX,EAGzB,IAAK44G,GAAYA,EAAQjmG,QAAWimG,EAAQ7gG,KAA5C,CASA,GAHAmiG,EAAUtB,EAAQ7gG,KAAKtiB,UAAUykH,GAG7B/xH,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAO88D,WACjD,CACI,GAAIyC,EAAQlnH,MAAQmnH,EAAQ9rH,EAExB,KAEC,IAAI8rH,EAAQnnH,MAAQknH,EAAQ7rH,EAE7B,aAGH,IAAIjG,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAOk9D,WACtD,CACI,GAAIqC,EAAQ7rH,EAAI8rH,EAAQnnH,MAEpB,QAEC,IAAImnH,EAAQ9rH,EAAI6rH,EAAQlnH,MAEzB,UAGH,IAAI5K,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAOm9D,WACtD,CACI,GAAIoC,EAAQnjH,OAASojH,EAAQtlH,EAEzB,QAEC,IAAIslH,EAAQpjH,OAASmjH,EAAQrlH,EAE9B,UAGH,IAAIzM,KAAKovH,gBAAkB/uH,EAAOutB,QAAQ2kC,OAAOo9D,WACtD,CACI,GAAImC,EAAQrlH,EAAIslH,EAAQpjH,OAEpB,QAEC,IAAIojH,EAAQtlH,EAAI+jH,EAAQ5gG,KAAKjhB,OAE9B,MAIR3O,KAAKqxH,sBAAsBb,EAASC,EAASK,EAAiBH,EAAiB5tG,EAAiBouG,QAkB5GK,oBAAqB,SAAUQ,EAAQC,EAAQnB,EAAiBH,EAAiB5tG,EAAiBouG,GAE9F,GAAsB,IAAlBa,EAAOnqH,QAAkC,IAAlBoqH,EAAOpqH,OAKlC,IAAK,GAAIC,GAAI,EAAGA,EAAIkqH,EAAOrmG,SAAS9jB,OAAQC,IAEpCkqH,EAAOrmG,SAAS7jB,GAAG0iB,SAEfwnG,EAAOrmG,SAAS7jB,GAAGimB,cAAgB1tB,EAAOmB,MAE1CxB,KAAKwxH,oBAAoBQ,EAAOrmG,SAAS7jB,GAAImqH,EAAQnB,EAAiBH,EAAiB5tG,EAAiBouG,GAIxGnxH,KAAKsxH,qBAAqBU,EAAOrmG,SAAS7jB,GAAImqH,EAAQnB,EAAiBH,EAAiB5tG,EAAiBouG,KAmBzHS,SAAU,SAAUM,EAAOC,EAAOxB,EAAiB5tG,EAAiBouG,GAEhE,IAAKe,EAAMliG,SAAWmiG,EAAMniG,SAAWhwB,KAAK8O,WAAWojH,EAAOC,GAE1D,OAAO,CAIX,IAAIxB,GAAmBA,EAAgB7pH,KAAKic,EAAiBmvG,EAAM96F,OAAQ+6F,EAAM/6F,WAAY,EAEzF,OAAO,CAIX,IAAI86F,EAAME,UAAYD,EAAMC,SAExB,MAAOpyH,MAAKqyH,eAAeH,EAAOC,EAAOhB,EAO7C,IAAIe,EAAME,WAAaD,EAAMC,SAC7B,CACI,GAAIE,GAAYJ,EAAc,SAAIC,EAAQD,EACtCK,EAAcL,EAAc,SAAIA,EAAQC,EAExCz+G,GACAzN,EAAGqsH,EAASrsH,EACZwG,EAAG6lH,EAAS7lH,EACZ7B,MAAO0nH,EAAS1nH,MAChB+D,OAAQ2jH,EAAS3jH,QAGjB6uB,GACAv3B,EAAGssH,EAAWtsH,EAAIssH,EAAWllH,OAC7BZ,EAAG8lH,EAAW9lH,EAAI8lH,EAAWllH,OAGjC,KAAImwB,EAAO/wB,EAAIiH,EAAKjH,GAAK+wB,EAAO/wB,EAAIiH,EAAK/E,UAEjC6uB,EAAOv3B,EAAIyN,EAAKzN,GAAKu3B,EAAOv3B,EAAIyN,EAAK9I,OAErC,MAAO5K,MAAKqyH,eAAeH,EAAOC,EAAOhB,GAKrD,GAAIqB,IAAU,EACVC,GAAU,CAGVzyH,MAAKmvH,QAAUppH,KAAKoJ,IAAInP,KAAKgvH,QAAQviH,EAAIylH,EAAMlD,QAAQviH,GAAK1G,KAAKoJ,IAAInP,KAAKgvH,QAAQ/oH,EAAIisH,EAAMlD,QAAQ/oH,IAEpGusH,EAAUxyH,KAAK0yH,UAAUR,EAAOC,EAAOhB,GAGnCnxH,KAAK8O,WAAWojH,EAAOC,KAEvBM,EAAUzyH,KAAK2yH,UAAUT,EAAOC,EAAOhB,MAK3CsB,EAAUzyH,KAAK2yH,UAAUT,EAAOC,EAAOhB,GAGnCnxH,KAAK8O,WAAWojH,EAAOC,KAEvBK,EAAUxyH,KAAK0yH,UAAUR,EAAOC,EAAOhB,IAI/C,IAAI7/G,GAAUkhH,GAAWC,CA8BzB,OA5BInhH,KAEI6/G,GAEIe,EAAMU,WAENV,EAAMU,UAAU/zG,SAASqzG,EAAM96F,OAAQ+6F,EAAM/6F,QAG7C+6F,EAAMS,WAENT,EAAMS,UAAU/zG,SAASszG,EAAM/6F,OAAQ86F,EAAM96F,UAK7C86F,EAAMW,WAENX,EAAMW,UAAUh0G,SAASqzG,EAAM96F,OAAQ+6F,EAAM/6F,QAG7C+6F,EAAMU,WAENV,EAAMU,UAAUh0G,SAASszG,EAAM/6F,OAAQ86F,EAAM96F,UAKlD9lB,GAYXxC,WAAY,SAAUojH,EAAOC,GAEzB,MAAID,KAAUC,IAKVD,EAAME,SAEFD,EAAMC,SAGC/xH,EAAO0F,KAAK8H,SAASqkH,EAAMlhH,OAAO/K,EAAGisH,EAAMlhH,OAAOvE,EAAG0lH,EAAMnhH,OAAO/K,EAAGksH,EAAMnhH,OAAOvE,IAAOylH,EAAM7kH,OAAS8kH,EAAM9kH,OAK9GrN,KAAK8yH,qBAAqBZ,EAAOC,GAKxCA,EAAMC,SAGCpyH,KAAK8yH,qBAAqBX,EAAOD,KAKpCA,EAAMtnH,OAASunH,EAAM54G,SAAStT,OAK9BisH,EAAMvjH,QAAUwjH,EAAM54G,SAAS9M,OAK/BylH,EAAM34G,SAAStT,GAAKksH,EAAMvnH,UAK1BsnH,EAAM34G,SAAS9M,GAAK0lH,EAAMxjH,YAmB1CmkH,qBAAsB,SAAUt1F,EAAQ5N,GAEpC,GAAI3pB,GAAI5F,EAAO0F,KAAKyP,MAAMgoB,EAAOxsB,OAAO/K,EAAG2pB,EAAK/kB,KAAM+kB,EAAKhlB,OACvD6B,EAAIpM,EAAO0F,KAAKyP,MAAMgoB,EAAOxsB,OAAOvE,EAAGmjB,EAAKlhB,IAAKkhB,EAAKjhB,QAEtDN,GAAMmvB,EAAOxsB,OAAO/K,EAAIA,IAAMu3B,EAAOxsB,OAAO/K,EAAIA,GAChDqI,GAAMkvB,EAAOxsB,OAAOvE,EAAIA,IAAM+wB,EAAOxsB,OAAOvE,EAAIA,EAEpD,OAAQ4B,GAAKC,GAAQkvB,EAAOnwB,OAASmwB,EAAOnwB,QAchDglH,eAAgB,SAAUH,EAAOC,EAAOhB;AAGpCnxH,KAAK+yH,YAAYb,EAAOC,GACxBnyH,KAAKgzH,YAAYd,EAAOC,EAExB,IAAIc,GAAiBjzH,KAAKkzH,oBAAoBhB,EAAOC,GAEjDriE,EAAU,CAEd,IAAIoiE,EAAME,WAAaD,EAAMC,SAC7B,CACI,GAAI1+G,IACAzN,EAAIksH,EAAc,SAAID,EAAM34G,SAAStT,EAAIksH,EAAM54G,SAAStT,EACxDwG,EAAI0lH,EAAc,SAAID,EAAM34G,SAAS9M,EAAI0lH,EAAM54G,SAAS9M,EACxD7B,MAAQunH,EAAc,SAAID,EAAMtnH,MAAQunH,EAAMvnH,MAC9C+D,OAASwjH,EAAc,SAAID,EAAMvjH,OAASwjH,EAAMxjH,QAGhD6uB,GACAv3B,EAAIisH,EAAc,SAAKA,EAAM34G,SAAStT,EAAIisH,EAAM7kH,OAAW8kH,EAAM54G,SAAStT,EAAIksH,EAAM9kH,OACpFZ,EAAIylH,EAAc,SAAKA,EAAM34G,SAAS9M,EAAIylH,EAAM7kH,OAAW8kH,EAAM54G,SAAS9M,EAAI0lH,EAAM9kH,OACpFA,OAAS6kH,EAAc,SAAIA,EAAM7kH,OAAS8kH,EAAM9kH,OAGhDmwB,GAAO/wB,EAAIiH,EAAKjH,EAEZ+wB,EAAOv3B,EAAIyN,EAAKzN,EAEhB6pD,EAAUzvD,EAAO0F,KAAK8H,SAAS2vB,EAAOv3B,EAAGu3B,EAAO/wB,EAAGiH,EAAKzN,EAAGyN,EAAKjH,GAAK+wB,EAAOnwB,OAEvEmwB,EAAOv3B,EAAIyN,EAAK9I,QAErBklD,EAAUzvD,EAAO0F,KAAK8H,SAAS2vB,EAAOv3B,EAAGu3B,EAAO/wB,EAAGiH,EAAK9I,MAAO8I,EAAKjH,GAAK+wB,EAAOnwB,QAG/EmwB,EAAO/wB,EAAIiH,EAAK/E,SAEjB6uB,EAAOv3B,EAAIyN,EAAKzN,EAEhB6pD,EAAUzvD,EAAO0F,KAAK8H,SAAS2vB,EAAOv3B,EAAGu3B,EAAO/wB,EAAGiH,EAAKzN,EAAGyN,EAAK/E,QAAU6uB,EAAOnwB,OAE5EmwB,EAAOv3B,EAAIyN,EAAK9I,QAErBklD,EAAUzvD,EAAO0F,KAAK8H,SAAS2vB,EAAOv3B,EAAGu3B,EAAO/wB,EAAGiH,EAAK9I,MAAO8I,EAAK/E,QAAU6uB,EAAOnwB,SAI7FyiD,IAAW,MAIXA,GAAWoiE,EAAM7kH,OAAS8kH,EAAM9kH,OAAUhN,EAAO0F,KAAK8H,SAASqkH,EAAMlhH,OAAO/K,EAAGisH,EAAMlhH,OAAOvE,EAAG0lH,EAAMnhH,OAAO/K,EAAGksH,EAAMnhH,OAAOvE,EAIhI,IAAI0kH,GAA2B,IAAZrhE,GAAkBoiE,EAAMiB,WAAahB,EAAMgB,WAAcjB,EAAMkB,iBAAmBjB,EAAMiB,gBAgBvG,MAdgB,KAAZtjE,IAEIoiE,EAAMU,WAENV,EAAMU,UAAU/zG,SAASqzG,EAAM96F,OAAQ+6F,EAAM/6F,QAG7C+6F,EAAMS,WAENT,EAAMS,UAAU/zG,SAASszG,EAAM/6F,OAAQ86F,EAAM96F,SAKjC,IAAZ04B,CAKZ,IAAI8+B,IACA3oF,EAAGisH,EAAM/B,SAASlqH,EAAIF,KAAKoH,IAAI8lH,GAAkBf,EAAM/B,SAAS1jH,EAAI1G,KAAKqH,IAAI6lH,GAC7ExmH,EAAGylH,EAAM/B,SAASlqH,EAAIF,KAAKqH,IAAI6lH,GAAkBf,EAAM/B,SAAS1jH,EAAI1G,KAAKoH,IAAI8lH,IAG7EI,GACAptH,EAAGksH,EAAMhC,SAASlqH,EAAIF,KAAKoH,IAAI8lH,GAAkBd,EAAMhC,SAAS1jH,EAAI1G,KAAKqH,IAAI6lH,GAC7ExmH,EAAG0lH,EAAMhC,SAASlqH,EAAIF,KAAKqH,IAAI6lH,GAAkBd,EAAMhC,SAAS1jH,EAAI1G,KAAKoH,IAAI8lH,IAI7EK,IAAapB,EAAMqB,KAAOpB,EAAMoB,MAAQ3kC,EAAG3oF,EAAI,EAAIksH,EAAMoB,KAAOF,EAAGptH,IAAMisH,EAAMqB,KAAOpB,EAAMoB,MAC5FC,GAAY,EAAItB,EAAMqB,KAAO3kC,EAAG3oF,GAAKksH,EAAMoB,KAAOrB,EAAMqB,MAAQF,EAAGptH,IAAMisH,EAAMqB,KAAOpB,EAAMoB,KAgFhG,OA7EKrB,GAAMiB,YAEPjB,EAAM/B,SAASlqH,GAAKqtH,EAAWvtH,KAAKoH,IAAI8lH,GAAkBrkC,EAAGniF,EAAI1G,KAAKqH,IAAI6lH,IAAmBf,EAAMuB,OAAOxtH,EAC1GisH,EAAM/B,SAAS1jH,GAAKmiF,EAAGniF,EAAI1G,KAAKoH,IAAI8lH,GAAkBK,EAAWvtH,KAAKqH,IAAI6lH,IAAmBf,EAAMuB,OAAOhnH,GAGzG0lH,EAAMgB,YAEPhB,EAAMhC,SAASlqH,GAAKutH,EAAWztH,KAAKoH,IAAI8lH,GAAkBI,EAAG5mH,EAAI1G,KAAKqH,IAAI6lH,IAAmBd,EAAMsB,OAAOxtH,EAC1GksH,EAAMhC,SAAS1jH,GAAK4mH,EAAG5mH,EAAI1G,KAAKoH,IAAI8lH,GAAkBO,EAAWztH,KAAKqH,IAAI6lH,IAAmBd,EAAMsB,OAAOhnH,GAO1G1G,KAAKoJ,IAAI8jH,GAAkBltH,KAAK+G,GAAK,EAEhColH,EAAM/B,SAASlqH,EAAI,IAAOisH,EAAMiB,WAAchB,EAAMhC,SAASlqH,EAAIisH,EAAM/B,SAASlqH,EAEjFisH,EAAM/B,SAASlqH,IAAK,EAEdksH,EAAMhC,SAASlqH,EAAI,IAAOksH,EAAMgB,WAAcjB,EAAM/B,SAASlqH,EAAIksH,EAAMhC,SAASlqH,EAEtFksH,EAAMhC,SAASlqH,IAAK,EAEdisH,EAAM/B,SAAS1jH,EAAI,IAAOylH,EAAMiB,WAAchB,EAAMhC,SAAS1jH,EAAIylH,EAAM/B,SAAS1jH,EAEtFylH,EAAM/B,SAAS1jH,IAAK,EAEd0lH,EAAMhC,SAAS1jH,EAAI,IAAO0lH,EAAMgB,WAAcjB,EAAM/B,SAAS1jH,EAAI0lH,EAAMhC,SAAS1jH,IAEtF0lH,EAAMhC,SAAS1jH,IAAK,GAGnB1G,KAAKoJ,IAAI8jH,GAAkBltH,KAAK+G,GAAK,IAErColH,EAAM/B,SAASlqH,EAAI,IAAOisH,EAAMiB,WAAchB,EAAMhC,SAASlqH,EAAIisH,EAAM/B,SAASlqH,EAEjFisH,EAAM/B,SAASlqH,IAAK,EAEdksH,EAAMhC,SAASlqH,EAAI,IAAOksH,EAAMgB,WAAcjB,EAAM/B,SAASlqH,EAAIksH,EAAMhC,SAASlqH,EAEtFksH,EAAMhC,SAASlqH,IAAK,EAEdisH,EAAM/B,SAAS1jH,EAAI,IAAOylH,EAAMiB,WAAchB,EAAMhC,SAAS1jH,EAAIylH,EAAM/B,SAAS1jH,EAEtFylH,EAAM/B,SAAS1jH,IAAK,EAEd0lH,EAAMhC,SAAS1jH,EAAI,IAAO0lH,EAAMgB,WAAcjB,EAAM/B,SAASlqH,EAAIksH,EAAMhC,SAAS1jH,IAEtF0lH,EAAMhC,SAAS1jH,IAAK,IAIvBylH,EAAMiB,YAEPjB,EAAMjsH,GAAMisH,EAAM/B,SAASlqH,EAAIjG,KAAKwa,KAAKmE,KAAKqiE,eAAkBlxB,EAAU/pD,KAAKoH,IAAI8lH,GACnFf,EAAMzlH,GAAMylH,EAAM/B,SAAS1jH,EAAIzM,KAAKwa,KAAKmE,KAAKqiE,eAAkBlxB,EAAU/pD,KAAKqH,IAAI6lH,IAGlFd,EAAMgB,YAEPhB,EAAMlsH,GAAMksH,EAAMhC,SAASlqH,EAAIjG,KAAKwa,KAAKmE,KAAKqiE,eAAkBlxB,EAAU/pD,KAAKoH,IAAI8lH,GACnFd,EAAM1lH,GAAM0lH,EAAMhC,SAAS1jH,EAAIzM,KAAKwa,KAAKmE,KAAKqiE,eAAkBlxB,EAAU/pD,KAAKqH,IAAI6lH,IAGnFf,EAAMW,WAENX,EAAMW,UAAUh0G,SAASqzG,EAAM96F,OAAQ+6F,EAAM/6F,QAG7C+6F,EAAMU,WAENV,EAAMU,UAAUh0G,SAASszG,EAAM/6F,OAAQ86F,EAAM96F,SAG1C,GAcX27F,YAAa,SAAUb,EAAOC,EAAOhB,GAEjC,GAAIrhE,GAAU,EACV4jE,EAAaxB,EAAMyB,YAAcxB,EAAMwB,YAAc3zH,KAAKkvH,YA+C9D,OA7CuB,KAAnBgD,EAAMvrF,UAAqC,IAAnBwrF,EAAMxrF,UAG9BurF,EAAM0B,UAAW,EACjBzB,EAAMyB,UAAW,GAEZ1B,EAAMvrF,SAAWwrF,EAAMxrF,UAG5BmpB,EAAUoiE,EAAMtnH,MAAQunH,EAAMlsH,EAEzB6pD,EAAU4jE,IAAevC,GAAgBe,EAAMjD,eAAerkH,SAAU,GAASunH,EAAMlD,eAAepkH,QAAS,EAEhHilD,EAAU,GAIVoiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAASjpH,OAAQ,EACvBunH,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAAShpH,MAAO,IAGrBqnH,EAAMvrF,SAAWwrF,EAAMxrF,WAG5BmpB,EAAUoiE,EAAMjsH,EAAIksH,EAAMpiH,MAAQoiH,EAAMlsH,GAElC6pD,EAAU4jE,IAAevC,GAAgBe,EAAMjD,eAAepkH,QAAS,GAASsnH,EAAMlD,eAAerkH,SAAU,EAEjHklD,EAAU,GAIVoiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAAShpH,MAAO,EACtBsnH,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAASjpH,OAAQ,IAK/BsnH,EAAM6B,SAAWjkE,EACjBqiE,EAAM4B,SAAWjkE,EAEVA,GAcXkjE,YAAa,SAAUd,EAAOC,EAAOhB,GAEjC,GAAIrhE,GAAU,EACV4jE,EAAaxB,EAAM8B,YAAc7B,EAAM6B,YAAch0H,KAAKkvH,YA+C9D,OA7CuB,KAAnBgD,EAAMzsF,UAAqC,IAAnB0sF,EAAM1sF,UAG9BysF,EAAM0B,UAAW,EACjBzB,EAAMyB,UAAW,GAEZ1B,EAAMzsF,SAAW0sF,EAAM1sF,UAG5BqqB,EAAUoiE,EAAMvjH,OAASwjH,EAAM1lH,EAE1BqjD,EAAU4jE,IAAevC,GAAgBe,EAAMjD,eAAejkF,QAAS,GAASmnF,EAAMlD,eAAe7uE,MAAO,EAE7G0P,EAAU,GAIVoiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAAS7oF,MAAO,EACtBmnF,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAASzzE,IAAK,IAGnB8xE,EAAMzsF,SAAW0sF,EAAM1sF,WAG5BqqB,EAAUoiE,EAAMzlH,EAAI0lH,EAAMxjH,QAEpBmhD,EAAU4jE,IAAevC,GAAgBe,EAAMjD,eAAe7uE,MAAO,GAAS+xE,EAAMlD,eAAejkF,QAAS,EAE9G8kB,EAAU,GAIVoiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAASzzE,IAAK,EACpB+xE,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAAS7oF,MAAO,IAK9BknF,EAAM+B,SAAWnkE,EACjBqiE,EAAM8B,SAAWnkE,EAEVA,GAcX4iE,UAAW,SAAUR,EAAOC,EAAOhB,GAE/B,GAAIrhE,GAAU9vD,KAAK+yH,YAAYb,EAAOC,EAAOhB,EAG7C,IAAIA,GAA2B,IAAZrhE,GAAkBoiE,EAAMiB,WAAahB,EAAMgB,WAAcjB,EAAMkB,iBAAmBjB,EAAMiB,gBAGvG,MAAoB,KAAZtjE,GAAmBoiE,EAAM0B,UAAYzB,EAAMyB,QAIvD,IAAIhlC,GAAKsjC,EAAM/B,SAASlqH,EACpBotH,EAAKlB,EAAMhC,SAASlqH,CAExB,IAAKisH,EAAMiB,WAAchB,EAAMgB,UAiBrBjB,EAAMiB,WAaZhB,EAAMlsH,GAAK6pD,EACXqiE,EAAMhC,SAASlqH,EAAI2oF,EAAKykC,EAAKlB,EAAMsB,OAAOxtH,EAGtCisH,EAAMgC,QAEN/B,EAAM1lH,IAAMylH,EAAMzlH,EAAIylH,EAAMn5D,KAAKtsD,GAAKylH,EAAMiC,SAAS1nH,KAjBzDylH,EAAMjsH,GAAK6pD,EACXoiE,EAAM/B,SAASlqH,EAAIotH,EAAKzkC,EAAKsjC,EAAMuB,OAAOxtH,EAGtCksH,EAAM+B,QAENhC,EAAMzlH,IAAM0lH,EAAM1lH,EAAI0lH,EAAMp5D,KAAKtsD,GAAK0lH,EAAMgC,SAAS1nH,QAxB7D,CACIqjD,GAAW,GAEXoiE,EAAMjsH,GAAK6pD,EACXqiE,EAAMlsH,GAAK6pD,CAEX,IAAIskE,GAAMruH,KAAKmK,KAAMmjH,EAAKA,EAAKlB,EAAMoB,KAAQrB,EAAMqB,OAAUF,EAAK,EAAK,GAAI,GACvEgB,EAAMtuH,KAAKmK,KAAM0+E,EAAKA,EAAKsjC,EAAMqB,KAAQpB,EAAMoB,OAAU3kC,EAAK,EAAK,GAAI,GACvE0lC,EAAoB,IAAbF,EAAMC,EAEjBD,IAAOE,EACPD,GAAOC,EAEPpC,EAAM/B,SAASlqH,EAAIquH,EAAMF,EAAMlC,EAAMuB,OAAOxtH,EAC5CksH,EAAMhC,SAASlqH,EAAIquH,EAAMD,EAAMlC,EAAMsB,OAAOxtH,EA0BhD,OAAO,GAcX0sH,UAAW,SAAUT,EAAOC,EAAOhB,GAE/B,GAAIrhE,GAAU9vD,KAAKgzH,YAAYd,EAAOC,EAAOhB,EAG7C,IAAIA,GAA2B,IAAZrhE,GAAkBoiE,EAAMiB,WAAahB,EAAMgB,WAAcjB,EAAMqC,iBAAmBpC,EAAMoC,gBAGvG,MAAoB,KAAZzkE,GAAmBoiE,EAAM0B,UAAYzB,EAAMyB,QAIvD,IAAIhlC,GAAKsjC,EAAM/B,SAAS1jH,EACpB4mH,EAAKlB,EAAMhC,SAAS1jH,CAExB,IAAKylH,EAAMiB,WAAchB,EAAMgB,UAiBrBjB,EAAMiB,WAaZhB,EAAM1lH,GAAKqjD,EACXqiE,EAAMhC,SAAS1jH,EAAImiF,EAAKykC,EAAKlB,EAAMsB,OAAOhnH,EAGtCylH,EAAMgC,QAEN/B,EAAMlsH,IAAMisH,EAAMjsH,EAAIisH,EAAMn5D,KAAK9yD,GAAKisH,EAAMiC,SAASluH,KAjBzDisH,EAAMzlH,GAAKqjD,EACXoiE,EAAM/B,SAAS1jH,EAAI4mH,EAAKzkC,EAAKsjC,EAAMuB,OAAOhnH,EAGtC0lH,EAAM+B,QAENhC,EAAMjsH,IAAMksH,EAAMlsH,EAAIksH,EAAMp5D,KAAK9yD,GAAKksH,EAAMgC,SAASluH,QAxB7D,CACI6pD,GAAW,GAEXoiE,EAAMzlH,GAAKqjD,EACXqiE,EAAM1lH,GAAKqjD,CAEX,IAAIskE,GAAMruH,KAAKmK,KAAMmjH,EAAKA,EAAKlB,EAAMoB,KAAQrB,EAAMqB,OAAUF,EAAK,EAAK,GAAI,GACvEgB,EAAMtuH,KAAKmK,KAAM0+E,EAAKA,EAAKsjC,EAAMqB,KAAQpB,EAAMoB,OAAU3kC,EAAK,EAAK,GAAI,GACvE0lC,EAAoB,IAAbF,EAAMC,EAEjBD,IAAOE,EACPD,GAAOC,EAEPpC,EAAM/B,SAAS1jH,EAAI6nH,EAAMF,EAAMlC,EAAMuB,OAAOhnH,EAC5C0lH,EAAMhC,SAAS1jH,EAAI6nH,EAAMD,EAAMlC,EAAMsB,OAAOhnH,EA0BhD,OAAO,GAgBX+nH,uBAAwB,SAAU1rG,EAAS0N,EAAOlD,EAAUvQ,GAExD,GAAqB,IAAjByT,EAAM3uB,QAAiBihB,EAAQ0B,OAKnC,MAAOxqB,MAAKy0H,qBAAqB3rG,EAAQ7iB,EAAG6iB,EAAQrc,EAAG+pB,EAAOlD,EAAUvQ,EAAiB+F,IAkB7F2rG,qBAAsB,SAAUxuH,EAAGwG,EAAG+pB,EAAOlD,EAAUvQ,EAAiB2xG,GAEpE10H,KAAKgkH,SAAS/lG,QAEdje,KAAKgkH,SAAStkG,MAAM1f,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQhQ,KAAK4wF,WAAY5wF,KAAK6wF,WAE3J7wF,KAAKgkH,SAAS5yB,SAAS56D,EAOvB,KAAK,GALD9iB,GAAO,GAAIrT,GAAOkN,UAAUtH,EAAGwG,EAAG,EAAG,GACrCsB,KAEA8jH,EAAQ7xH,KAAKgkH,SAASzyB,SAAS79E,GAE1B5L,EAAI,EAAGA,EAAI+pH,EAAMhqH,OAAQC,IAE1B+pH,EAAM/pH,GAAGq6B,QAAQl8B,EAAGwG,KAEhB6mB,GAEAA,EAASxsB,KAAKic,EAAiB2xG,EAAa7C,EAAM/pH,GAAGsvB,QAGzDrpB,EAAO6E,KAAKi/G,EAAM/pH,GAAGsvB,QAI7B,OAAOrpB,IAmBX4mH,aAAc,SAAU35G,EAAeijD,EAAa1gC,EAAOq3F,GAEzClrH,SAAV6zB,IAAuBA,EAAQ,IACnB7zB,SAAZkrH,IAAyBA,EAAU,EAEvC,IAAI1mH,GAAQnI,KAAK+M,MAAMmrD,EAAYxxD,EAAIuO,EAAcvO,EAAGwxD,EAAYh4D,EAAI+U,EAAc/U,EAWtF,OATI2uH,GAAU,IAGVr3F,EAAQv9B,KAAK60H,gBAAgB75G,EAAeijD,IAAgB22D,EAAU,MAG1E55G,EAAc4U,KAAKugG,SAASlqH,EAAIF,KAAKoH,IAAIe,GAASqvB,EAClDviB,EAAc4U,KAAKugG,SAAS1jH,EAAI1G,KAAKqH,IAAIc,GAASqvB,EAE3CrvB,GAkBX4mH,cAAe,SAAU95G,EAAeuiB,EAAOzU,EAAS8rG,GAEtClrH,SAAV6zB,IAAuBA,EAAQ,IACnCzU,EAAUA,GAAW9oB,KAAKwa,KAAKuF,MAAM8e,cACrBn1B,SAAZkrH,IAAyBA,EAAU,EAEvC,IAAI1mH,GAAQlO,KAAK+0H,eAAe/5G,EAAe8N,EAW/C,OATI8rG,GAAU,IAGVr3F,EAAQv9B,KAAKg1H,kBAAkBh6G,EAAe8N,IAAY8rG,EAAU,MAGxE55G,EAAc4U,KAAKugG,SAASlqH,EAAIF,KAAKoH,IAAIe,GAASqvB,EAClDviB,EAAc4U,KAAKugG,SAAS1jH,EAAI1G,KAAKqH,IAAIc,GAASqvB,EAE3CrvB,GAoBX+mH,SAAU,SAAUj6G,EAAe/U,EAAGwG,EAAG8wB,EAAOq3F,GAE9BlrH,SAAV6zB,IAAuBA,EAAQ,IACnB7zB,SAAZkrH,IAAyBA,EAAU,EAEvC,IAAI1mH,GAAQnI,KAAK+M,MAAMrG,EAAIuO,EAAcvO,EAAGxG,EAAI+U,EAAc/U,EAW9D,OATI2uH,GAAU,IAGVr3F,EAAQv9B,KAAKk1H,aAAal6G,EAAe/U,EAAGwG,IAAMmoH,EAAU,MAGhE55G,EAAc4U,KAAKugG,SAASlqH,EAAIF,KAAKoH,IAAIe,GAASqvB,EAClDviB,EAAc4U,KAAKugG,SAAS1jH,EAAI1G,KAAKqH,IAAIc,GAASqvB,EAE3CrvB,GAcXinH,kBAAmB,SAAUjnH,EAAOqvB,EAAO/uB,GAKvC,MAHc9E,UAAV6zB,IAAuBA,EAAQ,IACnC/uB,EAAQA,GAAS,GAAInO,GAAO2M,MAErBwB,EAAMhB,MAAOzH,KAAKoH,IAAInN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUqvB,EAASx3B,KAAKqH,IAAIpN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUqvB,IAcvH63F,qBAAsB,SAAUv+F,EAAU0G,EAAO/uB,GAK7C,MAHc9E,UAAV6zB,IAAuBA,EAAQ,IACnC/uB,EAAQA,GAAS,GAAInO,GAAO2M,MAErBwB,EAAMhB,MAAOzH,KAAKoH,IAAI0pB,GAAY0G,EAASx3B,KAAKqH,IAAIypB,GAAY0G,IAc3E83F,yBAA0B,SAAUx+F,EAAU0G,EAAO/uB,GAKjD,MAHc9E,UAAV6zB,IAAuBA,EAAQ,IACnC/uB,EAAQA,GAAS,GAAInO,GAAO2M,MAErBwB,EAAMhB,MAAOzH,KAAKoH,IAAI0pB,GAAY0G,EAASx3B,KAAKqH,IAAIypB,GAAY0G,IAkB3E+3F,mBAAoB,SAAUt6G,EAAeijD,EAAa1gC,EAAOg4F,EAAWC,GAE1D9rH,SAAV6zB,IAAuBA,EAAQ,IACjB7zB,SAAd6rH,IAA2BA,EAAY,KACzB7rH,SAAd8rH,IAA2BA,EAAY,IAE3C,IAAItnH,GAAQlO,KAAKktF,aAAalyE,EAAeijD,EAK7C,OAHAjjD,GAAc4U,KAAKwgG,aAAa5iH,MAAMzH,KAAKoH,IAAIe,GAASqvB,EAAOx3B,KAAKqH,IAAIc,GAASqvB,GACjFviB,EAAc4U,KAAK0gG,YAAY9iH,MAAM+nH,EAAWC,GAEzCtnH,GAkBXunH,oBAAqB,SAAUz6G,EAAe8N,EAASyU,EAAOg4F,EAAWC,GAEvD9rH,SAAV6zB,IAAuBA,EAAQ,IACnB7zB,SAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAM8e,eACrCn1B,SAAd6rH,IAA2BA,EAAY,KACzB7rH,SAAd8rH,IAA2BA,EAAY,IAE3C,IAAItnH,GAAQlO,KAAK+0H,eAAe/5G,EAAe8N,EAK/C,OAHA9N,GAAc4U,KAAKwgG,aAAa5iH,MAAMzH,KAAKoH,IAAIe,GAASqvB,EAAOx3B,KAAKqH,IAAIc,GAASqvB,GACjFviB,EAAc4U,KAAK0gG,YAAY9iH,MAAM+nH,EAAWC,GAEzCtnH,GAmBXwnH,eAAgB,SAAU16G,EAAe/U,EAAGwG,EAAG8wB,EAAOg4F,EAAWC,GAE/C9rH,SAAV6zB,IAAuBA,EAAQ,IACjB7zB,SAAd6rH,IAA2BA,EAAY,KACzB7rH,SAAd8rH,IAA2BA,EAAY,IAE3C,IAAItnH,GAAQlO,KAAK21H,UAAU36G,EAAe/U,EAAGwG,EAK7C,OAHAuO,GAAc4U,KAAKwgG,aAAa5iH,MAAMzH,KAAKoH,IAAIe,GAASqvB,EAAOx3B,KAAKqH,IAAIc,GAASqvB,GACjFviB,EAAc4U,KAAK0gG,YAAY9iH,MAAM+nH,EAAWC,GAEzCtnH,GAiBX2mH,gBAAiB,SAAUnnH,EAAQ1G,EAAQyT,GAEzB/Q,SAAV+Q,IAAuBA,GAAQ,EAEnC,IAAIpM,GAAK,EAAUX,EAAO+M,MAAMxU,EAAIe,EAAOyT,MAAMxU,EAAIyH,EAAOzH,EAAIe,EAAOf,EACnEqI,EAAK,EAAUZ,EAAO+M,MAAMhO,EAAIzF,EAAOyT,MAAMhO,EAAIiB,EAAOjB,EAAIzF,EAAOyF,CAEvE,OAAO1G,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAoBpC4mH,aAAc,SAAUl6G,EAAe/U,EAAGwG,EAAGgO,GAE3B/Q,SAAV+Q,IAAuBA,GAAQ,EAEnC,IAAIpM,GAAK,EAAU2M,EAAcP,MAAMxU,EAAIA,EAAI+U,EAAc/U,EAAIA,EAC7DqI,EAAK,EAAU0M,EAAcP,MAAMhO,EAAIA,EAAIuO,EAAcvO,EAAIA,CAEjE,OAAO1G,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAmBpC0mH,kBAAmB,SAAUh6G,EAAe8N,EAASrO,GAEjC/Q,SAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAM8e,eACzCn1B,SAAV+Q,IAAuBA,GAAQ,EAEnC,IAAIpM,GAAK,EAAU2M,EAAcP,MAAMxU,EAAI6iB,EAAQi6F,OAAS/nG,EAAc/U,EAAI6iB,EAAQi6F,OAClFz0G,EAAK,EAAU0M,EAAcP,MAAMhO,EAAIqc,EAAQk6F,OAAShoG,EAAcvO,EAAIqc,EAAQk6F,MAEtF,OAAOj9G,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAiBpC4+E,aAAc,SAAUx/E,EAAQ1G,EAAQyT,GAIpC,MAFc/Q,UAAV+Q,IAAuBA,GAAQ,GAE/BA,EAEO1U,KAAK+M,MAAM9L,EAAOyT,MAAMhO,EAAIiB,EAAO+M,MAAMhO,EAAGzF,EAAOyT,MAAMxU,EAAIyH,EAAO+M,MAAMxU,GAI1EF,KAAK+M,MAAM9L,EAAOyF,EAAIiB,EAAOjB,EAAGzF,EAAOf,EAAIyH,EAAOzH,IAajEitH,oBAAqB,SAAUxlH,EAAQ1G,GAEnC,GAAIqH,GAAKrH,EAAOgK,OAAO/K,EAAIyH,EAAOsD,OAAO/K,EACrCqI,EAAKtH,EAAOgK,OAAOvE,EAAIiB,EAAOsD,OAAOvE,CAEzC,OAAO1G,MAAK+M,MAAMxE,EAAID,IAkB1BsnH,UAAW,SAAU36G,EAAe/U,EAAGwG,EAAGgO,GAItC,MAFc/Q,UAAV+Q,IAAuBA,GAAQ,GAE/BA,EAEO1U,KAAK+M,MAAMrG,EAAIuO,EAAcP,MAAMhO,EAAGxG,EAAI+U,EAAcP,MAAMxU,GAI9DF,KAAK+M,MAAMrG,EAAIuO,EAAcvO,EAAGxG,EAAI+U,EAAc/U,IAkBjE8uH,eAAgB,SAAU/5G,EAAe8N,EAASrO,GAK9C,MAHgB/Q,UAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAM8e,eACzCn1B,SAAV+Q,IAAuBA,GAAQ,GAE/BA,EAEO1U,KAAK+M,MAAMgW,EAAQk6F,OAAShoG,EAAcP,MAAMhO,EAAGqc,EAAQi6F,OAAS/nG,EAAcP,MAAMxU,GAIxFF,KAAK+M,MAAMgW,EAAQk6F,OAAShoG,EAAcvO,EAAGqc,EAAQi6F,OAAS/nG,EAAc/U,IAc3F2vH,oBAAqB,SAAU56G,EAAe8N,GAE1C,MAAO9oB,MAAK+0H,eAAe/5G,EAAe8N,GAAS,KAoB3DzoB,EAAOutB,QAAQ2kC,OAAO2xD,KAAO,SAAU9sF,GAKnCp3B,KAAKo3B,OAASA,EAKdp3B,KAAKwa,KAAO4c,EAAO5c,KAKnBxa,KAAKkI,KAAO7H,EAAOutB,QAAQC,OAM3B7tB,KAAKgwB,QAAS,EASdhwB,KAAKoyH,UAAW,EAUhBpyH,KAAKqN,OAAS,EAKdrN,KAAKoO,OAAS,GAAI/N,GAAO2M,MAMzBhN,KAAKuZ,SAAW,GAAIlZ,GAAO2M,MAAMoqB,EAAOnxB,EAAGmxB,EAAO3qB,GAMlDzM,KAAK+4D,KAAO,GAAI14D,GAAO2M,MAAMhN,KAAKuZ,SAAStT,EAAGjG,KAAKuZ,SAAS9M,GAM5DzM,KAAK61H,eAAgB,EAOrB71H,KAAK62B,SAAWO,EAAOP,SAMvB72B,KAAK81H,YAAc1+F,EAAOP,SAM1B72B,KAAK+P,MAAQqnB,EAAOrnB,MAMpB/P,KAAKgQ,OAASonB,EAAOpnB,OAMrBhQ,KAAKq8E,YAAcjlD,EAAOrnB,MAM1B/P,KAAKs8E,aAAellD,EAAOpnB,OAEvBonB,EAAOoL,UAEPxiC,KAAKq8E,YAAcjlD,EAAOoL,QAAQ7R,MAAM5gB,MACxC/P,KAAKs8E,aAAellD,EAAOoL,QAAQ7R,MAAM3gB,QAO7ChQ,KAAKoP,UAAYrJ,KAAKoJ,IAAIioB,EAAOrnB,MAAQ,GAMzC/P,KAAKuP,WAAaxJ,KAAKoJ,IAAIioB,EAAOpnB,OAAS,GAM3ChQ,KAAKgR,OAAS,GAAI3Q,GAAO2M,MAAMoqB,EAAOnxB,EAAIjG,KAAKoP,UAAWgoB,EAAO3qB,EAAIzM,KAAKuP,YAK1EvP,KAAKmwH,SAAW,GAAI9vH,GAAO2M,MAM3BhN,KAAK+1H,YAAc,GAAI11H,GAAO2M,MAK9BhN,KAAKg2H,SAAW,GAAI31H,GAAO2M,MAK3BhN,KAAKowH,aAAe,GAAI/vH,GAAO2M,MAK/BhN,KAAKqwH,KAAO,GAAIhwH,GAAO2M,MAMvBhN,KAAKuwH,cAAe,EAKpBvwH,KAAKgvH,QAAU,GAAI3uH,GAAO2M,MAK1BhN,KAAKyzH,OAAS,GAAIpzH,GAAO2M,MAQzBhN,KAAKi2H,YAAc,KAYnBj2H,KAAKk2H,cAAgB,KAoBrBl2H,KAAK6yH,UAAY,KAoBjB7yH,KAAK4yH,UAAY,KAMjB5yH,KAAKswH,YAAc,GAAIjwH,GAAO2M,MAAM,IAAO,KAK3ChN,KAAKm0H,SAAW,GAAI9zH,GAAO2M,MAAM,EAAG,GAMpChN,KAAK+vH,gBAAkB,EAMvB/vH,KAAKgwH,oBAAsB,EAM3BhwH,KAAKiwH,YAAc,EAMnBjwH,KAAKkwH,WAAa,IAMlBlwH,KAAKuzH,KAAO,EAMZvzH,KAAKkO,MAAQ,EAMblO,KAAKu9B,MAAQ,EAMbv9B,KAAKm2H,OAAS91H,EAAOO,KAMrBZ,KAAKmzH,WAAY,EASjBnzH,KAAKk0H,OAAQ,EAQbl0H,KAAKozH,iBAAkB,EAQvBpzH,KAAKu0H,iBAAkB,EAMvBv0H,KAAK+zH,SAAW,EAMhB/zH,KAAKi0H,SAAW,EAMhBj0H,KAAKo2H,SAAW,EAMhBp2H,KAAK4zH,UAAW,EAMhB5zH,KAAKq2H,oBAAqB,EAO1Br2H,KAAKivH,gBAAmB6E,MAAM,EAAOwC,KAAK,EAAMl2E,IAAI,EAAMpV,MAAM,EAAMngC,MAAM,EAAMD,OAAO,GAOzF5K,KAAK6zH,UAAaC,MAAM,EAAM1zE,IAAI,EAAOpV,MAAM,EAAOngC,MAAM,EAAOD,OAAO,GAM1E5K,KAAKu2H,aAAgBzC,MAAM,EAAM1zE,IAAI,EAAOpV,MAAM,EAAOngC,MAAM,EAAOD,OAAO,GAO7E5K,KAAKw2H,SAAYp2E,IAAI,EAAOpV,MAAM,EAAOngC,MAAM,EAAOD,OAAO,GAO7D5K,KAAKy2H,YAAc,GAAIp2H,GAAO2M,MAK9BhN,KAAKynB,OAAQ,EAKbznB,KAAKsvH,cAAe,EAUpBtvH,KAAK02H,YAAa,EAKlB12H,KAAK22H,UAAW,EAKhB32H,KAAK42H,uBAAwB,EAM7B52H,KAAK62H,UAAY,EAMjB72H,KAAK82H,aAAe,EAMpB92H,KAAK+2H,aAAe,EAMpB/2H,KAAKg3H,WAAa,KAMlBh3H,KAAKi3H,QAAU,KAKfj3H,KAAKk3H,eAAiB,GAAI72H,GAAO+a,OAKjCpb,KAAKm3H,iBAAmB,KAKxBn3H,KAAKo3H,wBAA0B,KAM/Bp3H,KAAK+vD,QAAS,EAMd/vD,KAAKq3H,IAAMjgG,EAAOviB,MAAM5O,EAMxBjG,KAAKs3H,IAAMlgG,EAAOviB,MAAMpI,EAMxBzM,KAAKizC,IAAM,EAMXjzC,KAAKkzC,IAAM,GAIf7yC,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,WAQvBkxH,aAAc,WAEV,GAAIv3H,KAAK02H,WACT,CACI,GAAI7nH,GAAI7O,KAAKo3B,OAAO9pB,WACpBuB,GAAE+J,UAEE/J,EAAEkB,QAAU/P,KAAK+P,OAASlB,EAAEmB,SAAWhQ,KAAKgQ,SAE5ChQ,KAAK+P,MAAQlB,EAAEkB,MACf/P,KAAKgQ,OAASnB,EAAEmB,OAChBhQ,KAAK+vD,QAAS,OAItB,CACI,GAAIynE,GAAMzxH,KAAKoJ,IAAInP,KAAKo3B,OAAOviB,MAAM5O,GACjCwxH,EAAM1xH,KAAKoJ,IAAInP,KAAKo3B,OAAOviB,MAAMpI,EAEjC+qH,KAAQx3H,KAAKq3H,KAAOI,IAAQz3H,KAAKs3H,MAEjCt3H,KAAK+P,MAAQ/P,KAAKq8E,YAAcm7C,EAChCx3H,KAAKgQ,OAAShQ,KAAKs8E,aAAem7C,EAClCz3H,KAAKq3H,IAAMG,EACXx3H,KAAKs3H,IAAMG,EACXz3H,KAAK+vD,QAAS,GAIlB/vD,KAAK+vD,SAEL/vD,KAAKoP,UAAYrJ,KAAKI,MAAMnG,KAAK+P,MAAQ,GACzC/P,KAAKuP,WAAaxJ,KAAKI,MAAMnG,KAAKgQ,OAAS,GAC3ChQ,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,cAWnFyN,UAAW,WAEFhd,KAAKgwB,SAAUhwB,KAAKwa,KAAK6F,QAAQguG,OAAOz2B,WAK7C53F,KAAKynB,OAAQ,EAGbznB,KAAKu2H,YAAYzC,KAAO9zH,KAAK6zH,SAASC,KACtC9zH,KAAKu2H,YAAYn2E,GAAKpgD,KAAK6zH,SAASzzE,GACpCpgD,KAAKu2H,YAAYvrF,KAAOhrC,KAAK6zH,SAAS7oF,KACtChrC,KAAKu2H,YAAY1rH,KAAO7K,KAAK6zH,SAAShpH,KACtC7K,KAAKu2H,YAAY3rH,MAAQ5K,KAAK6zH,SAASjpH,MAEvC5K,KAAK6zH,SAASC,MAAO,EACrB9zH,KAAK6zH,SAASzzE,IAAK,EACnBpgD,KAAK6zH,SAAS7oF,MAAO,EACrBhrC,KAAK6zH,SAAShpH,MAAO,EACrB7K,KAAK6zH,SAASjpH,OAAQ,EAEtB5K,KAAKw2H,QAAQp2E,IAAK,EAClBpgD,KAAKw2H,QAAQxrF,MAAO,EACpBhrC,KAAKw2H,QAAQ3rH,MAAO,EACpB7K,KAAKw2H,QAAQ5rH,OAAQ,EAErB5K,KAAK4zH,UAAW,EAEhB5zH,KAAKu3H,eAELv3H,KAAKuZ,SAAStT,EAAKjG,KAAKo3B,OAAO3c,MAAMxU,EAAKjG,KAAKo3B,OAAO/N,OAAOpjB,EAAIjG,KAAKo3B,OAAOrnB,MAAU/P,KAAKo3B,OAAOviB,MAAM5O,EAAIjG,KAAKoO,OAAOnI,EACzHjG,KAAKuZ,SAAStT,GAAKjG,KAAKo3B,OAAOviB,MAAM5O,EAAI,EAAIjG,KAAK+P,MAAQ,EAE1D/P,KAAKuZ,SAAS9M,EAAKzM,KAAKo3B,OAAO3c,MAAMhO,EAAKzM,KAAKo3B,OAAO/N,OAAO5c,EAAIzM,KAAKo3B,OAAOpnB,OAAWhQ,KAAKo3B,OAAOviB,MAAMpI,EAAIzM,KAAKoO,OAAO3B,EAC1HzM,KAAKuZ,SAAS9M,GAAKzM,KAAKo3B,OAAOviB,MAAMpI,EAAI,EAAIzM,KAAKgQ,OAAS,EAE3DhQ,KAAK62B,SAAW72B,KAAKo3B,OAAOlpB,MAE5BlO,KAAK81H,YAAc91H,KAAK62B,UAEpB72B,KAAK+vD,QAAU/vD,KAAKo3B,OAAOsxB,SAE3B1oD,KAAK+4D,KAAK9yD,EAAIjG,KAAKuZ,SAAStT,EAC5BjG,KAAK+4D,KAAKtsD,EAAIzM,KAAKuZ,SAAS9M,GAG5BzM,KAAKk0H,QAELl0H,KAAKwa,KAAK6F,QAAQguG,OAAOuB,aAAa5vH,MAEtCA,KAAK+1H,YAAY9pH,IAAIjM,KAAKmwH,SAASlqH,EAAIjG,KAAKwa,KAAKmE,KAAKqiE,eAAgBhhF,KAAKmwH,SAAS1jH,EAAIzM,KAAKwa,KAAKmE,KAAKqiE,gBAEvGhhF,KAAKuZ,SAAStT,GAAKjG,KAAK+1H,YAAY9vH,EACpCjG,KAAKuZ,SAAS9M,GAAKzM,KAAK+1H,YAAYtpH,EAEhCzM,KAAKuZ,SAAStT,IAAMjG,KAAK+4D,KAAK9yD,GAAKjG,KAAKuZ,SAAS9M,IAAMzM,KAAK+4D,KAAKtsD,IAEjEzM,KAAKkO,MAAQnI,KAAK+M,MAAM9S,KAAKmwH,SAAS1jH,EAAGzM,KAAKmwH,SAASlqH,IAG3DjG,KAAKu9B,MAAQx3B,KAAKmK,KAAKlQ,KAAKmwH,SAASlqH,EAAIjG,KAAKmwH,SAASlqH,EAAIjG,KAAKmwH,SAAS1jH,EAAIzM,KAAKmwH,SAAS1jH,GAKvFzM,KAAKq2H,oBAEDr2H,KAAK0nD,oBAAsB1nD,KAAKk2H,eAEhCl2H,KAAKk2H,cAAcr3G,SAAS7e,KAAKo3B,OAAQp3B,KAAKw2H,QAAQp2E,GAAIpgD,KAAKw2H,QAAQxrF,KAAMhrC,KAAKw2H,QAAQ3rH,KAAM7K,KAAKw2H,QAAQ5rH,QAKzH5K,KAAKizC,IAAMjzC,KAAK2mC,SAChB3mC,KAAKkzC,IAAMlzC,KAAKylC,SAEhBzlC,KAAK+vD,QAAS,IAUlB2nE,eAAgB,WAEZ,GAAI9nC,GAAU,EACV+nC,EAA8B,IAAlB33H,KAAK+zH,UAAoC,IAAlB/zH,KAAKi0H,QAiB5C,IAbIj0H,KAAK+2H,aAAe,GAEpB/2H,KAAK62H,WAAa72H,KAAKwa,KAAKmE,KAAKC,UAEjCgxE,EAAU5vF,KAAK62H,UAAY72H,KAAK+2H,eAIhC/2H,KAAKg3H,WAAWrmH,IAAI1E,IAAIjM,KAAKuZ,SAAStT,EAAGjG,KAAKuZ,SAAS9M,GAEvDmjF,EAAU5vF,KAAKg3H,WAAWnvH,OAAS7H,KAAK82H,cAGxC92H,KAAKm3H,iBAEL,GAAI7lH,GAAStR,KAAKm3H,iBAAiBrwH,KAAK9G,KAAKo3H,wBAAyBp3H,KAAMA,KAAKmwH,SAAUvgC,EAG/F,SAAI+nC,GAAY/nC,GAAW,GAAiBlmF,SAAX4H,GAAwBA,KAAW,KAEhEtR,KAAK43H,aAAchoC,GAAW,GAAO5vF,KAAK42H,uBAAyBe,IAC5D,IAiBfC,aAAc,SAAUC,GAEhB73H,KAAK22H,WAEL32H,KAAK22H,UAAW,EAEZkB,GAEA73H,KAAKmwH,SAASlkH,IAAI,GAKtBjM,KAAKk3H,eAAer4G,SAAS7e,KAAKo3B,OAA2B,IAAlBp3B,KAAK+zH,UAAoC,IAAlB/zH,KAAKi0H,YAW/E7pG,WAAY,WAGHpqB,KAAKgwB,QAAWhwB,KAAKynB,QAMtBznB,KAAK22H,UAEL32H,KAAK03H,iBAGT13H,KAAKynB,OAAQ,EAETznB,KAAK2mC,SAAW,EAEhB3mC,KAAKm2H,OAAS91H,EAAOQ,KAEhBb,KAAK2mC,SAAW,IAErB3mC,KAAKm2H,OAAS91H,EAAOS,OAGrBd,KAAKylC,SAAW,EAEhBzlC,KAAKm2H,OAAS91H,EAAOU,GAEhBf,KAAKylC,SAAW,IAErBzlC,KAAKm2H,OAAS91H,EAAOW,MAGrBhB,KAAKk0H,QAELl0H,KAAKizC,IAAMjzC,KAAK2mC,SAChB3mC,KAAKkzC,IAAMlzC,KAAKylC,SAEQ,IAApBzlC,KAAKg2H,SAAS/vH,GAAwB,IAAbjG,KAAKizC,MAE1BjzC,KAAKizC,IAAM,GAAKjzC,KAAKizC,KAAOjzC,KAAKg2H,SAAS/vH,EAE1CjG,KAAKizC,KAAOjzC,KAAKg2H,SAAS/vH,EAErBjG,KAAKizC,IAAM,GAAKjzC,KAAKizC,IAAMjzC,KAAKg2H,SAAS/vH,IAE9CjG,KAAKizC,IAAMjzC,KAAKg2H,SAAS/vH,IAIT,IAApBjG,KAAKg2H,SAASvpH,GAAwB,IAAbzM,KAAKkzC,MAE1BlzC,KAAKkzC,IAAM,GAAKlzC,KAAKkzC,KAAOlzC,KAAKg2H,SAASvpH,EAE1CzM,KAAKkzC,KAAOlzC,KAAKg2H,SAASvpH,EAErBzM,KAAKkzC,IAAM,GAAKlzC,KAAKkzC,IAAMlzC,KAAKg2H,SAASvpH,IAE9CzM,KAAKkzC,IAAMlzC,KAAKg2H,SAASvpH,IAIjCzM,KAAKo3B,OAAO7d,SAAStT,GAAKjG,KAAKizC,IAC/BjzC,KAAKo3B,OAAO7d,SAAS9M,GAAKzM,KAAKkzC,IAC/BlzC,KAAK+vD,QAAS,GAGlB/vD,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,YAEvEvP,KAAK61H,gBAEL71H,KAAKo3B,OAAOlpB,OAASlO,KAAK6mC,UAG9B7mC,KAAK+4D,KAAK9yD,EAAIjG,KAAKuZ,SAAStT,EAC5BjG,KAAK+4D,KAAKtsD,EAAIzM,KAAKuZ,SAAS9M,IAWhCi7C,iBAAkB,WAEd,GAAIlzC,GAAMxU,KAAKuZ,SACXoB,EAAS3a,KAAKwa,KAAK6F,QAAQguG,OAAO1zG,OAClCm9G,EAAQ93H,KAAKwa,KAAK6F,QAAQguG,OAAOY,eAEjCrmD,EAAM5oE,KAAgB,aAAKA,KAAKi2H,YAAYhwH,GAAKjG,KAAKyzH,OAAOxtH,EAC7D4iE,EAAM7oE,KAAgB,aAAKA,KAAKi2H,YAAYxpH,GAAKzM,KAAKyzH,OAAOhnH,CAEjE,IAAIzM,KAAKoyH,SACT,CACI,GAAI2F,IACA9xH,EAAGjG,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OACxBZ,EAAGzM,KAAKgR,OAAOvE,EAAIzM,KAAKqN,OACxBzC,MAAO5K,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OAC5BsB,OAAQ3O,KAAKgR,OAAOvE,EAAIzM,KAAKqN,OAG7B0qH,GAAW9xH,EAAI0U,EAAO1U,GAAK6xH,EAAMjtH,MAEjC2J,EAAIvO,EAAI0U,EAAO1U,EAAIjG,KAAKoP,UAAYpP,KAAKqN,OACzCrN,KAAKmwH,SAASlqH,GAAK2iE,EACnB5oE,KAAKw2H,QAAQ3rH,MAAO,GAEfktH,EAAWntH,MAAQ+P,EAAO/P,OAASktH,EAAMltH,QAE9C4J,EAAIvO,EAAI0U,EAAO/P,MAAQ5K,KAAKoP,UAAYpP,KAAKqN,OAC7CrN,KAAKmwH,SAASlqH,GAAK2iE,EACnB5oE,KAAKw2H,QAAQ5rH,OAAQ,GAGrBmtH,EAAWtrH,EAAIkO,EAAOlO,GAAKqrH,EAAM13E,IAEjC5rC,EAAI/H,EAAIkO,EAAOlO,EAAIzM,KAAKuP,WAAavP,KAAKqN,OAC1CrN,KAAKmwH,SAAS1jH,GAAKo8D,EACnB7oE,KAAKw2H,QAAQp2E,IAAK,GAEb23E,EAAWppH,OAASgM,EAAOhM,QAAUmpH,EAAM9sF,OAEhDx2B,EAAI/H,EAAIkO,EAAOhM,OAAU3O,KAAKuP,WAAavP,KAAKqN,OAChDrN,KAAKmwH,SAAS1jH,GAAKo8D,EACnB7oE,KAAKw2H,QAAQxrF,MAAO,OAKpBx2B,GAAIvO,EAAI0U,EAAO1U,GAAK6xH,EAAMjtH,MAE1B2J,EAAIvO,EAAI0U,EAAO1U,EACfjG,KAAKmwH,SAASlqH,GAAK2iE,EACnB5oE,KAAKw2H,QAAQ3rH,MAAO,GAEf7K,KAAK4K,MAAQ+P,EAAO/P,OAASktH,EAAMltH,QAExC4J,EAAIvO,EAAI0U,EAAO/P,MAAQ5K,KAAK+P,MAC5B/P,KAAKmwH,SAASlqH,GAAK2iE,EACnB5oE,KAAKw2H,QAAQ5rH,OAAQ,GAGrB4J,EAAI/H,EAAIkO,EAAOlO,GAAKqrH,EAAM13E,IAE1B5rC,EAAI/H,EAAIkO,EAAOlO,EACfzM,KAAKmwH,SAAS1jH,GAAKo8D,EACnB7oE,KAAKw2H,QAAQp2E,IAAK,GAEbpgD,KAAK2O,OAASgM,EAAOhM,QAAUmpH,EAAM9sF,OAE1Cx2B,EAAI/H,EAAIkO,EAAOhM,OAAS3O,KAAKgQ,OAC7BhQ,KAAKmwH,SAAS1jH,GAAKo8D,EACnB7oE,KAAKw2H,QAAQxrF,MAAO,EAI5B,OAAQhrC,MAAKw2H,QAAQp2E,IAAMpgD,KAAKw2H,QAAQxrF,MAAQhrC,KAAKw2H,QAAQ3rH,MAAQ7K,KAAKw2H,QAAQ5rH,OAkCtFotH,SAAU,SAAUn8G,EAAU0hB,EAAOzf,GAIjC,GAFcpU,SAAV6zB,IAAuBA,EAAQv9B,KAAKu9B,OAE1B,IAAVA,EAEA,OAAO,CAGX,IAAIrvB,EA+BJ,OA7BkBxE,UAAdoU,GAEA5P,EAAQlO,KAAKkO,MACb4P,EAAY9d,KAAKwa,KAAK0E,KAAKxJ,SAASxH,IAIpCA,EAAQlO,KAAKwa,KAAK0E,KAAKnQ,SAAS+O,GAGpC9d,KAAK62H,UAAY,EACjB72H,KAAK+2H,aAAel7G,EAGF,IAAdiC,GAAiC,MAAdA,EAEnB9d,KAAKmwH,SAASlkH,IAAIlG,KAAKoH,IAAIe,GAASqvB,EAAO,GAExB,KAAdzf,GAAkC,MAAdA,EAEzB9d,KAAKmwH,SAASlkH,IAAI,EAAGlG,KAAKqH,IAAIc,GAASqvB,GAIvCv9B,KAAKmwH,SAASlkH,IAAIlG,KAAKoH,IAAIe,GAASqvB,EAAOx3B,KAAKqH,IAAIc,GAASqvB,GAGjEv9B,KAAK22H,UAAW,GAET,GAiCXp4D,OAAQ,SAAU1iD,EAAUhO,EAAUiQ,GAElC,GAAIyf,GAAQ1vB,GAAYgO,EAAW,IAEnC,IAAc,IAAV0hB,EAEA,OAAO,CAGX,IAAIrvB,EA6CJ,OA3CkBxE,UAAdoU,GAEA5P,EAAQlO,KAAKkO,MACb4P,EAAY9d,KAAKwa,KAAK0E,KAAKxJ,SAASxH,IAIpCA,EAAQlO,KAAKwa,KAAK0E,KAAKnQ,SAAS+O,GAGpCjQ,EAAW9H,KAAKoJ,IAAItB,GAEpB7N,KAAK+2H,aAAe,EACpB/2H,KAAK82H,aAAejpH,EAEI,OAApB7N,KAAKg3H,aAELh3H,KAAKg3H,WAAa,GAAI32H,GAAOgQ,KAC7BrQ,KAAKi3H,QAAU,GAAI52H,GAAO2M,OAG9BhN,KAAKg3H,WAAW/lH,UAAUjR,KAAKiG,EAAGjG,KAAKyM,EAAGyB,EAAOL,GAEjD7N,KAAKi3H,QAAQhrH,IAAIjM,KAAKg3H,WAAWrmH,IAAI1K,EAAGjG,KAAKg3H,WAAWrmH,IAAIlE,GAE5DzM,KAAKg3H,WAAWxpH,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAKiG,EAAGjG,KAAKyM,GAGjC,IAAdqR,GAAiC,MAAdA,EAEnB9d,KAAKmwH,SAASlkH,IAAIlG,KAAKoH,IAAIe,GAASqvB,EAAO,GAExB,KAAdzf,GAAkC,MAAdA,EAEzB9d,KAAKmwH,SAASlkH,IAAI,EAAGlG,KAAKqH,IAAIc,GAASqvB,GAIvCv9B,KAAKmwH,SAASlkH,IAAIlG,KAAKoH,IAAIe,GAASqvB,EAAOx3B,KAAKqH,IAAIc,GAASqvB,GAGjEv9B,KAAK22H,UAAW,GAET,GA4BXl3G,QAAS,SAAU1P,EAAOC,EAAQ6lC,EAASC,GAEvBpsC,SAAZmsC,IAAyBA,EAAU71C,KAAKoO,OAAOnI,GACnCyD,SAAZosC,IAAyBA,EAAU91C,KAAKoO,OAAO3B,GAEnDzM,KAAKq8E,YAActsE,EACnB/P,KAAKs8E,aAAetsE,EACpBhQ,KAAK+P,MAAQ/P,KAAKq8E,YAAcr8E,KAAKq3H,IACrCr3H,KAAKgQ,OAAShQ,KAAKs8E,aAAet8E,KAAKs3H,IACvCt3H,KAAKoP,UAAYrJ,KAAKI,MAAMnG,KAAK+P,MAAQ,GACzC/P,KAAKuP,WAAaxJ,KAAKI,MAAMnG,KAAKgQ,OAAS,GAC3ChQ,KAAKoO,OAAOZ,MAAMqoC,EAASC,GAE3B91C,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,YAE3EvP,KAAKoyH,UAAW,EAChBpyH,KAAKqN,OAAS,GAoBlB4qH,UAAW,SAAU5qH,EAAQwoC,EAASC,GAElBpsC,SAAZmsC,IAAyBA,EAAU71C,KAAKoO,OAAOnI,GACnCyD,SAAZosC,IAAyBA,EAAU91C,KAAKoO,OAAO3B,GAE/CY,EAAS,GAETrN,KAAKoyH,UAAW,EAChBpyH,KAAKqN,OAASA,EAEdrN,KAAKq8E,YAAuB,EAAThvE,EACnBrN,KAAKs8E,aAAwB,EAATjvE,EAEpBrN,KAAK+P,MAAQ/P,KAAKq8E,YAAcr8E,KAAKq3H,IACrCr3H,KAAKgQ,OAAShQ,KAAKs8E,aAAet8E,KAAKs3H,IAEvCt3H,KAAKoP,UAAYrJ,KAAKI,MAAMnG,KAAK+P,MAAQ,GACzC/P,KAAKuP,WAAaxJ,KAAKI,MAAMnG,KAAKgQ,OAAS,GAE3ChQ,KAAKoO,OAAOZ,MAAMqoC,EAASC,GAE3B91C,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,aAI3EvP,KAAKoyH,UAAW,GAYxB1yG,MAAO,SAAUzZ,EAAGwG,GAEhBzM,KAAKmwH,SAASlkH,IAAI,GAClBjM,KAAKowH,aAAankH,IAAI,GAEtBjM,KAAKu9B,MAAQ,EACbv9B,KAAK+vH,gBAAkB,EACvB/vH,KAAKgwH,oBAAsB,EAE3BhwH,KAAKuZ,SAAStT,EAAKA,EAAKjG,KAAKo3B,OAAO/N,OAAOpjB,EAAIjG,KAAKo3B,OAAOrnB,MAAU/P,KAAKo3B,OAAOviB,MAAM5O,EAAIjG,KAAKoO,OAAOnI,EACvGjG,KAAKuZ,SAAStT,GAAKjG,KAAKo3B,OAAOviB,MAAM5O,EAAI,EAAIjG,KAAK+P,MAAQ,EAE1D/P,KAAKuZ,SAAS9M,EAAKA,EAAKzM,KAAKo3B,OAAO/N,OAAO5c,EAAIzM,KAAKo3B,OAAOpnB,OAAWhQ,KAAKo3B,OAAOviB,MAAMpI,EAAIzM,KAAKoO,OAAO3B,EACxGzM,KAAKuZ,SAAS9M,GAAKzM,KAAKo3B,OAAOviB,MAAMpI,EAAI,EAAIzM,KAAKgQ,OAAS,EAE3DhQ,KAAK+4D,KAAK9yD,EAAIjG,KAAKuZ,SAAStT,EAC5BjG,KAAK+4D,KAAKtsD,EAAIzM,KAAKuZ,SAAS9M,EAE5BzM,KAAK62B,SAAW72B,KAAKo3B,OAAOlpB,MAC5BlO,KAAK81H,YAAc91H,KAAK62B,SAExB72B,KAAKq3H,IAAMr3H,KAAKo3B,OAAOviB,MAAM5O,EAC7BjG,KAAKs3H,IAAMt3H,KAAKo3B,OAAOviB,MAAMpI,EAE7BzM,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,aAa/EjC,UAAW,SAAUvE,GAiBjB,MAfI/I,MAAKoyH,UAELrpH,EAAI9C,EAAIjG,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OAC7BtE,EAAI0D,EAAIzM,KAAKgR,OAAOvE,EAAIzM,KAAKqN,OAC7BtE,EAAI6B,MAAQ5K,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OACjCtE,EAAI4F,OAAS3O,KAAKgR,OAAOvE,EAAIzM,KAAKqN,SAIlCtE,EAAI9C,EAAIjG,KAAKiG,EACb8C,EAAI0D,EAAIzM,KAAKyM,EACb1D,EAAI6B,MAAQ5K,KAAK4K,MACjB7B,EAAI4F,OAAS3O,KAAK2O,QAGf5F,GAYXo5B,QAAS,SAAUl8B,EAAGwG,GAElB,MAAQzM,MAAa,SAAIK,EAAOmM,OAAOwB,SAAShO,KAAMiG,EAAGwG,GAAKpM,EAAOkN,UAAUS,SAAShO,KAAMiG,EAAGwG,IAUrGyrH,QAAS,WAEL,MAAOl4H,MAAKw2H,QAAQxrF,MAUxBmtF,UAAW,WAEP,MAAOn4H,MAAKw2H,QAAQp2E,IAUxBg4E,OAAQ,WAEJ,MAAQp4H,MAAKw2H,QAAQ3rH,MAAQ7K,KAAKw2H,QAAQ5rH,OAU9C+oH,UAAW,WAEP,MAAQ3zH,MAAK2mC,SAAW,EAAI3mC,KAAK2mC,UAAY3mC,KAAK2mC,UAUtDqtF,UAAW,WAEP,MAAQh0H,MAAKylC,SAAW,EAAIzlC,KAAKylC,UAAYzlC,KAAKylC,UAUtDkB,OAAQ,WAEJ,MAAO3mC,MAAKuZ,SAAStT,EAAIjG,KAAK+4D,KAAK9yD,GAUvCw/B,OAAQ,WAEJ,MAAOzlC,MAAKuZ,SAAS9M,EAAIzM,KAAK+4D,KAAKtsD,GAUvCo6B,OAAQ,WAEJ,MAAO7mC,MAAK62B,SAAW72B,KAAK81H,aAYhChyG,QAAS,WAED9jB,KAAKo3B,OAAO5N,QAAUxpB,KAAKo3B,OAAO5N,iBAAkBnpB,GAAOmtB,OAE3DxtB,KAAKo3B,OAAO5N,OAAOqG,eAAe7vB,KAAKo3B,QAG3Cp3B,KAAKo3B,OAAOxH,KAAO,KACnB5vB,KAAKo3B,OAAS,OAUtB7vB,OAAO2E,eAAe7L,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,UAAW,QAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,KAW7BsB,OAAO2E,eAAe7L,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,UAAW,SAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,EAAIjG,KAAK+P,SAUtCxI,OAAO2E,eAAe7L,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,UAAW,OAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,KAW7BlF,OAAO2E,eAAe7L,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,UAAW,UAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,EAAIzM,KAAKgQ,UAUtCzI,OAAO2E,eAAe7L,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,UAAW,KAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,GAIzBgG,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAStT,EAAIsD,KAS1BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,UAAW,KAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,GAIzBR,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAS9M,EAAIlD,KAe1BlJ,EAAOutB,QAAQ2kC,OAAO2xD,KAAKtjG,OAAS,SAAUyD,EAASuL,EAAM5R,EAAOslG,GAEjD55G,SAAX45G,IAAwBA,GAAS,GAErCtlG,EAAQA,GAAS,oBAEjBqG,EAAQo1C,UAAYz7C,EACpBqG,EAAQq6C,YAAc1gD,EAElB4R,EAAKwiG,UAEL/tG,EAAQ+5C,YACR/5C,EAAQg6C,IAAIzuC,EAAK5e,OAAO/K,EAAI2pB,EAAKpV,KAAKoC,OAAO3W,EAAG2pB,EAAK5e,OAAOvE,EAAImjB,EAAKpV,KAAKoC,OAAOnQ,EAAGmjB,EAAKviB,OAAQ,EAAG,EAAItH,KAAK+G,IAEzGw2G,EAEAj/F,EAAQse,OAIRte,EAAQs6C,UAKR2kD,EAEAj/F,EAAQq1C,SAAS9pC,EAAKrW,SAAStT,EAAI2pB,EAAKpV,KAAKoC,OAAO3W,EAAG2pB,EAAKrW,SAAS9M,EAAImjB,EAAKpV,KAAKoC,OAAOnQ,EAAGmjB,EAAK7f,MAAO6f,EAAK5f,QAI9GqU,EAAQovD,WAAW7jD,EAAKrW,SAAStT,EAAI2pB,EAAKpV,KAAKoC,OAAO3W,EAAG2pB,EAAKrW,SAAS9M,EAAImjB,EAAKpV,KAAKoC,OAAOnQ,EAAGmjB,EAAK7f,MAAO6f,EAAK5f,SAe5H3P,EAAOutB,QAAQ2kC,OAAO2xD,KAAKO,eAAiB,SAAU5gG,EAAO+L,GAEzD/L,EAAMzS,KAAK,MAAQwe,EAAK3pB,EAAE8iB,QAAQ,GAAI,MAAQ6G,EAAKnjB,EAAEsc,QAAQ,GAAI,UAAY6G,EAAK7f,MAAO,WAAa6f,EAAK5f,QAC3G6T,EAAMzS,KAAK,eAAiBwe,EAAKugG,SAASlqH,EAAE8iB,QAAQ,GAAI,MAAQ6G,EAAKugG,SAAS1jH,EAAEsc,QAAQ,GAAI,WAAa6G,EAAKqjB,IAAIlqB,QAAQ,GAAI,WAAa6G,EAAKsjB,IAAInqB,QAAQ,IAC5JlF,EAAMzS,KAAK,mBAAqBwe,EAAKwgG,aAAanqH,EAAE8iB,QAAQ,GAAI,MAAQ6G,EAAKwgG,aAAa3jH,EAAEsc,QAAQ,GAAI,UAAY6G,EAAK2N,MAAMxU,QAAQ,GAAI,UAAY6G,EAAK1hB,MAAM6a,QAAQ,IAC1KlF,EAAMzS,KAAK,cAAgBwe,EAAKo/F,QAAQ/oH,EAAG,MAAQ2pB,EAAKo/F,QAAQviH,EAAG,aAAemjB,EAAK6jG,OAAOxtH,EAAE8iB,QAAQ,GAAI,MAAQ6G,EAAK6jG,OAAOhnH,EAAEsc,QAAQ,IAC1IlF,EAAMzS,KAAK,kBAAoBwe,EAAKikG,SAAShpH,KAAM,UAAY+kB,EAAKikG,SAASjpH,MAAO,OAASglB,EAAKikG,SAASzzE,GAAI,SAAWxwB,EAAKikG,SAAS7oF,MACxInnB,EAAMzS,KAAK,iBAAmBwe,EAAK4mG,QAAQ3rH,KAAM,UAAY+kB,EAAK4mG,QAAQ5rH,MAAO,OAASglB,EAAK4mG,QAAQp2E,GAAI,SAAWxwB,EAAK4mG,QAAQxrF,OAIvI3qC,EAAOutB,QAAQ2kC,OAAO2xD,KAAK79G,UAAU8B,YAAc9H,EAAOutB,QAAQ2kC,OAAO2xD,KAczE7jH,EAAOutB,QAAQ2kC,OAAO8lE,iBAAmB,aAEzCh4H,EAAOutB,QAAQ2kC,OAAO8lE,iBAAiBhyH,WAKnCiyH,UAAW,GAcX/G,4BAA6B,SAAUn6F,EAAQmhG,EAAczH,EAAiBH,EAAiB5tG,EAAiBouG,GAE5G,GAAK/5F,EAAOxH,KAAZ,CAKA,GAAI20E,GAAUg0B,EAAaC,SACvBphG,EAAOxH,KAAKrW,SAAStT,EAAImxB,EAAOxH,KAAK6mG,YAAYxwH,EACjDmxB,EAAOxH,KAAKrW,SAAS9M,EAAI2qB,EAAOxH,KAAK6mG,YAAYhqH,EACjD2qB,EAAOxH,KAAK7f,MAAQqnB,EAAOxH,KAAK6mG,YAAYxwH,EAC5CmxB,EAAOxH,KAAK5f,OAASonB,EAAOxH,KAAK6mG,YAAYhqH,GAC7C,GAAO,EAEX,IAAuB,IAAnB83F,EAAQ18F,OAKZ,IAAK,GAAIC,GAAI,EAAGA,EAAIy8F,EAAQ18F,OAAQC,IAE5B6oH,EAEIA,EAAgB7pH,KAAKic,EAAiBqU,EAAQmtE,EAAQz8F,KAElD9H,KAAKy4H,aAAa3wH,EAAGsvB,EAAOxH,KAAM20E,EAAQz8F,GAAIywH,EAAcpH,KAE5DnxH,KAAKuvH,SAEDuB,GAEAA,EAAgBhqH,KAAKic,EAAiBqU,EAAQmtE,EAAQz8F,KAO9D9H,KAAKy4H,aAAa3wH,EAAGsvB,EAAOxH,KAAM20E,EAAQz8F,GAAIywH,EAAcpH,KAE5DnxH,KAAKuvH,SAEDuB,GAEAA,EAAgBhqH,KAAKic,EAAiBqU,EAAQmtE,EAAQz8F,OAoB1E2pH,2BAA4B,SAAUj7F,EAAO+hG,EAAczH,EAAiBH,EAAiB5tG,EAAiBouG,GAE1G,GAAqB,IAAjB36F,EAAM3uB,OAKV,IAAK,GAAIC,GAAI,EAAGA,EAAI0uB,EAAM7K,SAAS9jB,OAAQC,IAEnC0uB,EAAM7K,SAAS7jB,GAAG0iB,QAElBxqB,KAAKuxH,4BAA4B/6F,EAAM7K,SAAS7jB,GAAIywH,EAAczH,EAAiBH,EAAiB5tG,EAAiBouG,IAgBjIsH,aAAc,SAAU3wH,EAAG8nB,EAAM8oG,EAAMH,EAAcpH,GAEjD,IAAKvhG,EAAKI,OAEN,OAAO,CAGX,IAAI2oG,GAAwBJ,EAAaxpG,cAA2C,EAA1BwpG,EAAah/G,SAAStT,EAC5E2yH,EAAwBL,EAAaxpG,cAA2C,EAA1BwpG,EAAah/G,SAAS9M,CAGhF,KAAKisH,EAAK5pH,WAAY8gB,EAAKrW,SAAStT,EAAI0yH,EAAuB/oG,EAAKrW,SAAS9M,EAAImsH,EAAuBhpG,EAAKhlB,MAAQ+tH,EAAuB/oG,EAAKjhB,OAASiqH,GAGtJ,OAAO,CAEN,IAAIzH,EAGL,OAAO,CAMX,IAAIuH,EAAKG,oBAAsBH,EAAKG,kBAAkB/xH,KAAK4xH,EAAKI,yBAA0BlpG,EAAKwH,OAAQshG,GAGnG,OAAO,CAEN,IAAoC,mBAAzBA,GAAKvO,MAAM9yE,WAA6BqhF,EAAKvO,MAAM9yE,UAAUqhF,EAAK/oG,SAAW+oG,EAAKvO,MAAM9yE,UAAUqhF,EAAK/oG,OAAO2D,SAASxsB,KAAK4xH,EAAKvO,MAAM9yE,UAAUqhF,EAAK/oG,OAAO5M,gBAAiB6M,EAAKwH,OAAQshG,GAGvM,OAAO,CAIX,MAAKA,EAAKK,UAAaL,EAAKM,WAAcN,EAAKO,SAAYP,EAAKQ,YAG5D,OAAO,CAGX,IAAIvlD,GAAK,EACLC,EAAK,EACLtjB,EAAO,EACPC,EAAO,CAoBX,IAlBI3gC,EAAK+jG,YAAc/jG,EAAKokG,YAGxB1jE,GAAO,EAEF1gC,EAAK+jG,YAAc/jG,EAAKokG,cAG7BzjE,GAAO,GAGW,IAAlB3gC,EAAK+W,UAAoC,IAAlB/W,EAAK6V,WAAmBizF,EAAKK,UAAYL,EAAKM,aAAeN,EAAKO,SAAWP,EAAKQ,cAGzG5oE,EAAOvqD,KAAKkM,IAAIlM,KAAKoJ,IAAKygB,EAAKrW,SAAStT,EAAI0yH,EAAuBD,EAAK9tH,OAAQ7E,KAAKoJ,IAAKygB,EAAKhlB,MAAQ+tH,EAAuBD,EAAK7tH,OACnI0lD,EAAOxqD,KAAKkM,IAAIlM,KAAKoJ,IAAKygB,EAAKrW,SAAS9M,EAAImsH,EAAuBF,EAAK/pH,QAAS5I,KAAKoJ,IAAKygB,EAAKjhB,OAASiqH,EAAuBF,EAAKhqH,OAGrI4hD,EAAOC,EACX,CACI,IAAImoE,EAAKK,UAAYL,EAAKM,aAEtBrlD,EAAK3zE,KAAKm5H,WAAWvpG,EAAM8oG,EAAMH,GAGtB,IAAP5kD,IAAa+kD,EAAK5pH,WAAY8gB,EAAKrW,SAAStT,EAAI0yH,EAAuB/oG,EAAKrW,SAAS9M,EAAImsH,EAAuBhpG,EAAKhlB,MAAQ+tH,EAAuB/oG,EAAKjhB,OAASiqH,IAElK,OAAO,GAIXF,EAAKO,SAAWP,EAAKQ,cAErBtlD,EAAK5zE,KAAKo5H,WAAWxpG,EAAM8oG,EAAMH,QAIzC,CACI,IAAIG,EAAKO,SAAWP,EAAKQ,cAErBtlD,EAAK5zE,KAAKo5H,WAAWxpG,EAAM8oG,EAAMH,GAGtB,IAAP3kD,IAAa8kD,EAAK5pH,WAAY8gB,EAAKrW,SAAStT,EAAI0yH,EAAuB/oG,EAAKrW,SAAS9M,EAAImsH,EAAuBhpG,EAAKhlB,MAAQ+tH,EAAuB/oG,EAAKjhB,OAASiqH,IAElK,OAAO,GAIXF,EAAKK,UAAYL,EAAKM,aAEtBrlD,EAAK3zE,KAAKm5H,WAAWvpG,EAAM8oG,EAAMH,IAIzC,MAAe,KAAP5kD,GAAmB,IAAPC,GAcxBulD,WAAY,SAAUvpG,EAAM8oG,EAAMH,GAE9B,GAAI5kD,GAAK,EACLglD,EAAwBJ,EAAaxpG,cAA2C,EAA1BwpG,EAAah/G,SAAStT,CAyChF,OAvCI2pB,GAAK+W,SAAW,IAAM/W,EAAK4mG,QAAQ3rH,MAAQ6tH,EAAKW,cAAgBzpG,EAAKq/F,eAAepkH,KAGhF6tH,EAAKM,WAAcppG,EAAK3pB,EAAI0yH,EAAuBD,EAAK9tH,QAExD+oE,EAAM/jD,EAAK3pB,EAAI0yH,EAAuBD,EAAK9tH,MAEvC+oE,GAAM3zE,KAAKs4H,YAEX3kD,EAAK,IAIR/jD,EAAK+W,SAAW,IAAM/W,EAAK4mG,QAAQ5rH,OAAS8tH,EAAKY,aAAe1pG,EAAKq/F,eAAerkH,OAGrF8tH,EAAKK,UAAanpG,EAAKhlB,MAAQ+tH,EAAuBD,EAAK7tH,OAE3D8oE,EAAM/jD,EAAKhlB,MAAQ+tH,EAAuBD,EAAK7tH,KAE3C8oE,EAAK3zE,KAAKs4H,YAEV3kD,EAAK,IAKN,IAAPA,IAEI/jD,EAAKwjG,gBAELxjG,EAAKmkG,SAAWpgD,EAIhB3zE,KAAKu5H,uBAAuB3pG,EAAM+jD,IAInCA,GAcXylD,WAAY,SAAUxpG,EAAM8oG,EAAMH,GAE9B,GAAI3kD,GAAK,EACLglD,EAAwBL,EAAaxpG,cAA2C,EAA1BwpG,EAAah/G,SAAS9M,CAyChF,OAvCImjB,GAAK6V,SAAW,IAAM7V,EAAK4mG,QAAQp2E,IAAMs4E,EAAKc,aAAe5pG,EAAKq/F,eAAe7uE,GAG7Es4E,EAAKQ,YAAetpG,EAAKnjB,EAAImsH,EAAuBF,EAAK/pH,SAEzDilE,EAAMhkD,EAAKnjB,EAAImsH,EAAuBF,EAAK/pH,OAEvCilE,GAAM5zE,KAAKs4H,YAEX1kD,EAAK,IAIRhkD,EAAK6V,SAAW,IAAM7V,EAAK4mG,QAAQxrF,MAAQ0tF,EAAKe,WAAa7pG,EAAKq/F,eAAejkF,MAGlF0tF,EAAKO,SAAYrpG,EAAKjhB,OAASiqH,EAAuBF,EAAKhqH,MAE3DklE,EAAMhkD,EAAKjhB,OAASiqH,EAAuBF,EAAKhqH,IAE5CklE,EAAK5zE,KAAKs4H,YAEV1kD,EAAK,IAKN,IAAPA,IAEIhkD,EAAK2kG,gBAEL3kG,EAAKqkG,SAAWrgD,EAIhB5zE,KAAK05H,uBAAuB9pG,EAAMgkD,IAInCA,GAYX2lD,uBAAwB,SAAU3pG,EAAM3pB,GAEhCA,EAAI,EAEJ2pB,EAAK4mG,QAAQ3rH,MAAO,EAEf5E,EAAI,IAET2pB,EAAK4mG,QAAQ5rH,OAAQ,GAGzBglB,EAAKrW,SAAStT,GAAKA,EAEG,IAAlB2pB,EAAK6jG,OAAOxtH,EAEZ2pB,EAAKugG,SAASlqH,EAAI,EAIlB2pB,EAAKugG,SAASlqH,GAAK2pB,EAAKugG,SAASlqH,EAAI2pB,EAAK6jG,OAAOxtH,GAazDyzH,uBAAwB,SAAU9pG,EAAMnjB,GAEhCA,EAAI,EAEJmjB,EAAK4mG,QAAQp2E,IAAK,EAEb3zC,EAAI,IAETmjB,EAAK4mG,QAAQxrF,MAAO,GAGxBpb,EAAKrW,SAAS9M,GAAKA,EAEG,IAAlBmjB,EAAK6jG,OAAOhnH,EAEZmjB,EAAKugG,SAAS1jH,EAAI,EAIlBmjB,EAAKugG,SAAS1jH,GAAKmjB,EAAKugG,SAAS1jH,EAAImjB,EAAK6jG,OAAOhnH,IAQ7DpM,EAAOmI,MAAMkD,eAAerL,EAAOutB,QAAQ2kC,OAAOlsD,UAAWhG,EAAOutB,QAAQ2kC,OAAO8lE,iBAAiBhyH,WASpGkS,GAAG2rG,KAAK79G,UAAUmjB,OAAS,KAC3BjR,GAAGohH,OAAOtzH,UAAUmjB,OAAS,KAW7BnpB,EAAOutB,QAAQ+gG,GAAK,SAAUn0G,EAAMyQ,GAKhCjrB,KAAKwa,KAAOA,EAEG9Q,SAAXuhB,EAEAA,GAAW+jG,SAAU,EAAG,GAAI4K,WAAY,GAAIrhH,IAAGshH,gBAI1C5uG,EAAOjgB,eAAe,aAEvBigB,EAAO+jG,SAAW,EAAG,IAGpB/jG,EAAOjgB,eAAe,gBAEvBigB,EAAO2uG,WAAa,GAAIrhH,IAAGshH,gBAQnC75H,KAAKirB,OAASA,EAMdjrB,KAAKya,MAAQ,GAAIlC,IAAGue,MAAM92B,KAAKirB,QAM/BjrB,KAAKmnD,UAAY,EAAI,GAMrBnnD,KAAK85H,gBAAiB,EAMtB95H,KAAK6gB,QAAS,EAMd7gB,KAAK+5H,aAKL/5H,KAAKgvH,QAAU,GAAI3uH,GAAOutB,QAAQ+gG,GAAGqL,kBAAkBh6H,KAAMA,KAAKya,MAAMu0G,SAKxEhvH,KAAKi6H,OAAUpvH,KAAM,KAAMD,MAAO,KAAM8D,IAAK,KAAMC,OAAQ,MAS3D3O,KAAKk6H,YAAc,GAAI75H,GAAO+a,OAS9Bpb,KAAKm6H,cAAgB,GAAI95H,GAAO+a,OAShCpb,KAAKo6H,cAAgB,GAAI/5H,GAAO+a,OAShCpb,KAAKq6H,gBAAkB,GAAIh6H,GAAO+a,OASlCpb,KAAKs6H,kBAAoB,GAAIj6H,GAAO+a,OASpCpb,KAAKu6H,oBAAsB,GAAIl6H,GAAO+a,OAStCpb,KAAKw6H,uBAAyB,GAAIn6H,GAAO+a,OASzCpb,KAAKy6H,yBAA2B,GAAIp6H,GAAO+a,OAK3Cpb,KAAK06H,uBAAyB,KAK9B16H,KAAK+iB,gBAAkB,KAYvB/iB,KAAK26H,eAAiB,GAAIt6H,GAAO+a,OAYjCpb,KAAK46H,aAAe,GAAIv6H,GAAO+a,OAG3B6P,EAAOjgB,eAAe,QAAUigB,EAAOjgB,eAAe,QAAUigB,EAAOjgB,eAAe,SAAWigB,EAAOjgB,eAAe,UAEvHhL,KAAK66H,IAAM5vG,EAAO4vG,IAClB76H,KAAK86H,KAAO7vG,EAAO6vG,KACnB96H,KAAK+6H,IAAM9vG,EAAO8vG,IAClB/6H,KAAKg7H,KAAO/vG,EAAO+vG,MAIvBh7H,KAAKya,MAAMwgH,GAAG,eAAgBj7H,KAAKk7H,oBAAqBl7H,MACxDA,KAAKya,MAAMwgH,GAAG,aAAcj7H,KAAKm7H,kBAAmBn7H,MAKpDA,KAAKo7H,mBAKLp7H,KAAKq7H,sBAAwB,GAAIh7H,GAAOutB,QAAQ+gG,GAAG2M,eAAe,GAKlEt7H,KAAKu7H,qBAAuB,GAAIl7H,GAAOutB,QAAQ+gG,GAAG2M,eAAe,GAKjEt7H,KAAKw7H,yBAA2B,GAAIn7H,GAAOutB,QAAQ+gG,GAAG2M,eAAe,YAKrEt7H,KAAKy7H,sBAMLz7H,KAAK07H,aAML17H,KAAK27H,kBAAoB,EAMzB37H,KAAK47H,aAAc,EAMnB57H,KAAK67H,cAAe,EAMpB77H,KAAK87H,YAAa,EAMlB97H,KAAK+7H,eAAgB,EAMrB/7H,KAAKg8H,iBAAkB,EAGvBh8H,KAAKof,kBAAiB,GAAM,GAAM,GAAM,GAAM,IAIlD/e,EAAOutB,QAAQ+gG,GAAGtoH,WAQd41H,mBAAoB,SAAUrsG,GAE1B5vB,KAAK07H,UAAU9oH,KAAKgd,IASxB5S,UAAW,WAIP,IAFA,GAAIlV,GAAI9H,KAAK07H,UAAU7zH,OAEhBC,KAEH9H,KAAKk8H,WAAWl8H,KAAK07H,UAAU5zH,GAGnC9H,MAAK07H,UAAU7zH,OAAS,GAc5BmoB,OAAQ,SAAUuF,EAAQ1R,EAAO8H,GAEfjiB,SAAVma,IAAuBA,GAAQ,GAClBna,SAAbiiB,IAA0BA,GAAW,EAEzC,IAAI7jB,GAAI,CAER,IAAItB,MAAMa,QAAQkuB,GAId,IAFAztB,EAAIytB,EAAO1tB,OAEJC,KAECytB,EAAOztB,YAAczH,GAAOmtB,MAG5BxtB,KAAKgwB,OAAOuF,EAAOztB,GAAG6jB,SAAU9H,EAAO8H,IAIvC3rB,KAAK0tB,WAAW6H,EAAOztB,GAAI+b,GAEvB8H,GAAY4J,EAAOztB,GAAGkD,eAAe,aAAeuqB,EAAOztB,GAAG6jB,SAAS9jB,OAAS,GAEhF7H,KAAKgwB,OAAOuF,EAAOztB,GAAI+b,GAAO,QAOtC0R,aAAkBl1B,GAAOmtB,MAGzBxtB,KAAKgwB,OAAOuF,EAAO5J,SAAU9H,EAAO8H,IAIpC3rB,KAAK0tB,WAAW6H,EAAQ1R,GAEpB8H,GAAY4J,EAAOvqB,eAAe,aAAeuqB,EAAO5J,SAAS9jB,OAAS,GAE1E7H,KAAKgwB,OAAOuF,EAAO5J,SAAU9H,GAAO,KAepD6J,WAAY,SAAU6H,EAAQ1R,GAEtB0R,EAAOvqB,eAAe,SAA2B,OAAhBuqB,EAAO3F,OAExC2F,EAAO3F,KAAO,GAAIvvB,GAAOutB,QAAQ+gG,GAAGzK,KAAKlkH,KAAKwa,KAAM+a,EAAQA,EAAOtvB,EAAGsvB,EAAO9oB,EAAG,GAChF8oB,EAAO3F,KAAK/L,MAAQA,EACA,mBAAlB0R,GAAOlM,QACjBkM,EAAOlM,OAAOpd,IAAI,MAalBkwH,gBAAiB,SAAUj8G,GAEnBA,EAEAlgB,KAAKya,MAAMwgH,GAAG,SAAUj7H,KAAKo8H,cAAep8H,MAI5CA,KAAKya,MAAM4hH,IAAI,SAAUr8H,KAAKo8H,cAAep8H,OAerDs8H,0BAA2B,SAAUhpG,EAAUjP,GAE3CrkB,KAAK06H,uBAAyBpnG,EAC9BtzB,KAAK+iB,gBAAkBsB,EAEN,OAAbiP,EAEAtzB,KAAKya,MAAMwgH,GAAG,iBAAkBj7H,KAAKu8H,sBAAuBv8H,MAI5DA,KAAKya,MAAM4hH,IAAI,iBAAkBr8H,KAAKu8H,sBAAuBv8H,OAYrEu8H,sBAAuB,SAAUpwG,GAE7B,GAAKnsB,KAAK06H,wBAAiD,IAAvBvuG,EAAMqwG,MAAM30H,OAKhD,IAAK,GAAIC,GAAIqkB,EAAMqwG,MAAM30H,OAAS,EAAGC,GAAK,EAAGA,GAAK,EAE1CqkB,EAAMqwG,MAAM10H,GAAG0hB,QAAU2C,EAAMqwG,MAAM10H,EAAE,GAAG0hB,SAAWxpB,KAAK06H,uBAAuB5zH,KAAK9G,KAAK+iB,gBAAiBoJ,EAAMqwG,MAAM10H,GAAG0hB,OAAQ2C,EAAMqwG,MAAM10H,EAAE,GAAG0hB,SAEpJ2C,EAAMqwG,MAAMr5G,OAAOrb,EAAG,IAalCs0H,cAAe,SAAUjwG,GAErB,GAAIA,EAAMswG,MAAMjzG,QAAU2C,EAAMuwG,MAAMlzG,OACtC,CAEI,GAAI/a,GAAI0d,EAAMswG,MAAMjzG,OAChB3a,EAAIsd,EAAMuwG,MAAMlzG,MAEhB/a,GAAEkuH,eAAexwG,EAAMuwG,MAAM/nH,KAE7BlG,EAAEkuH,eAAexwG,EAAMuwG,MAAM/nH,IAAI7N,KAAK2H,EAAEmuH,qBAAqBzwG,EAAMuwG,MAAM/nH,IAAKlG,EAAGI,EAAGsd,EAAM0wG,OAAQ1wG,EAAM2wG,QAGxGjuH,EAAE8tH,eAAexwG,EAAMswG,MAAM9nH,KAE7B9F,EAAE8tH,eAAexwG,EAAMswG,MAAM9nH,IAAI7N,KAAK+H,EAAE+tH,qBAAqBzwG,EAAMswG,MAAM9nH,IAAK9F,EAAGJ,EAAG0d,EAAM2wG,OAAQ3wG,EAAM0wG,QAIxGpuH,EAAEsuH,gBAAgB5wG,EAAM2wG,OAAOE,iBAE/BvuH,EAAEsuH,gBAAgB5wG,EAAM2wG,OAAOE,gBAAgBl2H,KAAK2H,EAAEwuH,sBAAsB9wG,EAAM2wG,OAAOE,gBAAiBvuH,EAAGI,EAAGsd,EAAM0wG,OAAQ1wG,EAAM2wG,QAGpIjuH,EAAEkuH,gBAAgB5wG,EAAM0wG,OAAOG,iBAE/BnuH,EAAEkuH,gBAAgB5wG,EAAM0wG,OAAOG,gBAAgBl2H,KAAK+H,EAAEouH,sBAAsB9wG,EAAM0wG,OAAOG,gBAAiBnuH,EAAGJ,EAAG0d,EAAM2wG,OAAQ3wG,EAAM0wG,UAYhJ3B,oBAAqB,SAAU/uG,GAEvBA,EAAMswG,OAAStwG,EAAMuwG,QAErB18H,KAAK26H,eAAe97G,SAASsN,EAAMswG,MAAOtwG,EAAMuwG,MAAOvwG,EAAM0wG,OAAQ1wG,EAAM2wG,OAAQ3wG,EAAM+wG,kBAErF/wG,EAAMswG,MAAMjzG,QAEZ2C,EAAMswG,MAAMjzG,OAAOmxG,eAAe97G,SAASsN,EAAMuwG,MAAMlzG,OAAQ2C,EAAMuwG,MAAOvwG,EAAM0wG,OAAQ1wG,EAAM2wG,OAAQ3wG,EAAM+wG,kBAG9G/wG,EAAMuwG,MAAMlzG,QAEZ2C,EAAMuwG,MAAMlzG,OAAOmxG,eAAe97G,SAASsN,EAAMswG,MAAMjzG,OAAQ2C,EAAMswG,MAAOtwG,EAAM2wG,OAAQ3wG,EAAM0wG,OAAQ1wG,EAAM+wG,oBAY1H/B,kBAAmB,SAAUhvG,GAErBA,EAAMswG,OAAStwG,EAAMuwG,QAErB18H,KAAK46H,aAAa/7G,SAASsN,EAAMswG,MAAOtwG,EAAMuwG,MAAOvwG,EAAM0wG,OAAQ1wG,EAAM2wG,QAErE3wG,EAAMswG,MAAMjzG,QAEZ2C,EAAMswG,MAAMjzG,OAAOoxG,aAAa/7G,SAASsN,EAAMuwG,MAAMlzG,OAAQ2C,EAAMuwG,MAAOvwG,EAAM0wG,OAAQ1wG,EAAM2wG,QAG9F3wG,EAAMuwG,MAAMlzG,QAEZ2C,EAAMuwG,MAAMlzG,OAAOoxG,aAAa/7G,SAASsN,EAAMswG,MAAMjzG,OAAQ2C,EAAMswG,MAAOtwG,EAAM2wG,OAAQ3wG,EAAM0wG,UAiB1Gz9G,iBAAkB,SAAUvU,EAAMD,EAAO8D,EAAKC,EAAQwuH,GAElDn9H,KAAKm3B,UAAUn3B,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQnF,EAAMD,EAAO8D,EAAKC,EAAQwuH,IAc9JC,iBAAkB,SAAUC,EAAUxyH,EAAMD,EAAO8D,EAAKC,GAEvCjF,SAATmB,IAAsBA,GAAO,GACnBnB,SAAVkB,IAAuBA,GAAQ,GACvBlB,SAARgF,IAAqBA,GAAM,GAChBhF,SAAXiF,IAAwBA,GAAS,GAEjC9D,GAAQ7K,KAAKi6H,MAAMpvH,OAEnB7K,KAAKi6H,MAAMpvH,KAAKyyH,OAAO,GAAGD,SAAWA,GAGrCzyH,GAAS5K,KAAKi6H,MAAMrvH,QAEpB5K,KAAKi6H,MAAMrvH,MAAM0yH,OAAO,GAAGD,SAAWA,GAGtC3uH,GAAO1O,KAAKi6H,MAAMvrH,MAElB1O,KAAKi6H,MAAMvrH,IAAI4uH,OAAO,GAAGD,SAAWA,GAGpC1uH,GAAU3O,KAAKi6H,MAAMtrH,SAErB3O,KAAKi6H,MAAMtrH,OAAO2uH,OAAO,GAAGD,SAAWA,IAa/CE,2BAA4B,SAAUJ,GAERzzH,SAAtByzH,IAAmCA,GAAoB,EAE3D,IAAIlzE,GAAO,EAAsBjqD,KAAKu7H,qBAAqBtxE,KAAOjqD,KAAKw7H,yBAAyBvxE,IAE5FjqD,MAAKi6H,MAAMpvH,OAEX7K,KAAKi6H,MAAMpvH,KAAKyyH,OAAO,GAAGN,eAAiB/yE,GAG3CjqD,KAAKi6H,MAAMrvH,QAEX5K,KAAKi6H,MAAMrvH,MAAM0yH,OAAO,GAAGN,eAAiB/yE,GAG5CjqD,KAAKi6H,MAAMvrH,MAEX1O,KAAKi6H,MAAMvrH,IAAI4uH,OAAO,GAAGN,eAAiB/yE,GAG1CjqD,KAAKi6H,MAAMtrH,SAEX3O,KAAKi6H,MAAMtrH,OAAO2uH,OAAO,GAAGN,eAAiB/yE,GAGjDjqD,KAAKg8H,gBAAkBmB,GAuB3BhmG,UAAW,SAAUlxB,EAAGwG,EAAGsD,EAAOC,EAAQnF,EAAMD,EAAO8D,EAAKC,EAAQwuH,GAEnDzzH,SAATmB,IAAsBA,EAAO7K,KAAK47H,aACxBlyH,SAAVkB,IAAuBA,EAAQ5K,KAAK67H,cAC5BnyH,SAARgF,IAAqBA,EAAM1O,KAAK87H,YACrBpyH,SAAXiF,IAAwBA,EAAS3O,KAAK+7H,eAChBryH,SAAtByzH,IAAmCA,EAAoBn9H,KAAKg8H,iBAEhEh8H,KAAKw9H,UAAU3yH,EAAM,OAAQ5E,EAAGwG,EAAG,mBAAoB0wH,GACvDn9H,KAAKw9H,UAAU5yH,EAAO,QAAS3E,EAAI8J,EAAOtD,GAAG,mBAAqB0wH,GAClEn9H,KAAKw9H,UAAU9uH,EAAK,MAAOzI,EAAGwG,GAAG,kBAAoB0wH,GACrDn9H,KAAKw9H,UAAU7uH,EAAQ,SAAU1I,EAAGwG,EAAIuD,EAAQ,EAAGmtH,GAGnDn9H,KAAK47H,YAAc/wH,EACnB7K,KAAK67H,aAAejxH,EACpB5K,KAAK87H,WAAaptH,EAClB1O,KAAK+7H,cAAgBptH,EACrB3O,KAAKg8H,gBAAkBmB,GAiB3BK,UAAW,SAAU98G,EAAQ+8G,EAAMx3H,EAAGwG,EAAGyB,EAAOivH,GAExCz8G,GAGI1gB,KAAKi6H,MAAMwD,GAEXz9H,KAAKi6H,MAAMwD,GAAMlkH,UAAavZ,KAAKg7H,KAAK/0H,GAAIjG,KAAKg7H,KAAKvuH,KAItDzM,KAAKi6H,MAAMwD,GAAQ,GAAIllH,IAAG2rG,MAAOqP,KAAM,EAAGh6G,UAAYvZ,KAAKg7H,KAAK/0H,GAAIjG,KAAKg7H,KAAKvuH,IAAMyB,MAAOA,IAC3FlO,KAAKi6H,MAAMwD,GAAMC,SAAS,GAAInlH,IAAGolH,OAEjC39H,KAAKya,MAAMmjH,QAAQ59H,KAAKi6H,MAAMwD,KAG9BN,IAEAn9H,KAAKi6H,MAAMwD,GAAMH,OAAO,GAAGN,eAAiBh9H,KAAKu7H,qBAAqBtxE,OAKtEjqD,KAAKi6H,MAAMwD,KAEXz9H,KAAKya,MAAMyhH,WAAWl8H,KAAKi6H,MAAMwD,IACjCz9H,KAAKi6H,MAAMwD,GAAQ,OAW/Bj7G,MAAO,WAEHxiB,KAAK6gB,QAAS,GASlB6B,OAAQ,WAEJ1iB,KAAK6gB,QAAS,GASlBtC,OAAQ,WAGAve,KAAK6gB,SAKL7gB,KAAK85H,eAEL95H,KAAKya,MAAM4hB,KAAKr8B,KAAKwa,KAAKmE,KAAKqiE,gBAI/BhhF,KAAKya,MAAM4hB,KAAKr8B,KAAKmnD,aAW7BznC,MAAO,WAEH1f,KAAKya,MAAMwgH,GAAG,eAAgBj7H,KAAKk7H,oBAAqBl7H,MACxDA,KAAKya,MAAMwgH,GAAG,aAAcj7H,KAAKm7H,kBAAmBn7H,MAEpDA,KAAKq7H,sBAAwB,GAAIh7H,GAAOutB,QAAQ+gG,GAAG2M,eAAe,GAClEt7H,KAAKu7H,qBAAuB,GAAIl7H,GAAOutB,QAAQ+gG,GAAG2M,eAAe,GACjEt7H,KAAKw7H,yBAA2B,GAAIn7H,GAAOutB,QAAQ+gG,GAAG2M,eAAe,YAErEt7H,KAAK27H,kBAAoB,EAEzB37H,KAAKof,kBAAiB,GAAM,GAAM,GAAM,GAAM,IAmBlDnB,MAAO,WAEHje,KAAKya,MAAMkE,KAAO,EAClB3e,KAAKya,MAAMojH,cAAgB,EAGvB79H,KAAKya,MAAMqjH,QAAU99H,KAAKya,MAAMqjH,OAAOC,UAAUl2H,QAEjD7H,KAAKya,MAAMqjH,OAAOE,oBAMtB,KAAK,GAFDC,GAAKj+H,KAAKya,MAAMyjH,YAEXp2H,EAAIm2H,EAAGp2H,OAAS,EAAGC,GAAK,EAAGA,IAEhC9H,KAAKya,MAAM0jH,iBAAiBF,EAAGn2H,GAMnC,KAAK,GAFDs2H,GAASp+H,KAAKya,MAAM2jH,OAEft2H,EAAIs2H,EAAOv2H,OAAS,EAAGC,GAAK,EAAGA,IAEpC9H,KAAKya,MAAMyhH,WAAWkC,EAAOt2H,GAMjC,KAAK,GAFDu2H,GAAUr+H,KAAKya,MAAM4jH,QAEhBv2H,EAAIu2H,EAAQx2H,OAAS,EAAGC,GAAK,EAAGA,IAErC9H,KAAKya,MAAM6jH,aAAaD,EAAQv2H,GAMpC,KAAK,GAFDy2H,GAAMv+H,KAAKya,MAAM+jH,iBAEZ12H,EAAIy2H,EAAI12H,OAAS,EAAGC,GAAK,EAAGA,IAEjC9H,KAAKya,MAAMgkH,sBAAsBF,EAAIz2H,GAGzC9H,MAAKya,MAAM4hH,IAAI,eAAgBr8H,KAAKk7H,oBAAqBl7H,MACzDA,KAAKya,MAAM4hH,IAAI,aAAcr8H,KAAKm7H,kBAAmBn7H,MAErDA,KAAK06H,uBAAyB,KAC9B16H,KAAK+iB,gBAAkB,KACvB/iB,KAAK0+H,eAAiB,KAEtB1+H,KAAKo7H,mBACLp7H,KAAK07H,aACL17H,KAAKy7H,sBAGLz7H,KAAKi6H,OAAUpvH,KAAM,KAAMD,MAAO,KAAM8D,IAAK,KAAMC,OAAQ,OAS/DmV,QAAS,WAEL9jB,KAAKie,QAELje,KAAKwa,KAAO,MAWhBojH,QAAS,SAAUhuG,GAEf,OAAIA,EAAK8S,KAAKjoB,QAMVza,KAAKya,MAAMmjH,QAAQhuG,EAAK8S,MAExB1iC,KAAKk6H,YAAYr7G,SAAS+Q,IAEnB;EAYfssG,WAAY,SAAUtsG,GASlB,MAPIA,GAAK8S,KAAKjoB,OAASza,KAAKya,QAExBza,KAAKya,MAAMyhH,WAAWtsG,EAAK8S,MAE3B1iC,KAAKm6H,cAAct7G,SAAS+Q,IAGzBA,GAWX+uG,UAAW,SAAUC,GAajB,MAXIA,aAAkBv+H,GAAOutB,QAAQ+gG,GAAGgL,QAAUiF,YAAkBv+H,GAAOutB,QAAQ+gG,GAAGkQ,iBAElF7+H,KAAKya,MAAMkkH,UAAUC,EAAOl8F,MAI5B1iC,KAAKya,MAAMkkH,UAAUC,GAGzB5+H,KAAKo6H,cAAcv7G,SAAS+/G,GAErBA,GAWXN,aAAc,SAAUM,GAapB,MAXIA,aAAkBv+H,GAAOutB,QAAQ+gG,GAAGgL,QAAUiF,YAAkBv+H,GAAOutB,QAAQ+gG,GAAGkQ,iBAElF7+H,KAAKya,MAAM6jH,aAAaM,EAAOl8F,MAI/B1iC,KAAKya,MAAM6jH,aAAaM,GAG5B5+H,KAAKq6H,gBAAgBx7G,SAAS+/G,GAEvBA,GAgBXE,yBAA0B,SAAUrC,EAAOC,EAAO7uH,EAAUkxH,EAAcC,EAAcC,GAKpF,MAHAxC,GAAQz8H,KAAKk/H,QAAQzC,GACrBC,EAAQ18H,KAAKk/H,QAAQxC,GAEhBD,GAAUC,EAMJ18H,KAAKm/H,cAAc,GAAI9+H,GAAOutB,QAAQ+gG,GAAGyQ,mBAAmBp/H,KAAMy8H,EAAOC,EAAO7uH,EAAUkxH,EAAcC,EAAcC,QAJ7H72H,SAAQG,KAAK,yDAmBrB82H,qBAAsB,SAAU5C,EAAOC,EAAOxuH,EAAOoxH,GAKjD,MAHA7C,GAAQz8H,KAAKk/H,QAAQzC,GACrBC,EAAQ18H,KAAKk/H,QAAQxC,GAEhBD,GAAUC,EAMJ18H,KAAKm/H,cAAc,GAAI9+H,GAAOutB,QAAQ+gG,GAAG4Q,eAAev/H,KAAMy8H,EAAOC,EAAOxuH,EAAOoxH,QAJ1Fl3H,SAAQG,KAAK,yDAsBrBi3H,yBAA0B,SAAU/C,EAAOgD,EAAQ/C,EAAOgD,EAAQT,EAAUU,GAKxE,MAHAlD,GAAQz8H,KAAKk/H,QAAQzC,GACrBC,EAAQ18H,KAAKk/H,QAAQxC,GAEhBD,GAAUC,EAMJ18H,KAAKm/H,cAAc,GAAI9+H,GAAOutB,QAAQ+gG,GAAGiR,mBAAmB5/H,KAAMy8H,EAAOgD,EAAQ/C,EAAOgD,EAAQT,EAAUU,QAJjHv3H,SAAQG,KAAK,yDAoBrBs3H,qBAAsB,SAAUpD,EAAOC,EAAOtuH,EAAQF,EAAO+wH,GAKzD,MAHAxC,GAAQz8H,KAAKk/H,QAAQzC,GACrBC,EAAQ18H,KAAKk/H,QAAQxC,GAEhBD,GAAUC,EAMJ18H,KAAKm/H,cAAc,GAAI9+H,GAAOutB,QAAQ+gG,GAAGmR,eAAe9/H,KAAMy8H,EAAOC,EAAOtuH,EAAQF,EAAO+wH,QAJlG72H,SAAQG,KAAK,yDAuBrBw3H,0BAA2B,SAAUtD,EAAOC,EAAOsD,EAAcC,EAASC,EAAS3hF,EAAM0gF,GAKrF,MAHAxC,GAAQz8H,KAAKk/H,QAAQzC,GACrBC,EAAQ18H,KAAKk/H,QAAQxC,GAEhBD,GAAUC,EAMJ18H,KAAKm/H,cAAc,GAAI9+H,GAAOutB,QAAQ+gG,GAAGwR,oBAAoBngI,KAAMy8H,EAAOC,EAAOsD,EAAcC,EAASC,EAAS3hF,EAAM0gF,QAJ9H72H,SAAQG,KAAK,yDAgBrB42H,cAAe,SAAUiB,GAMrB,MAJApgI,MAAKya,MAAM0kH,cAAciB,GAEzBpgI,KAAKs6H,kBAAkBz7G,SAASuhH,GAEzBA,GAWXjC,iBAAkB,SAAUiC,GAMxB,MAJApgI,MAAKya,MAAM0jH,iBAAiBiC,GAE5BpgI,KAAKu6H,oBAAoB17G,SAASuhH,GAE3BA,GAWXC,mBAAoB,SAAUhD,GAM1B,MAJAr9H,MAAKya,MAAM4lH,mBAAmBhD,GAE9Br9H,KAAKw6H,uBAAuB37G,SAASw+G,GAE9BA,GAWXoB,sBAAuB,SAAUpB,GAM7B,MAJAr9H,MAAKya,MAAMgkH,sBAAsBpB,GAEjCr9H,KAAKy6H,yBAAyB57G,SAASw+G,GAEhCA,GAYXiD,mBAAoB,SAAUC,EAAWC,GAErC,MAAOxgI,MAAKya,MAAM6lH,mBAAmBC,EAAWC,IAWpDC,YAAa,SAAUpD,EAAUe,GAI7B,IAFA,GAAIt2H,GAAIs2H,EAAOv2H,OAERC,KAEHs2H,EAAOt2H,GAAG24H,YAAYpD,IAe9BqD,eAAgB,SAAUt1H,EAAMwkB,GAE5BxkB,EAAOA,GAAQ,EAEf,IAAIiyH,GAAW,GAAIh9H,GAAOutB,QAAQ+gG,GAAGgS,SAASv1H,EAS9C,OAPApL,MAAK+5H,UAAUnnH,KAAKyqH,GAEA,mBAATztG,IAEPA,EAAK6wG,YAAYpD,GAGdA,GAaXuD,sBAAuB,SAAUL,EAAWC,EAAWr1H,GAEjCzB,SAAd62H,IAA2BA,EAAYvgI,KAAK0gI,kBAC9Bh3H,SAAd82H,IAA2BA,EAAYxgI,KAAK0gI,iBAEhD,IAAIG,GAAU,GAAIxgI,GAAOutB,QAAQ+gG,GAAGmS,gBAAgBP,EAAWC,EAAWr1H,EAE1E,OAAOnL,MAAKqgI,mBAAmBQ,IAUnCE,UAAW,WAKP,IAHA,GAAIhzH,MACAjG,EAAI9H,KAAKya,MAAM2jH,OAAOv2H,OAEnBC,KAEHiG,EAAO6E,KAAK5S,KAAKya,MAAM2jH,OAAOt2H,GAAG0hB,OAGrC,OAAOzb,IAWXmxH,QAAS,SAAU3pG,GAEf,MAAIA,aAAkBhd,IAAG2rG,KAGd3uF,EAEFA,YAAkBl1B,GAAOutB,QAAQ+gG,GAAGzK,KAGlC3uF,EAAOmN,KAETnN,EAAa,MAAKA,EAAa,KAAErtB,OAAS7H,EAAOutB,QAAQg7B,KAGvDrzB,EAAO3F,KAAK8S,KAGhB,MAUXs+F,WAAY,WAKR,IAHA,GAAIjzH,MACAjG,EAAI9H,KAAKya,MAAM4jH,QAAQx2H,OAEpBC,KAEHiG,EAAO6E,KAAK5S,KAAKya,MAAM4jH,QAAQv2H,GAAG0hB,OAGtC,OAAOzb,IAYXkzH,eAAgB,WAKZ,IAHA,GAAIlzH,MACAjG,EAAI9H,KAAKya,MAAMyjH,YAAYr2H,OAExBC,KAEHiG,EAAO6E,KAAK5S,KAAKya,MAAMyjH,YAAYp2H,GAGvC,OAAOiG,IAeXo0B,QAAS,SAAU++F,EAAY9C,EAAQ+C,EAAWC,GAE/B13H,SAAX00H,IAAwBA,EAASp+H,KAAKya,MAAM2jH,QAC9B10H,SAAdy3H,IAA2BA,EAAY,GACtBz3H,SAAjB03H,IAA8BA,GAAe,EAOjD,KALA,GAAIC,IAAoBrhI,KAAKg7H,KAAKkG,EAAWj7H,GAAIjG,KAAKg7H,KAAKkG,EAAWz0H,IAElE60H,KACAx5H,EAAIs2H,EAAOv2H,OAERC,KAECs2H,EAAOt2H,YAAczH,GAAOutB,QAAQ+gG,GAAGzK,QAAUkd,GAAgBhD,EAAOt2H,GAAG46B,KAAKx6B,OAASqQ,GAAG2rG,KAAKqd,QAEjGD,EAAM1uH,KAAKwrH,EAAOt2H,GAAG46B,MAEhB07F,EAAOt2H,YAAcyQ,IAAG2rG,MAAQka,EAAOt2H,GAAG0hB,UAAY43G,GAAgBhD,EAAOt2H,GAAGI,OAASqQ,GAAG2rG,KAAKqd,QAEtGD,EAAM1uH,KAAKwrH,EAAOt2H,IAEbs2H,EAAOt2H,YAAczH,GAAO+tB,QAAUgwG,EAAOt2H,GAAGkD,eAAe,WAAao2H,GAAgBhD,EAAOt2H,GAAG8nB,KAAK8S,KAAKx6B,OAASqQ,GAAG2rG,KAAKqd,SAEtID,EAAM1uH,KAAKwrH,EAAOt2H,GAAG8nB,KAAK8S,KAIlC,OAAO1iC,MAAKya,MAAM0nB,QAAQk/F,EAAiBC,EAAOH,IAUtDK,OAAQ,WAEJ,MAAOxhI,MAAKya,MAAM+mH,UAWtBC,qBAAsB,SAAUlsG,GAE5B,GAAImsG,GAAU37H,KAAKgnF,IAAI,EAAG/sF,KAAK27H,kBAE3B37H,MAAKi6H,MAAMpvH,OAEX7K,KAAKi6H,MAAMpvH,KAAKyyH,OAAO,GAAGqE,cAAgB3hI,KAAKi6H,MAAMpvH,KAAKyyH,OAAO,GAAGqE,cAAgBD,GAGpF1hI,KAAKi6H,MAAMrvH,QAEX5K,KAAKi6H,MAAMrvH,MAAM0yH,OAAO,GAAGqE,cAAgB3hI,KAAKi6H,MAAMrvH,MAAM0yH,OAAO,GAAGqE,cAAgBD,GAGtF1hI,KAAKi6H,MAAMvrH,MAEX1O,KAAKi6H,MAAMvrH,IAAI4uH,OAAO,GAAGqE,cAAgB3hI,KAAKi6H,MAAMvrH,IAAI4uH,OAAO,GAAGqE,cAAgBD,GAGlF1hI,KAAKi6H,MAAMtrH,SAEX3O,KAAKi6H,MAAMtrH,OAAO2uH,OAAO,GAAGqE,cAAgB3hI,KAAKi6H,MAAMtrH,OAAO2uH,OAAO,GAAGqE,cAAgBD,GAG5F1hI,KAAK27H,mBAEL,IAAInlG,GAAQ,GAAIn2B,GAAOutB,QAAQ+gG,GAAG2M,eAAeoG,EASjD,OAPA1hI,MAAKo7H,gBAAgBxoH,KAAK4jB,GAEtBjB,GAEAv1B,KAAKm9H,kBAAkB5nG,EAAQiB,GAG5BA,GAYX2mG,kBAAmB,SAAU5nG,EAAQiB,GAEjC,GAAIjB,YAAkBl1B,GAAOmtB,MAEzB,IAAK,GAAI1lB,GAAI,EAAGA,EAAIytB,EAAOV,MAAO/sB,IAE1BytB,EAAO5J,SAAS7jB,GAAS,MAAKytB,EAAO5J,SAAS7jB,GAAS,KAAEI,OAAS7H,EAAOutB,QAAQg7B,MAEjFrzB,EAAO5J,SAAS7jB,GAAG8nB,KAAKutG,kBAAkB3mG,OAMlDjB,GAAO3F,KAAKutG,kBAAkB3mG,IAoBtCorG,aAAc,SAAUnF,EAAOC,EAAOmF,EAAYC,EAAWC,EAASC,EAAQC,EAAQC,EAAQC,GAK1F,MAHA1F,GAAQz8H,KAAKk/H,QAAQzC,GACrBC,EAAQ18H,KAAKk/H,QAAQxC,GAEhBD,GAAUC,EAMJ18H,KAAK2+H,UAAU,GAAIt+H,GAAOutB,QAAQ+gG,GAAGgL,OAAO35H,KAAMy8H,EAAOC,EAAOmF,EAAYC,EAAWC,EAASC,EAAQC,EAAQC,EAAQC,QAJ/H/5H,SAAQG,KAAK,qDAoBrB65H,uBAAwB,SAAU3F,EAAOC,EAAO2F,EAAWP,EAAWC,GAKlE,MAHAtF,GAAQz8H,KAAKk/H,QAAQzC,GACrBC,EAAQ18H,KAAKk/H,QAAQxC,GAEhBD,GAAUC,EAMJ18H,KAAK2+H,UAAU,GAAIt+H,GAAOutB,QAAQ+gG,GAAGkQ,iBAAiB7+H,KAAMy8H,EAAOC,EAAO2F,EAAWP,EAAWC,QAJvG35H,SAAQG,KAAK,gEA0BrB+5H,WAAY,SAAUr8H,EAAGwG,EAAG8mH,EAAMtqG,EAAY9d,EAASu3B,GAEhCh5B,SAAfuf,IAA4BA,GAAa,EAE7C,IAAI2G,GAAO,GAAIvvB,GAAOutB,QAAQ+gG,GAAGzK,KAAKlkH,KAAKwa,KAAM,KAAMvU,EAAGwG,EAAG8mH,EAE7D,IAAI7wF,EACJ,CACI,GAAIpxB,GAASse,EAAK2yG,WAAWp3H,EAASu3B,EAEtC,KAAKpxB,EAED,OAAO,EASf,MALI2X,IAEAjpB,KAAKya,MAAMmjH,QAAQhuG,EAAK8S,MAGrB9S,GAoBX4yG,eAAgB,SAAUv8H,EAAGwG,EAAG8mH,EAAMtqG,EAAY9d,EAASu3B,GAEpCh5B,SAAfuf,IAA4BA,GAAa,EAE7C,IAAI2G,GAAO,GAAIvvB,GAAOutB,QAAQ+gG,GAAGzK,KAAKlkH,KAAKwa,KAAM,KAAMvU,EAAGwG,EAAG8mH,EAE7D,IAAI7wF,EACJ,CACI,GAAIpxB,GAASse,EAAK2yG,WAAWp3H,EAASu3B,EAEtC,KAAKpxB,EAED,OAAO,EASf,MALI2X,IAEAjpB,KAAKya,MAAMmjH,QAAQhuG,EAAK8S,MAGrB9S,GAcX6yG,wBAAyB,SAAUC,EAAKvY,EAAOlhG,GAExBvf,SAAfuf,IAA4BA,GAAa,EAI7C,KAAK,GAFDlb,MAEKjG,EAAI,EAAGF,EAAM86H,EAAIC,UAAUxY,GAAOtiH,OAAQC,EAAIF,EAAKE,IAC5D,CAUI,GAAIytB,GAASmtG,EAAIC,UAAUxY,GAAOriH,GAE9B8nB,EAAO5vB,KAAKsiI,WAAW/sG,EAAOtvB,EAAGsvB,EAAO9oB,EAAG,EAAGwc,KAAgBsM,EAAOqtG,SAErEhzG,IAEA7hB,EAAO6E,KAAKgd,GAIpB,MAAO7hB,IAWX80H,wBAAyB,SAAUH,EAAKvY,GAEpCA,EAAQuY,EAAII,SAAS3Y,EAIrB,KAFA,GAAIriH,GAAI46H,EAAIzY,OAAOE,GAAOiU,OAAOv2H,OAE1BC,KAEH46H,EAAIzY,OAAOE,GAAOiU,OAAOt2H,GAAGgc,SAGhC4+G,GAAIzY,OAAOE,GAAOiU,OAAOv2H,OAAS,GAiBtCk7H,eAAgB,SAAUL,EAAKvY,EAAOlhG,EAAY+5G,GAE9C7Y,EAAQuY,EAAII,SAAS3Y,GAEFzgH,SAAfuf,IAA4BA,GAAa,GAC5Bvf,SAAbs5H,IAA0BA,GAAW,GAGzChjI,KAAK6iI,wBAAwBH,EAAKvY,EAMlC,KAAK,GAJDp6G,GAAQ,EACR0C,EAAK,EACLC,EAAK,EAEAjG,EAAI,EAAG8Q,EAAImlH,EAAIzY,OAAOE,GAAOn6G,OAAQvD,EAAI8Q,EAAG9Q,IACrD,CACIsD,EAAQ,CAER,KAAK,GAAI9J,GAAI,EAAGqX,EAAIolH,EAAIzY,OAAOE,GAAOp6G,MAAO9J,EAAIqX,EAAGrX,IACpD,CACI,GAAIyyH,GAAOgK,EAAIzY,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAErC,IAAIyyH,GAAQA,EAAK/oG,OAAQ,GAAM+oG,EAAKuK,SAEhC,GAAID,EACJ,CACI,GAAIp4H,GAAQ83H,EAAIQ,aAAa/Y,EAAOlkH,EAAGwG,EASvC,IAPc,IAAVsD,IAEA0C,EAAKimH,EAAKzyH,EAAIyyH,EAAK3oH,MACnB2C,EAAKgmH,EAAKjsH,EAAIisH,EAAK1oH,OACnBD,EAAQ2oH,EAAK3oH,OAGbnF,GAASA,EAAMq4H,SAEflzH,GAAS2oH,EAAK3oH,UAGlB,CACI,GAAI6f,GAAO5vB,KAAKsiI,WAAW7vH,EAAIC,EAAI,GAAG,EAEtCkd,GAAKuzG,aAAapzH,EAAO2oH,EAAK1oH,OAAQD,EAAQ,EAAG2oH,EAAK1oH,OAAS,EAAG,GAE9DiZ,GAEAjpB,KAAK49H,QAAQhuG,GAGjB8yG,EAAIzY,OAAOE,GAAOiU,OAAOxrH,KAAKgd,GAE9B7f,EAAQ,OAIhB,CACI,GAAI6f,GAAO5vB,KAAKsiI,WAAW5J,EAAKzyH,EAAIyyH,EAAK3oH,MAAO2oH,EAAKjsH,EAAIisH,EAAK1oH,OAAQ,GAAG,EAEzE4f,GAAKuzG,aAAazK,EAAK3oH,MAAO2oH,EAAK1oH,OAAQ0oH,EAAK3oH,MAAQ,EAAG2oH,EAAK1oH,OAAS,EAAG,GAExEiZ,GAEAjpB,KAAK49H,QAAQhuG,GAGjB8yG,EAAIzY,OAAOE,GAAOiU,OAAOxrH,KAAKgd,KAM9C,MAAO8yG,GAAIzY,OAAOE,GAAOiU,QAa7BvD,IAAK,SAAUngG,GAEX,MAAOA,IAAK,IAahBqgG,IAAK,SAAUrgG,GAEX,MAAW,IAAJA,GAaXogG,KAAM,SAAUpgG,GAEZ,MAAOA,KAAK,IAahBsgG,KAAM,SAAUtgG,GAEZ,MAAOA,IAAI,MAUnBnzB,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,YAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM2oH,uBAAuBjP,UAI7CloH,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM2oH,uBAAuBjP,SAAW5qH,KAUrDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,eAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM2oH,uBAAuBC,aAI7Cp3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM2oH,uBAAuBC,YAAc95H,KAUxDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,mBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM2oH,wBAItBn3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM2oH,uBAAyB75H,KAU5ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,qBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM6oH,mBAItBr3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM6oH,kBAAoB/5H,KAUvChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,gBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM8oH,cAItBt3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM8oH,aAAeh6H,KAUlChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,gBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM+oH,cAItBv3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM+oH,aAAej6H,KAUlChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,oBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAMgpH,kBAItBx3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAMgpH,iBAAmBl6H,KAWtChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,QAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAMkE,QAU1BpX,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,mBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAMipH,iBAItBz3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAMipH,gBAAkBn6H,KAYrChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,aAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAMkpH,WAItB13H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAMkpH,UAAYp6H,KAW/BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGtoH,UAAW,SAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM2jH,OAAOv2H,UA4BjCxH,EAAOutB,QAAQ+gG,GAAGiV,YAAc,SAAU1tG,GAEjC1vB,MAAMa,QAAQ6uB,KAEfA,GAAQA,IAGZl2B,KAAK6jI,QAAU3tG,EACfl2B,KAAKsgB,OACLtgB,KAAKkX,MAAMlX,KAAK6jI,UAIpBxjI,EAAOutB,QAAQ+gG,GAAGiV,YAAYv9H,WAK1Bia,KAAM,WAMFtgB,KAAK8jI,iBAML9jI,KAAK+jI,mBAML/jI,KAAKgkI,gBASTC,YAAa,SAAUC,EAAK78B,GAExB,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQy1B,eAAiBkH,EAG7BlkI,MAAKokI,YAAY/8B,GAAY5/F,QAAQ08H,IASzCE,QAAS,SAAUH,EAAK78B,GAEpB,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQo6B,cAAgBuC,EAG5BlkI,MAAKokI,YAAY/8B,GAAY5/F,QAAQ08H,IASzCG,UAAW,SAAU/6H,EAAO89F,GAExB,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQg9B,OAASh7H,EAGrBvJ,MAAKokI,YAAY/8B,GAAY5/F,QAAQ08H,IASzC1D,YAAa,SAAUpD,EAAUh2B,GAE7B,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQ81B,SAAWA,EAGvBr9H,MAAKokI,YAAY/8B,GAAY5/F,QAAQ08H,IAUzCC,YAAa,SAAUt4H,GAEnB,GAAIw7F,KAEJ,IAAIx7F,EACJ,CACUA,YAAgBtF,SAElBsF,GAAQA,GAGZ,IAAI23G,GAAOzjH,IAQX,OAPA8L,GAAKrE,QAAQ,SAASsE,GACd03G,EAAKqgB,cAAc/3H,IAEnBu7F,EAAS10F,KAAK6wG,EAAKqgB,cAAc/3H,MAIlC/L,KAAK2X,QAAQ2vF,GAKpB,MAAOtnG,MAAKgkI,aAWpBQ,gBAAiB,SAAUz4H,GAEvB,MAAO/L,MAAK8jI,cAAc/3H,IAU9B04H,SAAU,SAAUC,GAEhB,MAAO1kI,MAAK+jI,gBAAgBW,IAShCxtH,MAAO,WAEH,GAAInL,GAAKxC,EAAOo7H,EAAMC,CACtBD,GAAO3kI,KAAK6jI,QACZe,IAEA,KAAK74H,IAAO44H,GAERp7H,EAAQo7H,EAAK54H,GAERgyC,MAAMhyC,EAAM,GAOb/L,KAAK8jI,cAAc/3H,GAAO/L,KAAK2X,QAAQpO,IALvCvJ,KAAK+jI,gBAAgBh4H,GAAO/L,KAAK+jI,gBAAgBh4H,OACjD/L,KAAK+jI,gBAAgBh4H,GAAO/L,KAAK+jI,gBAAgBh4H,GAAKlF,OAAO0C,IAOjEq7H,EAAShyH,KAAK5S,KAAKgkI,YAAchkI,KAAK2X,QAAQ3X,KAAK+jI,mBAW3DpsH,QAAS,SAAUxD,GAEf,GAAI7C,GAAQmyG,CAQZ,OAPAnyG,MACAmyG,EAAO18G,UAAU89H,OAEjB1wH,EAAM1M,QAAQ,SAASo+E,GACnB,MAAOr/E,OAAMH,UAAUuM,KAAK3L,MAAMqK,EAAS9K,MAAMa,QAAQw+E,GAAQ49B,EAAK59B,IAASA,MAG5Ev0E,IAmBfjR,EAAOutB,QAAQ+gG,GAAGmW,WAAa,SAAUrqH,EAAOwjD,GAE5Cj+D,KAAKya,MAAQA,EAChBza,KAAKi+D,YAAcA,GAIpB59D,EAAOutB,QAAQ+gG,GAAGmW,WAAWz+H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGmW,WAMvEv9H,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGmW,WAAWz+H,UAAW,KAE1D2F,IAAK,WAED,MAAOhM,MAAKya,MAAMogH,IAAI76H,KAAKi+D,YAAY,KAI3ChyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,GAAKj+D,KAAKya,MAAMsgH,IAAIxxH,MAU7ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGmW,WAAWz+H,UAAW,KAE1D2F,IAAK,WAED,MAAOhM,MAAKya,MAAMogH,IAAI76H,KAAKi+D,YAAY,KAI3ChyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,GAAKj+D,KAAKya,MAAMsgH,IAAIxxH,MAU7ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGmW,WAAWz+H,UAAW,MAE1D2F,IAAK,WAED,MAAOhM,MAAKi+D,YAAY,IAI5BhyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,GAAK10D,KAU9BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGmW,WAAWz+H,UAAW,MAE1D2F,IAAK,WAED,MAAOhM,MAAKi+D,YAAY,IAI5BhyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,GAAK10D,KAoB9BlJ,EAAOutB,QAAQ+gG,GAAGqL,kBAAoB,SAAUv/G,EAAOwjD,GAEnDj+D,KAAKya,MAAQA,EAChBza,KAAKi+D,YAAcA,GAIpB59D,EAAOutB,QAAQ+gG,GAAGqL,kBAAkB3zH,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGqL,kBAM9EzyH,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGqL,kBAAkB3zH,UAAW,KAEjE2F,IAAK,WAED,MAAOhM,MAAKya,MAAMqgH,KAAK96H,KAAKi+D,YAAY,KAI5ChyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,GAAKj+D,KAAKya,MAAMugH,KAAKzxH,MAU9ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGqL,kBAAkB3zH,UAAW,KAEjE2F,IAAK,WAED,MAAOhM,MAAKya,MAAMqgH,KAAK96H,KAAKi+D,YAAY,KAI5ChyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,GAAKj+D,KAAKya,MAAMugH,KAAKzxH,MAU9ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGqL,kBAAkB3zH,UAAW,MAEjE2F,IAAK,WAED,MAAOhM,MAAKi+D,YAAY,IAI5BhyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,IAAM10D,KAU/BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGqL,kBAAkB3zH,UAAW,MAEjE2F,IAAK,WAED,MAAOhM,MAAKi+D,YAAY,IAI5BhyD,IAAK,SAAU1C,GAEXvJ,KAAKi+D,YAAY,IAAM10D,KA4B/BlJ,EAAOutB,QAAQ+gG,GAAGzK,KAAO,SAAU1pG,EAAM4c,EAAQnxB,EAAGwG,EAAG8mH,GAEnDn8F,EAASA,GAAU,KACnBnxB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACI/C,SAAT6pH,IAAsBA,EAAO,GAKjCvzH,KAAKwa,KAAOA,EAKZxa,KAAKya,MAAQD,EAAK6F,QAAQ9H,GAK1BvY,KAAKo3B,OAASA,EAKdp3B,KAAKkI,KAAO7H,EAAOutB,QAAQg7B,KAK3B5oD,KAAKoO,OAAS,GAAI/N,GAAO2M,MAMzBhN,KAAK0iC,KAAO,GAAInqB,IAAG2rG,MAAO3qG,UAAYvZ,KAAKya,MAAMugH,KAAK/0H,GAAIjG,KAAKya,MAAMugH,KAAKvuH,IAAM8mH,KAAMA,IAEtFvzH,KAAK0iC,KAAKlZ,OAASxpB,KAKnBA,KAAKmwH,SAAW,GAAI9vH,GAAOutB,QAAQ+gG,GAAGqL,kBAAkBh6H,KAAKya,MAAOza,KAAK0iC,KAAKytF,UAK9EnwH,KAAK6d,MAAQ,GAAIxd,GAAOutB,QAAQ+gG,GAAGqL,kBAAkBh6H,KAAKya,MAAOza,KAAK0iC,KAAK7kB,OAK3E7d,KAAKgvH,QAAU,GAAI3uH,GAAO2M,MAgB1BhN,KAAK26H,eAAiB,GAAIt6H,GAAO+a,OAejCpb,KAAK46H,aAAe,GAAIv6H,GAAO+a,OAK/Bpb,KAAK+kI,gBAKL/kI,KAAKglI,gBAAiB,EAKtBhlI,KAAKilI,UAAY,KAKjBjlI,KAAKynB,OAAQ,EAMbznB,KAAKklI,qBAAsB,EAM3BllI,KAAK28H,kBAML38H,KAAK48H,wBAML58H,KAAK+8H,mBAML/8H,KAAKi9H,yBAMLj9H,KAAK+vD,QAAS,EAGV34B,IAEAp3B,KAAKmlI,uBAAuB/tG,GAExBA,EAAO5M,QAEPxqB,KAAKwa,KAAK6F,QAAQ9H,GAAGqlH,QAAQ59H,QAMzCK,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,WAanB++H,mBAAoB,SAAU7vG,EAAQjC,EAAUvQ,GAE5C,GAAIpO,IAAK,CAEL4gB,GAAW,GAEX5gB,EAAK4gB,EAAO5gB,GAEP4gB,EAAa,OAElB5gB,EAAK4gB,EAAO3F,KAAKjb,IAGjBA,GAAK,IAEY,OAAb2e,SAEQtzB,MAAK28H,eAAehoH,SACpB3U,MAAK48H,qBAAqBjoH,KAIlC3U,KAAK28H,eAAehoH,GAAM2e,EAC1BtzB,KAAK48H,qBAAqBjoH,GAAMoO,KAkB5CsiH,oBAAqB,SAAU7uG,EAAOlD,EAAUvQ,GAE3B,OAAbuQ,SAEQtzB,MAAK+8H,gBAAgBvmG,EAAMyzB,YAC3BjqD,MAAKi9H,sBAAsBzmG,EAAMyzB,QAIzCjqD,KAAK+8H,gBAAgBvmG,EAAMyzB,MAAQ32B,EACnCtzB,KAAKi9H,sBAAsBzmG,EAAMyzB,MAAQlnC,IAWjDuiH,iBAAkB,WAEd,GAAIr7E,GAAO,CAEPjqD,MAAKklI,sBAELj7E,EAAOjqD,KAAKwa,KAAK6F,QAAQ9H,GAAGgjH,qBAAqBtxE,KAGrD,KAAK,GAAIniD,GAAI,EAAGA,EAAI9H,KAAK+kI,aAAal9H,OAAQC,IAE1CmiD,GAAcjqD,KAAK+kI,aAAaj9H,GAAGmiD,IAGvC,OAAOA,IAUXs7E,oBAAqB,SAAU3iG,GAE3B,GAAIqnB,GAAOjqD,KAAKslI,kBAEhB,IAAc57H,SAAVk5B,EAEA,IAAK,GAAI96B,GAAI9H,KAAK0iC,KAAK46F,OAAOz1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAK0iC,KAAK46F,OAAOx1H,GAAG65H,cAAgB13E,MAKxCrnB,GAAM++F,cAAgB13E,GAa9BkzE,kBAAmB,SAAU3mG,EAAOoM,GAEhC,GAAIqnB,GAAOjqD,KAAKslI,kBAEhB,IAAc57H,SAAVk5B,EAEA,IAAK,GAAI96B,GAAI9H,KAAK0iC,KAAK46F,OAAOz1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAK0iC,KAAK46F,OAAOx1H,GAAGk1H,eAAiBxmG,EAAMyzB,KAC3CjqD,KAAK0iC,KAAK46F,OAAOx1H,GAAG65H,cAAgB13E,MAKxCrnB,GAAMo6F,eAAiBxmG,EAAMyzB,KAC7BrnB,EAAM++F,cAAgB13E,GAa9Bu7E,eAAgB,SAAUC,EAAYC,EAAW9iG,GAK7C,GAHmBl5B,SAAf+7H,IAA4BA,GAAa,GAC3B/7H,SAAdg8H,IAA2BA,GAAY,GAE7Bh8H,SAAVk5B,EAEA,IAAK,GAAI96B,GAAI9H,KAAK0iC,KAAK46F,OAAOz1H,OAAS,EAAGC,GAAK,EAAGA,IAE1C29H,IAEAzlI,KAAK0iC,KAAK46F,OAAOx1H,GAAGk1H,eAAiB,MAGrC0I,IAEA1lI,KAAK0iC,KAAK46F,OAAOx1H,GAAG65H,cAAgB,UAMxC8D,KAEA7iG,EAAMo6F,eAAiB,MAGvB0I,IAEA9iG,EAAM++F,cAAgB,KAI1B8D,KAEAzlI,KAAK+kI,aAAal9H,OAAS,IAanC89H,qBAAsB,SAAUnvG,EAAOovG,EAAehjG,GAE5Bl5B,SAAlBk8H,IAA+BA,GAAgB,EAEnD,IAAIj2G,EAEJ,IAAInpB,MAAMa,QAAQmvB,GAEd,IAAK,GAAI1uB,GAAI,EAAGA,EAAI0uB,EAAM3uB,OAAQC,IAE9B6nB,EAAQ3vB,KAAK+kI,aAAaz0G,QAAQkG,EAAM1uB,IAEpC6nB,GAAQ,IAER3vB,KAAK+kI,aAAa5hH,OAAOwM,EAAO,GAE5Bi2G,UAEQ5lI,MAAK+8H,gBAAgBvmG,EAAMyzB,YAC3BjqD,MAAKi9H,sBAAsBzmG,EAAMyzB,YAOrDt6B,GAAQ3vB,KAAK+kI,aAAaz0G,QAAQkG,GAE9B7G,GAAQ,IAER3vB,KAAK+kI,aAAa5hH,OAAOwM,EAAO,GAE5Bi2G,UAEQ5lI,MAAK+8H,gBAAgBvmG,EAAMyzB,YAC3BjqD,MAAKi9H,sBAAsBzmG,EAAMyzB,OAKrD,IAAIA,GAAOjqD,KAAKslI,kBAEhB,IAAc57H,SAAVk5B,EAEA,IAAK,GAAI96B,GAAI9H,KAAK0iC,KAAK46F,OAAOz1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAK0iC,KAAK46F,OAAOx1H,GAAG65H,cAAgB13E,MAKxCrnB,GAAM++F,cAAgB13E,GAc9Bg5E,SAAU,SAAUzsG,EAAOlD,EAAUvQ,EAAiB6f,GAElD,GAAIp8B,MAAMa,QAAQmvB,GAEd,IAAK,GAAI1uB,GAAI,EAAGA,EAAI0uB,EAAM3uB,OAAQC,IAE1B9H,KAAK+kI,aAAaz0G,QAAQkG,EAAM1uB,OAAQ,IAExC9H,KAAK+kI,aAAanyH,KAAK4jB,EAAM1uB,IAEzBwrB,GAEAtzB,KAAKqlI,oBAAoB7uG,EAAM1uB,GAAIwrB,EAAUvQ,QAOrD/iB,MAAK+kI,aAAaz0G,QAAQkG,MAAW,IAErCx2B,KAAK+kI,aAAanyH,KAAK4jB,GAEnBlD,GAEAtzB,KAAKqlI,oBAAoB7uG,EAAOlD,EAAUvQ,GAKtD,IAAIknC,GAAOjqD,KAAKslI,kBAEhB,IAAc57H,SAAVk5B,EAEA,IAAK,GAAI96B,GAAI9H,KAAK0iC,KAAK46F,OAAOz1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAK0iC,KAAK46F,OAAOx1H,GAAG65H,cAAgB13E,MAKxCrnB,GAAM++F,cAAgB13E,GAU9B47E,mBAAoB,WAEhB7lI,KAAK0iC,KAAKmjG,qBACV7lI,KAAK8lI,gBAYTC,mBAAoB,SAAUz0H,EAAQ00H,GAElC,MAAOhmI,MAAK0iC,KAAKqjG,mBAAmBz0H,EAAQ00H,IAUhDzC,aAAc,SAAUhhE,GAEpBviE,KAAK0iC,KAAK6gG,aAAahhE,IAc3B0jE,aAAc,SAAUC,EAASnjB,EAAQC,GAErChjH,KAAK0iC,KAAKujG,aAAaC,GAAUlmI,KAAKya,MAAMugH,KAAKjY,GAAS/iH,KAAKya,MAAMugH,KAAKhY,MAe9EmjB,kBAAmB,SAAUD,EAASE,EAAQC,GAE1CrmI,KAAK0iC,KAAKyjG,kBAAkBD,GAAUlmI,KAAKya,MAAMugH,KAAKoL,GAASpmI,KAAKya,MAAMugH,KAAKqL,MAenFC,WAAY,SAAUzoH,EAAOklG,EAAQC,GAEjChjH,KAAK0iC,KAAK4jG,WAAWzoH,GAAQ7d,KAAKya,MAAMugH,KAAKjY,GAAS/iH,KAAKya,MAAMugH,KAAKhY,MAS1EujB,aAAc,WAEVvmI,KAAK0iC,KAAK6jG,gBASdC,gBAAiB,WAEbxmI,KAAK0iC,KAAKqtF,gBAAkB,GAShC0W,gBAAiB,WAEbzmI,KAAK0iC,KAAKytF,SAAS,GAAK,EACxBnwH,KAAK0iC,KAAKytF,SAAS,GAAK,GAS5BuW,eAAgB,WAEZ1mI,KAAK0iC,KAAKq/F,QAAU,EACpB/hI,KAAK0iC,KAAKikG,eAAiB,GAW/BC,aAAc,SAAU75H,EAAKm0H,GAEzB,MAAOlhI,MAAK0iC,KAAKkkG,aAAa75H,EAAKm0H,IAWvC2F,aAAc,SAAU95H,EAAKq1B,GAEzB,MAAOpiC,MAAK0iC,KAAKmkG,aAAa95H,EAAKq1B,IAUvColF,WAAY,SAAUjqF,GAElBv9B,KAAK0iC,KAAKqtF,gBAAkB/vH,KAAKya,MAAMsgH,KAAKx9F,IAUhDgqF,YAAa,SAAUhqF,GAEnBv9B,KAAK0iC,KAAKqtF,gBAAkB/vH,KAAKya,MAAMsgH,IAAIx9F,IAW/CupG,YAAa,SAAUvpG,GAEnB,GAAIznB,GAAY9V,KAAKya,MAAMugH,MAAMz9F,GAC7BrvB,EAAQlO,KAAK0iC,KAAKx0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAK0iC,KAAKytF,SAAS,GAAKr6G,EAAY/P,KAAKoH,IAAIe,GAC7ClO,KAAK0iC,KAAKytF,SAAS,GAAKr6G,EAAY/P,KAAKqH,IAAIc,IAWjD64H,aAAc,SAAUxpG,GAEpB,GAAIznB,GAAY9V,KAAKya,MAAMugH,MAAMz9F,GAC7BrvB,EAAQlO,KAAK0iC,KAAKx0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAK0iC,KAAKytF,SAAS,KAAOr6G,EAAY/P,KAAKoH,IAAIe,IAC/ClO,KAAK0iC,KAAKytF,SAAS,KAAOr6G,EAAY/P,KAAKqH,IAAIc,KAWnD84H,OAAQ,SAAUzpG,GAEd,GAAIznB,GAAY9V,KAAKya,MAAMugH,MAAMz9F,GAC7BrvB,EAAQlO,KAAK0iC,KAAKx0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/C+4H,WAAY,SAAU1pG,GAElB,GAAIznB,GAAY9V,KAAKya,MAAMugH,MAAMz9F,GAC7BrvB,EAAQlO,KAAK0iC,KAAKx0B,KAEtBlO,MAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/Cg5H,YAAa,SAAU3pG,GAEnB,GAAIznB,GAAY9V,KAAKya,MAAMugH,MAAMz9F,GAC7BrvB,EAAQlO,KAAK0iC,KAAKx0B,KAEtBlO,MAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/CtF,QAAS,SAAU20B,GAEf,GAAIznB,GAAY9V,KAAKya,MAAMugH,MAAMz9F,GAC7BrvB,EAAQlO,KAAK0iC,KAAKx0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAK0iC,KAAK7kB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/Ci5H,SAAU,SAAU5pG,GAEhBv9B,KAAK0iC,KAAKytF,SAAS,GAAKnwH,KAAKya,MAAMugH,MAAMz9F,IAW7C6pG,UAAW,SAAU7pG,GAEjBv9B,KAAK0iC,KAAKytF,SAAS,GAAKnwH,KAAKya,MAAMugH,KAAKz9F,IAW5CvL,OAAQ,SAAUuL,GAEdv9B,KAAK0iC,KAAKytF,SAAS,GAAKnwH,KAAKya,MAAMugH,MAAMz9F,IAW7CtL,SAAU,SAAUsL,GAEhBv9B,KAAK0iC,KAAKytF,SAAS,GAAKnwH,KAAKya,MAAMugH,KAAKz9F,IAU5CvgB,UAAW,WAEPhd,KAAKynB,OAAQ,EAETznB,KAAKglI,iBAELhlI,KAAK6oD,kBACL7oD,KAAKglI,gBAAiB,IAW9B56G,WAAY,WAERpqB,KAAKo3B,OAAOnxB,EAAIjG,KAAKya,MAAMqgH,KAAK96H,KAAK0iC,KAAKnpB,SAAS,IAAMvZ,KAAKoO,OAAOnI,EACrEjG,KAAKo3B,OAAO3qB,EAAIzM,KAAKya,MAAMqgH,KAAK96H,KAAK0iC,KAAKnpB,SAAS,IAAMvZ,KAAKoO,OAAO3B,EAEhEzM,KAAKqnI,gBAENrnI,KAAKo3B,OAAOP,SAAW72B,KAAK0iC,KAAKx0B,OAGjClO,KAAKilI,WAELjlI,KAAKilI,UAAUqC,wBAGnBtnI,KAAKynB,OAAQ,GAajB/H,MAAO,SAAUzZ,EAAGwG,EAAG86H,EAAcC,GAEZ99H,SAAjB69H,IAA8BA,GAAe,GAC/B79H,SAAd89H,IAA2BA,GAAY,GAE3CxnI,KAAKumI,eACLvmI,KAAKymI,kBACLzmI,KAAKwmI,kBAEDe,GAEAvnI,KAAK0mI,iBAGLc,IAEAxnI,KAAKuzH,KAAO,GAGhBvzH,KAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,GASbwc,WAAY,WAER,GAAIjpB,KAAKwa,KAAK6F,QAAQ9H,GAAGmjH,UAErB,IAAK,GAAI5zH,GAAI,EAAGA,EAAI9H,KAAKwa,KAAK6F,QAAQ9H,GAAGmjH,UAAU7zH,OAAQC,IAEnD9H,KAAKwa,KAAK6F,QAAQ9H,GAAGmjH,UAAU5zH,KAAO9H,MAEtCA,KAAKwa,KAAK6F,QAAQ9H,GAAGmjH,UAAUv4G,OAAOrb,EAAG,EAKjD9H,MAAK0iC,KAAKjoB,QAAUza,KAAKwa,KAAK6F,QAAQ9H,GAAGkC,OAEzCza,KAAKwa,KAAK6F,QAAQ9H,GAAGqlH,QAAQ59H,OAUrC6oD,gBAAiB,WAET7oD,KAAK0iC,KAAKjoB,QAAUza,KAAKwa,KAAK6F,QAAQ9H,GAAGkC,OAEzCza,KAAKwa,KAAK6F,QAAQ9H,GAAG0jH,mBAAmBj8H,OAUhD8jB,QAAS,WAEL9jB,KAAK6oD,kBAEL7oD,KAAKynI,cAELznI,KAAK28H,kBACL38H,KAAK48H,wBACL58H,KAAK+8H,mBACL/8H,KAAKi9H,yBAEDj9H,KAAKilI,WAELjlI,KAAKilI,UAAUnhH,SAAQ,GAAM,GAGjC9jB,KAAKilI,UAAY,KAEbjlI,KAAKo3B,SAELp3B,KAAKo3B,OAAOxH,KAAO,KACnB5vB,KAAKo3B,OAAS,OAUtBqwG,YAAa,WAIT,IAFA,GAAI3/H,GAAI9H,KAAK0iC,KAAK46F,OAAOz1H,OAElBC,KAEH9H,KAAK0iC,KAAKglG,YAAY1nI,KAAK0iC,KAAK46F,OAAOx1H,GAG3C9H,MAAK8lI,gBAgBTpI,SAAU,SAAU96F,EAAOiT,EAASC,EAASjf,GASzC,MAPgBntB,UAAZmsC,IAAyBA,EAAU,GACvBnsC,SAAZosC,IAAyBA,EAAU,GACtBpsC,SAAbmtB,IAA0BA,EAAW,GAEzC72B,KAAK0iC,KAAKg7F,SAAS96F,GAAQ5iC,KAAKya,MAAMugH,KAAKnlF,GAAU71C,KAAKya,MAAMugH,KAAKllF,IAAWjf,GAChF72B,KAAK8lI,eAEEljG,GAcX+kG,UAAW,SAAUt6H,EAAQwoC,EAASC,EAASjf,GAE3C,GAAI+L,GAAQ,GAAIrqB,IAAG/L,QAASa,OAAQrN,KAAKya,MAAMsgH,IAAI1tH,IAEnD,OAAOrN,MAAK09H,SAAS96F,EAAOiT,EAASC,EAASjf,IAelDssG,aAAc,SAAUpzH,EAAOC,EAAQ6lC,EAASC,EAASjf,GAErD,GAAI+L,GAAQ,GAAIrqB,IAAGqvH,KAAM73H,MAAO/P,KAAKya,MAAMsgH,IAAIhrH,GAAQC,OAAQhQ,KAAKya,MAAMsgH,IAAI/qH,IAE9E,OAAOhQ,MAAK09H,SAAS96F,EAAOiT,EAASC,EAASjf,IAalDgxG,SAAU,SAAUhyF,EAASC,EAASjf,GAElC,GAAI+L,GAAQ,GAAIrqB,IAAGolH,KAEnB,OAAO39H,MAAK09H,SAAS96F,EAAOiT,EAASC,EAASjf,IAalDixG,YAAa,SAAUjyF,EAASC,EAASjf,GAErC,GAAI+L,GAAQ,GAAIrqB,IAAGwvH,QAEnB,OAAO/nI,MAAK09H,SAAS96F,EAAOiT,EAASC,EAASjf,IAgBlDmxG,QAAS,SAAUngI,EAAQguC,EAASC,EAASjf,GAEzC,GAAI+L,GAAQ,GAAIrqB,IAAGlI,MAAOxI,OAAQ7H,KAAKya,MAAMsgH,IAAIlzH,IAEjD,OAAO7H,MAAK09H,SAAS96F,EAAOiT,EAASC,EAASjf,IAgBlDoxG,WAAY,SAAUpgI,EAAQwF,EAAQwoC,EAASC,EAASjf,GAEpD,GAAI+L,GAAQ,GAAIrqB,IAAG2vH,SAAUrgI,OAAQ7H,KAAKya,MAAMsgH,IAAIlzH,GAASwF,OAAQrN,KAAKya,MAAMsgH,IAAI1tH,IAEpF,OAAOrN,MAAK09H,SAAS96F,EAAOiT,EAASC,EAASjf,IAkBlD0rG,WAAY,SAAUp3H,EAAS4L,GAE3B5L,EAAUA,MAEL3E,MAAMa,QAAQ0P,KAEfA,EAASvQ,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAGnD,IAAI69D,KAGJ,IAAsB,IAAlB7tD,EAAOlP,QAAgBrB,MAAMa,QAAQ0P,EAAO,IAE5C6tD,EAAO7tD,EAAO,GAAGxQ,MAAM,OAEtB,IAAIC,MAAMa,QAAQ0P,EAAO,IAE1B6tD,EAAO7tD,EAAOxQ,YAEb,IAAyB,gBAAdwQ,GAAO,GAGnB,IAAK,GAAIjP,GAAI,EAAGF,EAAMmP,EAAOlP,OAAQC,EAAIF,EAAKE,GAAK,EAE/C88D,EAAKhyD,MAAMmE,EAAOjP,GAAIiP,EAAOjP,EAAI,IAKzC,IAAI0zE,GAAM5W,EAAK/8D,OAAS,CAEpB+8D,GAAK4W,GAAK,KAAO5W,EAAK,GAAG,IAAMA,EAAK4W,GAAK,KAAO5W,EAAK,GAAG,IAExDA,EAAKz7D,KAIT,KAAK,GAAI8G,GAAI,EAAGA,EAAI20D,EAAK/8D,OAAQoI,IAE7B20D,EAAK30D,GAAG,GAAKjQ,KAAKya,MAAMugH,KAAKp2D,EAAK30D,GAAG,IACrC20D,EAAK30D,GAAG,GAAKjQ,KAAKya,MAAMugH,KAAKp2D,EAAK30D,GAAG,GAGzC,IAAIqB,GAAStR,KAAK0iC,KAAKylG,YAAYvjE,EAAMz5D,EAIzC,OAFAnL,MAAK8lI,eAEEx0H,GAWXo2H,YAAa,SAAU9kG,GAEzB,GAAItxB,GAAStR,KAAK0iC,KAAKglG,YAAY9kG,EAI7B,OAFN5iC,MAAK8lI,eAEQx0H,GAaX2mH,UAAW,SAAU5qH,EAAQwoC,EAASC,EAASjf,GAI3C,MAFA72B,MAAKynI,cAEEznI,KAAK2nI,UAAUt6H,EAAQwoC,EAASC,EAASjf,IAiBpDuxG,aAAc,SAAUr4H,EAAOC,EAAQ6lC,EAASC,EAASjf,GAOrD,MALcntB,UAAVqG,IAAuBA,EAAQ,IACpBrG,SAAXsG,IAAwBA,EAAS,IAErChQ,KAAKynI,cAEEznI,KAAKmjI,aAAapzH,EAAOC,EAAQ6lC,EAASC,EAASjf,IAc9DsuG,uBAAwB,SAAU/tG,GAM9B,MAJe1tB,UAAX0tB,IAAwBA,EAASp3B,KAAKo3B,QAE1Cp3B,KAAKynI,cAEEznI,KAAKmjI,aAAa/rG,EAAOrnB,MAAOqnB,EAAOpnB,OAAQ,EAAG,EAAGonB,EAAOP,WAYvE4pG,YAAa,SAAUpD,EAAUz6F,GAE7B,GAAcl5B,SAAVk5B,EAEA,IAAK,GAAI96B,GAAI9H,KAAK0iC,KAAK46F,OAAOz1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAK0iC,KAAK46F,OAAOx1H,GAAGu1H,SAAWA,MAKnCz6F,GAAMy6F,SAAWA,GAUzByI,aAAc,WAEN9lI,KAAKilI,WAELjlI,KAAKilI,UAAUzrE,QAgBvB6uE,iBAAkB,SAAUt8H,EAAKwpB,GAM7B,IAAK,GAJDmN,GAAO1iC,KAAKwa,KAAKsF,MAAMsnF,eAAer7F,EAAKwpB,GAC3C+yG,KAGKxgI,EAAI,EAAGA,EAAI46B,EAAK76B,OAAQC,IACjC,CACI,GAAIygI,GAAc7lG,EAAK56B,GACnB0gI,EAAkBxoI,KAAKyoI,WAAWF,EAGtCD,GAAgBC,EAAYz0G,OAAO0C,OAAS8xG,EAAgBC,EAAYz0G,OAAO0C,WAC/E8xG,EAAgBC,EAAYz0G,OAAO0C,OAAS8xG,EAAgBC,EAAYz0G,OAAO0C,OAAO3vB,OAAO2hI,GAGzFD,EAAYlhC,aAEZihC,EAAgBC,EAAYlhC,YAAcmhC,GAOlD,MAHAxoI,MAAK0iC,KAAKgmG,iBAAkB,EAC5B1oI,KAAK8lI,eAEEwC,GAWXG,WAAY,SAAUF,GAElB,GAAII,KAEJ,IAAIJ,EAAY/qG,OAChB,CACI,GAAIoF,GAAQ,GAAIrqB,IAAG/L,QAASa,OAAQrN,KAAKya,MAAMsgH,IAAIwN,EAAY/qG,OAAOnwB,SACtEu1B,GAAMo6F,eAAiBuL,EAAYz0G,OAAO80G,aAC1ChmG,EAAM++F,cAAgB4G,EAAYz0G,OAAO+0G,SACzCjmG,EAAM2hG,OAASgE,EAAYO,QAE3B,IAAI16H,GAASmK,GAAGwwH,KAAKroH,QACrBtS,GAAO,GAAKpO,KAAKya,MAAMugH,KAAKuN,EAAY/qG,OAAOjkB,SAAS,GAAKvZ,KAAKo3B,OAAOrnB,MAAM,GAC/E3B,EAAO,GAAKpO,KAAKya,MAAMugH,KAAKuN,EAAY/qG,OAAOjkB,SAAS,GAAKvZ,KAAKo3B,OAAOpnB,OAAO,GAEhFhQ,KAAK0iC,KAAKg7F,SAAS96F,EAAOx0B,GAC1Bu6H,EAAgB/1H,KAAKgwB,OAOrB,KAAK,GAHDomG,GAAWT,EAAYS,SACvBC,EAAK1wH,GAAGwwH,KAAKroH,SAER5Y,EAAI,EAAGA,EAAIkhI,EAASnhI,OAAQC,IACrC,CAII,IAAK,GAHDw1H,GAAS0L,EAASlhI,GAClB+sE,KAEKp+D,EAAI,EAAGA,EAAI6mH,EAAOz1H,OAAQ4O,GAAK,EAEpCo+D,EAASjiE,MAAO5S,KAAKya,MAAMugH,KAAKsC,EAAO7mH,IAAKzW,KAAKya,MAAMugH,KAAKsC,EAAO7mH,EAAI,KAM3E,KAAK,GAHDmsB,GAAQ,GAAIrqB,IAAG2wH,QAASr0D,SAAUA,IAG7Bh9D,EAAI,EAAGA,IAAM+qB,EAAMiyC,SAAShtE,OAAQgQ,IAC7C,CACI,GAAI6iB,GAAIkI,EAAMiyC,SAASh9D,EACvBU,IAAGwwH,KAAKI,IAAIzuG,EAAGA,EAAGkI,EAAMwmG,cAG5B7wH,GAAGwwH,KAAKl0H,MAAMo0H,EAAIrmG,EAAMwmG,aAAc,GAEtCH,EAAG,IAAMjpI,KAAKya,MAAMugH,KAAKh7H,KAAKo3B,OAAOrnB,MAAQ,GAC7Ck5H,EAAG,IAAMjpI,KAAKya,MAAMugH,KAAKh7H,KAAKo3B,OAAOpnB,OAAS,GAE9C4yB,EAAMymG,kBACNzmG,EAAM0mG,qBACN1mG,EAAM2mG,uBAEN3mG,EAAMo6F,eAAiBuL,EAAYz0G,OAAO80G,aAC1ChmG,EAAM++F,cAAgB4G,EAAYz0G,OAAO+0G,SACzCjmG,EAAM2hG,OAASgE,EAAYO,SAE3B9oI,KAAK0iC,KAAKg7F,SAAS96F,EAAOqmG,GAE1BN,EAAgB/1H,KAAKgwB,GAI7B,MAAO+lG,IAmBXa,YAAa,SAAUz9H,EAAKwpB,GAExB,GAAY,OAARxpB,EAEA,GAAI22B,GAAOnN,MAIX,IAAImN,GAAO1iC,KAAKwa,KAAKsF,MAAMsnF,eAAer7F,EAAKwpB,EAMnD,KAAK,GAFD0zG,GAAK1wH,GAAGwwH,KAAKroH,SAER5Y,EAAI,EAAGA,EAAI46B,EAAK76B,OAAQC,IACjC,CAGI,IAAK,GAFD+sE,MAEKp+D,EAAI,EAAGA,EAAIisB,EAAK56B,GAAG86B,MAAM/6B,OAAQ4O,GAAK,EAE3Co+D,EAASjiE,MAAO5S,KAAKya,MAAMugH,KAAKt4F,EAAK56B,GAAG86B,MAAMnsB,IAAKzW,KAAKya,MAAMugH,KAAKt4F,EAAK56B,GAAG86B,MAAMnsB,EAAI,KAMzF,KAAK,GAHDxH,GAAI,GAAIsJ,IAAG2wH,QAASr0D,SAAUA,IAGzBh9D,EAAI,EAAGA,IAAM5I,EAAE4lE,SAAShtE,OAAQgQ,IACzC,CACI,GAAI6iB,GAAIzrB,EAAE4lE,SAASh9D,EACnBU,IAAGwwH,KAAKI,IAAIzuG,EAAGA,EAAGzrB,EAAEm6H,cAGxB7wH,GAAGwwH,KAAKl0H,MAAMo0H,EAAIh6H,EAAEm6H,aAAc,GAElCH,EAAG,IAAMjpI,KAAKya,MAAMugH,KAAKh7H,KAAKo3B,OAAOrnB,MAAQ,GAC7Ck5H,EAAG,IAAMjpI,KAAKya,MAAMugH,KAAKh7H,KAAKo3B,OAAOpnB,OAAS,GAE9Cf,EAAEo6H,kBACFp6H,EAAEq6H,qBACFr6H,EAAEs6H,uBAEFvpI,KAAK0iC,KAAKg7F,SAASzuH,EAAGg6H,GAM1B,MAHAjpI,MAAK0iC,KAAKgmG,iBAAkB,EAC5B1oI,KAAK8lI,gBAEE,IAMfzlI,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGzK,KAQjE7jH,EAAOutB,QAAQ+gG,GAAGzK,KAAKulB,QAAU,EAQjCppI,EAAOutB,QAAQ+gG,GAAGzK,KAAKqd,OAAS,EAQhClhI,EAAOutB,QAAQ+gG,GAAGzK,KAAKwlB,UAAY,EAMnCniI,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,UAEpD2F,IAAK,WAED,MAAQhM,MAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKqd,QAItDt1H,IAAK,SAAU1C,GAEPA,GAASvJ,KAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKqd,QAEnDvhI,KAAK0iC,KAAKx6B,KAAO7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKqd,OACxCvhI,KAAKuzH,KAAO,GAENhqH,GAASvJ,KAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKqd,SAEzDvhI,KAAK0iC,KAAKx6B,KAAO7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKulB,QACxCzpI,KAAKuzH,KAAO,MAWxBhsH,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,WAEpD2F,IAAK,WAED,MAAQhM,MAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKulB,SAItDx9H,IAAK,SAAU1C,GAEPA,GAASvJ,KAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKulB,SAEnDzpI,KAAK0iC,KAAKx6B,KAAO7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKulB,QACxCzpI,KAAKuzH,KAAO,GAENhqH,GAASvJ,KAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKulB,UAEzDzpI,KAAK0iC,KAAKx6B,KAAO7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKqd,OACxCvhI,KAAKuzH,KAAO,MAWxBhsH,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,aAEpD2F,IAAK,WAED,MAAQhM,MAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKwlB,WAItDz9H,IAAK,SAAU1C,GAEPA,GAASvJ,KAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKwlB,WAEnD1pI,KAAK0iC,KAAKx6B,KAAO7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKwlB,UACxC1pI,KAAKuzH,KAAO,GAENhqH,GAASvJ,KAAK0iC,KAAKx6B,OAAS7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKwlB,YAEzD1pI,KAAK0iC,KAAKx6B,KAAO7H,EAAOutB,QAAQ+gG,GAAGzK,KAAKqd,OACxCvhI,KAAKuzH,KAAO,MAWxBhsH,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,cAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKinG,YAIrB19H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAK0iC,KAAKinG,aAEpB3pI,KAAK0iC,KAAKinG,WAAapgI,MAenChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,SAEpD2F,IAAK,WAED,MAAO3L,GAAO0F,KAAKihD,UAAU3mD,EAAO0F,KAAK2P,SAAS1V,KAAK0iC,KAAKx0B,SAIhEjC,IAAK,SAAS1C,GAEVvJ,KAAK0iC,KAAKx0B,MAAQ7N,EAAO0F,KAAKgJ,SAAS1O,EAAO0F,KAAKihD,UAAUz9C,OAWrEhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,kBAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKikG,gBAIrB16H,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKikG,eAAiBp9H,KAUnChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,gBAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKknG,cAIrB39H,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKknG,aAAergI,KAUjChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,mBAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKqtF,iBAIrB9jH,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKqtF,gBAAkBxmH,KAWpChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,WAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKq/F,SAIrB91H,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKq/F,QAAUx4H,KAU5BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,iBAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAK2kG,eAIrBp7H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAK0iC,KAAK2kG,gBAEpBrnI,KAAK0iC,KAAK2kG,cAAgB99H,MAWtChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,WAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKmnG,SAIrB59H,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKmnG,QAAUtgI,KAU5BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,QAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAK6wF,MAIrBtnH,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAK0iC,KAAK6wF,OAEpBvzH,KAAK0iC,KAAK6wF,KAAOhqH,EACjBvJ,KAAK0iC,KAAKonG,2BAWtBviI,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,eAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKx6B,MAIrB+D,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAK0iC,KAAKx6B,OAEpBlI,KAAK0iC,KAAKx6B,KAAOqB,MAc7BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,YAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKx0B,OAIrBjC,IAAK,SAAS1C,GAEVvJ,KAAK0iC,KAAKx0B,MAAQ3E,KAU1BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,mBAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAKqnG,iBAIrB99H,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKqnG,gBAAkBxgI,KAUpChC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,KAEpD2F,IAAK,WAED,MAAOhM,MAAKya,MAAMqgH,KAAK96H,KAAK0iC,KAAKnpB,SAAS,KAI9CtN,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKnpB,SAAS,GAAKvZ,KAAKya,MAAMugH,KAAKzxH,MAUhDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,KAEpD2F,IAAK,WAED,MAAOhM,MAAKya,MAAMqgH,KAAK96H,KAAK0iC,KAAKnpB,SAAS,KAI9CtN,IAAK,SAAU1C,GAEXvJ,KAAK0iC,KAAKnpB,SAAS,GAAKvZ,KAAKya,MAAMugH,KAAKzxH,MAWhDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,MAEpD2F,IAAK,WAED,MAAOhM,MAAK0iC,KAAK/tB,MAUzBpN,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,SAEpD2F,IAAK,WAED,MAA2B,QAAnBhM,KAAKilI,WAIjBh5H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKilI,UAGfjlI,KAAKilI,UAAY,GAAI5kI,GAAOutB,QAAQ+gG,GAAGqb,UAAUhqI,KAAKwa,KAAMxa,KAAK0iC,OAE3Dn5B,GAASvJ,KAAKilI,YAEpBjlI,KAAKilI,UAAUnhH,UACf9jB,KAAKilI,UAAY,SAgB7B19H,OAAO2E,eAAe7L,EAAOutB,QAAQ+gG,GAAGzK,KAAK79G,UAAW,sBAEpD2F,IAAK,WAED,MAAOhM,MAAKklI,qBAIhBj5H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKklI,qBAEfllI,KAAKklI,qBAAsB,EAC3BllI,KAAKulI,wBAECh8H,GAASvJ,KAAKklI,sBAEpBllI,KAAKklI,qBAAsB,EAC3BllI,KAAKulI,0BA8BjBllI,EAAOutB,QAAQ+gG,GAAGqb,UAAY,SAASxvH,EAAMoV,EAAMq6G,GAE/C5pI,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,EAMxB,IAAI0vH,IACAC,oBAAqB3vH,EAAK6F,QAAQ9H,GAAGsiH,IAAI,GACzCuP,eAAe,EACf3rE,UAAW,EACXpgD,MAAO,GAGXre,MAAKiqI,SAAW5pI,EAAOmI,MAAM0C,OAAOg/H,EAAiBD,GAKrDjqI,KAAKqqI,IAAMrqI,KAAKiqI,SAASE,oBACzBnqI,KAAKqqI,KAAM,EAAKrqI,KAAKqqI,IAKrBrqI,KAAK4vB,KAAOA,EAKZ5vB,KAAKsrB,OAAS,GAAIjrB,GAAOwc,SAASrC,GAElCxa,KAAKsrB,OAAOjN,MAAQre,KAAKiqI,SAAS5rH,MAElCre,KAAK6R,IAAI7R,KAAKsrB,QAEdtrB,KAAKw5D,OAELx5D,KAAKsnI,yBAITjnI,EAAOutB,QAAQ+gG,GAAGqb,UAAU3jI,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACnEhG,EAAOutB,QAAQ+gG,GAAGqb,UAAU3jI,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGqb,UAEtE3pI,EAAOmI,MAAM0C,OAAO7K,EAAOutB,QAAQ+gG,GAAGqb,UAAU3jI,WAO5CihI,sBAAuB,WAEnBtnI,KAAKuZ,SAAStT,EAAIjG,KAAK4vB,KAAKrW,SAAS,GAAKvZ,KAAKqqI,IAC/CrqI,KAAKuZ,SAAS9M,EAAIzM,KAAK4vB,KAAKrW,SAAS,GAAKvZ,KAAKqqI,IAC/CrqI,KAAK62B,SAAW72B,KAAK4vB,KAAK1hB,OAS9BsrD,KAAM,WAEF,GAAItrD,GAAOuhB,EAAOzR,EAAOlW,EAAG+P,EAAGkpD,EAAWupE,EAAIvhI,EAAKqF,EAAQgpB,EAAQsD,EAAGk2C,EAAO25D,EAAMC,EAAIC,CASvF,IAPA1hI,EAAM/I,KAAK4vB,KACXwH,EAASp3B,KAAKsrB,OACd8L,EAAOnZ,QACPD,EAAQ3T,SAASrK,KAAK0qI,kBAAmB,IACzC3pE,EAAY,SACZupE,EAAKtqI,KAAKy+D,UAEN11D,YAAewP,IAAG2rG,MAAQn7G,EAAIu0H,OAAOz1H,OACzC,CACI,GAAIuB,GAAIL,EAAIu0H,OAAOz1H,MAInB,KAFAC,EAAI,EAEGA,IAAMsB,GACb,CAKI,GAJAqmB,EAAQ1mB,EAAIu0H,OAAOx1H,GACnBsG,EAASqhB,EAAMlW,UAAY,EAC3BrL,EAAQuhB,EAAMvhB,OAAS,EAEnBuhB,YAAiBlX,IAAG/L,OAEpBxM,KAAKykE,WAAWrtC,EAAQhpB,EAAO,GAAKpO,KAAKqqI,IAAKj8H,EAAO,GAAKpO,KAAKqqI,IAAKn8H,EAAOuhB,EAAMpiB,OAASrN,KAAKqqI,IAAKrsH,EAAOssH,OAE1G,IAAI76G,YAAiBlX,IAAG2vH,QAEzBloI,KAAK2qI,YAAYvzG,EAAQhpB,EAAO,GAAKpO,KAAKqqI,IAAKj8H,EAAO,GAAKpO,KAAKqqI,IAAKn8H,EAAOuhB,EAAM5nB,OAAS7H,KAAKqqI,IAAK56G,EAAMpiB,OAASrN,KAAKqqI,IAAKtpE,EAAW/iD,EAAOssH,OAE/I,IAAI76G,YAAiBlX,IAAGolH,MAEzB39H,KAAK4qI,UAAUxzG,EAAQhpB,EAAO,GAAKpO,KAAKqqI,KAAMj8H,EAAO,GAAKpO,KAAKqqI,IAAKrsH,EAAO+iD,EAAgB,EAALupE,EAAa,GAALA,EAAc,GAALA,EAAoB,IAAXtqI,KAAKqqI,IAAWn8H,OAE/H,IAAIuhB,YAAiBlX,IAAGlI,KAEzBrQ,KAAK6qI,SAASzzG,EAAQ3H,EAAM5nB,OAAS7H,KAAKqqI,IAAKtpE,EAAWupE,OAEzD,IAAI76G,YAAiBlX,IAAGqvH,IAEzB5nI,KAAK8qI,cAAc1zG,EAAQhpB,EAAO,GAAKpO,KAAKqqI,IAAKj8H,EAAO,GAAKpO,KAAKqqI,IAAKn8H,EAAOuhB,EAAM1f,MAAQ/P,KAAKqqI,IAAK56G,EAAMzf,OAAShQ,KAAKqqI,IAAKtpE,EAAW/iD,EAAOssH,OAEhJ,IAAI76G,YAAiBlX,IAAG2wH,OAC7B,CAII,IAHAt4D,KACA25D,EAAOhyH,GAAGwwH,KAAKroH,SAEV7I,EAAI2yH,EAAK,EAAGC,EAAQh7G,EAAMolD,SAAShtE,OAAQ,GAAK4iI,EAAQD,EAAKC,EAAQD,EAAKC,EAAO5yH,EAAI,GAAK4yH,IAAUD,IAAOA,EAE5G9vG,EAAIjL,EAAMolD,SAASh9D,GACnBU,GAAGwwH,KAAK73H,OAAOq5H,EAAM7vG,EAAGxsB,GACxB0iE,EAAMh+D,OAAO23H,EAAK,GAAKn8H,EAAO,IAAMpO,KAAKqqI,MAAOE,EAAK,GAAKn8H,EAAO,IAAMpO,KAAKqqI,KAGhFrqI,MAAK+qI,WAAW3zG,EAAQw5C,EAAOnhD,EAAM46C,UAAWtJ,EAAW/iD,EAAOssH,EAAItqI,KAAKiqI,SAASG,eAAgBh8H,EAAO,GAAKpO,KAAKqqI,KAAMj8H,EAAO,GAAKpO,KAAKqqI,MAGhJviI,OAYZgjI,cAAe,SAAShgH,EAAG7kB,EAAGwG,EAAGyB,EAAOoP,EAAGC,EAAGS,EAAOumD,EAAW9F,GAE1C/0D,SAAd+0D,IAA2BA,EAAY,GAC7B/0D,SAAVsU,IAAuBA,EAAQ,GAEnC8M,EAAEy2C,UAAU9C,EAAWzgD,EAAO,GAC9B8M,EAAE5M,UAAUqmD,GACZz5C,EAAE3M,SAASlY,EAAIqX,EAAI,EAAG7Q,EAAI8Q,EAAI,EAAGD,EAAGC,IAUxCknD,WAAY,SAAS35C,EAAG7kB,EAAGwG,EAAGyB,EAAOb,EAAQ2Q,EAAOygD,GAE9B/0D,SAAd+0D,IAA2BA,EAAY,GAC7B/0D,SAAVsU,IAAuBA,EAAQ,UACnC8M,EAAEy2C,UAAU9C,EAAW,EAAU,GACjC3zC,EAAE5M,UAAUF,EAAO,GACnB8M,EAAE25C,WAAWx+D,EAAGwG,EAAW,GAAPY,GACpByd,EAAE1M,UACF0M,EAAEyzC,OAAOt4D,EAAGwG,GACZqe,EAAE0zC,OAAOv4D,EAAIoH,EAAStH,KAAKoH,KAAKe,GAAQzB,EAAIY,EAAStH,KAAKqH,KAAKc,KAUnE28H,SAAU,SAAS//G,EAAGljB,EAAKoW,EAAOygD,GAEZ/0D,SAAd+0D,IAA2BA,EAAY,GAC7B/0D,SAAVsU,IAAuBA,EAAQ,GAEnC8M,EAAEy2C,UAAsB,EAAZ9C,EAAezgD,EAAO,GAClC8M,EAAEyzC,QAAQ32D,EAAM,EAAG,GACnBkjB,EAAE0zC,OAAO52D,EAAM,EAAG,IAUtBmjI,WAAY,SAASjgH,EAAG8lD,EAAOvG,EAAWrsD,EAAOumD,EAAW9F,EAAW56C,EAAOzV,GAE1E,GAAIonE,GAAQ1tE,EAAG4yB,EAAGi0D,EAAIC,EAAI3oF,EAAG+kI,EAAI16H,EAAI7D,EAAGyL,EAAI3H,CAK5C,IAHkB7G,SAAd+0D,IAA2BA,EAAY,GAC7B/0D,SAAVsU,IAAuBA,EAAQ,GAE9B6F,EAiCL,CAII,IAHA2xD,GAAU,SAAU,MAAU,KAC9B1tE,EAAI,EAEGA,IAAM8oE,EAAM/oE,OAAS,GAExB8mF,EAAK/d,EAAM9oE,EAAI8oE,EAAM/oE,QACrB+mF,EAAKhe,GAAO9oE,EAAI,GAAK8oE,EAAM/oE,QAC3BmjI,EAAKr8C,EAAG,GACRz2E,EAAKy2E,EAAG,GACRr+E,EAAKs+E,EAAG,GACRr+E,EAAKq+E,EAAG,GACR9jE,EAAEy2C,UAAU9C,EAAW+W,EAAO1tE,EAAI0tE,EAAO3tE,QAAS,GAClDijB,EAAEyzC,OAAOysE,GAAK9yH,GACd4S,EAAE0zC,OAAOluD,GAAKC,GACdua,EAAE25C,WAAWumE,GAAK9yH,EAAgB,EAAZumD,GACtB32D,GAIJ,OADAgjB,GAAEy2C,UAAU9C,EAAW,EAAU,GAC1B3zC,EAAE25C,WAAWr2D,EAAO,GAAIA,EAAO,GAAgB,EAAZqwD,GA/C1C,IAJA3zC,EAAEy2C,UAAU9C,EAAWzgD,EAAO,GAC9B8M,EAAE5M,UAAUqmD,GACZz8D,EAAI,EAEGA,IAAM8oE,EAAM/oE,QAEf6yB,EAAIk2C,EAAM9oE,GACV7B,EAAIy0B,EAAE,GACNjuB,EAAIiuB,EAAE,GAEI,IAAN5yB,EAEAgjB,EAAEyzC,OAAOt4D,GAAIwG,GAIbqe,EAAE0zC,OAAOv4D,GAAIwG,GAGjB3E,GAKJ,IAFAgjB,EAAE1M,UAEEwyD,EAAM/oE,OAAS,EAGf,MADAijB,GAAEyzC,OAAOqS,EAAMA,EAAM/oE,OAAS,GAAG,IAAK+oE,EAAMA,EAAM/oE,OAAS,GAAG,IACvDijB,EAAE0zC,OAAOoS,EAAM,GAAG,IAAKA,EAAM,GAAG,KAmCnDq6D,SAAU,SAASngH,EAAG85C,EAAM5mD,EAAOumD,EAAW9F,GAE1C,GAAInnD,GAAMxP,EAAGojI,EAAOC,EAAOj5D,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAK73C,EAAGz0B,EAAGwG,CAe/D,KAdkB/C,SAAd+0D,IAA2BA,EAAY,GAC7B/0D,SAAVsU,IAAuBA,EAAQ,GAEnC8M,EAAEy2C,UAAU9C,EAAWzgD,EAAO,GAEL,gBAAdumD,IAEPz5C,EAAE5M,UAAUqmD,GAGhB2mE,EAAQ,KACRC,EAAQ,KACRrjI,EAAI,EAEGA,EAAI88D,EAAK/8D,QAEZ6yB,EAAIkqC,EAAK98D,GACT7B,EAAIy0B,EAAE,GACNjuB,EAAIiuB,EAAE,GAEFz0B,IAAMilI,GAASz+H,IAAM0+H,IAEX,IAANrjI,EAEAgjB,EAAEyzC,OAAOt4D,EAAGwG,IAIZylE,EAAMg5D,EACN/4D,EAAMg5D,EACN/4D,EAAMnsE,EACNosE,EAAM5lE,EACN6lE,EAAM1N,GAAM98D,EAAI,GAAK88D,EAAK/8D,QAAQ,GAClC0qE,EAAM3N,GAAM98D,EAAI,GAAK88D,EAAK/8D,QAAQ,GAClCyP,GAAS86D,EAAMF,IAAQK,EAAMJ,IAAUG,EAAMJ,IAAQG,EAAMF,GAE9C,IAAT76D,GAEAwT,EAAE0zC,OAAOv4D,EAAGwG,IAGpBy+H,EAAQjlI,EACRklI,EAAQ1+H,GAGZ3E,GAIqB,iBAAdy8D,IAEPz5C,EAAE1M,UAGFwmD,EAAK/8D,OAAS,GAA0B,gBAAd08D,KAE1Bz5C,EAAEyzC,OAAOqG,EAAKA,EAAK/8D,OAAS,GAAG,GAAI+8D,EAAKA,EAAK/8D,OAAS,GAAG,IACzDijB,EAAE0zC,OAAOoG,EAAK,GAAG,GAAIA,EAAK,GAAG,MAWrCgmE,UAAW,SAAS9/G,EAAGkgH,EAAI16H,EAAI0N,EAAO+iD,EAAWtC,EAAW2sE,EAAYC,EAAUC,EAAWp9H,GAEzF,GAAIiE,GAAKo5H,EAAIC,CACK9hI,UAAd+0D,IAA2BA,EAAY,GAC7B/0D,SAAVsU,IAAuBA,EAAQ,UAEnC8M,EAAEy2C,UAAU9C,EAAWsC,EAAW,IAClCj2C,EAAE5M,UAAUF,GACZ7L,EAAMm5H,EAENxgH,EAAEyzC,OAAOysE,GAAK16H,GACdi7H,EAAKP,EAAKjlI,KAAKoH,IAAIe,GAASlO,KAAKwa,KAAKzK,MACtCy7H,EAAKl7H,EAAKvK,KAAKqH,IAAIc,GAASlO,KAAKwa,KAAKxK,OACtC8a,EAAE0zC,OAAO+sE,GAAKC,GAEd1gH,EAAEyzC,OAAOysE,GAAK16H,GACdi7H,EAAKP,EAAKjlI,KAAKoH,IAAIe,IAAUlO,KAAKwa,KAAKzK,MACvCy7H,EAAKl7H,EAAKvK,KAAKqH,IAAIc,IAAUlO,KAAKwa,KAAKxK,OACvC8a,EAAE0zC,OAAO+sE,GAAKC,IAUlBb,YAAa,SAAS7/G,EAAG7kB,EAAGwG,EAAGyB,EAAOtG,EAAKyF,EAAQ2Q,EAAOumD,EAAW9F,GAE/C/0D,SAAd+0D,IAA2BA,EAAY,GAC7B/0D,SAAVsU,IAAuBA,EAAS,GAEpC8M,EAAEy2C,UAAU9C,EAAWzgD,EAAO,EAG9B,IAAI/O,GAAIlJ,KAAKoH,IAAIe,GACbuI,EAAI1Q,KAAKqH,IAAIc,EAEjB4c,GAAE5M,UAAUqmD,EAAW,GACvBz5C,EAAE25C,YAAY78D,EAAI,EAAEqH,EAAIhJ,GAAI2B,EAAI,EAAE6O,EAAIhK,EAAa,GAATY,GAC1Cyd,EAAE25C,WAAY78D,EAAI,EAAEqH,EAAIhJ,EAAI2B,EAAI,EAAE6O,EAAIhK,EAAa,GAATY,GAC1Cyd,EAAE1M,UAGF0M,EAAEy2C,UAAU9C,EAAWzgD,EAAO,GAC9B8M,EAAE5M,UAAUqmD,EAAW,GACvBz5C,EAAEyzC,QAAQ32D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAE0zC,OAAQ52D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAE0zC,OAAQ52D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAE0zC,QAAQ52D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAE1M,UAGF0M,EAAEy2C,UAAU9C,EAAWzgD,EAAO,GAC9B8M,EAAEyzC,QAAQ32D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAE0zC,OAAQ52D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAEyzC,QAAQ32D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAE0zC,OAAQ52D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,IAU5Di+H,gBAAiB,WAEb,GAAIrvE,GAAMD,EAAOqwE,EAAKtwE,CAWtB,OAVAswE,IAAO,IAAK,IAAK,KAEjBtwE,EAAMp1D,KAAKI,MAAsB,IAAhBJ,KAAK4D,UACtByxD,EAAQr1D,KAAKI,MAAsB,IAAhBJ,KAAK4D,UACxB0xD,EAAOt1D,KAAKI,MAAsB,IAAhBJ,KAAK4D,UAEvBwxD,EAAMp1D,KAAKI,OAAOg1D,EAAM,EAAIswE,EAAI,IAAM,GACtCrwE,EAAQr1D,KAAKI,OAAOi1D,EAAQ,EAAIqwE,EAAI,IAAM,GAC1CpwE,EAAOt1D,KAAKI,OAAOk1D,EAAO,EAAIowE,EAAI,IAAM,GAEjCzrI,KAAK0rI,SAASvwE,EAAKC,EAAOC,IAUrCqwE,SAAU,SAASx+H,EAAG4d,EAAGjc,GACrB,MAAO7O,MAAK2rH,eAAez+G,GAAKlN,KAAK2rH,eAAe7gG,GAAK9qB,KAAK2rH,eAAe98G,IASjF88G,eAAgB,SAAS18G,GAErB,GAAI48G,EAGJ,OAFAA,GAAM58G,EAAEzH,SAAS,IAEE,IAAfqkH,EAAIhkH,OAEGgkH,EAIAA,EAAM,OA6BzBxrH,EAAOutB,QAAQ+gG,GAAGgL,OAAS,SAAUl/G,EAAOgiH,EAAOC,EAAOmF,EAAYC,EAAWC,EAASC,EAAQC,EAAQC,EAAQC,GAK9GniI,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEM/Q,SAAfm4H,IAA4BA,EAAa,GAC3Bn4H,SAAdo4H,IAA2BA,EAAY,KAC3Bp4H,SAAZq4H,IAAyBA,EAAU,GAEvCF,EAAapnH,EAAMsgH,IAAI8G,EAEvB,IAAI12H,IACA02H,WAAYA,EACZC,UAAWA,EACXC,QAASA,EAGS,oBAAXC,IAAqC,OAAXA,IAEjC72H,EAAQwgI,cAAiBlxH,EAAMsgH,IAAIiH,EAAO,IAAKvnH,EAAMsgH,IAAIiH,EAAO,MAG9C,mBAAXC,IAAqC,OAAXA,IAEjC92H,EAAQygI,cAAiBnxH,EAAMsgH,IAAIkH,EAAO,IAAKxnH,EAAMsgH,IAAIkH,EAAO,MAG9C,mBAAXC,IAAqC,OAAXA,IAEjC/2H,EAAQ4zH,cAAiBtkH,EAAMsgH,IAAImH,EAAO,IAAKznH,EAAMsgH,IAAImH,EAAO,MAG9C,mBAAXC,IAAqC,OAAXA,IAEjCh3H,EAAQ6zH,cAAiBvkH,EAAMsgH,IAAIoH,EAAO,IAAK1nH,EAAMsgH,IAAIoH,EAAO,MAMpEniI,KAAK0iC,KAAO,GAAInqB,IAAGszH,aAAapP,EAAOC,EAAOvxH,GAE9CnL,KAAK0iC,KAAKlZ,OAASxpB,MAIvBK,EAAOutB,QAAQ+gG,GAAGgL,OAAOtzH,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGgL,OAoBnEt5H,EAAOutB,QAAQ+gG,GAAGkQ,iBAAmB,SAAUpkH,EAAOgiH,EAAOC,EAAO2F,EAAWP,EAAWC,GAKtF/hI,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEK/Q,SAAd24H,IAA2BA,EAAY,MACzB34H,SAAdo4H,IAA2BA,EAAY,KAC3Bp4H,SAAZq4H,IAAyBA,EAAU,GAEnCM,IAEAA,EAAY5nH,EAAMsgH,IAAIsH,GAG1B,IAAIl3H,IACAk3H,UAAWA,EACXP,UAAWA,EACXC,QAASA,EAMb/hI,MAAK0iC,KAAO,GAAInqB,IAAGsmH,iBAAiBpC,EAAOC,EAAOvxH,GAElDnL,KAAK0iC,KAAKlZ,OAASxpB,MAIvBK,EAAOutB,QAAQ+gG,GAAGgL,OAAOtzH,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGgL,OAiBnEt5H,EAAOutB,QAAQ+gG,GAAGgS,SAAW,SAAUv1H,GAMnCpL,KAAKoL,KAAOA,EAEZmN,GAAGooH,SAAS75H,KAAK9G,OAIrBK,EAAOutB,QAAQ+gG,GAAGgS,SAASt6H,UAAYkB,OAAOmZ,OAAOnI,GAAGooH,SAASt6H,WACjEhG,EAAOutB,QAAQ+gG,GAAGgS,SAASt6H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGgS,SAiBrEtgI,EAAOutB,QAAQ+gG,GAAGmS,gBAAkB,SAAUP,EAAWC,EAAWr1H,GA0ChEoN,GAAGuoH,gBAAgBh6H,KAAK9G,KAAMugI,EAAWC,EAAWr1H;EAIxD9K,EAAOutB,QAAQ+gG,GAAGmS,gBAAgBz6H,UAAYkB,OAAOmZ,OAAOnI,GAAGuoH,gBAAgBz6H,WAC/EhG,EAAOutB,QAAQ+gG,GAAGmS,gBAAgBz6H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGmS,gBAe5EzgI,EAAOutB,QAAQ+gG,GAAG2M,eAAiB,SAAUoG,GAKzC1hI,KAAKiqD,KAAOy3E,GAuBhBrhI,EAAOutB,QAAQ+gG,GAAGyQ,mBAAqB,SAAU3kH,EAAOgiH,EAAOC,EAAO7uH,EAAUkxH,EAAcC,EAAcC,GAEvFv1H,SAAbmE,IAA0BA,EAAW,KACpBnE,SAAjBq1H,IAA8BA,GAAgB,EAAG,IAChCr1H,SAAjBs1H,IAA8BA,GAAgB,EAAG,IACpCt1H,SAAbu1H,IAA0BA,EAAW9mH,OAAOC,WAKhDpY,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEb5M,EAAW4M,EAAMsgH,IAAIltH,GAErBkxH,GAAiBtkH,EAAMugH,KAAK+D,EAAa,IAAKtkH,EAAMugH,KAAK+D,EAAa,KACtEC,GAAiBvkH,EAAMugH,KAAKgE,EAAa,IAAKvkH,EAAMugH,KAAKgE,EAAa,IAEtE,IAAI7zH,IAAY0C,SAAUA,EAAUkxH,aAAcA,EAAcC,aAAcA,EAAcC,SAAUA,EAEtG1mH,IAAG6mH,mBAAmBt4H,KAAK9G,KAAMy8H,EAAOC,EAAOvxH,IAInD9K,EAAOutB,QAAQ+gG,GAAGyQ,mBAAmB/4H,UAAYkB,OAAOmZ,OAAOnI,GAAG6mH,mBAAmB/4H,WACrFhG,EAAOutB,QAAQ+gG,GAAGyQ,mBAAmB/4H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGyQ,mBAmB/E/+H,EAAOutB,QAAQ+gG,GAAG4Q,eAAiB,SAAU9kH,EAAOgiH,EAAOC,EAAOxuH,EAAOoxH,GAEvD51H,SAAVwE,IAAuBA,EAAQ,GACrBxE,SAAV41H,IAAuBA,EAAQ,GAKnCt/H,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,CAEb,IAAItP,IAAY+C,MAAOA,EAAOoxH,MAAOA,EAErC/mH,IAAGgnH,eAAez4H,KAAK9G,KAAMy8H,EAAOC,EAAOvxH,IAI/C9K,EAAOutB,QAAQ+gG,GAAG4Q,eAAel5H,UAAYkB,OAAOmZ,OAAOnI,GAAGgnH,eAAel5H,WAC7EhG,EAAOutB,QAAQ+gG,GAAG4Q,eAAel5H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAG4Q,eAoB3El/H,EAAOutB,QAAQ+gG,GAAGmR,eAAiB,SAAUrlH,EAAOgiH,EAAOC,EAAOtuH,EAAQF,EAAO+wH,GAE9Dv1H,SAAX0E,IAAwBA,GAAU,EAAG,IAC3B1E,SAAVwE,IAAuBA,EAAQ,GAClBxE,SAAbu1H,IAA0BA,EAAW9mH,OAAOC,WAKhDpY,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEbrM,GAAWqM,EAAMsgH,IAAI3sH,EAAO,IAAKqM,EAAMsgH,IAAI3sH,EAAO,IAElD,IAAIjD,IAAY2gI,aAAc19H,EAAQ29H,YAAa79H,EAAO+wH,SAAUA,EAEpE1mH,IAAGunH,eAAeh5H,KAAK9G,KAAMy8H,EAAOC,EAAOvxH,IAI/C9K,EAAOutB,QAAQ+gG,GAAGmR,eAAez5H,UAAYkB,OAAOmZ,OAAOnI,GAAGunH,eAAez5H,WAC7EhG,EAAOutB,QAAQ+gG,GAAGmR,eAAez5H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGmR,eAsB3Ez/H,EAAOutB,QAAQ+gG,GAAGwR,oBAAsB,SAAU1lH,EAAOgiH,EAAOC,EAAOsD,EAAcC,EAASC,EAAS3hF,EAAM0gF,GAEpFv1H,SAAjBs2H,IAA8BA,GAAe,GACjCt2H,SAAZu2H,IAAyBA,GAAW,EAAG,IAC3Bv2H,SAAZw2H,IAAyBA,GAAW,EAAG,IAC9Bx2H,SAAT60C,IAAsBA,GAAQ,EAAG,IACpB70C,SAAbu1H,IAA0BA,EAAW9mH,OAAOC,WAKhDpY,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEbwlH,GAAYxlH,EAAMugH,KAAKiF,EAAQ,IAAKxlH,EAAMugH,KAAKiF,EAAQ,KACvDC,GAAYzlH,EAAMugH,KAAKkF,EAAQ,IAAKzlH,EAAMugH,KAAKkF,EAAQ,IAEvD,IAAI/0H,IAAY4zH,aAAckB,EAASjB,aAAckB,EAAS8L,WAAYztF,EAAM0gF,SAAUA,EAAUgN,uBAAwBjM,EAE5HznH,IAAG4nH,oBAAoBr5H,KAAK9G,KAAMy8H,EAAOC,EAAOvxH,IAIpD9K,EAAOutB,QAAQ+gG,GAAGwR,oBAAoB95H,UAAYkB,OAAOmZ,OAAOnI,GAAG4nH,oBAAoB95H,WACvFhG,EAAOutB,QAAQ+gG,GAAGwR,oBAAoB95H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGwR,oBAsBhF9/H,EAAOutB,QAAQ+gG,GAAGiR,mBAAqB,SAAUnlH,EAAOgiH,EAAOgD,EAAQ/C,EAAOgD,EAAQT,EAAUU,GAE3Ej2H,SAAbu1H,IAA0BA,EAAW9mH,OAAOC,WAC7B1O,SAAfi2H,IAA4BA,EAAa,MAK7C3/H,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEbglH,GAAWhlH,EAAMugH,KAAKyE,EAAO,IAAKhlH,EAAMugH,KAAKyE,EAAO,KACpDC,GAAWjlH,EAAMugH,KAAK0E,EAAO,IAAKjlH,EAAMugH,KAAK0E,EAAO,KAEhDC,IAEAA,GAAellH,EAAMugH,KAAK2E,EAAW,IAAKllH,EAAMugH,KAAK2E,EAAW,KAGpE,IAAIx0H,IAAYw0H,WAAYA,EAAYuM,YAAazM,EAAQ0M,YAAazM,EAAQT,SAAUA,EAE5F1mH,IAAGqnH,mBAAmB94H,KAAK9G,KAAMy8H,EAAOC,EAAOvxH,IAInD9K,EAAOutB,QAAQ+gG,GAAGiR,mBAAmBv5H,UAAYkB,OAAOmZ,OAAOnI,GAAGqnH,mBAAmBv5H,WACrFhG,EAAOutB,QAAQ+gG,GAAGiR,mBAAmBv5H,UAAU8B,YAAc9H,EAAOutB,QAAQ+gG,GAAGiR,mBAe/E95H,KAAK8oD,QAAU,SAASpsB,EAAS4pG,EAAUC,EAAWvqC,EAAWD,EAAYsoB,GAEzErkH,KAAKwkB,uBAAuBxjB,KAAK9G,MAQjCA,KAAKwiC,QAAUA,EAGfxiC,KAAKssI,SAAWxqC,EAChB9hG,KAAKusI,SAAW1qC,EAChB7hG,KAAKwsI,QAAUJ,EACfpsI,KAAKysI,QAAUJ,EAGfrsI,KAAK+P,MAAQ/P,KAAKwsI,QAAUxsI,KAAKssI,SACjCtsI,KAAKgQ,OAAShQ,KAAKysI,QAAUzsI,KAAKusI,SAElCvsI,KAAKmqH,MAAQA,EAGbnqH,KAAK0sI,QAAU,KAOf1sI,KAAK2sI,UAAW,EAQhB3sI,KAAKynB,OAAQ,EASbznB,KAAKo8D,UAAYt2D,KAAKtB,WAAWC,OAUjCzE,KAAK4sI,iBAAmB,EAGxB,IAAIC,GAAWT,EAAWC,EAAYrsI,KAAK4sI,gBAG3C5sI,MAAKg4D,OAAS,GAAIlyD,MAAKyO,aAAcs4H,IAKzC/mI,KAAK8oD,QAAQvoD,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACnEP,KAAK8oD,QAAQvoD,UAAU8B,YAAcrC,KAAK8oD,QAG1C9oD,KAAK8oD,QAAQvoD,UAAUkY,OAAS,aAChCzY,KAAK8oD,QAAQvoD,UAAU+jB,WAAa,aAGpCtkB,KAAK8oD,QAAQvoD,UAAU2+D,aAAe,SAAUpN,IAGvC53D,KAAK6a,SAAW7a,KAAKqe,OAAS,IAMnCu5C,EAAcvG,YAAY/0B,OAErBt8B,KAAK8sI,eAEN9sI,KAAK+sI,WAAWn1E,GAGpBA,EAAcoW,cAAcW,UAAU/W,EAAcoW,cAAcg/D,eAElEhtI,KAAKitI,oBAAoBr1E,GAGzBA,EAAcvG,YAAY3gD,UAI9B5K,KAAK8oD,QAAQvoD,UAAU0mI,WAAa,SAAUn1E,GAE1C,GAAIoO,GAAKpO,EAAcoO,EAEvBhmE,MAAK8sI,cAAgB9mE,EAAGkN,eACxBlzE,KAAKktI,aAAelnE,EAAGkN,eACvBlzE,KAAKmtI,UAAYnnE,EAAGkN,eACpBlzE,KAAKotI,aAAepnE,EAAGkN,eAGvBlzE,KAAKqtI,eAAiBrnE,EAAGkN,eAGzBlN,EAAGsJ,WAAWtJ,EAAGuJ,aAAcvvE,KAAKqtI,gBACpCrnE,EAAGoN,WAAWpN,EAAGuJ,aAAcvvE,KAAKg4D,OAAQgO,EAAGqN,cAKnDvtE,KAAK8oD,QAAQvoD,UAAUinI,aAAe,SAAU11E,GAE5C,GAAI53D,KAAK0sI,QACT,CA6BI,IAAK,GANDa,GAAMC,EAAMC,EAAKC,EAtBjB1nE,EAAKpO,EAAcoO,GAGnB2nE,EAAgC,GAAlB3tI,KAAKwa,KAAKzK,MACxB69H,EAAiC,GAAnB5tI,KAAKwa,KAAKxK,OAGxB69H,EAAe,EAAM7tI,KAAKwiC,QAAQzyB,MAClC+9H,EAAe,EAAM9tI,KAAKwiC,QAAQxyB,OAGlC+9H,EAAU/tI,KAAKssI,SAAWuB,EAC1BG,EAAUhuI,KAAKusI,SAAWuB,EAG1BG,EAAQ,EAAMN,EACdO,EAAQ,EAAMN,EAEdO,EAAuB,GAAhBnuI,KAAKssI,SAAiBqB,EAC7BrmB,EAAuB,GAAhBtnH,KAAKusI,SAAiBqB,EAE7B51E,EAASh4D,KAAKg4D,OAId/oD,EAAI,EACJm/H,GAAa,EAERtmI,EAAI,EAAGsB,EAAIpJ,KAAK0sI,QAAQ7kI,OAAQC,EAAIsB,EAAGtB,IAChD,CAUI,GAAIH,GAAI3H,KAAK0sI,QAAQ5kI,EAErB,IAAKH,EAAL,CASA,GAAI1B,GAAI0B,EAAE0G,GAAK4/H,EAAQ,EACnBxhI,EAAI,EAAI9E,EAAE2G,GAAK4/H,EAEfG,EAAMpoI,EAAIkoI,EACVG,EAAM7hI,EAAI66G,EAEVmmB,EAAM9lI,EAAE8K,GAAKo7H,EACbH,EAAM/lI,EAAE+K,GAAKo7H,CAGbM,KAGAp2E,EAAQ/oD,GAAUs+H,EAClBv1E,EAAQ/oD,EAAI,GAAMu+H,EAElBx1E,EAAQ/oD,EAAI,GAAMo/H,EAClBr2E,EAAQ/oD,EAAI,GAAMq/H,EAElBt2E,EAAQ/oD,EAAI,GAAM+oD,EAAQ/oD,EAAI,GAAMw+H,EACpCz1E,EAAQ/oD,EAAI,GAAM+oD,EAAQ/oD,EAAI,GAAMy+H,EAGpCz+H,GAAK,EACLm/H,GAAa,GAIjBp2E,EAAQ/oD,GAAW+oD,EAAQ/oD,EAAK,GAAMo/H,EACtCr2E,EAAQ/oD,EAAK,GAAM+oD,EAAQ/oD,EAAK,GAAMq/H,EACtCt2E,EAAQ/oD,EAAK,GAAM+oD,EAAQ/oD,EAAK,IAAMs+H,EAAOtnI,EAAIkoI,EACjDn2E,EAAQ/oD,EAAK,GAAM+oD,EAAQ/oD,EAAK,IAAMu+H,EAAO/gI,EAAI66G,EAGjDtvD,EAAQ/oD,EAAK,GAAM+oD,EAAQ/oD,EAAK,GAAMw+H,EACtCz1E,EAAQ/oD,EAAK,GAAM+oD,EAAQ/oD,EAAK,IAAMy+H,EACtC11E,EAAQ/oD,EAAK,IAAM+oD,EAAQ/oD,EAAK,IAAMw+H,EAAMM,EAC5C/1E,EAAQ/oD,EAAK,GAAM+oD,EAAQ/oD,EAAK,IAAMy+H,EAAMM,EAG5C/+H,GAAK,OA9CDm/H,IAAa,EAkDrB,GAAIn/H,EAAI,EACR,CACI,GAAI8+D,GAASnW,EAAcoW,cAAcg/D,aAGzChnE,GAAGoN,WAAYpN,EAAGuJ,aAAcvX,EAAQgO,EAAGqN,aAG3CrN,EAAGwJ,oBAAqBzB,EAAOwgE,UAAW,EAAGvoE,EAAG0J,OAAO,EAAO,EAAG,GAGjE1J,EAAGwoE,WAAWxoE,EAAG8J,eAAgB,EAAG/pE,KAAKI,MAAM8I,EAAI,OAW/DnJ,KAAK8oD,QAAQvoD,UAAU4mI,oBAAsB,SAAUr1E,GAEnD,GAAIoO,GAAKpO,EAAcoO,GAEnB+H,EAASnW,EAAcoW,cAAcg/D,aAEzCp1E,GAAcyN,iBAAiBC,aAAatlE,KAAKo8D,WAMjD4J,EAAGgJ,UAAUjB,EAAO0gE,cAAe,GAAG,GAGtCzoE,EAAG8I,UAAUf,EAAO2gE,OAAQ1uI,KAAKqe,OAGjC2nD,EAAGgJ,UAAUjB,EAAO4gE,OAAQ3uI,KAAK4yC,WAAW3sC,EAAGjG,KAAK4yC,WAAWnmC,GAG/Du5D,EAAG4oE,cAAc5oE,EAAG6oE,UAGjB7uI,KAAKwiC,QAAQsQ,YAAYg8F,OAAO9oE,EAAGrxD,IAElCijD,EAAcngC,SAASuhD,cAAch5E,KAAKwiC,QAAQsQ,aAKlDkzB,EAAG+oE,YAAY/oE,EAAGgpE,WAAYhvI,KAAKwiC,QAAQsQ,YAAYw2D,YAAYtjC,EAAGrxD,KAI1EqxD,EAAGsJ,WAAWtJ,EAAGuJ,aAAcvvE,KAAKqtI,gBAGpCrtI,KAAKstI,aAAa11E,IAWtB9xD,KAAK8oD,QAAQvoD,UAAU4oI,gBAAkB,WAErCjvI,KAAKkvI,aAAc,GAWvBppI,KAAK8oD,QAAQvoD,UAAUiH,UAAY,SAAU8G,GAwBzC,IAAK,GAtBDqW,GAAiBrW,GAAUpU,KAAKyqB,eAEhChc,EAAIgc,EAAehc,EACnBI,EAAI4b,EAAe5b,EACnBI,EAAIwb,EAAexb,EACnBgF,EAAIwW,EAAexW,EACnBtC,EAAK8Y,EAAe9Y,GACpBC,EAAK6Y,EAAe7Y,GAEpB4+C,IAAQ6W,EAAAA,GACR5W,IAAQ4W,EAAAA,GAER/W,EAAO+W,EAAAA,EACP9W,EAAO8W,EAAAA,EAEPwN,GACA,EAAG,EACH70E,KAAKwsI,QAAUxsI,KAAKssI,SAAU,EAC9BtsI,KAAKwsI,QAAUxsI,KAAKssI,SAAUtsI,KAAKysI,QAAUzsI,KAAKusI,SAClD,EAAGvsI,KAAKysI,QAAUzsI,KAAKusI,UAGlBzkI,EAAI,EAAG8d,EAAIivD,EAAShtE,OAAQC,EAAI8d,EAAG9d,GAAK,EACjD,CACI,GAAIqnI,GAAOt6D,EAAS/sE,GAAIsnI,EAAOv6D,EAAS/sE,EAAI,GACxC7B,EAAKwI,EAAI0gI,EAASlgI,EAAImgI,EAAQz9H,EAC9BlF,EAAKwH,EAAIm7H,EAASvgI,EAAIsgI,EAAQv9H,CAElC0+C,GAAOrqD,EAAIqqD,EAAOrqD,EAAIqqD,EACtBC,EAAO9jD,EAAI8jD,EAAO9jD,EAAI8jD,EAEtBC,EAAOvqD,EAAIuqD,EAAOvqD,EAAIuqD,EACtBC,EAAOhkD,EAAIgkD,EAAOhkD,EAAIgkD,EAG1B,GAAIH,MAAU+W,EAAAA,IAAY5W,IAAS4W,EAAAA,EAE/B,MAAOvhE,MAAKuU,cAGhB,IAAIM,GAAS3a,KAAK2nD,OAWlB,OATAhtC,GAAO1U,EAAIqqD,EACX31C,EAAO5K,MAAQygD,EAAOF,EAEtB31C,EAAOlO,EAAI8jD,EACX51C,EAAO3K,OAASygD,EAAOF,EAGvBvwD,KAAKs3B,eAAiB3c,EAEfA,GA6BX7U,KAAKupI,cAAgB,SAAUrpE,GAO3BhmE,KAAKsvI,KAAOxpI,KAAKwpI,OAMjBtvI,KAAKgmE,GAAKA,EAOVhmE,KAAKuvI,QAAU,KAEfvvI,KAAKsnB,aACD,0BACA,qCACA,0BACA,4BACA,sBACA,mEACA,OAGJtnB,KAAKwvI,WACD,0BACA,gCACA,yBACA,8BACA,4BACA,sBACA,mCACA,gFACA,gCACA,OAQJxvI,KAAKyvI,aAAe,EAEpBzvI,KAAKsgB,QAGTxa,KAAKupI,cAAchpI,UAAU8B,YAAcrC,KAAKupI,cAOhDvpI,KAAKupI,cAAchpI,UAAUia,KAAO,WAEhC,GAAI0lD,GAAKhmE,KAAKgmE,GAEVupE,EAAUzpI,KAAK4pI,eAAe1pE,EAAIhmE,KAAKwvI,UAAWxvI,KAAKsnB,YAC3D0+C,GAAG2pE,WAAWJ,GAGdvvI,KAAKuuI,UAAYvoE,EAAG4pE,kBAAkBL,EAAS,aAC/CvvI,KAAK6vI,SAAW7pE,EAAG8pE,mBAAmBP,EAAS,iBAC/CvvI,KAAKyuI,cAAgBzoE,EAAG8pE,mBAAmBP,EAAS,iBACpDvvI,KAAK0uI,OAAS1oE,EAAG8pE,mBAAmBP,EAAS,UAC7CvvI,KAAK2uI,OAAS3oE,EAAG8pE,mBAAmBP,EAAS,UAE7CvvI,KAAKqiG,YAAcriG,KAAKuuI,WACxBvuI,KAAKqnB,UAAYrnB,KAAKyuI,cAAezuI,KAAK0uI,OAAQ1uI,KAAK2uI,OAAQ3uI,KAAK6vI,UAEpE7vI,KAAKuvI,QAAUA,GASnBzpI,KAAKupI,cAAchpI,UAAUyd,QAAU,WAEnC9jB,KAAKgmE,GAAG+pE,cAAc/vI,KAAKuvI,SAC3BvvI,KAAKgmE,GAAK,KAEVhmE,KAAKqnB,SAAW,KAChBrnB,KAAKqiG,WAAa,MAyBtBhiG,EAAO2vI,gBAAkB,SAAU5kI,EAAM6kI,EAAUlgI,EAAOC,EAAQixF,EAAQC,EAASjmB,IAEjEvxE,SAAVqG,GAAuBA,GAAS,KAAKA,EAAQ,KAClCrG,SAAXsG,GAAwBA,GAAU,KAAKA,EAAS,IACrCtG,SAAXu3F,IAAwBA,EAAS,GACrBv3F,SAAZw3F,IAAyBA,EAAU,GAMvClhG,KAAKoL,KAAOA,EAOZpL,KAAKiwI,SAAsB,EAAXA,EAOhBjwI,KAAKkwI,WAAqB,EAARngI,EAOlB/P,KAAKmwI,YAAuB,EAATngI,EASnBhQ,KAAKowI,YAAuB,EAATnvC,EAQnBjhG,KAAKqwI,aAAyB,EAAVnvC,EAMpBlhG,KAAKi7E,WAAaA,MAQlBj7E,KAAKmsG,UAQLnsG,KAAK60B,MAAQ,GAGjBx0B,EAAO2vI,gBAAgB3pI,WASnBiqI,mBAAoB,SAAUC,GAE1B,MACIA,IAAcvwI,KAAKiwI,UACnBM,EAAcvwI,KAAKiwI,SAAWjwI,KAAK60B,OAY3CglC,SAAU,SAAU22E,EAAKpnH,GAErBppB,KAAKmsG,OAAOv5F,MAAO49H,IAAKA,EAAKpnH,MAAOA,IACpCppB,KAAK60B,UAMbx0B,EAAO2vI,gBAAgB3pI,UAAU8B,YAAc9H,EAAO2vI,gBAoBtD3vI,EAAOowI,KAAO,SAAUtmB,EAAOx6F,EAAO1pB,EAAGwG,EAAGsD,EAAOC,GAK/ChQ,KAAKmqH,MAAQA,EAKbnqH,KAAK2vB,MAAQA,EAKb3vB,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK62B,SAAW,EAKhB72B,KAAK0wI,SAAU,EAKf1wI,KAAK+iH,OAAS98G,EAAI8J,EAKlB/P,KAAKgjH,OAASv2G,EAAIuD,EAKlBhQ,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAKdhQ,KAAKyY,QAAU1S,KAAKoJ,IAAIY,EAAQ,GAKhC/P,KAAK0Y,QAAU3S,KAAKoJ,IAAIa,EAAS,GAMjChQ,KAAKqe,MAAQ,EAKbre,KAAKi7E,cAKLj7E,KAAK2wI,SAAU,EAKf3wI,KAAKi5H,SAAU,EAKfj5H,KAAKk5H,YAAa,EAKlBl5H,KAAK+4H,UAAW,EAKhB/4H,KAAKg5H,WAAY,EAMjBh5H,KAAKs5H,aAAc,EAMnBt5H,KAAKq5H,cAAe,EAMpBr5H,KAAKy5H,WAAY,EAMjBz5H,KAAKw5H,aAAc,EAMnBx5H,KAAK64H,kBAAoB,KAMzB74H,KAAK84H,yBAA2B94H,MAIpCK,EAAOowI,KAAKpqI,WAUR0T,cAAe,SAAU9T,EAAGwG,GAExB,QAASxG,EAAIjG,KAAK+iH,QAAUt2G,EAAIzM,KAAKgjH,QAAU/8G,EAAIjG,KAAK4K,OAAS6B,EAAIzM,KAAK2O,SAa9EG,WAAY,SAAU7I,EAAGwG,EAAG7B,EAAO+D,GAE/B,QAAI/D,GAAS5K,KAAK+iH,YAKdp0G,GAAU3O,KAAKgjH,YAKf/8G,GAAKjG,KAAK+iH,OAAS/iH,KAAK+P,UAKxBtD,GAAKzM,KAAKgjH,OAAShjH,KAAKgQ,WAiBhC4gI,qBAAsB,SAAUt9G,EAAUjP,GAEtCrkB,KAAK64H,kBAAoBvlG,EACzBtzB,KAAK84H,yBAA2Bz0G,GASpCP,QAAS,WAEL9jB,KAAK64H,kBAAoB,KACzB74H,KAAK84H,yBAA2B,KAChC94H,KAAKi7E,WAAa,MAatB41D,aAAc,SAAUhmI,EAAMD,EAAOw1C,EAAIpV,GAErChrC,KAAKs5H,YAAczuH,EACnB7K,KAAKq5H,aAAezuH,EACpB5K,KAAKy5H,UAAYr5E,EACjBpgD,KAAKw5H,YAAcxuF,EAEnBhrC,KAAK+4H,SAAWluH,EAChB7K,KAAKg5H,UAAYpuH,EACjB5K,KAAKi5H,QAAU74E,EACfpgD,KAAKk5H,WAAaluF,GAStB8lG,eAAgB,WAEZ9wI,KAAKs5H,aAAc,EACnBt5H,KAAKq5H,cAAe,EACpBr5H,KAAKy5H,WAAY,EACjBz5H,KAAKw5H,aAAc,EAEnBx5H,KAAKi5H,SAAU,EACfj5H,KAAKk5H,YAAa,EAClBl5H,KAAK+4H,UAAW,EAChB/4H,KAAKg5H,WAAY,GAYrB+X,cAAe,SAAU9N,EAAU+N,GAE/B,MAAI/N,IAAY+N,EAGJhxI,KAAKs5H,aAAet5H,KAAKq5H,cAAgBr5H,KAAKy5H,WAAaz5H,KAAKw5H,aAAex5H,KAAKi5H,SAAWj5H,KAAKk5H,YAAcl5H,KAAK+4H,UAAY/4H,KAAKg5H,WAAah5H,KAAK64H,kBAE7JoK,EAGGjjI,KAAKs5H,aAAet5H,KAAKq5H,cAAgBr5H,KAAKy5H,WAAaz5H,KAAKw5H,cAEnEwX,IAGGhxI,KAAKi5H,SAAWj5H,KAAKk5H,YAAcl5H,KAAK+4H,UAAY/4H,KAAKg5H,YAazE1tH,KAAM,SAAUotH,GAEZ14H,KAAK2vB,MAAQ+oG,EAAK/oG,MAClB3vB,KAAKqe,MAAQq6G,EAAKr6G,MAClBre,KAAKi7E,WAAay9C,EAAKz9C,WAEvBj7E,KAAKy5H,UAAYf,EAAKe,UACtBz5H,KAAKw5H,YAAcd,EAAKc,YACxBx5H,KAAKs5H,YAAcZ,EAAKY,YACxBt5H,KAAKq5H,aAAeX,EAAKW,aAEzBr5H,KAAK64H,kBAAoBH,EAAKG,kBAC9B74H,KAAK84H,yBAA2BJ,EAAKI,2BAM7Cz4H,EAAOowI,KAAKpqI,UAAU8B,YAAc9H,EAAOowI,KAO3ClpI,OAAO2E,eAAe7L,EAAOowI,KAAKpqI,UAAW,YAEzC2F,IAAK,WACD,MAAQhM,MAAKs5H,aAAet5H,KAAKq5H,cAAgBr5H,KAAKy5H,WAAaz5H,KAAKw5H,eAUhFjyH,OAAO2E,eAAe7L,EAAOowI,KAAKpqI,UAAW,cAEzC2F,IAAK,WACD,MAAQhM,MAAKs5H,aAAet5H,KAAKq5H,cAAgBr5H,KAAKy5H,WAAaz5H,KAAKw5H,aAAex5H,KAAK64H,qBAUpGtxH,OAAO2E,eAAe7L,EAAOowI,KAAKpqI,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAK+iH,UAUpBx7G,OAAO2E,eAAe7L,EAAOowI,KAAKpqI,UAAW,SAEzC2F,IAAK,WACD,MAAOhM,MAAK+iH,OAAS/iH,KAAK+P,SAUlCxI,OAAO2E,eAAe7L,EAAOowI,KAAKpqI,UAAW,OAEzC2F,IAAK,WACD,MAAOhM,MAAKgjH,UAUpBz7G,OAAO2E,eAAe7L,EAAOowI,KAAKpqI,UAAW,UAEzC2F,IAAK,WACD,MAAOhM,MAAKgjH,OAAShjH,KAAKgQ,UA6BlC3P,EAAOuuD,QAAU,SAAUp0C,EAAMzO,EAAKunD,EAAWC,EAAYxjD,EAAOC,GAKhEhQ,KAAKwa,KAAOA,EAKZxa,KAAK+L,IAAMA,CAEX,IAAI22B,GAAOriC,EAAO4wI,cAAc/5H,MAAMlX,KAAKwa,KAAMzO,EAAKunD,EAAWC,EAAYxjD,EAAOC,EAEvE,QAAT0yB,IAQJ1iC,KAAK+P,MAAQ2yB,EAAK3yB,MAKlB/P,KAAKgQ,OAAS0yB,EAAK1yB,OAKnBhQ,KAAKszD,UAAY5wB,EAAK4wB,UAKtBtzD,KAAKuzD,WAAa7wB,EAAK6wB,WAKvBvzD,KAAKw+G,YAAc97E,EAAK87E,YAKxBx+G,KAAKqkG,OAAS3hE,EAAK2hE,OAKnBrkG,KAAKkxI,QAAUxuG,EAAKwuG,QAKpBlxI,KAAKi7E,WAAav4C,EAAKu4C,WAKvBj7E,KAAKmxI,cAAgBzuG,EAAKyuG,cAK1BnxI,KAAKoxI,eAAiB1uG,EAAK0uG,eAK3BpxI,KAAKiqH,OAASvnF,EAAKunF,OAKnBjqH,KAAKqxI,SAAW3uG,EAAK2uG,SAKrBrxI,KAAKsxI,cAAgB,KAKrBtxI,KAAKuxI,iBAAmB7uG,EAAK6uG,iBAK7BvxI,KAAKwxI,MAAQ9uG,EAAK8uG,MAKlBxxI,KAAK+wF,QAAUruD,EAAKquD,QAKpB/wF,KAAKyxI,kBAKLzxI,KAAK2iI,UAAYjgG,EAAKigG,UAKtB3iI,KAAKmsG,OAASzpE,EAAKypE,OAKnBnsG,KAAK0xI,aAAe,EAKpB1xI,KAAK2xI,YAML3xI,KAAK4kI,YAML5kI,KAAK4xI,OAAS,EAMd5xI,KAAKm5D,OAAS,IAQlB94D,EAAOuuD,QAAQk+C,IAAM,EAMrBzsG,EAAOuuD,QAAQm+C,WAAa,EAM5B1sG,EAAOuuD,QAAQijF,MAAQ,EAMvBxxI,EAAOuuD,QAAQkjF,KAAO,EAMtBzxI,EAAOuuD,QAAQmjF,MAAQ,EAMvB1xI,EAAOuuD,QAAQojF,KAAO,EAEtB3xI,EAAOuuD,QAAQvoD,WAcXqa,OAAQ,SAAUtV,EAAM2E,EAAOC,EAAQsjD,EAAWC,EAAY/8B,GAW1D,MATc9sB,UAAV8sB,IAAuBA,EAAQx2B,KAAKwa,KAAKC,OAE7Cza,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAKiyI,YAAY3+E,EAAWC,GAE5BvzD,KAAKiqH,OAAOpiH,OAAS,EAEd7H,KAAKkyI,iBAAiB9mI,EAAM2E,EAAOC,EAAQsjD,EAAWC,EAAY/8B,IAW7Ey7G,YAAa,SAAU3+E,EAAWC,GAE9BvzD,KAAKszD,UAAYA,EACjBtzD,KAAKuzD,WAAaA,EAClBvzD,KAAKmxI,cAAgBnxI,KAAK+P,MAAQujD,EAClCtzD,KAAKoxI,eAAiBpxI,KAAKgQ,OAASujD,GAoBxC4+E,gBAAiB,SAAUC,EAASrmI,EAAKunD,EAAWC,EAAY8+E,EAAYC,EAAa9B,GAErF,GAAgB9mI,SAAZ0oI,EAAyB,MAAO,KAClB1oI,UAAd4pD,IAA2BA,EAAYtzD,KAAKszD,WAC7B5pD,SAAf6pD,IAA4BA,EAAavzD,KAAKuzD,YAC/B7pD,SAAf2oI,IAA4BA,EAAa,GACzB3oI,SAAhB4oI,IAA6BA,EAAc,GACnC5oI,SAAR8mI,IAAqBA,EAAM,GAGb,IAAdl9E,IAEAA,EAAY,IAGG,IAAfC,IAEAA,EAAa,GAGjB,IAAIvE,GAAM,IAOV,IALYtlD,SAARqC,GAA6B,OAARA,IAErBA,EAAMqmI,GAGNrmI,YAAe1L,GAAOiuD,WAEtBU,EAAMjjD,EAAIuf,WAGd,CACI,IAAKtrB,KAAKwa,KAAKsF,MAAMu9D,cAActxE,GAG/B,MADA3D,SAAQG,KAAK,6DAA+DwD,EAAM,KAC3E,IAGXijD,GAAMhvD,KAAKwa,KAAKsF,MAAMmvC,SAASljD,GAGnC,GAAIyvE,GAAMx7E,KAAKuyI,gBAAgBH,EAE/B,IAAY,OAAR52D,GAAgBx7E,KAAKqkG,SAAWhkG,EAAOuuD,QAAQm+C,WAG/C,MADA3kG,SAAQG,KAAK,yFAA2F6pI,EAAU,KAC3G,IAGX,IAAIpyI,KAAKqxI,SAAS71D,GAiBd,MAfAx7E,MAAKqxI,SAAS71D,GAAKg3D,SAASxjF,GAerBhvD,KAAKqxI,SAAS71D,EAIrB,IAAIi3D,GAAS,GAAIpyI,GAAOqyI,QAAQN,EAAS5B,EAAKl9E,EAAWC,EAAY8+E,EAAYC,KAEjFG,GAAOD,SAASxjF,GAEhBhvD,KAAKqxI,SAASz+H,KAAK6/H,EAUnB,KAAK,GARD3qI,GAAI9H,KAAKqxI,SAASxpI,OAAS,EAC3B5B,EAAIosI,EACJ5lI,EAAI4lI,EAEJr2G,EAAQ,EACR22G,EAAS,EACTC,EAAS,EAEJjrI,EAAI6oI,EAAK7oI,EAAI6oI,EAAMiC,EAAO59G,QAE/B70B,KAAKwxI,MAAM7pI,IAAM1B,EAAGwG,EAAG3E,GAEvB7B,GAAKqtD,EAAYg/E,EAEjBt2G,IAEIA,IAAUy2G,EAAO59G,SAKrB89G,IAEIA,IAAWF,EAAOvhH,UAElBjrB,EAAIosI,EACJ5lI,GAAK8mD,EAAa++E,EAElBK,EAAS,EACTC,IAEIA,IAAWH,EAAOxhH,OAvBYtpB,KAyC1C,MAAO8qI,IAyBfI,kBAAmB,SAAUznI,EAAMolI,EAAKzkI,EAAK4kB,EAAOnG,EAAQg9B,EAAUhxB,EAAOs8G,EAAaC,GAQtF,GANerpI,SAAX8gB,IAAwBA,GAAS,GACpB9gB,SAAb89C,IAA0BA,GAAW,GAC3B99C,SAAV8sB,IAAuBA,EAAQx2B,KAAKwa,KAAKC,OACzB/Q,SAAhBopI,IAA6BA,EAAczyI,EAAO+tB,QACtC1kB,SAAZqpI,IAAyBA,GAAU,IAElC/yI,KAAK+wF,QAAQ3lF,GAGd,WADAhD,SAAQG,KAAK,8DAAgE6C,EAIjF,KAAK,GAAItD,GAAI,EAAGA,EAAI9H,KAAK+wF,QAAQ3lF,GAAMvD,OAAQC,IAC/C,CACI,GAAIkrI,IAAQ,EACRjqI,EAAM/I,KAAK+wF,QAAQ3lF,GAAMtD,EAe7B,IAbgB4B,SAAZX,EAAIynI,KAAoC,gBAARA,IAAoBznI,EAAIynI,MAAQA,EAEhEwC,GAAQ,EAEQtpI,SAAXX,EAAI4L,IAAmC,gBAAR67H,IAAoBznI,EAAI4L,KAAO67H,EAEnEwC,GAAQ,EAEUtpI,SAAbX,EAAIqC,MAAqC,gBAARolI,IAAoBznI,EAAIqC,OAASolI,IAEvEwC,GAAQ,GAGRA,EACJ,CACI,GAAI57G,GAAS,GAAI07G,GAAY9yI,KAAKwa,KAAMihE,WAAW1yE,EAAI9C,EAAG,IAAKw1E,WAAW1yE,EAAI0D,EAAG,IAAKV,EAAK4kB,EAE3FyG,GAAOhsB,KAAOrC,EAAIqC,KAClBgsB,EAAOvc,QAAU9R,EAAI8R,QACrBuc,EAAOowB,SAAWA,EAClBpwB,EAAO5M,OAASA,EAEZzhB,EAAIgH,QAEJqnB,EAAOrnB,MAAQhH,EAAIgH,OAGnBhH,EAAIiH,SAEJonB,EAAOpnB,OAASjH,EAAIiH,QAGpBjH,EAAI8tB,WAEJO,EAAOlpB,MAAQnF,EAAI8tB,UAGnBk8G,IAEA37G,EAAO3qB,GAAK2qB,EAAOpnB,QAGvBwmB,EAAM3kB,IAAIulB,EAEV,KAAK,GAAIpE,KAAYjqB,GAAIkyE,WAErBzkD,EAAMvqB,IAAImrB,EAAQpE,EAAUjqB,EAAIkyE,WAAWjoD,IAAW,GAAO,EAAO,GAAG,MAsBvFigH,gBAAiB,SAAUzB,EAAO0B,EAAcnnI,EAAKo+G,EAAO3zF,EAAOykD,GAE1C,gBAAVu2D,KAAsBA,GAASA,IAErB9nI,SAAjBwpI,GAA+C,OAAjBA,EAE9BA,KAE6B,gBAAjBA,KAEZA,GAAgBA,IAGpB/oB,EAAQnqH,KAAK8iI,SAAS3Y,GAERzgH,SAAV8sB,IAAuBA,EAAQx2B,KAAKwa,KAAKC,OAC1B/Q,SAAfuxE,IAA4BA,MAEDvxE,SAA3BuxE,EAAWk4D,cAEXl4D,EAAWk4D,YAAc9yI,EAAO+tB,QAGT1kB,SAAvBuxE,EAAW83D,UAEX93D,EAAW83D,SAAU,EAGzB,IAAIzI,GAAKtqI,KAAKiqH,OAAOE,GAAOp6G,MACxBqjI,EAAKpzI,KAAKiqH,OAAOE,GAAOn6G,MAI5B,IAFAhQ,KAAKsL,KAAK,EAAG,EAAGg/H,EAAI8I,EAAIjpB,GAEpBnqH,KAAK4kI,SAAS/8H,OAAS,EAEvB,MAAO,EAMX,KAAK,GAFDuvB,GADAvC,EAAQ,EAGH/sB,EAAI,EAAGF,EAAM5H,KAAK4kI,SAAS/8H,OAAQC,EAAIF,EAAKE,IAEjD,GAAI0pI,EAAMlhH,QAAQtwB,KAAK4kI,SAAS98H,GAAG6nB,UAAW,EAC9C,CACIyH,EAAS,GAAI6jD,GAAWk4D,YAAYnzI,KAAKwa,KAAMxa,KAAK4kI,SAAS98H,GAAGi7G,OAAQ/iH,KAAK4kI,SAAS98H,GAAGk7G,OAAQj3G,EAEjG,KAAK,GAAIinB,KAAYioD,GAEjB7jD,EAAOpE,GAAYioD,EAAWjoD,EAGlCwD,GAAM3kB,IAAIulB,GACVvC,IAKR,GAA4B,IAAxBq+G,EAAarrI,OAGb,IAAKC,EAAI,EAAGA,EAAI0pI,EAAM3pI,OAAQC,IAE1B9H,KAAK4L,QAAQ4lI,EAAM1pI,GAAIorI,EAAa,GAAI,EAAG,EAAG5I,EAAI8I,EAAIjpB,OAGzD,IAAI+oB,EAAarrI,OAAS,EAG3B,IAAKC,EAAI,EAAGA,EAAI0pI,EAAM3pI,OAAQC,IAE1B9H,KAAK4L,QAAQ4lI,EAAM1pI,GAAIorI,EAAaprI,GAAI,EAAG,EAAGwiI,EAAI8I,EAAIjpB,EAI9D,OAAOt1F,IAiBXw+G,YAAa,SAAUlpB,EAAOp6G,EAAOC,EAAQwmB,GAI3B9sB,SAAVqG,IAAuBA,EAAQ/P,KAAKwa,KAAKzK,OAC9BrG,SAAXsG,IAAwBA,EAAShQ,KAAKwa,KAAKxK,QACjCtG,SAAV8sB,IAAuBA,EAAQx2B,KAAKwa,KAAKC,MAE7C,IAAIkV,GAAQw6F,CAOZ,IALqB,gBAAVA,KAEPx6F,EAAQ3vB,KAAKszI,cAAcnpB,IAGjB,OAAVx6F,GAAkBA,EAAQ3vB,KAAKiqH,OAAOpiH,OAGtC,WADAO,SAAQG,KAAK,gDAAkDonB,EAKnE,KAAK,GAAI7nB,GAAI,EAAGsB,EAAIpJ,KAAKqxI,SAASxpI,OAAQC,EAAIsB,EAAGtB,IACjD,CACI,GAAIyrI,GAAKvzI,KAAKqxI,SAASvpI,GACnB0rI,EAAKxzI,KAAKiqH,OAAOt6F,EACrB3vB,MAAKyzI,oBAAqB,YAAc3rI,EAAEN,WAAY+rI,EAAIC,EAAGzjI,MAAOyjI,EAAGxjI,OAAQujI,EAAGjgF,UAAWigF,EAAGhgF,WAAY/8B,GAGhH,MAAKx2B,MAAKwa,KAAK4J,aAAe/jB,EAAOK,MAG1B81B,EAAM3kB,IAAI,GAAIxR,GAAOqzI,eAAe1zI,KAAKwa,KAAMxa,KAAM2vB,EAAO5f,EAAOC,IAGvEwmB,EAAM3kB,IAAI,GAAIxR,GAAOwuD,aAAa7uD,KAAKwa,KAAMxa,KAAM2vB,EAAO5f,EAAOC,KA0B5EyjI,oBAAqB,SAAUroI,EAAMgnI,EAASriI,EAAOC,EAAQsjD,EAAWC,EAAY/8B,GAIhF,GAFc9sB,SAAV8sB,IAAuBA,EAAQx2B,KAAKwa,KAAKC,OAEZ,OAA7Bza,KAAKszI,cAAcloI,GAGnB,WADAhD,SAAQG,KAAK,oEA2BjB,KAAK,GAHD44F,GApBAgpB,GAEA/+G,KAAMA,EACNnF,EAAG,EACHwG,EAAG,EACHsD,MAAOA,EACPC,OAAQA,EACRmhI,cAAephI,EAAQujD,EACvB89E,eAAgBphI,EAASujD,EACzBl1C,MAAO,EACPxD,SAAS,EACTogE,cACA04D,WACAt8F,aACA+mF,UACA17F,KAAM,KACN0vG,QAASA,GAKTrkI,KAEKtB,EAAI,EAAGA,EAAIuD,EAAQvD,IAC5B,CACI00F,IACA,KAAK,GAAIl7F,GAAI,EAAGA,EAAI8J,EAAO9J,IAC3B,CAEI,GAAIyyH,GAAO14H,KAAKiqH,OAAO,GAAGvnF,KAAKj2B,GAAGxG,GAE9B2tI,EAAW5zI,KAAKwxI,MAAM9Y,EAAK/oG,QAAU3vB,KAAKwxI,MAAM9Y,EAAK/oG,OAAO,GAC5D4jH,EAAKvzI,KAAKqxI,SAASuC,EAElBL,IAAMnB,GAGPjxC,EAAIvuF,KAAM8lH,GAEV14H,KAAKiqH,OAAO,GAAGvnF,KAAKj2B,GAAGxG,GAAK,GAAI5F,GAAOowI,KAAKtmB,IAAO,GAAIlkH,EAAGwG,EAAG6mD,EAAWC,IAKxE4tC,EAAIvuF,KAAK,GAAIvS,GAAOowI,KAAKtmB,IAAO,GAAIlkH,EAAGwG,EAAG6mD,EAAWC,IAI7DxlD,EAAO6E,KAAKuuF,GAGhBgpB,EAAMznF,KAAO30B,EAEb/N,KAAKiqH,OAAOr3G,KAAKu3G,EAEjB,IAAI7sG,GAAI6sG,EAAMgnB,cACV5zH,EAAI4sG,EAAMinB,cAEV9zH,GAAItd,KAAKwa,KAAKzK,QAEduN,EAAItd,KAAKwa,KAAKzK,OAGdwN,EAAIvd,KAAKwa,KAAKxK,SAEduN,EAAIvd,KAAKwa,KAAKxK,OAGlB,IAAIjC,EAWJ,OARIA,GAFC/N,KAAKwa,KAAK4J,aAAe/jB,EAAOK,MAExB,GAAIL,GAAOqzI,eAAe1zI,KAAKwa,KAAMxa,KAAMA,KAAKiqH,OAAOpiH,OAAS,EAAGyV,EAAGC,GAItE,GAAIld,GAAOwuD,aAAa7uD,KAAKwa,KAAMxa,KAAMA,KAAKiqH,OAAOpiH,OAAS,EAAGyV,EAAGC,GAEjFxP,EAAO3C,KAAOA,EAEPorB,EAAM3kB,IAAI9D,IAgBrBmkI,iBAAkB,SAAU9mI,EAAM2E,EAAOC,EAAQsjD,EAAWC,EAAY/8B,GAIpE,GAFc9sB,SAAV8sB,IAAuBA,EAAQx2B,KAAKwa,KAAKC,OAEZ,OAA7Bza,KAAKszI,cAAcloI,GAGnB,WADAhD,SAAQG,KAAK,oEA0BjB,KAAK,GAHD44F,GAnBAgpB,GAEA/+G,KAAMA,EACNnF,EAAG,EACHwG,EAAG,EACHsD,MAAOA,EACPC,OAAQA,EACRmhI,cAAephI,EAAQujD,EACvB89E,eAAgBphI,EAASujD,EACzBl1C,MAAO,EACPxD,SAAS,EACTogE,cACA04D,WACAt8F,aACA+mF,UACA17F,KAAM,MAKN30B,KAEKtB,EAAI,EAAGA,EAAIuD,EAAQvD,IAC5B,CACI00F,IAEA,KAAK,GAAIl7F,GAAI,EAAGA,EAAI8J,EAAO9J,IAGvBk7F,EAAIvuF,KAAK,GAAIvS,GAAOowI,KAAKtmB,IAAO,GAAIlkH,EAAGwG,EAAG6mD,EAAWC,GAGzDxlD,GAAO6E,KAAKuuF,GAGhBgpB,EAAMznF,KAAO30B,EAEb/N,KAAKiqH,OAAOr3G,KAAKu3G,GAEjBnqH,KAAK0xI,aAAe1xI,KAAKiqH,OAAOpiH,OAAS,CAEzC,IAAIyV,GAAI6sG,EAAMgnB,cACV5zH,EAAI4sG,EAAMinB,cAEV9zH,GAAItd,KAAKwa,KAAKzK,QAEduN,EAAItd,KAAKwa,KAAKzK,OAGdwN,EAAIvd,KAAKwa,KAAKxK,SAEduN,EAAIvd,KAAKwa,KAAKxK,OAGlB,IAAIjC,EAWJ,OARIA,GAFC/N,KAAKwa,KAAK4J,aAAe/jB,EAAOK,MAExB,GAAIL,GAAOqzI,eAAe1zI,KAAKwa,KAAMxa,KAAMA,KAAKiqH,OAAOpiH,OAAS,EAAGyV,EAAGC,GAItE,GAAIld,GAAOwuD,aAAa7uD,KAAKwa,KAAMxa,KAAMA,KAAKiqH,OAAOpiH,OAAS,EAAGyV,EAAGC,GAEjFxP,EAAO3C,KAAOA,EAEPorB,EAAM3kB,IAAI9D,IAarB+jB,SAAU,SAAU4/D,EAAUtmF,GAE1B,IAAK,GAAItD,GAAI,EAAGA,EAAI4pF,EAAS7pF,OAAQC,IAEjC,GAAI4pF,EAAS5pF,GAAGsD,OAASA,EAErB,MAAOtD,EAIf,OAAO,OAWXwrI,cAAe,SAAUloI,GAErB,MAAOpL,MAAK8xB,SAAS9xB,KAAKiqH,OAAQ7+G,IAWtCmnI,gBAAiB,SAAUnnI,GAEvB,MAAOpL,MAAK8xB,SAAS9xB,KAAKqxI,SAAUjmI,IAWxCyoI,cAAe,SAAUzoI,GAErB,MAAOpL,MAAK8xB,SAAS9xB,KAAKmsG,OAAQ/gG,IAetC0oI,qBAAsB,SAAUH,EAASrgH,EAAUvQ,EAAiBonG,GAIhE,GAFAA,EAAQnqH,KAAK8iI,SAAS3Y,GAEC,gBAAZwpB,GAIP3zI,KAAKiqH,OAAOE,GAAO9yE,UAAUs8F,IAAargH,SAAUA,EAAUvQ,gBAAiBA,OAI/E,KAAK,GAAIjb,GAAI,EAAGF,EAAM+rI,EAAQ9rI,OAAQC,EAAIF,EAAKE,IAE3C9H,KAAKiqH,OAAOE,GAAO9yE,UAAUs8F,EAAQ7rI,KAAQwrB,SAAUA,EAAUvQ,gBAAiBA,IAoB9FgxH,wBAAyB,SAAU9tI,EAAGwG,EAAGsD,EAAOC,EAAQsjB,EAAUvQ,EAAiBonG,GAM/E,GAJAA,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBnqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,KAE3BnqH,KAAK4kI,SAAS/8H,OAAS,GAK3B,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK4kI,SAAS/8H,OAAQC,IAEtC9H,KAAK4kI,SAAS98H,GAAG8oI,qBAAqBt9G,EAAUvQ,IAexD8tH,aAAc,SAAU8C,EAAS1Q,EAAU9Y,EAAO6pB,GAO9C,GALiBtqI,SAAbu5H,IAA0BA,GAAW,GACrBv5H,SAAhBsqI,IAA6BA,GAAc,GAE/C7pB,EAAQnqH,KAAK8iI,SAAS3Y,GAEC,gBAAZwpB,GAEP,MAAO3zI,MAAKi0I,oBAAoBN,EAAS1Q,EAAU9Y,GAAO,EAEzD,IAAI3jH,MAAMa,QAAQssI,GACvB,CAEI,IAAK,GAAI7rI,GAAI,EAAGA,EAAI6rI,EAAQ9rI,OAAQC,IAEhC9H,KAAKi0I,oBAAoBN,EAAQ7rI,GAAIm7H,EAAU9Y,GAAO,EAGtD6pB,IAGAh0I,KAAKk0I,eAAe/pB,KAkBhCgqB,oBAAqB,SAAUzjI,EAAO4rB,EAAM2mG,EAAU9Y,EAAO6pB,GAOzD,GALiBtqI,SAAbu5H,IAA0BA,GAAW,GACrBv5H,SAAhBsqI,IAA6BA,GAAc,GAE/C7pB,EAAQnqH,KAAK8iI,SAAS3Y,KAElBz5G,EAAQ4rB,GAAZ,CAKA,IAAK,GAAI3M,GAAQjf,EAAOif,GAAS2M,EAAM3M,IAEnC3vB,KAAKi0I,oBAAoBtkH,EAAOszG,EAAU9Y,GAAO,EAGjD6pB,IAGAh0I,KAAKk0I,eAAe/pB,KAe5BiqB,wBAAyB,SAAUT,EAAS1Q,EAAU9Y,EAAO6pB,GAExCtqI,SAAbu5H,IAA0BA,GAAW,GACrBv5H,SAAhBsqI,IAA6BA,GAAc,GAE/C7pB,EAAQnqH,KAAK8iI,SAAS3Y,EAGtB,KAAK,GAAIriH,GAAI,EAAGF,EAAM5H,KAAKwxI,MAAM3pI,OAAQC,EAAIF,EAAKE,IAE1C6rI,EAAQrjH,QAAQxoB,MAAO,GAEvB9H,KAAKi0I,oBAAoBnsI,EAAGm7H,EAAU9Y,GAAO,EAIjD6pB,IAGAh0I,KAAKk0I,eAAe/pB,IAgB5B8pB,oBAAqB,SAAUtkH,EAAOszG,EAAU9Y,EAAO6pB,GAMnD,GAJiBtqI,SAAbu5H,IAA0BA,GAAW,GAC3Bv5H,SAAVygH,IAAuBA,EAAQnqH,KAAK0xI,cACpBhoI,SAAhBsqI,IAA6BA,GAAc,GAE3C/Q,EAEAjjI,KAAKyxI,eAAe7+H,KAAK+c,OAG7B,CACI,GAAI7nB,GAAI9H,KAAKyxI,eAAenhH,QAAQX,EAEhC7nB,IAAI,GAEJ9H,KAAKyxI,eAAetuH,OAAOrb,EAAG,GAItC,IAAK,GAAI2E,GAAI,EAAGA,EAAIzM,KAAKiqH,OAAOE,GAAOn6G,OAAQvD,IAE3C,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKiqH,OAAOE,GAAOp6G,MAAO9J,IAC9C,CACI,GAAIyyH,GAAO14H,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAElCyyH,IAAQA,EAAK/oG,QAAUA,IAEnBszG,EAEAvK,EAAKmY,cAAa,GAAM,GAAM,GAAM,GAIpCnY,EAAKoY,iBAGTpY,EAAKO,QAAUgK,EACfvK,EAAKQ,WAAa+J,EAClBvK,EAAKK,SAAWkK,EAChBvK,EAAKM,UAAYiK,GAW7B,MANI+Q,IAGAh0I,KAAKk0I,eAAe/pB,GAGjBA,GAYX2Y,SAAU,SAAU3Y,GAmBhB,MAjBczgH,UAAVygH,EAEAA,EAAQnqH,KAAK0xI,aAES,gBAAVvnB,GAEZA,EAAQnqH,KAAKszI,cAAcnpB,GAEtBA,YAAiB9pH,GAAOwuD,aAE7Bs7D,EAAQA,EAAMx6F,MAETw6F,YAAiB9pH,GAAOqzI,iBAE7BvpB,EAAQA,EAAMx6F,OAGXw6F,GAWXkqB,sBAAuB,SAAU9qI,GAQ7B,GANIA,KAAU,GAAQvJ,KAAKs0I,yBAA0B,IAEjDt0I,KAAKs0I,uBAAwB,EAC7Bt0I,KAAKu0I,sBAGLhrI,KAAU,GAASvJ,KAAKs0I,yBAA0B,EACtD,CACIt0I,KAAKs0I,uBAAwB,CAE7B,KAAK,GAAIxsI,KAAK9H,MAAKu0I,kBAEfv0I,KAAKk0I,eAAepsI,EAGxB9H,MAAKu0I,mBAAoB,IAYjCL,eAAgB,SAAU/pB,GAEtB,GAAInqH,KAAKs0I,sBAGL,YADAt0I,KAAKu0I,kBAAkBpqB,IAAS,EASpC,KAAK,GALDqqB,GAAQ,KACRC,EAAQ,KACR5pI,EAAO,KACPD,EAAQ,KAEH6B,EAAI,EAAG8Q,EAAIvd,KAAKiqH,OAAOE,GAAOn6G,OAAQvD,EAAI8Q,EAAG9Q,IAElD,IAAK,GAAIxG,GAAI,EAAGqX,EAAItd,KAAKiqH,OAAOE,GAAOp6G,MAAO9J,EAAIqX,EAAGrX,IACrD,CACI,GAAIyyH,GAAO14H,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAElCyyH,KAEA8b,EAAQx0I,KAAK00I,aAAavqB,EAAOlkH,EAAGwG,GACpCgoI,EAAQz0I,KAAK20I,aAAaxqB,EAAOlkH,EAAGwG,GACpC5B,EAAO7K,KAAK40I,YAAYzqB,EAAOlkH,EAAGwG,GAClC7B,EAAQ5K,KAAKkjI,aAAa/Y,EAAOlkH,EAAGwG,GAEhCisH,EAAKuK,WAELvK,EAAKO,SAAU,EACfP,EAAKQ,YAAa,EAClBR,EAAKK,UAAW,EAChBL,EAAKM,WAAY,GAGjBwb,GAASA,EAAMvR,WAGfvK,EAAKO,SAAU,GAGfwb,GAASA,EAAMxR,WAGfvK,EAAKQ,YAAa,GAGlBruH,GAAQA,EAAKo4H,WAGbvK,EAAKK,UAAW,GAGhBnuH,GAASA,EAAMq4H,WAGfvK,EAAKM,WAAY,MAiBrC0b,aAAc,SAAUvqB,EAAOlkH,EAAGwG,GAE9B,MAAIA,GAAI,EAEGzM,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,EAAI,GAAGxG,GAGnC,MAaX0uI,aAAc,SAAUxqB,EAAOlkH,EAAGwG,GAE9B,MAAIA,GAAIzM,KAAKiqH,OAAOE,GAAOn6G,OAAS,EAEzBhQ,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,EAAI,GAAGxG,GAGnC,MAaX2uI,YAAa,SAAUzqB,EAAOlkH,EAAGwG,GAE7B,MAAIxG,GAAI,EAEGjG,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAAI,GAGnC,MAaXi9H,aAAc,SAAU/Y,EAAOlkH,EAAGwG,GAE9B,MAAIxG,GAAIjG,KAAKiqH,OAAOE,GAAOp6G,MAAQ,EAExB/P,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAAI,GAGnC,MAUX4uI,SAAU,SAAU1qB,GAEhBA,EAAQnqH,KAAK8iI,SAAS3Y,GAElBnqH,KAAKiqH,OAAOE,KAEZnqH,KAAK0xI,aAAevnB,IAc5B2qB,QAAS,SAAU7uI,EAAGwG,EAAG09G,GAGrB,MADAA,GAAQnqH,KAAK8iI,SAAS3Y,GACazgH,SAA/B1J,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,IAAsD/C,SAAlC1J,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,IAGnEjG,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAG0pB,OAAQ,GAYlDolH,WAAY,SAAU9uI,EAAGwG,EAAG09G,GAIxB,GAFAA,EAAQnqH,KAAK8iI,SAAS3Y,GAElBlkH,GAAK,GAAKA,EAAIjG,KAAKiqH,OAAOE,GAAOp6G,OAAStD,GAAK,GAAKA,EAAIzM,KAAKiqH,OAAOE,GAAOn6G,QAEvEhQ,KAAK80I,QAAQ7uI,EAAGwG,EAAG09G,GACvB,CACI,GAAIuO,GAAO14H,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAQtC,OANAjG,MAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAK,GAAI5F,GAAOowI,KAAKzwI,KAAKiqH,OAAOE,KAAQ,GAAIlkH,EAAGwG,EAAGzM,KAAKszD,UAAWtzD,KAAKuzD,YAEnGvzD,KAAKiqH,OAAOE,GAAO1iG,OAAQ,EAE3BznB,KAAKk0I,eAAe/pB,GAEbuO,IAiBnBsc,kBAAmB,SAAU/uI,EAAGwG,EAAG6mD,EAAWC,EAAY42D,GAOtD,MALAA,GAAQnqH,KAAK8iI,SAAS3Y,GAEtBlkH,EAAIjG,KAAKwa,KAAK0E,KAAK0tE,YAAY3mF,EAAGqtD,GAAaA,EAC/C7mD,EAAIzM,KAAKwa,KAAK0E,KAAK0tE,YAAYngF,EAAG8mD,GAAcA,EAEzCvzD,KAAK+0I,WAAW9uI,EAAGwG,EAAG09G,IAejC8qB,QAAS,SAAUvc,EAAMzyH,EAAGwG,EAAG09G,GAE3B,GAAa,OAATuO,EAEA,MAAO14H,MAAK+0I,WAAW9uI,EAAGwG,EAAG09G,EAKjC,IAFAA,EAAQnqH,KAAK8iI,SAAS3Y,GAElBlkH,GAAK,GAAKA,EAAIjG,KAAKiqH,OAAOE,GAAOp6G,OAAStD,GAAK,GAAKA,EAAIzM,KAAKiqH,OAAOE,GAAOn6G,OAC/E,CACI,GAAI2f,EA0CJ,OAxCI+oG,aAAgBr4H,GAAOowI,MAEvB9gH,EAAQ+oG,EAAK/oG,MAET3vB,KAAK80I,QAAQ7uI,EAAGwG,EAAG09G,GAEnBnqH,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAGqF,KAAKotH,GAInC14H,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAK,GAAI5F,GAAOowI,KAAKtmB,EAAOx6F,EAAO1pB,EAAGwG,EAAGisH,EAAK3oH,MAAO2oH,EAAK1oH,UAKzF2f,EAAQ+oG,EAEJ14H,KAAK80I,QAAQ7uI,EAAGwG,EAAG09G,GAEnBnqH,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAG0pB,MAAQA,EAItC3vB,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAK,GAAI5F,GAAOowI,KAAKzwI,KAAKiqH,OAAOE,GAAQx6F,EAAO1pB,EAAGwG,EAAGzM,KAAKszD,UAAWtzD,KAAKuzD,aAI1GvzD,KAAKyxI,eAAenhH,QAAQX,IAAS,EAErC3vB,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAG4qI,cAAa,GAAM,GAAM,GAAM,GAI7D7wI,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAG6qI,iBAGlC9wI,KAAKiqH,OAAOE,GAAO1iG,OAAQ,EAE3BznB,KAAKk0I,eAAe/pB,GAEbnqH,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAGtC,MAAO,OAgBXivI,eAAgB,SAAUxc,EAAMzyH,EAAGwG,EAAG6mD,EAAWC,EAAY42D,GAOzD,MALAA,GAAQnqH,KAAK8iI,SAAS3Y,GAEtBlkH,EAAIjG,KAAKwa,KAAK0E,KAAK0tE,YAAY3mF,EAAGqtD,GAAaA,EAC/C7mD,EAAIzM,KAAKwa,KAAK0E,KAAK0tE,YAAYngF,EAAG8mD,GAAcA,EAEzCvzD,KAAKi1I,QAAQvc,EAAMzyH,EAAGwG,EAAG09G,IAiBpCgrB,gBAAiB,SAAUxlH,EAAOylH,EAAMxsI,EAASuhH,GAEhCzgH,SAAT0rI,IAAsBA,EAAO,GACjB1rI,SAAZd,IAAyBA,GAAU,GAEvCuhH,EAAQnqH,KAAK8iI,SAAS3Y,EAEtB,IAAIl7G,GAAI,CAER,IAAIrG,GAEA,IAAK,GAAI6D,GAAIzM,KAAKiqH,OAAOE,GAAOn6G,OAAS,EAAGvD,GAAK,EAAGA,IAEhD,IAAK,GAAIxG,GAAIjG,KAAKiqH,OAAOE,GAAOp6G,MAAQ,EAAG9J,GAAK,EAAGA,IAE/C,GAAIjG,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAG0pB,QAAUA,EAC5C,CACI,GAAI1gB,IAAMmmI,EAEN,MAAOp1I,MAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAIlCgJ,UAQhB,KAAK,GAAIxC,GAAI,EAAGA,EAAIzM,KAAKiqH,OAAOE,GAAOn6G,OAAQvD,IAE3C,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKiqH,OAAOE,GAAOp6G,MAAO9J,IAE1C,GAAIjG,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAG0pB,QAAUA,EAC5C,CACI,GAAI1gB,IAAMmmI,EAEN,MAAOp1I,MAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,EAIlCgJ,KAOpB,MAAO,OAcXomI,QAAS,SAAUpvI,EAAGwG,EAAG09G,EAAOmrB,GAM5B,MAJgB5rI,UAAZ4rI,IAAyBA,GAAU,GAEvCnrB,EAAQnqH,KAAK8iI,SAAS3Y,GAElBlkH,GAAK,GAAKA,EAAIjG,KAAKiqH,OAAOE,GAAOp6G,OAAStD,GAAK,GAAKA,EAAIzM,KAAKiqH,OAAOE,GAAOn6G,OAEvEhQ,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAAG0pB,SAAU,EAEpC2lH,EAEOt1I,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAI3B,KAKJjG,KAAKiqH,OAAOE,GAAOznF,KAAKj2B,GAAGxG,GAK/B,MAiBfsvI,eAAgB,SAAUtvI,EAAGwG,EAAG6mD,EAAWC,EAAY42D,EAAOmrB,GAU1D,MARkB5rI,UAAd4pD,IAA2BA,EAAYtzD,KAAKszD,WAC7B5pD,SAAf6pD,IAA4BA,EAAavzD,KAAKuzD,YAElD42D,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBlkH,EAAIjG,KAAKwa,KAAK0E,KAAK0tE,YAAY3mF,EAAGqtD,GAAaA,EAC/C7mD,EAAIzM,KAAKwa,KAAK0E,KAAK0tE,YAAYngF,EAAG8mD,GAAcA,EAEzCvzD,KAAKq1I,QAAQpvI,EAAGwG,EAAG09G,EAAOmrB,IAerChqI,KAAM,SAAUrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAIjC,GAFAA,EAAQnqH,KAAK8iI,SAAS3Y,IAEjBnqH,KAAKiqH,OAAOE,GAGb,YADAnqH,KAAK4kI,SAAS/8H,OAAS,EAIjB6B,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAKiqH,OAAOE,GAAOp6G,OACvCrG,SAAXsG,IAAwBA,EAAShQ,KAAKiqH,OAAOE,GAAOn6G,QAEpD/J,EAAI,IAEJA,EAAI,GAGJwG,EAAI,IAEJA,EAAI,GAGJsD,EAAQ/P,KAAKiqH,OAAOE,GAAOp6G,QAE3BA,EAAQ/P,KAAKiqH,OAAOE,GAAOp6G,OAG3BC,EAAShQ,KAAKiqH,OAAOE,GAAOn6G,SAE5BA,EAAShQ,KAAKiqH,OAAOE,GAAOn6G,QAGhChQ,KAAK4kI,SAAS/8H,OAAS,EAEvB7H,KAAK4kI,SAAShyH,MAAO3M,EAAGA,EAAGwG,EAAGA,EAAGsD,MAAOA,EAAOC,OAAQA,EAAQm6G,MAAOA,GAEtE,KAAK,GAAIv4G,GAAKnF,EAAGmF,EAAKnF,EAAIuD,EAAQ4B,IAE9B,IAAK,GAAID,GAAK1L,EAAG0L,EAAK1L,EAAI8J,EAAO4B,IAE7B3R,KAAK4kI,SAAShyH,KAAK5S,KAAKiqH,OAAOE,GAAOznF,KAAK9wB,GAAID,GAIvD,OAAO3R,MAAK4kI,UAahB4Q,MAAO,SAAUvvI,EAAGwG,EAAGgpI,EAAWtrB,GAO9B,GALUzgH,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GAE3B09G,EAAQnqH,KAAK8iI,SAAS3Y,GAEjBsrB,KAAaA,EAAU5tI,OAAS,GAArC,CASA,IAAK,GAHDo4E,GAAQh6E,EAAIwvI,EAAU,GAAGxvI,EACzBi6E,EAAQzzE,EAAIgpI,EAAU,GAAGhpI,EAEpB3E,EAAI,EAAGA,EAAI2tI,EAAU5tI,OAAQC,IAElC9H,KAAKiqH,OAAOE,GAAOznF,KAAMw9C,EAAQu1D,EAAU3tI,GAAG2E,GAAKwzE,EAAQw1D,EAAU3tI,GAAG7B,GAAIqF,KAAKmqI,EAAU3tI,GAGrG9H,MAAKiqH,OAAOE,GAAO1iG,OAAQ,EACrBznB,KAAKk0I,eAAe/pB,KAgBxB14F,KAAM,SAAUikH,EAAOC,EAAO1vI,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAE/CA,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBnqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAE3BnqH,KAAK4kI,SAAS/8H,OAAS,IAK3B7H,KAAK4xI,OAAS8D,EACd11I,KAAKm5D,OAASw8E,EAEd31I,KAAK4kI,SAASn9H,QAAQzH,KAAK41I,YAAa51I,MAExCA,KAAKw1I,MAAMvvI,EAAGwG,EAAGzM,KAAK4kI,SAAUza,KAWpCyrB,YAAa,SAAUrsI,GAEfA,EAAMomB,QAAU3vB,KAAK4xI,OAGrBroI,EAAMomB,MAAQ3vB,KAAKm5D,OAEd5vD,EAAMomB,QAAU3vB,KAAKm5D,SAG1B5vD,EAAMomB,MAAQ3vB,KAAK4xI,SAiB3BnqI,QAAS,SAAU6rB,EAAUjP,EAASpe,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAEvDA,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBnqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAE3BnqH,KAAK4kI,SAAS/8H,OAAS,IAK3B7H,KAAK4kI,SAASn9H,QAAQ6rB,EAAUjP,GAEhCrkB,KAAKw1I,MAAMvvI,EAAGwG,EAAGzM,KAAK4kI,SAAUza,KAgBpCv+G,QAAS,SAAU8B,EAAQE,EAAM3H,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAMlD,GAJAA,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBnqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,KAE3BnqH,KAAK4kI,SAAS/8H,OAAS,GAA3B,CAKA,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK4kI,SAAS/8H,OAAQC,IAElC9H,KAAK4kI,SAAS98H,GAAG6nB,QAAUjiB,IAE3B1N,KAAK4kI,SAAS98H,GAAG6nB,MAAQ/hB,EAIjC5N,MAAKw1I,MAAMvvI,EAAGwG,EAAGzM,KAAK4kI,SAAUza,KAcpCxgH,OAAQ,SAAU1D,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAMnC,GAJAA,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBnqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,KAE3BnqH,KAAK4kI,SAAS/8H,OAAS,GAA3B,CAOA,IAAK,GAFD8rI,MAEKhsI,EAAI,EAAGA,EAAI3H,KAAK4kI,SAAS/8H,OAAQF,IAEtC,GAAI3H,KAAK4kI,SAASj9H,GAAGgoB,MACrB,CACI,GAAI6rD,GAAMx7E,KAAK4kI,SAASj9H,GAAGgoB,KAEvBgkH,GAAQrjH,QAAQkrD,MAAS,GAEzBm4D,EAAQ/gI,KAAK4oE,GAKzB,IAAK,GAAI1zE,GAAI,EAAGA,EAAI9H,KAAK4kI,SAAS/8H,OAAQC,IAEtC9H,KAAK4kI,SAAS98H,GAAG6nB,MAAQ3vB,KAAKwa,KAAKsE,IAAIsX,KAAKu9G,EAGhD3zI,MAAKw1I,MAAMvvI,EAAGwG,EAAGzM,KAAK4kI,SAAUza,KAcpCvD,QAAS,SAAU3gH,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAMpC,GAJAA,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBnqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,KAE3BnqH,KAAK4kI,SAAS/8H,OAAS,GAA3B,CAOA,IAAK,GAFD8rI,MAEKhsI,EAAI,EAAGA,EAAI3H,KAAK4kI,SAAS/8H,OAAQF,IAElC3H,KAAK4kI,SAASj9H,GAAGgoB,OAEjBgkH,EAAQ/gI,KAAK5S,KAAK4kI,SAASj9H,GAAGgoB,MAItCtvB,GAAOy1B,WAAW8wF,QAAQ+sB,EAE1B,KAAK,GAAI7rI,GAAI,EAAGA,EAAI9H,KAAK4kI,SAAS/8H,OAAQC,IAEtC9H,KAAK4kI,SAAS98H,GAAG6nB,MAAQgkH,EAAQ7rI,EAAI,EAGzC9H,MAAKw1I,MAAMvvI,EAAGwG,EAAGzM,KAAK4kI,SAAUza,KAepCxnF,KAAM,SAAUhT,EAAO1pB,EAAGwG,EAAGsD,EAAOC,EAAQm6G,GAMxC,GAJAA,EAAQnqH,KAAK8iI,SAAS3Y,GAEtBnqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQm6G,KAE3BnqH,KAAK4kI,SAAS/8H,OAAS,GAA3B,CAKA,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK4kI,SAAS/8H,OAAQC,IAEtC9H,KAAK4kI,SAAS98H,GAAG6nB,MAAQA,CAG7B3vB,MAAKw1I,MAAMvvI,EAAGwG,EAAGzM,KAAK4kI,SAAUza,KASpC0rB,gBAAiB,WAEb71I,KAAKiqH,OAAOpiH,OAAS,EACrB7H,KAAK0xI,aAAe,GASxBoE,KAAM,WAKF,IAAK,GAHDC,GAAM,GACNpvI,GAAQ,IAEH8F,EAAI,EAAGA,EAAIzM,KAAKiqH,OAAOjqH,KAAK0xI,cAAc1hI,OAAQvD,IAC3D,CACI,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKiqH,OAAOjqH,KAAK0xI,cAAc3hI,MAAO9J,IAEtD8vI,GAAO,OAEH/1I,KAAKiqH,OAAOjqH,KAAK0xI,cAAchvG,KAAKj2B,GAAGxG,GAAK,EAExCjG,KAAK2xI,SAAS3xI,KAAKiqH,OAAOjqH,KAAK0xI,cAAchvG,KAAKj2B,GAAGxG,IAErDU,EAAKiM,KAAK,eAAiB5S,KAAK2xI,SAAS3xI,KAAKiqH,OAAOjqH,KAAK0xI,cAAchvG,KAAKj2B,GAAGxG,KAIhFU,EAAKiM,KAAK,uBAKdjM,EAAKiM,KAAK,2BAIlBmjI,IAAO,KAGXpvI,EAAK,GAAKovI,EACV3tI,QAAQC,IAAIpB,MAAMmB,QAASzB,IAU/Bmd,QAAS,WAEL9jB,KAAK61I,kBACL71I,KAAK0iC,QACL1iC,KAAKwa,KAAO,OAMpBna,EAAOuuD,QAAQvoD,UAAU8B,YAAc9H,EAAOuuD,QAM9CrnD,OAAO2E,eAAe7L,EAAOuuD,QAAQvoD,UAAW,SAE5C2F,IAAK,WAED,MAAOhM,MAAKiqH,OAAOjqH,KAAK0xI,eAI5BzlI,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAK0xI,cAEf1xI,KAAK60I,SAAStrI,MA6B1BlJ,EAAOwuD,aAAe,SAAUr0C,EAAM64C,EAAS1jC,EAAO5f,EAAOC,GAEzDD,GAAS,EACTC,GAAU,EAEV3P,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAM,EAAG,GAQlCxa,KAAK0iI,IAAMrvE,EAQXrzD,KAAK2vB,MAAQA,EAQb3vB,KAAKmqH,MAAQ92D,EAAQ42D,OAAOt6F,GAO5B3vB,KAAKsrB,OAASxlB,KAAK66B,WAAWjgB,OAAO1gB,KAAM+P,EAAOC,GAOlDhQ,KAAKqkB,QAAUrkB,KAAKsrB,OAAOsV,WAAW,MAEtC5gC,KAAKquD,WAAW,GAAIvoD,MAAKgpD,QAAQ,GAAIhpD,MAAKoyD,YAAYl4D,KAAKsrB,UAS3DtrB,KAAKkI,KAAO7H,EAAOsB,aAMnB3B,KAAK+tB,YAAc1tB,EAAOsB,aAe1B3B,KAAKg2I,gBACDC,mBAAmB,EACnBC,cAAe,GACfC,WAAY,MAShBn2I,KAAK6jB,OAAQ,EAKb7jB,KAAKwqB,QAAS,EAkBdxqB,KAAKo2I,eAEDC,iBAAkB,mBAClBC,qBAAsB,oBAEtBC,iBAAiB,EAEjBC,WAAY,GACZC,iBAAkB,kBAClBC,sBAAuB,qBAU3B12I,KAAK22I,cAAgB,EAQrB32I,KAAK42I,cAAgB,EAOrB52I,KAAKynB,OAAQ,EAObznB,KAAK62I,YAAc,EAOnB72I,KAAK82I,OAAQ,EAOb92I,KAAK+2I,KAGD7xB,QAAS,EACTF,QAAS,EACTgyB,YAAa,EACbC,aAAc,EAEd3jF,UAAWD,EAAQC,UACnBC,WAAYF,EAAQE,WAKpBlK,GAAIgK,EAAQC,UACZhK,GAAI+J,EAAQE,WAGZ89E,aASJrxI,KAAKk3I,SAAW,EAOhBl3I,KAAKm3I,SAAW,EAOhBn3I,KAAK4kI,YAEApqH,EAAKkS,OAAOu1D,oBAEbjiF,KAAKg2I,eAAeG,WAAa91I,EAAOwuD,aAAauoF,0BAGzDp3I,KAAK+uB,eAAgB,GAIzB1uB,EAAOwuD,aAAaxoD,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WAC5DhG,EAAOwuD,aAAaxoD,UAAU8B,YAAc9H,EAAOwuD,aAEnDxuD,EAAOwuD,aAAaxoD,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UAQpE3c,EAAOwuD,aAAawoF,iBAAmB,KAWvCh3I,EAAOwuD,aAAauoF,uBAAyB,WAOzC,MALKp3I,MAAKq3I,mBAENr3I,KAAKq3I,iBAAmBh3I,EAAOkrB,OAAO7K,OAAO,EAAG,IAG7C1gB,KAAKq3I,kBAShBh3I,EAAOwuD,aAAaxoD,UAAU2W,UAAY,WAEtC,MAAOhd,MAAKo0D,iBAUhB/zD,EAAOwuD,aAAaxoD,UAAU+jB,WAAa,WAEnCpqB,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,GAG/FzM,KAAKk3I,SAAWl3I,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAK22I,cAAgB32I,KAAK6U,MAAM5O,EAC1EjG,KAAKm3I,SAAWn3I,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAK42I,cAAgB52I,KAAK6U,MAAMpI,GAW9EpM,EAAOwuD,aAAaxoD,UAAUigE,cAAgB,SAAU1O,GAEhD53D,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,GAG/FzM,KAAKk3I,SAAWl3I,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAK22I,cAAgB32I,KAAK6U,MAAM5O,EAC1EjG,KAAKm3I,SAAWn3I,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAK42I,cAAgB52I,KAAK6U,MAAMpI,EAE1EzM,KAAK4gB,SAEL9a,KAAKsoB,OAAO/nB,UAAUigE,cAAcx/D,KAAK9G,KAAM43D,IAWnDv3D,EAAOwuD,aAAaxoD,UAAU2+D,aAAe,SAAUpN,GAE/C53D,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,GAG/FzM,KAAKk3I,SAAWl3I,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAK22I,cAAgB32I,KAAK6U,MAAM5O,EAC1EjG,KAAKm3I,SAAWn3I,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAK42I,cAAgB52I,KAAK6U,MAAMpI,EAE1EzM,KAAK4gB,SAEL9a,KAAKsoB,OAAO/nB,UAAU2+D,aAAal+D,KAAK9G,KAAM43D,IASlDv3D,EAAOwuD,aAAaxoD,UAAUyd,QAAU,WAEpChe,KAAK66B,WAAW7d,OAAO9iB,MAEvBK,EAAOymD,UAAU2C,QAAQpjD,UAAUyd,QAAQhd,KAAK9G,OAiBpDK,EAAOwuD,aAAaxoD,UAAUyS,OAAS,SAAU/I,EAAOC,GAEpDhQ,KAAKsrB,OAAOvb,MAAQA,EACpB/P,KAAKsrB,OAAOtb,OAASA,EAErBhQ,KAAKwiC,QAAQ7R,MAAM7X,OAAO/I,EAAOC,GAEjChQ,KAAKwiC,QAAQzyB,MAAQA,EACrB/P,KAAKwiC,QAAQxyB,OAASA,EAEtBhQ,KAAKwiC,QAAQwQ,KAAKjjC,MAAQA,EAC1B/P,KAAKwiC,QAAQwQ,KAAKhjC,OAASA,EAE3BhQ,KAAKwiC,QAAQsQ,YAAY/iC,MAAQA,EACjC/P,KAAKwiC,QAAQsQ,YAAY9iC,OAASA,EAElChQ,KAAKwiC,QAAQsQ,YAAYrrB,QACzBznB,KAAKwiC,QAAQ80G,gBAAiB,EAE9Bt3I,KAAKwiC,QAAQ+mB,aAEbvpD,KAAKynB,OAAQ,GAUjBpnB,EAAOwuD,aAAaxoD,UAAUkxI,YAAc,WAExCv3I,KAAKwa,KAAKC,MAAM0c,UAAU,EAAG,EAAGn3B,KAAKmqH,MAAMgnB,cAAgBnxI,KAAK6U,MAAM5O,EAAGjG,KAAKmqH,MAAMinB,eAAiBpxI,KAAK6U,MAAMpI,IAYpHpM,EAAOwuD,aAAaxoD,UAAUmxI,MAAQ,SAAUvxI,GAE5C,MAA2B,KAAvBjG,KAAK22I,eAA+C,IAAvB32I,KAAK22I,eAA2C,IAApB32I,KAAKuZ,SAAStT,EAEhEA,EAIgB,IAAvBjG,KAAK22I,eAA2C,IAApB32I,KAAKuZ,SAAStT,EAEnCA,EAAIjG,KAAKuZ,SAAStT,EAGtBjG,KAAKk3I,UAAYjxI,EAAKjG,KAAKk3I,SAAWl3I,KAAK22I,gBAYtDt2I,EAAOwuD,aAAaxoD,UAAUoxI,QAAU,SAAUxxI,GAE9C,MAA2B,KAAvBjG,KAAK22I,cAEE1wI,EAGHjG,KAAKk3I,SAAWl3I,KAAK22I,eAAkB1wI,EAAIjG,KAAKk3I,WAY5D72I,EAAOwuD,aAAaxoD,UAAUqxI,MAAQ,SAAUjrI,GAE5C,MAA2B,KAAvBzM,KAAK42I,eAA+C,IAAvB52I,KAAK42I,eAA2C,IAApB52I,KAAKuZ,SAAS9M,EAEhEA,EAIgB,IAAvBzM,KAAK42I,eAA2C,IAApB52I,KAAKuZ,SAAS9M,EAEnCA,EAAIzM,KAAKuZ,SAAS9M,EAGtBzM,KAAKm3I,UAAY1qI,EAAKzM,KAAKm3I,SAAWn3I,KAAK42I,gBAYtDv2I,EAAOwuD,aAAaxoD,UAAUsxI,QAAU,SAAUlrI,GAE9C,MAA2B,KAAvBzM,KAAK42I,cAEEnqI,EAGHzM,KAAKm3I,SAAWn3I,KAAK42I,eAAkBnqI,EAAIzM,KAAKm3I,WAY5D92I,EAAOwuD,aAAaxoD,UAAUuxI,SAAW,SAAU3xI,GAG/C,MAAOF,MAAKI,MAAMnG,KAAKw3I,MAAMvxI,GAAKjG,KAAK+2I,IAAIzjF,YAY/CjzD,EAAOwuD,aAAaxoD,UAAUwxI,SAAW,SAAUprI,GAG/C,MAAO1G,MAAKI,MAAMnG,KAAK03I,MAAMjrI,GAAKzM,KAAK+2I,IAAIxjF,aAc/ClzD,EAAOwuD,aAAaxoD,UAAUyxI,UAAY,SAAU7xI,EAAGwG,EAAG+B,GAKtD,MAHAA,GAAMvI,EAAIjG,KAAK43I,SAAS3xI,GACxBuI,EAAM/B,EAAIzM,KAAK63I,SAASprI,GAEjB+B,GAeXnO,EAAOwuD,aAAaxoD,UAAU0xI,gBAAkB,SAAU3mI,EAAMmB,EAAU0wH,EAAU+U,GAE3EzlI,IAAYA,EAAWvS,KAAK62I,aAChBntI,SAAbu5H,IAA0BA,GAAW,GACjBv5H,SAApBsuI,IAAiCA,GAAkB,EAGvD,IAAIxG,GAAQxxI,KAAKw4H,SAASpnH,EAAKnL,EAAGmL,EAAK3E,EAAG2E,EAAKrB,MAAOqB,EAAKpB,OAAQizH,EAAU+U,EAE7E,IAAqB,IAAjBxG,EAAM3pI,OAEN,QAOJ,KAAK,GAHD09G,GAASn0G,EAAKkB,kBAAkBC,GAChCC,KAEK1K,EAAI,EAAGA,EAAI0pI,EAAM3pI,OAAQC,IAE9B,IAAK,GAAIH,GAAI,EAAGA,EAAI49G,EAAO19G,OAAQF,IACnC,CACI,GAAI+wH,GAAO8Y,EAAM1pI,GACbmwI,EAAQ1yB,EAAO59G,EACnB,IAAI+wH,EAAK3+G,cAAck+H,EAAM,GAAIA,EAAM,IACvC,CACIzlI,EAAQI,KAAK8lH,EACb,QAKZ,MAAOlmH,IAiBXnS,EAAOwuD,aAAaxoD,UAAUmyH,SAAW,SAAUvyH,EAAGwG,EAAGsD,EAAOC,EAAQizH,EAAU+U,GAG7DtuI,SAAbu5H,IAA0BA,GAAW,GACjBv5H,SAApBsuI,IAAiCA,GAAkB,EAEvD,IAAIE,KAAajV,GAAY+U,EAG7B/xI,GAAIjG,KAAKw3I,MAAMvxI,GACfwG,EAAIzM,KAAK03I,MAAMjrI,EASf,KANA,GAAIkF,GAAK5L,KAAKI,MAAMF,GAAKjG,KAAK+2I,IAAI1tF,GAAKrpD,KAAK6U,MAAM5O,IAC9C2L,EAAK7L,KAAKI,MAAMsG,GAAKzM,KAAK+2I,IAAIztF,GAAKtpD,KAAK6U,MAAMpI,IAE9C0rI,EAAKpyI,KAAKG,MAAMD,EAAI8J,IAAU/P,KAAK+2I,IAAI1tF,GAAKrpD,KAAK6U,MAAM5O,IAAM0L,EAC7DymI,EAAKryI,KAAKG,MAAMuG,EAAIuD,IAAWhQ,KAAK+2I,IAAIztF,GAAKtpD,KAAK6U,MAAMpI,IAAMmF,EAE3D5R,KAAK4kI,SAAS/8H,QAEjB7H,KAAK4kI,SAASz7H,KAGlB,KAAK,GAAIkvI,GAAKzmI,EAAIymI,EAAKzmI,EAAKwmI,EAAIC,IAE5B,IAAK,GAAIC,GAAK3mI,EAAI2mI,EAAK3mI,EAAKwmI,EAAIG,IAChC,CACI,GAAIn3C,GAAMnhG,KAAKmqH,MAAMznF,KAAK21G,EAEtBl3C,IAAOA,EAAIm3C,KAEPJ,GAAY/2C,EAAIm3C,GAAIvH,cAAc9N,EAAU+U,KAE5Ch4I,KAAK4kI,SAAShyH,KAAKuuF,EAAIm3C,IAMvC,MAAOt4I,MAAK4kI,SAASr+H,SAazBlG,EAAOwuD,aAAaxoD,UAAUkyI,eAAiB,SAAUC,GAErD,GAAInH,GAAWrxI,KAAK+2I,IAAI1F,QAGxB,IAAImH,EAAY,IAEZ,KAAOnH,EAASxpI,OAAS2wI,GAErBnH,EAASz+H,KAAKlJ,OAItB,IAAIkqI,GAAW5zI,KAAK0iI,IAAI8O,MAAMgH,IAAcx4I,KAAK0iI,IAAI8O,MAAMgH,GAAW,EAEtE,IAAgB,MAAZ5E,EACJ,CACI,GAAIxB,GAAUpyI,KAAK0iI,IAAI2O,SAASuC,EAEhC,IAAIxB,GAAWA,EAAQqG,kBAAkBD,GAErC,MAAQnH,GAASmH,GAAapG,EAItC,MAAQf,GAASmH,GAAa,MAYlCn4I,EAAOwuD,aAAaxoD,UAAUqyI,kBAAoB,WAI9C,IAFA,GAAIrH,GAAWrxI,KAAK+2I,IAAI1F,SAEjBA,EAASxpI,QAEZwpI,EAASloI,OAYjB9I,EAAOwuD,aAAaxoD,UAAUsyI,SAAW,SAAUC,EAAQC,GAEvDD,EAASA,GAAU,EACnBC,EAASA,GAAUD,CAEnB,KAAK,GAAInsI,GAAI,EAAGA,EAAIzM,KAAKmqH,MAAMznF,KAAK76B,OAAQ4E,IAIxC,IAAK,GAFD00F,GAAMnhG,KAAKmqH,MAAMznF,KAAKj2B,GAEjBxG,EAAI,EAAGA,EAAIk7F,EAAIt5F,OAAQ5B,IAChC,CACI,GAAIyyH,GAAOv3B,EAAIl7F,EAEfyyH,GAAK3oH,MAAQ/P,KAAK0iI,IAAIpvE,UAAYslF,EAClClgB,EAAK1oH,OAAShQ,KAAK0iI,IAAInvE,WAAaslF,EAEpCngB,EAAK3V,OAAS2V,EAAKzyH,EAAIyyH,EAAK3oH,MAC5B2oH,EAAK1V,OAAS0V,EAAKjsH,EAAIisH,EAAK1oH,OAIpChQ,KAAK6U,MAAMrH,MAAMorI,EAAQC,IAe7Bx4I,EAAOwuD,aAAaxoD,UAAUyyI,YAAc,SAAUz0H,EAASpe,EAAGwG,GAE9D,GAAI6e,GAASjH,EAAQiH,OACjBytH,EAAQztH,EAAOvb,MAAQhK,KAAKoJ,IAAIlJ,GAChC+yI,EAAQ1tH,EAAOtb,OAASjK,KAAKoJ,IAAI1C,GAGjC4B,EAAK,EACLC,EAAK,EACLmE,EAAKxM,EACLyM,EAAKjG,CAELxG,GAAI,IAEJoI,GAAMpI,EACNwM,EAAK,GAGLhG,EAAI,IAEJ6B,GAAM7B,EACNiG,EAAK,EAGT,IAAIyjI,GAAan2I,KAAKg2I,eAAeG,UAErC,IAAIA,EACJ,EAGQA,EAAWpmI,MAAQgpI,GAAS5C,EAAWnmI,OAASgpI,KAEhD7C,EAAWpmI,MAAQgpI,EACnB5C,EAAWnmI,OAASgpI,EAGxB,IAAIC,GAAc9C,EAAWv1G,WAAW,KACxCq4G,GAAY9lG,UAAU,EAAG,EAAG4lG,EAAOC,GACnCC,EAAY7lG,UAAU9nB,EAAQjd,EAAIC,EAAIyqI,EAAOC,EAAO,EAAG,EAAGD,EAAOC,GAEjE30H,EAAQ8uB,UAAU1gC,EAAIC,EAAIqmI,EAAOC,GACjC30H,EAAQ+uB,UAAU+iG,EAAY,EAAG,EAAG4C,EAAOC,EAAOvmI,EAAIC,EAAIqmI,EAAOC,OAMjE30H,GAAQC,OACRD,EAAQm8C,yBAA2B,OACnCn8C,EAAQ+uB,UAAU9nB,EAAQjd,EAAIC,EAAIyqI,EAAOC,EAAOvmI,EAAIC,EAAIqmI,EAAOC,GAC/D30H,EAAQG,WAkBhBnkB,EAAOwuD,aAAaxoD,UAAU6yI,aAAe,SAAUh0B,EAASF,EAASn6G,EAAM6D,EAAK9D,EAAO+D,GAEvF,GAAI0V,GAAUrkB,KAAKqkB,QAEftU,EAAQ/P,KAAKmqH,MAAMp6G,MACnBC,EAAShQ,KAAKmqH,MAAMn6G,OACpBmoI,EAAKn4I,KAAK+2I,IAAIzjF,UACd8kF,EAAKp4I,KAAK+2I,IAAIxjF,WAEd89E,EAAWrxI,KAAK+2I,IAAI1F,SACpB8H,EAAY/xB,GAEXpnH,MAAK82I,QAEFjsI,GAAQD,IAERC,EAAO9E,KAAKoM,IAAI,EAAGtH,GACnBD,EAAQ7E,KAAKkM,IAAIlC,EAAQ,EAAGnF,IAE5B8D,GAAOC,IAEPD,EAAM3I,KAAKoM,IAAI,EAAGzD,GAClBC,EAAS5I,KAAKkM,IAAIjC,EAAS,EAAGrB;AAKtC,GAUIgD,GAAIC,EAAI3L,EAAGwG,EAAG2sI,EAAMC,EAVpBC,EAASzuI,EAAOstI,EAAMjzB,EACtBq0B,EAAS7qI,EAAM0pI,EAAMpzB,EAGrBw0B,GAAc3uI,GAAS,GAAK,IAAMkF,GAAUA,EAC5C0pI,GAAc/qI,GAAQ,GAAK,IAAMsB,GAAWA,CAOhD,KAAKvD,EAAIgtI,EAAYJ,EAAO1qI,EAASD,EAAKkD,EAAK2nI,EAC3CF,GAAQ,EACR5sI,IAAK4sI,IAAQznI,GAAMwmI,EACvB,CAEQ3rI,GAAKuD,IAAUvD,GAAKuD,EAExB,IAAImxF,GAAMnhG,KAAKmqH,MAAMznF,KAAKj2B,EAE1B,KAAKxG,EAAIuzI,EAAYJ,EAAOxuI,EAAQC,EAAM8G,EAAK2nI,EAC3CF,GAAQ,EACRnzI,IAAKmzI,IAAQznI,GAAMwmI,EACvB,CAEQlyI,GAAK8J,IAAS9J,GAAK8J,EAEvB,IAAI2oH,GAAOv3B,EAAIl7F,EAEf,IAAKyyH,KAAQA,EAAK/oG,MAAQ,GAA1B,CAKA,GAAIA,GAAQ+oG,EAAK/oG,MAEb1jB,EAAMolI,EAAS1hH,EAEPjmB,UAARuC,IAEAA,EAAMjM,KAAKu4I,eAAe5oH,IAI1B+oG,EAAKr6G,QAAU86H,GAAcn5I,KAAK6jB,QAElCQ,EAAQs4C,YAAc+7D,EAAKr6G,MAC3B86H,EAAYzgB,EAAKr6G,OAGjBpS,EAEIysH,EAAK7hG,UAAY6hG,EAAKgY,SAEtBrsH,EAAQC,OACRD,EAAQzP,UAAUjD,EAAK+mH,EAAKjgH,QAAS7G,EAAK8mH,EAAKhgH,SAC/C2L,EAAQnT,OAAOwnH,EAAK7hG,UAEhB6hG,EAAKgY,SAELrsH,EAAQxP,OAAM,EAAI,GAGtB5I,EAAIutD,KAAKn1C,GAAUq0G,EAAKjgH,SAAUigH,EAAKhgH,QAASiX,GAChDtL,EAAQG,WAIRvY,EAAIutD,KAAKn1C,EAAS1S,EAAIC,EAAI+d,GAGzB3vB,KAAKo2I,cAAcC,mBAExBhyH,EAAQo1C,UAAYz5D,KAAKo2I,cAAcC,iBACvChyH,EAAQq1C,SAAS/nD,EAAIC,EAAIumI,EAAIC,IAG7B1f,EAAK70G,OAAS7jB,KAAKo2I,cAAcE,uBAEjCjyH,EAAQo1C,UAAYz5D,KAAKo2I,cAAcE,qBACvCjyH,EAAQq1C,SAAS/nD,EAAIC,EAAIumI,EAAIC,QAe7C/3I,EAAOwuD,aAAaxoD,UAAUqzI,kBAAoB,SAAUC,EAAQC,GAEhE,GAAI10B,GAAUllH,KAAK+2I,IAAI7xB,QACnBF,EAAUhlH,KAAK+2I,IAAI/xB,QAEnB60B,EAAU75I,KAAKsrB,OAAOvb,MACtB+pI,EAAU95I,KAAKsrB,OAAOtb,OAEtBmoI,EAAKn4I,KAAK+2I,IAAIzjF,UACd8kF,EAAKp4I,KAAK+2I,IAAIxjF,WAKd1oD,EAAO,EACPD,GAASutI,EACTzpI,EAAM,EACNC,GAAUypI,CAgCd,IA9BIuB,EAAS,GAET9uI,EAAOgvI,EAAUF,EACjB/uI,EAAQivI,EAAU,GAEbF,EAAS,IAGd/uI,EAAQ+uI,GAGRC,EAAS,GAETlrI,EAAMorI,EAAUF,EAChBjrI,EAASmrI,EAAU,GAEdF,EAAS,IAGdjrI,EAASirI,GAGb55I,KAAK84I,YAAY94I,KAAKqkB,QAASs1H,EAAQC,GAGvC/uI,EAAO9E,KAAKI,OAAO0E,EAAOq6G,GAAWizB,GACrCvtI,EAAQ7E,KAAKI,OAAOyE,EAAQs6G,GAAWizB,GACvCzpI,EAAM3I,KAAKI,OAAOuI,EAAMs2G,GAAWozB,GACnCzpI,EAAS5I,KAAKI,OAAOwI,EAASq2G,GAAWozB,GAErCvtI,GAAQD,EACZ,CAEI5K,KAAKqkB,QAAQ8uB,UAAYtoC,EAAOstI,EAAMjzB,EAAU,GAAIt6G,EAAQC,EAAO,GAAKstI,EAAI2B,EAE5E,IAAIC,GAAUh0I,KAAKI,OAAO,EAAI6+G,GAAWozB,GACrC4B,EAAaj0I,KAAKI,OAAO2zI,EAAU,EAAI90B,GAAWozB,EACtDp4I,MAAKk5I,aAAah0B,EAASF,EAASn6G,EAAMkvI,EAASnvI,EAAOovI,GAG9D,GAAItrI,GAAOC,EACX,CAEI3O,KAAKqkB,QAAQ8uB,UAAU,EAAKzkC,EAAM0pI,EAAMpzB,EAAU60B,GAAUlrI,EAASD,EAAM,GAAK0pI,EAEhF,IAAI6B,GAAWl0I,KAAKI,OAAO,EAAI++G,GAAWizB,GACtC+B,EAAYn0I,KAAKI,OAAO0zI,EAAU,EAAI30B,GAAWizB,EACrDn4I,MAAKk5I,aAAah0B,EAASF,EAASi1B,EAAUvrI,EAAKwrI,EAAWvrI,KAWtEtO,EAAOwuD,aAAaxoD,UAAU8zI,WAAa,WAEvC,GAAIj1B,GAAUllH,KAAK+2I,IAAI7xB,QACnBF,EAAUhlH,KAAK+2I,IAAI/xB,QAEnB60B,EAAU75I,KAAKsrB,OAAOvb,MACtB+pI,EAAU95I,KAAKsrB,OAAOtb,OAEtBmoI,EAAKn4I,KAAK+2I,IAAIzjF,UACd8kF,EAAKp4I,KAAK+2I,IAAIxjF,WAEd1oD,EAAO9E,KAAKI,MAAM++G,EAAUizB,GAC5BvtI,EAAQ7E,KAAKI,OAAO0zI,EAAU,EAAI30B,GAAWizB,GAC7CzpI,EAAM3I,KAAKI,MAAM6+G,EAAUozB,GAC3BzpI,EAAS5I,KAAKI,OAAO2zI,EAAU,EAAI90B,GAAWozB,EAElDp4I,MAAKqkB,QAAQ8uB,UAAU,EAAG,EAAG0mG,EAASC,GAEtC95I,KAAKk5I,aAAah0B,EAASF,EAASn6G,EAAM6D,EAAK9D,EAAO+D,IAU1DtO,EAAOwuD,aAAaxoD,UAAUua,OAAS,WAEnC,GAAIw5H,IAAY,CAEhB,IAAKp6I,KAAK6a,QAAV,EAKI7a,KAAKynB,OAASznB,KAAKmqH,MAAM1iG,SAEzBznB,KAAKmqH,MAAM1iG,OAAQ,EACnB2yH,GAAY,EAGhB,IAAIpD,GAAch3I,KAAKsrB,OAAOvb,MAC1BknI,EAAej3I,KAAKsrB,OAAOtb,OAG3Bk1G,EAA0B,EAAhBllH,KAAKk3I,SACflyB,EAA0B,EAAhBhlH,KAAKm3I,SAEfkD,EAAKr6I,KAAK+2I,IACV4C,EAASU,EAAGn1B,QAAUA,EACtB00B,EAASS,EAAGr1B,QAAUA,CAE1B,IAAKo1B,GACU,IAAXT,GAA2B,IAAXC,GAChBS,EAAGrD,cAAgBA,GAAeqD,EAAGpD,eAAiBA,EAoD1D,MA9CAj3I,MAAKqkB,QAAQC,OAEb+1H,EAAGn1B,QAAUA,EACbm1B,EAAGr1B,QAAUA,EAETq1B,EAAGrD,cAAgBA,GAAeqD,EAAGpD,eAAiBA,IAGtDoD,EAAGrD,YAAcA,EACjBqD,EAAGpD,aAAeA,GAGlBj3I,KAAK6jB,QAEL7jB,KAAKqkB,QAAQs4C,YAAc38D,KAAKo2I,cAAcI,WAE1Cx2I,KAAKo2I,cAAcG,kBAEnB6D,GAAY,KAIfA,GACDp6I,KAAKg2I,eAAeC,mBACnBlwI,KAAKoJ,IAAIwqI,GAAU5zI,KAAKoJ,IAAIyqI,GAAW7zI,KAAKkM,IAAI+kI,EAAaC,GAE9Dj3I,KAAK05I,kBAAkBC,EAAQC,GAK/B55I,KAAKm6I,aAGLn6I,KAAK6jB,QAEL7jB,KAAKqkB,QAAQs4C,YAAc,EAC3B38D,KAAKs6I,eAGTt6I,KAAKwiC,QAAQsQ,YAAYrrB,QAEzBznB,KAAKynB,OAAQ,EAEbznB,KAAKqkB,QAAQG,WAEN,IAYXnkB,EAAOwuD,aAAaxoD,UAAUi0I,YAAc,WAExC,GAuBI3oI,GAAIC,EAAI3L,EAAGwG,EAAG2sI,EAAMC,EAvBpBn0B,EAAUllH,KAAK+2I,IAAI7xB,QACnBF,EAAUhlH,KAAK+2I,IAAI/xB,QAEnB3gG,EAAUrkB,KAAKqkB,QACfw1H,EAAU75I,KAAKsrB,OAAOvb,MACtB+pI,EAAU95I,KAAKsrB,OAAOtb,OAEtBD,EAAQ/P,KAAKmqH,MAAMp6G,MACnBC,EAAShQ,KAAKmqH,MAAMn6G,OACpBmoI,EAAKn4I,KAAK+2I,IAAIzjF,UACd8kF,EAAKp4I,KAAK+2I,IAAIxjF,WAEd1oD,EAAO9E,KAAKI,MAAM++G,EAAUizB,GAC5BvtI,EAAQ7E,KAAKI,OAAO0zI,EAAU,EAAI30B,GAAWizB,GAC7CzpI,EAAM3I,KAAKI,MAAM6+G,EAAUozB,GAC3BzpI,EAAS5I,KAAKI,OAAO2zI,EAAU,EAAI90B,GAAWozB,GAE9CkB,EAASzuI,EAAOstI,EAAMjzB,EACtBq0B,EAAS7qI,EAAM0pI,EAAMpzB,EAErBw0B,GAAc3uI,GAAS,GAAK,IAAMkF,GAAUA,EAC5C0pI,GAAc/qI,GAAQ,GAAK,IAAMsB,GAAWA,CAMhD,KAFAqU,EAAQq6C,YAAc1+D,KAAKo2I,cAAcK,iBAEpChqI,EAAIgtI,EAAYJ,EAAO1qI,EAASD,EAAKkD,EAAK2nI,EAC3CF,GAAQ,EACR5sI,IAAK4sI,IAAQznI,GAAMwmI,EACvB,CAEQ3rI,GAAKuD,IAAUvD,GAAKuD,EAExB,IAAImxF,GAAMnhG,KAAKmqH,MAAMznF,KAAKj2B,EAE1B,KAAKxG,EAAIuzI,EAAYJ,EAAOxuI,EAAQC,EAAM8G,EAAK2nI,EAC3CF,GAAQ,EACRnzI,IAAKmzI,IAAQznI,GAAMwmI,EACvB,CAEQlyI,GAAK8J,IAAS9J,GAAK8J,EAEvB,IAAI2oH,GAAOv3B,EAAIl7F,IACVyyH,GAAQA,EAAK/oG,MAAQ,IAAM+oG,EAAKuK,WAKjCjjI,KAAKo2I,cAAcM,wBAEnBryH,EAAQo1C,UAAYz5D,KAAKo2I,cAAcM,sBACvCryH,EAAQq1C,SAAS/nD,EAAIC,EAAI5R,KAAK+2I,IAAI1tF,GAAIrpD,KAAK+2I,IAAIztF,KAG/CtpD,KAAKo2I,cAAcK,mBAEnBpyH,EAAQ+5C,YAEJs6D,EAAKO,UAEL50G,EAAQk6C,OAAO5sD,EAAIC,GACnByS,EAAQm6C,OAAO7sD,EAAK3R,KAAK+2I,IAAI1tF,GAAIz3C,IAGjC8mH,EAAKQ,aAEL70G,EAAQk6C,OAAO5sD,EAAIC,EAAK5R,KAAK+2I,IAAIztF,IACjCjlC,EAAQm6C,OAAO7sD,EAAK3R,KAAK+2I,IAAI1tF,GAAIz3C,EAAK5R,KAAK+2I,IAAIztF,KAG/CovE,EAAKK,WAEL10G,EAAQk6C,OAAO5sD,EAAIC,GACnByS,EAAQm6C,OAAO7sD,EAAIC,EAAK5R,KAAK+2I,IAAIztF,KAGjCovE,EAAKM,YAEL30G,EAAQk6C,OAAO5sD,EAAK3R,KAAK+2I,IAAI1tF,GAAIz3C,GACjCyS,EAAQm6C,OAAO7sD,EAAK3R,KAAK+2I,IAAI1tF,GAAIz3C,EAAK5R,KAAK+2I,IAAIztF,KAGnDjlC,EAAQs6C,cAiBxBp3D,OAAO2E,eAAe7L,EAAOwuD,aAAaxoD,UAAW,QAEjD2F,IAAK,WACD,MAAOhM,MAAK82I,OAGhB7qI,IAAK,SAAU1C,GACXvJ,KAAK82I,MAAQvtI,EACbvJ,KAAKynB,OAAQ,KAYrBlgB,OAAO2E,eAAe7L,EAAOwuD,aAAaxoD,UAAW,WAEjD2F,IAAK,WACD,MAAOhM,MAAKk3I,UAGhBjrI,IAAK,SAAU1C,GACXvJ,KAAKk3I,SAAW3tI,KAYxBhC,OAAO2E,eAAe7L,EAAOwuD,aAAaxoD,UAAW,WAEjD2F,IAAK,WACD,MAAOhM,MAAKm3I,UAGhBlrI,IAAK,SAAU1C,GACXvJ,KAAKm3I,SAAW5tI,KAYxBhC,OAAO2E,eAAe7L,EAAOwuD,aAAaxoD,UAAW,kBAEjD2F,IAAK,WACD,MAAOhM,MAAK+2I,IAAI1tF,IAGpBp9C,IAAK,SAAU1C,GACXvJ,KAAK+2I,IAAI1tF,GAAa,EAAR9/C,EACdvJ,KAAKynB,OAAQ,KAYrBlgB,OAAO2E,eAAe7L,EAAOwuD,aAAaxoD,UAAW,mBAEjD2F,IAAK,WACD,MAAOhM,MAAK+2I,IAAIztF,IAGpBr9C,IAAK,SAAU1C,GACXvJ,KAAK+2I,IAAIztF,GAAa,EAAR//C,EACdvJ,KAAKynB,OAAQ,KA8BrBpnB,EAAOqzI,eAAiB,SAAUl5H,EAAM64C,EAAS1jC,EAAO5f,EAAOC,GAE3DhQ,KAAKwa,KAAOA,EAEZzK,GAAS,EACTC,GAAU,EAQVhQ,KAAK0iI,IAAMrvE,EAQXrzD,KAAK2vB,MAAQA,EAQb3vB,KAAKmqH,MAAQ92D,EAAQ42D,OAAOt6F,GAS5B3vB,KAAKkI,KAAO7H,EAAOsB,aAMnB3B,KAAK+tB,YAAc1tB,EAAOsB,aAe1B3B,KAAKg2I,gBACDC,mBAAmB,EACnBC,cAAe,GACfC,WAAY,MAShBn2I,KAAK6jB,OAAQ,EAKb7jB,KAAKwqB,QAAS,EAkBdxqB,KAAKo2I,eAEDC,iBAAkB,mBAClBC,qBAAsB,oBAEtBC,iBAAiB,EAEjBC,WAAY,GACZC,iBAAkB,kBAClBC,sBAAuB,qBAU3B12I,KAAK22I,cAAgB,EAQrB32I,KAAK42I,cAAgB,EAOrB52I,KAAKynB,OAAQ,EAObznB,KAAK62I,YAAc,EAOnB72I,KAAK82I,OAAQ,CAOb,IAAI1E,GAAUpyI,KAAKmqH,MAAMioB,SAAWpyI,KAAK0iI,IAAI2O,SAAS,EACtDrxI,MAAK+2I,KAGD7xB,QAAS,EACTF,QAAS,EACTgyB,YAAa,EACbC,aAAc,EAGd3jF,UAAWD,EAAQC,UACnBC,WAAYF,EAAQE,WAOpBlK,GAAI+oF,EAAQ9+E,UACZhK,GAAI8oF,EAAQ7+E,WAGZ6+E,QAASA,EAGTf,aASJrxI,KAAKu6I,YAAc,EAOnBv6I,KAAKk3I,SAAW,EAOhBl3I,KAAKm3I,SAAW,EAOhBn3I,KAAK4kI,WAGL,IAAI9xF,GAAc,GAAIhtC,MAAKoyD,YAAak6E,EAAQhpH,MAChDtjB,MAAK8oD,QAAQ9nD,KAAK9G,KAAM,GAAI8F,MAAKgpD,QAAQhc,GAAc9yC,KAAK0iI,IAAI3yH,MAAO/P,KAAK0iI,IAAI1yH,OAAQhQ,KAAK+2I,IAAI3E,QAAQ9+E,UAAWtzD,KAAK+2I,IAAI3E,QAAQ7+E,WAAYvzD,KAAKmqH,OAEtJ9pH,EAAOymD,UAAUkB,KAAK1nC,KAAKxZ,KAAK9G,KAAMwa,EAAM,EAAG,EAAG,KAAM,MAGxDxa,KAAK+uB,eAAgB,GAKzB1uB,EAAOqzI,eAAertI,UAAYkB,OAAOmZ,OAAO5a,KAAK8oD,QAAQvoD,WAC7DhG,EAAOqzI,eAAertI,UAAU8B,YAAc9H,EAAOqzI,eAIrDrzI,EAAOymD,UAAUkB,KAAKC,QAAQnhD,KAAKzG,EAAOqzI,eAAertI,WACrD,kBAKJhG,EAAOqzI,eAAertI,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UACtE3c,EAAOkiC,WAAWl8B,UAAU4tD,iBAAmB5zD,EAAOymD,UAAUuB,YAAYrrC,UAC5E3c,EAAOkiC,WAAWl8B,UAAU6tD,kBAAoB7zD,EAAOymD,UAAU6G,SAAS3wC,UAC1E3c,EAAOkiC,WAAWl8B,UAAU8tD,iBAAmB9zD,EAAOymD,UAAUsG,QAAQpwC,UACxE3c,EAAOkiC,WAAWl8B,UAAU+tD,cAAgB/zD,EAAOymD,UAAUkB,KAAKhrC,UAQlE3c,EAAOqzI,eAAertI,UAAU2W,UAAY,WAExC,MAAOhd,MAAKo0D,iBAUhB/zD,EAAOqzI,eAAertI,UAAU+jB,WAAa,WAEzC/pB,EAAOymD,UAAU0B,cAAcp+B,WAAWtjB,KAAK9G,KAG/C,IAAI4c,GAAS5c,KAAKwa,KAAKoC,MAEvB5c,MAAKklH,QAAUtoG,EAAO3W,EAAIjG,KAAK22I,cAAgB32I,KAAK6U,MAAM5O,EAC1DjG,KAAKglH,QAAUpoG,EAAOnQ,EAAIzM,KAAK42I,cAAgB52I,KAAK6U,MAAMpI,EAE1DzM,KAAK4gB,UASTvgB,EAAOqzI,eAAertI,UAAUyd,QAAU,WAEtChe,KAAK66B,WAAW7d,OAAO9iB,MAEvBK,EAAOymD,UAAU2C,QAAQpjD,UAAUyd,QAAQhd,KAAK9G,OAiBpDK,EAAOqzI,eAAertI,UAAUyS,OAAS,SAAU/I,EAAOC,GAEtDhQ,KAAKwiC,QAAQ7R,MAAM7X,OAAO/I,EAAOC,GAEjChQ,KAAKwiC,QAAQzyB,MAAQA,EACrB/P,KAAKwiC,QAAQxyB,OAASA,EAEtBhQ,KAAKwiC,QAAQwQ,KAAKjjC,MAAQA,EAC1B/P,KAAKwiC,QAAQwQ,KAAKhjC,OAASA,EAE3BhQ,KAAKwiC,QAAQsQ,YAAY/iC,MAAQA,EACjC/P,KAAKwiC,QAAQsQ,YAAY9iC,OAASA,EAElChQ,KAAKwiC,QAAQsQ,YAAYrrB,QACzBznB,KAAKwiC,QAAQ80G,gBAAiB,EAE9Bt3I,KAAKwiC,QAAQ+mB,aAEbvpD,KAAKynB,OAAQ,GAUjBpnB,EAAOqzI,eAAertI,UAAUkxI,YAAc,WAE1Cv3I,KAAKwa,KAAKC,MAAM0c,UAAU,EAAG,EAAGn3B,KAAKmqH,MAAMgnB,cAAgBnxI,KAAK6U,MAAM5O,EAAGjG,KAAKmqH,MAAMinB,eAAiBpxI,KAAK6U,MAAMpI,IAYpHpM,EAAOqzI,eAAertI,UAAUmxI,MAAQ,SAAUvxI,GAO9C,MALIA,GAAI,IAEJA,EAAI,GAGmB,IAAvBjG,KAAK22I,cAEE1wI,EAGJjG,KAAKk3I,UAAYjxI,EAAKjG,KAAKk3I,SAAWl3I,KAAK22I,gBAYtDt2I,EAAOqzI,eAAertI,UAAUoxI,QAAU,SAAUxxI,GAEhD,MAA2B,KAAvBjG,KAAK22I,cAEE1wI,EAGHjG,KAAKk3I,SAAWl3I,KAAK22I,eAAkB1wI,EAAIjG,KAAKk3I,WAY5D72I,EAAOqzI,eAAertI,UAAUqxI,MAAQ,SAAUjrI,GAO9C,MALIA,GAAI,IAEJA,EAAI,GAGmB,IAAvBzM,KAAK42I,cAEEnqI,EAGJzM,KAAKm3I,UAAY1qI,EAAKzM,KAAKm3I,SAAWn3I,KAAK42I,gBAYtDv2I,EAAOqzI,eAAertI,UAAUsxI,QAAU,SAAUlrI,GAEhD,MAA2B,KAAvBzM,KAAK42I,cAEEnqI,EAGHzM,KAAKm3I,SAAWn3I,KAAK42I,eAAkBnqI,EAAIzM,KAAKm3I,WAY5D92I,EAAOqzI,eAAertI,UAAUuxI,SAAW,SAAU3xI,GAGjD,MAAOF,MAAKI,MAAMnG,KAAKw3I,MAAMvxI,GAAKjG,KAAK+2I,IAAIzjF,YAY/CjzD,EAAOqzI,eAAertI,UAAUwxI,SAAW,SAAUprI,GAGjD,MAAO1G,MAAKI,MAAMnG,KAAK03I,MAAMjrI,GAAKzM,KAAK+2I,IAAIxjF,aAc/ClzD,EAAOqzI,eAAertI,UAAUyxI,UAAY,SAAU7xI,EAAGwG,EAAG+B,GAKxD,MAHAA,GAAMvI,EAAIjG,KAAK43I,SAAS3xI,GACxBuI,EAAM/B,EAAIzM,KAAK63I,SAASprI,GAEjB+B,GAeXnO,EAAOqzI,eAAertI,UAAU0xI,gBAAkB,SAAU3mI,EAAMmB,EAAU0wH,EAAU+U,GAE7EzlI,IAAYA,EAAWvS,KAAK62I,aAChBntI,SAAbu5H,IAA0BA,GAAW,GACjBv5H,SAApBsuI,IAAiCA,GAAkB,EAGvD,IAAIxG,GAAQxxI,KAAKw4H,SAASpnH,EAAKnL,EAAGmL,EAAK3E,EAAG2E,EAAKrB,MAAOqB,EAAKpB,OAAQizH,EAAU+U,EAE7E,IAAqB,IAAjBxG,EAAM3pI,OAEN,QAOJ,KAAK,GAHD09G,GAASn0G,EAAKkB,kBAAkBC,GAChCC,KAEK1K,EAAI,EAAGA,EAAI0pI,EAAM3pI,OAAQC,IAE9B,IAAK,GAAIH,GAAI,EAAGA,EAAI49G,EAAO19G,OAAQF,IACnC,CACI,GAAI+wH,GAAO8Y,EAAM1pI,GACbmwI,EAAQ1yB,EAAO59G,EACnB,IAAI+wH,EAAK3+G,cAAck+H,EAAM,GAAIA,EAAM,IACvC,CACIzlI,EAAQI,KAAK8lH,EACb,QAKZ,MAAOlmH,IAiBXnS,EAAOqzI,eAAertI,UAAUmyH,SAAW,SAAUvyH,EAAGwG,EAAGsD,EAAOC,EAAQizH,EAAU+U,GAG/DtuI,SAAbu5H,IAA0BA,GAAW,GACjBv5H,SAApBsuI,IAAiCA,GAAkB,EAEvD,IAAIE,KAAajV,GAAY+U,EAG7B/xI,GAAIjG,KAAKw3I,MAAMvxI,GACfwG,EAAIzM,KAAK03I,MAAMjrI,EAGf,IAAIkF,GAAK5L,KAAKI,MAAMF,GAAKjG,KAAK+2I,IAAI1tF,GAAKrpD,KAAK6U,MAAM5O,IAC9C2L,EAAK7L,KAAKI,MAAMsG,GAAKzM,KAAK+2I,IAAIztF,GAAKtpD,KAAK6U,MAAMpI,IAE9C0rI,EAAKpyI,KAAKG,MAAMD,EAAI8J,IAAU/P,KAAK+2I,IAAI1tF,GAAKrpD,KAAK6U,MAAM5O,IAAM0L,EAC7DymI,EAAKryI,KAAKG,MAAMuG,EAAIuD,IAAWhQ,KAAK+2I,IAAIztF,GAAKtpD,KAAK6U,MAAMpI,IAAMmF,CAGlE5R,MAAK4kI,WAEL,KAAK,GAAIyT,GAAKzmI,EAAIymI,EAAKzmI,EAAKwmI,EAAIC,IAE5B,IAAK,GAAIC,GAAK3mI,EAAI2mI,EAAK3mI,EAAKwmI,EAAIG,IAChC,CACI,GAAIn3C,GAAMnhG,KAAKmqH,MAAMznF,KAAK21G,EAEtBl3C,IAAOA,EAAIm3C,KAEPJ,GAAY/2C,EAAIm3C,GAAIvH,cAAc9N,EAAU+U,KAE5Ch4I,KAAK4kI,SAAShyH,KAAKuuF,EAAIm3C,IAMvC,MAAOt4I,MAAK4kI,SAASr+H,SAYzBlG,EAAOqzI,eAAertI,UAAUqyI,kBAAoB,WAEhD14I,KAAK+2I,IAAI1F,aAUbhxI,EAAOqzI,eAAertI,UAAUsyI,SAAW,SAAUC,EAAQC,GAEzDD,EAASA,GAAU,EACnBC,EAASA,GAAUD,CAEnB,KAAK,GAAInsI,GAAI,EAAGA,EAAIzM,KAAKmqH,MAAMznF,KAAK76B,OAAQ4E,IAIxC,IAAK,GAFD00F,GAAMnhG,KAAKmqH,MAAMznF,KAAKj2B,GAEjBxG,EAAI,EAAGA,EAAIk7F,EAAIt5F,OAAQ5B,IAChC,CACI,GAAIyyH,GAAOv3B,EAAIl7F,EAEfyyH,GAAK3oH,MAAQ/P,KAAK0iI,IAAIpvE,UAAYslF,EAClClgB,EAAK1oH,OAAShQ,KAAK0iI,IAAInvE,WAAaslF,EAEpCngB,EAAK3V,OAAS2V,EAAKzyH,EAAIyyH,EAAK3oH,MAC5B2oH,EAAK1V,OAAS0V,EAAKjsH,EAAIisH,EAAK1oH,OAIpChQ,KAAK6U,MAAMrH,MAAMorI,EAAQC,IAiB7Bx4I,EAAOqzI,eAAertI,UAAU6yI,aAAe,SAAUh0B,EAASF,EAASn6G,EAAM6D,EAAK9D,EAAO+D,EAAQ6rI,EAAMC,GAEvG,GAAI1qI,GAAQ/P,KAAKmqH,MAAMp6G,MACnBC,EAAShQ,KAAKmqH,MAAMn6G,OACpBmoI,EAAKn4I,KAAK+2I,IAAIzjF,UACd8kF,EAAKp4I,KAAK+2I,IAAIxjF,UAIlBinF,GAAOA,GAAQ,EACfC,EAAOA,GAAQ,EAEVz6I,KAAK82I,QAEFjsI,GAAQD,IAERC,EAAO9E,KAAKoM,IAAI,EAAGtH,GACnBD,EAAQ7E,KAAKkM,IAAIlC,EAAQ,EAAGnF,IAE5B8D,GAAOC,IAEPD,EAAM3I,KAAKoM,IAAI,EAAGzD,GAClBC,EAAS5I,KAAKkM,IAAIjC,EAAS,EAAGrB,IAKtC,IAUIgD,GAAIC,EAAI3L,EAAGwG,EAAG2sI,EAAMC,EAVpBC,EAASzuI,EAAOstI,EAAMjzB,EACtBq0B,EAAS7qI,EAAM0pI,EAAMpzB,EAGrBw0B,GAAc3uI,GAAS,GAAK,IAAMkF,GAAUA,EAC5C0pI,GAAc/qI,GAAQ,GAAK,IAAMsB,GAAWA,CAShD,KAAKvD,EAAIgtI,EAAYJ,EAAO1qI,EAASD,EAAKkD,EAAK2nI,EAC3CF,GAAQ,EACR5sI,IAAK4sI,IAAQznI,GAAMwmI,EACvB,CAEQ3rI,GAAKuD,IAAUvD,GAAKuD,EAExB,IAAImxF,GAAMnhG,KAAKmqH,MAAMznF,KAAKj2B,EAE1B,KAAKxG,EAAIuzI,EAAYJ,EAAOxuI,EAAQC,EAAM8G,EAAK2nI,EAC3CF,GAAQ,EACRnzI,IAAKmzI,IAAQznI,GAAMwmI,EACvB,CAEQlyI,GAAK8J,IAAS9J,GAAK8J,EAEvB,IAAI2oH,GAAOv3B,EAAIl7F,EAEf,KAAKyyH,GAAQA,EAAK/oG,MAAQ,EAGtB3vB,KAAK+2I,IAAI3E,QAAQsI,cAAe16I,KAAK0sI,aAHzC,CAOA,GAAI/8G,GAAQ+oG,EAAK/oG,KAEb+oG,GAAK7hG,UAAY6hG,EAAKgY,QAEtB1wI,KAAK+2I,IAAI3E,QAAQuI,OAAO36I,KAAK0sI,SAAUhU,EAAKjgH,QAAU+hI,GAAO9hB,EAAKhgH,QAAU+hI,EAAM9qH,EAAO+oG,EAAKr6G,OAI9Fre,KAAK+2I,IAAI3E,QAAQuI,OAAO36I,KAAK0sI,QAAS/6H,EAAK6oI,EAAM5oI,EAAK6oI,EAAM9qH,EAAO+oG,EAAKr6G,QAKhFre,KAAK+2I,IAAI3E,QAAQsI,cAAe16I,KAAK0sI,WAW7CrsI,EAAOqzI,eAAertI,UAAU8zI,WAAa,WAEzC,GAAIj1B,GAAUllH,KAAK+2I,IAAI7xB,QACnBF,EAAUhlH,KAAK+2I,IAAI/xB,QAEnB60B,EAAU75I,KAAKwa,KAAKwc,OACpB8iH,EAAU95I,KAAKwa,KAAKyc,QAEpBkhH,EAAKn4I,KAAK+2I,IAAIzjF,UACd8kF,EAAKp4I,KAAK+2I,IAAIxjF,WAEdlK,EAAKrpD,KAAK+2I,IAAI1tF,GACdC,EAAKtpD,KAAK+2I,IAAIztF,GAEdz+C,EAAO9E,KAAKI,OAAQ++G,GAAW77D,EAAK8uF,IAAOA,GAC3CvtI,EAAQ7E,KAAKI,OAAQ0zI,EAAU,EAAI30B,GAAWizB,GAC9CzpI,EAAM3I,KAAKI,OAAQ6+G,GAAW17D,EAAK8uF,IAAOA,GAC1CzpI,EAAS5I,KAAKI,OAAQ2zI,EAAU,EAAI90B,GAAWozB,EAEnDp4I,MAAK0sI,WACL1sI,KAAKk5I,aAAah0B,EAASF,EAASn6G,EAAM6D,EAAK9D,EAAO+D,EAAQ,IAAK26C,EAAK8uF,KAS5E/3I,EAAOqzI,eAAertI,UAAUua,OAAS,WAErC,GAAIw5H,IAAY,CAEhB,IAAKp6I,KAAK6a,QAAV,EAKI7a,KAAKynB,OAASznB,KAAKmqH,MAAM1iG,SAEzBznB,KAAKmqH,MAAM1iG,OAAQ,EACnB2yH,GAAY,EAIhB,IAAIl1B,GAA0B,EAAhBllH,KAAKk3I,SACflyB,EAA0B,EAAhBhlH,KAAKm3I,SAEfkD,EAAKr6I,KAAK+2I,IACV4C,EAASU,EAAGn1B,QAAUA,EACtB00B,EAASS,EAAGr1B,QAAUA,CAE1B,IAAKo1B,GACU,IAAXT,GAA2B,IAAXC,EAepB,MATAS,GAAGn1B,QAAUA,EACbm1B,EAAGr1B,QAAUA,EAEbhlH,KAAKm6I,aAELn6I,KAAKwiC,QAAQsQ,YAAYrrB,QAEzBznB,KAAKynB,OAAQ,GAEN,IAYXlgB,OAAO2E,eAAe7L,EAAOqzI,eAAertI,UAAW,QAEnD2F,IAAK,WACD,MAAOhM,MAAK82I,OAGhB7qI,IAAK,SAAU1C,GACXvJ,KAAK82I,MAAQvtI,EACbvJ,KAAKynB,OAAQ,KAYrBlgB,OAAO2E,eAAe7L,EAAOqzI,eAAertI,UAAW,WAEnD2F,IAAK,WACD,MAAOhM,MAAKk3I,UAGhBjrI,IAAK,SAAU1C,GACXvJ,KAAKk3I,SAAW3tI,KAYxBhC,OAAO2E,eAAe7L,EAAOqzI,eAAertI,UAAW,WAEnD2F,IAAK,WACD,MAAOhM,MAAKm3I,UAGhBlrI,IAAK,SAAU1C,GACXvJ,KAAKm3I,SAAW5tI,KAYxBhC,OAAO2E,eAAe7L,EAAOqzI,eAAertI,UAAW,kBAEnD2F,IAAK,WACD,MAAOhM,MAAK+2I,IAAI1tF,IAGpBp9C,IAAK,SAAU1C,GACXvJ,KAAK+2I,IAAI1tF,GAAa,EAAR9/C,EACdvJ,KAAKynB,OAAQ,KAYrBlgB,OAAO2E,eAAe7L,EAAOqzI,eAAertI,UAAW,mBAEnD2F,IAAK,WACD,MAAOhM,MAAK+2I,IAAIztF,IAGpBr9C,IAAK,SAAU1C,GACXvJ,KAAK+2I,IAAIztF,GAAa,EAAR//C,EACdvJ,KAAKynB,OAAQ,KAiBrBpnB,EAAO4wI,eAaH2J,aAAa,EAcb1jI,MAAO,SAAUsD,EAAMzO,EAAKunD,EAAWC,EAAYxjD,EAAOC,GAOtD,GALkBtG,SAAd4pD,IAA2BA,EAAY,IACxB5pD,SAAf6pD,IAA4BA,EAAa,IAC/B7pD,SAAVqG,IAAuBA,EAAQ,IACpBrG,SAAXsG,IAAwBA,EAAS,IAEzBtG,SAARqC,EAEA,MAAO/L,MAAK66I,cAGhB,IAAY,OAAR9uI,EAEA,MAAO/L,MAAK66I,aAAavnF,EAAWC,EAAYxjD,EAAOC,EAG3D,IAAI0yH,GAAMloH,EAAKsF,MAAM0nF,eAAez7F,EAEpC,IAAI22H,EACJ,CACI,GAAIA,EAAIr+B,SAAWhkG,EAAOuuD,QAAQk+C,IAE9B,MAAO9sG,MAAK86I,SAAS/uI,EAAK22H,EAAIhgG,KAAM4wB,EAAWC,EAE9C,KAAKmvE,EAAIr+B,QAAUq+B,EAAIr+B,SAAWhkG,EAAOuuD,QAAQm+C,WAElD,MAAO/sG,MAAK+6I,eAAerY,EAAIhgG,UAKnCt6B,SAAQG,KAAK,0DAA4DwD,IAejF+uI,SAAU,SAAU/uI,EAAK22B,EAAM4wB,EAAWC,GAEtC,GAAImvE,GAAM1iI,KAAK66I,cAGfn4G,GAAOA,EAAKqQ,MAOZ,KAAK,GALDhlC,MACAkjB,EAAOyR,EAAK/5B,MAAM,MAClBqH,EAASihB,EAAKppB,OACdkI,EAAQ,EAEHtD,EAAI,EAAGA,EAAIwkB,EAAKppB,OAAQ4E,IACjC,CACIsB,EAAOtB,KAIP,KAAK,GAFD20F,GAASnwE,EAAKxkB,GAAG9D,MAAM,KAElB1C,EAAI,EAAGA,EAAIm7F,EAAOv5F,OAAQ5B,IAE/B8H,EAAOtB,GAAGxG,GAAK,GAAI5F,GAAOowI,KAAK/N,EAAIzY,OAAO,GAAI5/G,SAAS+2F,EAAOn7F,GAAI,IAAKA,EAAGwG,EAAG6mD,EAAWC,EAG9E,KAAVxjD,IAEAA,EAAQqxF,EAAOv5F,QAmBvB,MAfA66H,GAAIr+B,OAAShkG,EAAOuuD,QAAQk+C,IAC5B41B,EAAIt3H,KAAOW,EACX22H,EAAI3yH,MAAQA,EACZ2yH,EAAI1yH,OAASA,EACb0yH,EAAIpvE,UAAYA,EAChBovE,EAAInvE,WAAaA,EACjBmvE,EAAIyO,cAAgBphI,EAAQujD,EAC5BovE,EAAI0O,eAAiBphI,EAASujD,EAE9BmvE,EAAIzY,OAAO,GAAGl6G,MAAQA,EACtB2yH,EAAIzY,OAAO,GAAGj6G,OAASA,EACvB0yH,EAAIzY,OAAO,GAAGknB,cAAgBzO,EAAIyO,cAClCzO,EAAIzY,OAAO,GAAGmnB,eAAiB1O,EAAI0O,eACnC1O,EAAIzY,OAAO,GAAGvnF,KAAO30B,EAEd20H,GAUXmY,aAAc,SAAUvnF,EAAWC,EAAYxjD,EAAOC,GAElD,GAAI0yH,KAEJA,GAAI3yH,MAAQ,EACZ2yH,EAAI1yH,OAAS,EACb0yH,EAAIpvE,UAAY,EAChBovE,EAAInvE,WAAa,EAEQ,mBAAdD,IAA2C,OAAdA,IAAsBovE,EAAIpvE,UAAYA,GACpD,mBAAfC,IAA6C,OAAfA,IAAuBmvE,EAAInvE,WAAaA,GAC5D,mBAAVxjD,IAAmC,OAAVA,IAAkB2yH,EAAI3yH,MAAQA,GAC5C,mBAAXC,IAAqC,OAAXA,IAAmB0yH,EAAI1yH,OAASA,GAErE0yH,EAAIlkB,YAAc,aAClBkkB,EAAIwO,QAAU,IACdxO,EAAIznD,cACJynD,EAAIyO,cAAgB,EACpBzO,EAAI0O,eAAiB,CAErB,IAAInnB,MAEAE,GAEA/+G,KAAM,QACNnF,EAAG,EACHwG,EAAG,EACHsD,MAAO,EACPC,OAAQ,EACRmhI,cAAe,EACfC,eAAgB,EAChB/yH,MAAO,EACPxD,SAAS,EACTogE,cACA04D,WACAt8F,aACA+mF,UACA17F,QAeJ,OATAunF,GAAOr3G,KAAKu3G,GAEZuY,EAAIzY,OAASA,EACbyY,EAAIv2B,UACJu2B,EAAI3xC,WACJ2xC,EAAIC,aACJD,EAAI2O,YACJ3O,EAAI8O,SAEG9O,GAUXqY,eAAgB,SAAUz5C,GA+QtB,QAAS/6F,GAAOwC,EAAKiyI,GAEjB,GAAIC,KAEJ,KAAK,GAAIliG,KAAKiiG,GACd,CACI,GAAIjvI,GAAMivI,EAAOjiG,EAEO,oBAAbhwC,GAAIgD,KAEXkvI,EAAOlvI,GAAOhD,EAAIgD,IAI1B,MAAOkvI,GA3RX,GAAyB,eAArB35C,EAAKkd,YAGL,MADAp2G,SAAQG,KAAK,oGACN,IAIX,IAAIm6H,KAEJA,GAAI3yH,MAAQuxF,EAAKvxF,MACjB2yH,EAAI1yH,OAASsxF,EAAKtxF,OAClB0yH,EAAIpvE,UAAYguC,EAAKQ,UACrB4gC,EAAInvE,WAAa+tC,EAAKO,WACtB6gC,EAAIlkB,YAAcld,EAAKkd,YACvBkkB,EAAIr+B,OAAShkG,EAAOuuD,QAAQm+C,WAC5B21B,EAAIwO,QAAU5vC,EAAK4vC,QACnBxO,EAAIznD,WAAaqmB,EAAKrmB,WACtBynD,EAAIyO,cAAgBzO,EAAI3yH,MAAQ2yH,EAAIpvE,UACpCovE,EAAI0O,eAAiB1O,EAAI1yH,OAAS0yH,EAAInvE,UAKtC,KAAK,GAFD02D,MAEKniH,EAAI,EAAGA,EAAIw5F,EAAK2oB,OAAOpiH,OAAQC,IAEpC,GAA4B,cAAxBw5F,EAAK2oB,OAAOniH,GAAGI,KAAnB,CAKA,GAAIgzI,GAAO55C,EAAK2oB,OAAOniH,EAIvB,KAAKozI,EAAKC,aAAeD,EAAKE,UAA8B,WAAlBF,EAAKE,SAAuB,CAMlE,IAAK,GALDC,GAAgBtzI,OAAOuzI,KAAKJ,EAAKx4G,MACjC96B,EAAMyzI,EAAaxzI,OACnB0zI,EAAQ,GAAI/0I,OAAOoB,GAGdiQ,EAAI,EAAGA,EAAIjQ,EAAKiQ,GAAG,EACxB0jI,EAAM1jI,EAAE,IAAMwjI,EAAaz6F,WAAW/oC,GACzBwjI,EAAaz6F,WAAW/oC,EAAE,IAAM,EAChCwjI,EAAaz6F,WAAW/oC,EAAE,IAAM,GAChCwjI,EAAaz6F,WAAW/oC,EAAE,IAAM,MAAQ,CAEzDqjI,GAAKx4G,KAAO64G,QACLL,GAAKE,aAEX,IAAGF,EAAKC,YAAY,CACrB/yI,QAAQG,KAAK,oFAAuF2yI,EAAK9vI,KAAO,IAChH,UAIJ,GAAI++G,IAEA/+G,KAAM8vI,EAAK9vI,KACXnF,EAAGi1I,EAAKj1I,EACRwG,EAAGyuI,EAAKzuI,EACRsD,MAAOmrI,EAAKnrI,MACZC,OAAQkrI,EAAKlrI,OACbmhI,cAAe+J,EAAKnrI,MAAQuxF,EAAKQ,UACjCsvC,eAAgB8J,EAAKlrI,OAASsxF,EAAKO,WACnCxjF,MAAO68H,EAAKM,QACZ3gI,QAASqgI,EAAKrgI,QACdogE,cACA04D,WACAt8F,aACA+mF,UAIA8c,GAAKjgE,aAELkvC,EAAMlvC,WAAaigE,EAAKjgE,WAc5B,KAAK,GARDpkD,GAAU65G,EAAS+K,EAAYjL,EAH/BvqI,EAAI,EACJk7F,KACApzF,KASKpG,EAAI,EAAGC,EAAMszI,EAAKx4G,KAAK76B,OAAQF,EAAIC,EAAKD,IACjD,CAMI,GALAkvB,EAAW,EACX65G,GAAU,EACVF,EAAM0K,EAAKx4G,KAAK/6B,GAGZ6oI,EAAM,UAyBN,OAvBAiL,EAAa,EAGTjL,EAAM,aAENA,GAAO,WACPiL,GAAc,GAIdjL,EAAM,aAENA,GAAO,WACPiL,GAAc,GAIdjL,EAAM,YAENA,GAAO,UACPiL,GAAc,GAGVA,GAEJ,IAAK,GACD5kH,EAAW9wB,KAAK+G,GAAG,CACnB,MACJ,KAAK,GACD+pB,EAAW9wB,KAAK+G,EAChB,MACJ,KAAK,GACD+pB,EAAW,EAAE9wB,KAAK+G,GAAG,CACrB,MACJ,KAAK,GACD+pB,EAAW,EACX65G,GAAU,CACV,MACJ,KAAK,GACD75G,EAAW9wB,KAAK+G,GAAG,EACnB4jI,GAAU,CACV,MACJ,KAAK,GACD75G,EAAW9wB,KAAK+G,GAChB4jI,GAAU,CACV,MACJ,KAAK,GACD75G,EAAW,EAAE9wB,KAAK+G,GAAG,EACrB4jI,GAAU,EAMlBF,EAAM,GAENrvC,EAAIvuF,KAAK,GAAIvS,GAAOowI,KAAKtmB,EAAOqmB,EAAKvqI,EAAG8H,EAAOlG,OAAQy5F,EAAKQ,UAAWR,EAAKO,aAC5EV,EAAIA,EAAIt5F,OAAS,GAAGgvB,SAAWA,EAC/BsqE,EAAIA,EAAIt5F,OAAS,GAAG6oI,QAAUA,GAI1BrwI,EAAO4wI,cAAc2J,YAErBz5C,EAAIvuF,KAAK,MAITuuF,EAAIvuF,KAAK,GAAIvS,GAAOowI,KAAKtmB,IAAO,GAAIlkH,EAAG8H,EAAOlG,OAAQy5F,EAAKQ,UAAWR,EAAKO,aAInF57F,IAEIA,IAAMi1I,EAAKnrI,QAEXhC,EAAO6E,KAAKuuF,GACZl7F,EAAI,EACJk7F,MAIRgpB,EAAMznF,KAAO30B,EAEbk8G,EAAOr3G,KAAKu3G,GAIhBuY,EAAIzY,OAASA,CAKb,KAAK,GAFD9d,MAEKrkG,EAAI,EAAGA,EAAIw5F,EAAK2oB,OAAOpiH,OAAQC,IAEpC,GAA4B,eAAxBw5F,EAAK2oB,OAAOniH,GAAGI,KAAnB,CAKA,GAAIwzI,GAAOp6C,EAAK2oB,OAAOniH,GAEnBshB,GAEAhe,KAAMswI,EAAKtwI,KACXge,MAAOsyH,EAAKtyH,MACZnjB,EAAGy1I,EAAKz1I,EACRwG,EAAGivI,EAAKjvI,EACR4R,MAAOq9H,EAAKF,QACZ3gI,QAAS6gI,EAAK7gI,QACdogE,cAIAygE,GAAKzgE,aAEL7xD,EAAM6xD,WAAaygE,EAAKzgE,YAG5BkxB,EAAOv5F,KAAKwW,GAIhBs5G,EAAIv2B,OAASA,CAMb,KAAK,GAHDklC,MACAE,KAEKzpI,EAAI,EAAGA,EAAIw5F,EAAK+vC,SAASxpI,OAAQC,IAC1C,CAEI,GAAImE,GAAMq1F,EAAK+vC,SAASvpI,EAExB,IAAImE,EAAImd,MACR,CACI,GAAIqpH,GAAS,GAAIpyI,GAAOqyI,QAAQzmI,EAAIb,KAAMa,EAAIgkI,SAAUhkI,EAAI61F,UAAW71F,EAAI41F,WAAY51F,EAAIg1F,OAAQh1F,EAAIi1F,QAASj1F,EAAIgvE,WAEhHhvE,GAAI0vI,iBAEJlJ,EAAOmJ,eAAiB3vI,EAAI0vI,gBAKhClJ,EAAOoJ,eAAe5vI,EAAI6vI,WAAY7vI,EAAI8vI,aAC1C1K,EAASz+H,KAAK6/H,OAGlB,CACI,GAAIuJ,GAAgB,GAAI37I,GAAO2vI,gBAAgB/jI,EAAIb,KAAMa,EAAIgkI,SAAUhkI,EAAI61F,UAAW71F,EAAI41F,WAAY51F,EAAIg1F,OAAQh1F,EAAIi1F,QAASj1F,EAAIgvE,WAEnI,KAAK,GAAIghE,KAAMhwI,GAAIulI,MACnB,CACI,GAAIpoH,GAAQnd,EAAIulI,MAAMyK,GAAI7yH,MACtBonH,EAAMvkI,EAAIgkI,SAAW5lI,SAAS4xI,EAAI,GACtCD,GAAcniF,SAAS22E,EAAKpnH,GAGhCmoH,EAAiB3+H,KAAKopI,IAK9BtZ,EAAI2O,SAAWA,EACf3O,EAAI6O,iBAAmBA,CAuBvB,KAAK,GApBDxgD,MACA4xC,KAmBK76H,EAAI,EAAGA,EAAIw5F,EAAK2oB,OAAOpiH,OAAQC,IAEpC,GAA4B,gBAAxBw5F,EAAK2oB,OAAOniH,GAAGI,KAAnB,CAKA,GAAIg0I,GAAO56C,EAAK2oB,OAAOniH,EAEvBipF,GAAQmrD,EAAK9wI,SACbu3H,EAAUuZ,EAAK9wI,QAEf,KAAK,GAAIsvB,GAAI,EAAG9yB,EAAMs0I,EAAKnrD,QAAQlpF,OAAQ6yB,EAAI9yB,EAAK8yB,IAGhD,GAAIwhH,EAAKnrD,QAAQr2D,GAAG81G,IACpB,CACI,GAAIj7G,IAEAi7G,IAAK0L,EAAKnrD,QAAQr2D,GAAG81G,IACrBplI,KAAM8wI,EAAKnrD,QAAQr2D,GAAGtvB,KACtBlD,KAAMg0I,EAAKnrD,QAAQr2D,GAAG1vB,eAAe,QAAUkxI,EAAKnrD,QAAQr2D,GAAGxyB,KAAO,GACtEjC,EAAGi2I,EAAKnrD,QAAQr2D,GAAGz0B,EACnBwG,EAAGyvI,EAAKnrD,QAAQr2D,GAAGjuB,EACnBoO,QAASqhI,EAAKnrD,QAAQr2D,GAAG7f,QACzBogE,WAAYihE,EAAKnrD,QAAQr2D,GAAGugD,WAI5BihE,GAAKnrD,QAAQr2D,GAAG7D,WAEhBtB,EAAOsB,SAAWqlH,EAAKnrD,QAAQr2D,GAAG7D,UAGtCk6D,EAAQmrD,EAAK9wI,MAAMwH,KAAK2iB,OAEvB,IAAI2mH,EAAKnrD,QAAQr2D,GAAGkoG,SACzB,CACI,GAAIrtG,IAEAnqB,KAAM8wI,EAAKnrD,QAAQr2D,GAAGtvB,KACtBlD,KAAMg0I,EAAKnrD,QAAQr2D,GAAGxyB,KACtBjC,EAAGi2I,EAAKnrD,QAAQr2D,GAAGz0B,EACnBwG,EAAGyvI,EAAKnrD,QAAQr2D,GAAGjuB,EACnBsD,MAAOmsI,EAAKnrD,QAAQr2D,GAAG3qB,MACvBC,OAAQksI,EAAKnrD,QAAQr2D,GAAG1qB,OACxB6K,QAASqhI,EAAKnrD,QAAQr2D,GAAG7f,QACzBogE,WAAYihE,EAAKnrD,QAAQr2D,GAAGugD,WAI5BihE,GAAKnrD,QAAQr2D,GAAG7D,WAEhBtB,EAAOsB,SAAWqlH,EAAKnrD,QAAQr2D,GAAG7D,UAGtCtB,EAAOqtG,WAGP,KAAK,GAAI3yH,GAAI,EAAGA,EAAIisI,EAAKnrD,QAAQr2D,GAAGkoG,SAAS/6H,OAAQoI,IAEjDslB,EAAOqtG,SAAShwH,MAAOspI,EAAKnrD,QAAQr2D,GAAGkoG,SAAS3yH,GAAGhK,EAAGi2I,EAAKnrD,QAAQr2D,GAAGkoG,SAAS3yH,GAAGxD,GAGtFk2H,GAAUuZ,EAAK9wI,MAAMwH,KAAK2iB,GAC1Bw7D,EAAQmrD,EAAK9wI,MAAMwH,KAAK2iB,OAGvB,IAAI2mH,EAAKnrD,QAAQr2D,GAAGyhH,QACzB,CACI,GAAI5mH,GAAShvB,EAAM21I,EAAKnrD,QAAQr2D,IACZ,OAAQ,OAAQ,IAAK,IAAK,UAAW,WAAY,cAGrEnF,GAAO4mH,UAEP,KAAK,GAAIlsI,GAAI,EAAGA,EAAIisI,EAAKnrD,QAAQr2D,GAAGyhH,QAAQt0I,OAAQoI,IAEhDslB,EAAO4mH,QAAQvpI,MAAOspI,EAAKnrD,QAAQr2D,GAAGyhH,QAAQlsI,GAAGhK,EAAGi2I,EAAKnrD,QAAQr2D,GAAGyhH,QAAQlsI,GAAGxD,GAGnFskF,GAAQmrD,EAAK9wI,MAAMwH,KAAK2iB,OAIvB,IAAI2mH,EAAKnrD,QAAQr2D,GAAG0hH,QACzB,CACI,GAAI7mH,GAAShvB,EAAM21I,EAAKnrD,QAAQr2D,IACZ,OAAQ,OAAQ,UAAW,IAAK,IAAK,QAAS,SAAU,UAAW,WAAY,cACnGq2D,GAAQmrD,EAAK9wI,MAAMwH,KAAK2iB,OAI5B,CACI,GAAIA,GAAShvB,EAAM21I,EAAKnrD,QAAQr2D,IACZ,OAAQ,OAAQ,IAAK,IAAK,QAAS,SAAU,UAAW,WAAY,cACxFnF,GAAOguF,WAAY,EACnBxyB,EAAQmrD,EAAK9wI,MAAMwH,KAAK2iB,IAKpCmtG,EAAI3xC,QAAUA,EACd2xC,EAAIC,UAAYA,EAEhBD,EAAI8O,QAGJ,KAAK,GAAI1pI,GAAI,EAAGA,EAAI46H,EAAI2O,SAASxpI,OAAQC,IAWrC,IAAK,GATDmE,GAAMy2H,EAAI2O,SAASvpI,GAEnB7B,EAAIgG,EAAIomI,WACR5lI,EAAIR,EAAIomI,WAERr2G,EAAQ,EACR22G,EAAS,EACTC,EAAS,EAEJjrI,EAAIsE,EAAIgkI,SAAUtoI,EAAIsE,EAAIgkI,SAAWhkI,EAAI4oB,QAG9C6tG,EAAI8O,MAAM7pI,IAAM1B,EAAGwG,EAAG3E,GAEtB7B,GAAKgG,EAAIqnD,UAAYrnD,EAAIqmI,YAEzBt2G,IAEIA,IAAU/vB,EAAI4oB,SAKlB89G,IAEIA,IAAW1mI,EAAIilB,UAEfjrB,EAAIgG,EAAIomI,WACR5lI,GAAKR,EAAIsnD,WAAatnD,EAAIqmI,YAE1BK,EAAS,EACTC,IAEIA,IAAW3mI,EAAIglB,OAxB8BtpB,KAyC7D,IAAK,GANDwiH,GACAuO,EACA2jB,EACApwI,EAGKnE,EAAI,EAAGA,EAAI46H,EAAIzY,OAAOpiH,OAAQC,IACvC,CACIqiH,EAAQuY,EAAIzY,OAAOniH,GAEnBmE,EAAM,IAGN,KAAK,GAAI4L,GAAI,EAAGA,EAAIsyG,EAAMznF,KAAK76B,OAAQgQ,IACvC,CACIspF,EAAMgpB,EAAMznF,KAAK7qB,EAGjB,KAAK,GAAIkhC,GAAI,EAAGA,EAAIooD,EAAIt5F,OAAQkxC,IAE5B2/E,EAAOv3B,EAAIpoD,GAEE,OAAT2/E,GAAiBA,EAAK/oG,MAAQ,IAOlC0sH,EAAM3Z,EAAI8O,MAAM9Y,EAAK/oG,OAAO,GAC5B1jB,EAAMy2H,EAAI2O,SAASgL,GAKfpwI,EAAI2vI,gBAAkB3vI,EAAI2vI,eAAeljB,EAAK/oG,MAAQ1jB,EAAIgkI,YAE1DvX,EAAKz9C,WAAa56E,EAAOmI,MAAMmD,MAAMM,EAAI2vI,eAAeljB,EAAK/oG,MAAQ1jB,EAAIgkI,UAAWvX,EAAKz9C,eAOzG,MAAOynD,KA2BfriI,EAAOqyI,QAAU,SAAUtnI,EAAM6kI,EAAUlgI,EAAOC,EAAQixF,EAAQC,EAASjmB,IAEzDvxE,SAAVqG,GAAuBA,GAAS,KAAKA,EAAQ,KAClCrG,SAAXsG,GAAwBA,GAAU,KAAKA,EAAS,IACrCtG,SAAXu3F,IAAwBA,EAAS,GACrBv3F,SAAZw3F,IAAyBA,EAAU,GAMvClhG,KAAKoL,KAAOA,EAOZpL,KAAKiwI,SAAsB,EAAXA,EAOhBjwI,KAAKszD,UAAoB,EAARvjD,EAOjB/P,KAAKuzD,WAAsB,EAATvjD,EASlBhQ,KAAKqyI,WAAsB,EAATpxC,EAQlBjhG,KAAKsyI,YAAwB,EAAVpxC,EAMnBlhG,KAAKi7E,WAAaA,MAQlBj7E,KAAKopB,MAAQ,KAQbppB,KAAKixB,KAAO,EAQZjxB,KAAKkxB,QAAU,EAQflxB,KAAK60B,MAAQ,EAQb70B,KAAKs8I,eAITj8I,EAAOqyI,QAAQrsI,WAYXmzD,KAAM,SAAUn1C,EAASpe,EAAGwG,EAAGkjB,GAG3B,GAAI4sH,GAAc5sH,EAAQ3vB,KAAKiwI,UAAa,CAExCsM,IAAc,GAAMA,EAAa,EAAKv8I,KAAKs8I,WAAWz0I,QAGtDwc,EAAQ+uB,UACJpzC,KAAKopB,MACLppB,KAAKs8I,WAAWC,GAChBv8I,KAAKs8I,WAAWC,EAAa,GAC7Bv8I,KAAKszD,UACLtzD,KAAKuzD,WACLttD,EACAwG,EACAzM,KAAKszD,UACLtzD,KAAKuzD,aAiBjBonF,OAAQ,SAAUjO,EAASzmI,EAAGwG,EAAGkjB,EAAOtR,GAGpC,GAAIk+H,GAAuC,GAAzB5sH,EAAQ3vB,KAAKiwI,SAE3BsM,IAAc,GAAMA,EAAa,EAAKv8I,KAAKs8I,WAAWz0I,QAKtD6kI,EAAQ95H,MACJH,GAAIzS,KAAKs8I,WAAWC,GACpB7pI,GAAI1S,KAAKs8I,WAAWC,EAAa,GACjCC,GAAIx8I,KAAKszD,UACTmpF,GAAIz8I,KAAKuzD,WACTllD,GAAIpI,EAAqB,GAAjBjG,KAAKszD,UACbhlD,GAAI7B,EAAsB,GAAlBzM,KAAKuzD,WACbmpF,GAAI18I,KAAKszD,UACTqpF,GAAI38I,KAAKuzD,WACTl1C,MAAOA,KAWnBq8H,cAAe,SAAUhO,GAGhBA,EAASA,EAAQ7kI,OAAS,IAE3B6kI,EAAQ95H,KAAM,OAWtB6lI,kBAAmB,SAAUD,GAEzB,MACIA,IAAax4I,KAAKiwI,UAClBuI,EAAax4I,KAAKiwI,SAAWjwI,KAAK60B,OAY1C29G,SAAU,SAAUppH,GAEhBppB,KAAKopB,MAAQA,EACbppB,KAAK67I,eAAezyH,EAAMrZ,MAAOqZ,EAAMpZ,SAY3C4sI,WAAY,SAAU37C,EAAQC,GAE1BlhG,KAAKqyI,WAAsB,EAATpxC,EAClBjhG,KAAKsyI,YAAwB,EAAVpxC,EAEflhG,KAAKopB,OAELppB,KAAK67I,eAAe77I,KAAKopB,MAAMrZ,MAAO/P,KAAKopB,MAAMpZ,SAazD6rI,eAAgB,SAAU3L,EAAYC,GAGlC,GAAI0M,IAAY1M,EAAgC,EAAlBnwI,KAAKqyI,WAAiBryI,KAAKsyI,cAAgBtyI,KAAKuzD,WAAavzD,KAAKsyI,aAC5FwK,GAAY5M,EAA+B,EAAlBlwI,KAAKqyI,WAAiBryI,KAAKsyI,cAAgBtyI,KAAKszD,UAAYtzD,KAAKsyI,YAE1FuK,GAAW,IAAM,GAAKC,EAAW,IAAM,GAEvC10I,QAAQG,KAAK,oBAAsBvI,KAAKoL,KAAO,yDAKnDyxI,EAAW92I,KAAKI,MAAM02I,GACtBC,EAAW/2I,KAAKI,MAAM22I,IAEjB98I,KAAKixB,MAAQjxB,KAAKixB,OAAS4rH,GAAc78I,KAAKkxB,SAAWlxB,KAAKkxB,UAAY4rH,IAE3E10I,QAAQG,KAAK,+EAGjBvI,KAAKixB,KAAO4rH,EACZ78I,KAAKkxB,QAAU4rH,EACf98I,KAAK60B,MAAQgoH,EAAWC,EAExB98I,KAAKs8I,WAAWz0I,OAAS,CAKzB,KAAK,GAHD8J,GAAK3R,KAAKqyI,WACVzgI,EAAK5R,KAAKqyI,WAEL5lI,EAAI,EAAGA,EAAIzM,KAAKixB,KAAMxkB,IAC/B,CACI,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKkxB,QAASjrB,IAE9BjG,KAAKs8I,WAAW1pI,KAAKjB,GACrB3R,KAAKs8I,WAAW1pI,KAAKhB,GACrBD,GAAM3R,KAAKszD,UAAYtzD,KAAKsyI,WAGhC3gI,GAAK3R,KAAKqyI,WACVzgI,GAAM5R,KAAKuzD,WAAavzD,KAAKsyI,eAOzCjyI,EAAOqyI,QAAQrsI,UAAU8B,YAAc9H,EAAOqyI,QAoB9CryI,EAAO0nI,SAAW,SAAUvtH,EAAMvU,EAAGwG,EAAGV,EAAK4kB,GAEzCtwB,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK4kB,GAM1C3wB,KAAK+8I,WAAY,EAMjB/8I,KAAKg9I,UAAY,KAMjBh9I,KAAKi9I,GAAK,EAMVj9I,KAAKk9I,WAAY,EAMjBl9I,KAAKm9I,UAAY,KAMjBn9I,KAAKo9I,GAAK,GAId/8I,EAAO0nI,SAAS1hI,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WACxDhG,EAAO0nI,SAAS1hI,UAAU8B,YAAc9H,EAAO0nI,SAQ/C1nI,EAAO0nI,SAAS1hI,UAAUkY,OAAS,WAE3Bve,KAAK+8I,YAEL/8I,KAAKi9I,KAEDj9I,KAAKi9I,GAELj9I,KAAK6U,MAAM5I,IAAIjM,KAAKg9I,UAAUh9I,KAAKi9I,IAAIh3I,EAAGjG,KAAKg9I,UAAUh9I,KAAKi9I,IAAIxwI,GAIlEzM,KAAK+8I,WAAY,GAIrB/8I,KAAKk9I,YAELl9I,KAAKo9I,KAEDp9I,KAAKo9I,GAELp9I,KAAKqe,MAAQre,KAAKm9I,UAAUn9I,KAAKo9I,IAAI1iH,EAIrC16B,KAAKk9I,WAAY,IAY7B78I,EAAO0nI,SAAS1hI,UAAUg3I,OAAS,aASnCh9I,EAAO0nI,SAAS1hI,UAAUi3I,aAAe,SAAS56G,GAE9C1iC,KAAKm9I,UAAYz6G,EACjB1iC,KAAKo9I,GAAK16G,EAAK76B,OAAS,EACxB7H,KAAKqe,MAAQre,KAAKm9I,UAAUn9I,KAAKo9I,IAAI1iH,EACrC16B,KAAKk9I,WAAY,GAUrB78I,EAAO0nI,SAAS1hI,UAAUk3I,aAAe,SAAS76G,GAE9C1iC,KAAKg9I,UAAYt6G,EACjB1iC,KAAKi9I,GAAKv6G,EAAK76B,OAAS,EACxB7H,KAAK6U,MAAM5I,IAAIjM,KAAKg9I,UAAUh9I,KAAKi9I,IAAIh3I,EAAGjG,KAAKg9I,UAAUh9I,KAAKi9I,IAAIxwI,GAClEzM,KAAK+8I,WAAY,GAgBrB18I,EAAO0nI,SAAS1hI,UAAUqZ,MAAQ,SAASzZ,EAAGwG,EAAGmgD,GAU7C,MARAvsD,GAAOymD,UAAUkJ,MAAM3pD,UAAUqZ,MAAM5Y,KAAK9G,KAAMiG,EAAGwG,EAAGmgD,GAExD5sD,KAAKqe,MAAQ,EACbre,KAAK6U,MAAM5I,IAAI,GAEfjM,KAAK+8I,WAAY,EACjB/8I,KAAKk9I,WAAY,EAEVl9I,MAiBXK,EAAO45B,UAAY,SAAUzf,GAKzBxa,KAAKwa,KAAOA,EAKZxa,KAAKw9I,YAMLx9I,KAAKy9I,GAAK,GAIdp9I,EAAO45B,UAAU5zB,WAQbwL,IAAK,SAAUwgD,GAIX,MAFAryD,MAAKw9I,SAASnrF,EAAQjnD,MAAQinD,EAEvBA,GASXvvC,OAAQ,SAAUuvC,SAEPryD,MAAKw9I,SAASnrF,EAAQjnD,OASjCmT,OAAQ,WAEJ,IAAK,GAAIxS,KAAO/L,MAAKw9I,SAEbx9I,KAAKw9I,SAASzxI,GAAKye,QAEnBxqB,KAAKw9I,SAASzxI,GAAKwS,WAQnCle,EAAO45B,UAAU5zB,UAAU8B,YAAc9H,EAAO45B,UAahD55B,EAAO45B,UAAUs4B,UAoBjBlyD,EAAO45B,UAAUs4B,OAAOC,QAAU,SAAUh4C,EAAMvU,EAAGwG,EAAG6lD,GAMpDtyD,KAAKsyD,aAAeA,GAAgB,GAEpCjyD,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,GAKxBxa,KAAKoL,KAAO,UAAYpL,KAAKwa,KAAK4F,UAAUq9H,KAM5Cz9I,KAAKkI,KAAO7H,EAAOuB,QAMnB5B,KAAK+tB,YAAc1tB,EAAOmB,MAM1BxB,KAAKsX,KAAO,GAAIjX,GAAOkN,UAAUtH,EAAGwG,EAAG,EAAG,GAM1CzM,KAAK09I,iBAAmB,GAAIr9I,GAAO2M,QAAM,OAAM,MAM/ChN,KAAK29I,iBAAmB,GAAIt9I,GAAO2M,MAAM,IAAK,KAM9ChN,KAAK49I,iBAAmB,EAMxB59I,KAAK69I,iBAAmB,EAKxB79I,KAAKg9I,UAAY,KAMjBh9I,KAAK89I,aAAc,IAMnB99I,KAAK+9I,YAAc,IAMnB/9I,KAAKg+I,iBAAmB,EAMxBh+I,KAAKi+I,iBAAmB,EAKxBj+I,KAAKm9I,UAAY,KAMjBn9I,KAAKgvH,QAAU,IAMfhvH,KAAKk+I,cAAgB79I,EAAO0nI,SAK5B/nI,KAAKm+I,aAAe,GAAI99I,GAAO2M,MAM/BhN,KAAKiwH,YAAc,EAMnBjwH,KAAKivF,UAAY,IAMjBjvF,KAAK4tD,SAAW,IAKhB5tD,KAAKyzH,OAAS,GAAIpzH,GAAO2M,MAMzBhN,KAAKi7H,IAAK,EAMVj7H,KAAKo+I,eAAiB,GAAI/9I,GAAO2M,MAAM,GAAK,IAM5ChN,KAAKo8D,UAAY/7D,EAAOmE,WAAWC,OAQnCzE,KAAKq+I,MAAQp4I,EAQbjG,KAAKs+I,MAAQ7xI,EAKbzM,KAAK+8I,WAAY,EAKjB/8I,KAAKk9I,WAAY,EAMjBl9I,KAAKu+I,oBAAqB,EAM1Bv+I,KAAKw+I,oBAAqB,EAM1Bx+I,KAAKy+I,kBAAoB,GAAIp+I,GAAO2M,MAAM,EAAG,GAM7ChN,KAAK0+I,kBAAoB,GAAIr+I,GAAO2M,MAAM,EAAG,GAM7ChN,KAAK2+I,UAAY,EAMjB3+I,KAAK4+I,OAAS,EAMd5+I,KAAK6+I,SAAW,EAMhB7+I,KAAK8+I,cAAgB,EAMrB9+I,KAAK++I,WAAa,EAMlB/+I,KAAKg/I,UAAW,EAMhBh/I,KAAKs+F,QAAU,MAInBj+F,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACvEhG,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAU8B,YAAc9H,EAAO45B,UAAUs4B,OAAOC,QAOhFnyD,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUkY,OAAS,WAE/C,GAAIve,KAAKi7H,IAAMj7H,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAK4+I,OAIvC,GAFA5+I,KAAK4+I,OAAS5+I,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKivF,UAAYjvF,KAAKwa,KAAKmE,KAAKid,WAE5C,IAApB57B,KAAK++I,WAEL,GAAI/+I,KAAK8+I,cAAgB,GAErB,IAAK,GAAIh3I,GAAI,EAAGA,EAAI9H,KAAK8+I,cAAeh3I,IAEpC,GAAI9H,KAAKi/I,iBAELj/I,KAAK6+I,WAED7+I,KAAK++I,cAAe,GAAM/+I,KAAK6+I,UAAY7+I,KAAK++I,YACpD,CACI/+I,KAAKi7H,IAAK,CACV,YAORj7H,MAAKi/I,iBAELj/I,KAAK6+I,WAED7+I,KAAK++I,cAAe,GAAM/+I,KAAK6+I,UAAY7+I,KAAK++I,aAEhD/+I,KAAKi7H,IAAK,QAOlBj7H,MAAKi/I,iBAELj/I,KAAK6+I,WAED7+I,KAAK2+I,UAAY,GAAK3+I,KAAK6+I,UAAY7+I,KAAK2+I,YAE5C3+I,KAAKi7H,IAAK,GAS1B,KAFA,GAAInzH,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEC9H,KAAK2rB,SAAS7jB,GAAG0iB,QAEjBxqB,KAAK2rB,SAAS7jB,GAAGyW,UAkB7Ble,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAU64I,cAAgB,SAAUpzI,EAAMq0E,EAAQtvD,EAAUggG,EAASwF,GAElF3sH,SAAXy2E,IAAwBA,EAAS,GACpBz2E,SAAbmnB,IAA0BA,EAAW7wB,KAAKsyD,cAC9B5oD,SAAZmnH,IAAyBA,GAAU,GACZnnH,SAAvB2sH,IAAoCA,GAAqB,EAE7D,IAAI8oB,GACAr3I,EAAI,EACJs3I,EAAStzI,EACTuzI,EAAWl/D,CAQf,KAPAngF,KAAKs+F,QAAUne,EAEXtvD,EAAW7wB,KAAKsyD,eAEhBtyD,KAAKsyD,aAAezhC,GAGjB/oB,EAAI+oB,GAEHrqB,MAAMa,QAAQyE,KAEdszI,EAASp/I,KAAKwa,KAAKsE,IAAIsX,KAAKtqB,IAG5BtF,MAAMa,QAAQ84E,KAEdk/D,EAAWr/I,KAAKwa,KAAKsE,IAAIsX,KAAK+pD,IAGlCg/D,EAAW,GAAIn/I,MAAKk+I,cAAcl+I,KAAKwa,KAAM,EAAG,EAAG4kI,EAAQC,GAE3Dr/I,KAAKwa,KAAK6F,QAAQguG,OAAOr+F,OAAOmvH,GAAU,GAEtCtuB,GAEAsuB,EAASvvH,KAAKq/F,eAAeqH,KAAM,EACnC6oB,EAASvvH,KAAKq/F,eAAe6E,MAAO,GAIpCqrB,EAASvvH,KAAKq/F,eAAe6E,MAAO,EAGxCqrB,EAASvvH,KAAKymG,mBAAqBA,EACnC8oB,EAASvvH,KAAK0/F,cAAe,EAE7B6vB,EAAS30H,QAAS,EAClB20H,EAAStkI,SAAU,EACnBskI,EAAS91H,OAAO5b,SAASzN,KAAKo+I,gBAE9Bp+I,KAAK6R,IAAIstI,GAETr3I,GAGJ,OAAO9H,OAUXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAU0mD,KAAO,WAM7C,MAJA/sD,MAAKi7H,IAAK,EACVj7H,KAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EAEPxqB,MAUXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUynD,OAAS,WAK/C,MAHA9tD,MAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EAEPxqB,MAYXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUi5I,QAAU,SAAU1xF,EAAU/8B,GAMpE,MAJA7wB,MAAK++I,WAAa,EAElB/+I,KAAK0Q,OAAM,EAAMk9C,EAAU,EAAG/8B,GAAU,GAEjC7wB,MAmBXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUk5I,KAAO,SAAU3xF,EAAUqhC,EAAWp+D,EAAUgE,EAAOymC,GA4B7F,MA1BiB5xD,UAAbmnB,GAAuC,IAAbA,IAAkBA,EAAW,GAC7CnnB,SAAVmrB,IAAuBA,GAAQ,GACjBnrB,SAAd4xD,IAA2BA,GAAY,GAEvCzqC,EAAW7wB,KAAKsyD,eAEhBzhC,EAAW7wB,KAAKsyD,cAGpBtyD,KAAK6+I,SAAW,EAChB7+I,KAAK8+I,cAAgBjuH,EACrB7wB,KAAK++I,WAAalqH,EAEdymC,GAEAt7D,KAAK0Q,OAAM,EAAMk9C,EAAUqhC,EAAWp+D,GAEtC7wB,KAAK6+I,UAAYhuH,EACjB7wB,KAAKi7H,IAAK,EACVj7H,KAAK4+I,OAAS5+I,KAAKwa,KAAKmE,KAAKA,KAAOswE,EAAYjvF,KAAKwa,KAAKmE,KAAKid,YAI/D57B,KAAK0Q,OAAM,EAAOk9C,EAAUqhC,EAAWp+D,GAGpC7wB,MAeXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUqK,MAAQ,SAAU4uI,EAAS1xF,EAAUqhC,EAAWp+D,EAAU2uH,GAoBhG,GAlBgB91I,SAAZ41I,IAAyBA,GAAU,GACtB51I,SAAbkkD,IAA0BA,EAAW,GACvBlkD,SAAdulF,GAAyC,OAAdA,IAAsBA,EAAY,KAChDvlF,SAAbmnB,IAA0BA,EAAW,GACnBnnB,SAAlB81I,IAA+BA,GAAgB,GAE/C3uH,EAAW7wB,KAAKsyD,eAEhBzhC,EAAW7wB,KAAKsyD,cAGpBtyD,KAAK8tD,SAEL9tD,KAAK6a,SAAU,EAEf7a,KAAK4tD,SAAWA,EAChB5tD,KAAKivF,UAAYA,EAEbqwD,GAAWE,EAEX,IAAK,GAAI13I,GAAI,EAAGA,EAAI+oB,EAAU/oB,IAE1B9H,KAAKi/I,mBAKTj/I,MAAKi7H,IAAK,EACVj7H,KAAK2+I,UAAY9tH,EACjB7wB,KAAK6+I,SAAW,EAChB7+I,KAAK4+I,OAAS5+I,KAAKwa,KAAKmE,KAAKA,KAAOswE,EAAYjvF,KAAKwa,KAAKmE,KAAKid,UAGnE,OAAO57B,OAkBXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAU44I,aAAe,SAAUh5I,EAAGwG,EAAGV,EAAK4kB,GAEhEjnB,SAANzD,IAAmBA,EAAI,MACjByD,SAAN+C,IAAmBA,EAAI,KAE3B,IAAI0yI,GAAWn/I,KAAK80B,gBAAe,EAEnC,IAAiB,OAAbqqH,EAEA,OAAO,CAGX,IAAIrgI,GAAM9e,KAAKwa,KAAKsE,GAERpV,UAARqC,GAA+BrC,SAAVinB,EAErBwuH,EAAShqH,YAAYppB,EAAK4kB,GAEbjnB,SAARqC,GAELozI,EAAShqH,YAAYppB,EAGzB,IAAIsyI,GAAQr+I,KAAKq+I,MACbC,EAAQt+I,KAAKs+I,KAEP,QAANr4I,EAEAo4I,EAAQp4I,EAEHjG,KAAK+P,MAAQ,IAElBsuI,EAAQv/H,EAAIyY,QAAQv3B,KAAK6K,KAAM7K,KAAK4K,QAG9B,OAAN6B,EAEA6xI,EAAQ7xI,EAEHzM,KAAKgQ,OAAS,IAEnBsuI,EAAQx/H,EAAIyY,QAAQv3B,KAAK0O,IAAK1O,KAAK2O,SAGvCwwI,EAASz/H,MAAM2+H,EAAOC,GAEtBa,EAASjxI,MAAQ,EACjBixI,EAASvxF,SAAW5tD,KAAK4tD,SAErB5tD,KAAKu+I,mBAELv+I,KAAK6xB,WAAWstH,GAEXn/I,KAAKw+I,oBAEVx+I,KAAK+xB,WAAWotH,GAGhBn/I,KAAK+8I,UAELoC,EAAS5B,aAAav9I,KAAKg9I,WAEI,IAA1Bh9I,KAAK49I,kBAAoD,IAA1B59I,KAAK69I,iBAEzCsB,EAAStqI,MAAM5I,IAAI6S,EAAIyxE,YAAYvwF,KAAK49I,iBAAkB59I,KAAK69I,mBAEzD79I,KAAKy+I,kBAAkBx4I,IAAMjG,KAAK0+I,kBAAkBz4I,GAAOjG,KAAKy+I,kBAAkBhyI,IAAMzM,KAAK0+I,kBAAkBjyI,GAErH0yI,EAAStqI,MAAM5I,IAAI6S,EAAIyxE,YAAYvwF,KAAKy+I,kBAAkBx4I,EAAGjG,KAAK0+I,kBAAkBz4I,GAAI6Y,EAAIyxE,YAAYvwF,KAAKy+I,kBAAkBhyI,EAAGzM,KAAK0+I,kBAAkBjyI,IAG/I/C,SAAVinB,IAEInqB,MAAMa,QAAQrH,KAAKs+F,SAEnB6gD,EAASxuH,MAAQ3wB,KAAKwa,KAAKsE,IAAIsX,KAAKp2B,KAAKs+F,SAIzC6gD,EAASxuH,MAAQ3wB,KAAKs+F,SAI1Bt+F,KAAKk9I,UAELiC,EAAS7B,aAAat9I,KAAKm9I,WAI3BgC,EAAS9gI,MAAQS,EAAIyxE,YAAYvwF,KAAKg+I,iBAAkBh+I,KAAKi+I,kBAGjEkB,EAAS/iF,UAAYp8D,KAAKo8D,SAE1B,IAAIxsC,GAAOuvH,EAASvvH,IAgBpB,OAdAA,GAAK2nG,eAEL3nG,EAAK6jG,OAAOhmH,SAASzN,KAAKyzH,QAC1B7jG,EAAKygG,KAAK5iH,SAASzN,KAAKm+I,cAExBvuH,EAAKugG,SAASlqH,EAAI6Y,EAAIyY,QAAQv3B,KAAK09I,iBAAiBz3I,EAAGjG,KAAK29I,iBAAiB13I,GAC7E2pB,EAAKugG,SAAS1jH,EAAIqS,EAAIyY,QAAQv3B,KAAK09I,iBAAiBjxI,EAAGzM,KAAK29I,iBAAiBlxI,GAC7EmjB,EAAKmgG,gBAAkBjxG,EAAIyY,QAAQv3B,KAAK89I,YAAa99I,KAAK+9I,aAE1DnuH,EAAKo/F,QAAQviH,EAAIzM,KAAKgvH,QACtBp/F,EAAKqgG,YAAcjwH,KAAKiwH,YAExBkvB,EAAS9B,UAEF,GASXh9I,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUyd,QAAU,WAEhD9jB,KAAKwa,KAAK4F,UAAU0C,OAAO9iB,MAE3BK,EAAOmtB,MAAMnnB,UAAUyd,QAAQhd,KAAK9G,MAAM,GAAM,IAYpDK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUoZ,QAAU,SAAU1P,EAAOC,GAKjE,MAHAhQ,MAAKsX,KAAKvH,MAAQA,EAClB/P,KAAKsX,KAAKtH,OAASA,EAEZhQ,MAWXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUo5I,UAAY,SAAUxtI,EAAKE,GAQjE,MANAF,GAAMA,GAAO,EACbE,EAAMA,GAAO,EAEbnS,KAAK09I,iBAAiBz3I,EAAIgM,EAC1BjS,KAAK29I,iBAAiB13I,EAAIkM,EAEnBnS,MAWXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUq5I,UAAY,SAAUztI,EAAKE,GAQjE,MANAF,GAAMA,GAAO,EACbE,EAAMA,GAAO,EAEbnS,KAAK09I,iBAAiBjxI,EAAIwF,EAC1BjS,KAAK29I,iBAAiBlxI,EAAI0F,EAEnBnS,MAYXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUs5I,YAAc,SAAU1tI,EAAKE,GAQnE,MANAF,GAAMA,GAAO,EACbE,EAAMA,GAAO,EAEbnS,KAAK89I,YAAc7rI,EACnBjS,KAAK+9I,YAAc5rI,EAEZnS,MAiBXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUu5I,SAAW,SAAU3tI,EAAKE,EAAK0tI,EAAM5nD,EAAMC,GAYjF,GAVYxuF,SAARuI,IAAqBA,EAAM,GACnBvI,SAARyI,IAAqBA,EAAM,GAClBzI,SAATm2I,IAAsBA,EAAO,GACpBn2I,SAATuuF,IAAsBA,EAAO53F,EAAOyyF,OAAOK,OAAOC,MACzC1pF,SAATwuF,IAAsBA,GAAO,GAEjCl4F,KAAKg+I,iBAAmB/rI,EACxBjS,KAAKi+I,iBAAmB9rI,EACxBnS,KAAKk9I,WAAY,EAEb2C,EAAO,GAAK5tI,IAAQE,EACxB,CACI,GAAI2tI,IAAcplH,EAAGzoB,GACjBk/C,EAAQnxD,KAAKwa,KAAKqF,KAAKsxC,MAAM2uF,GAAW1zI,IAAMsuB,EAAGvoB,GAAO0tI,EAAM5nD,EAClE9mC,GAAM+mC,KAAKA,GAEXl4F,KAAKm9I,UAAYhsF,EAAMkoC,aAAa,IAGpCr5F,KAAKm9I,UAAUv0I,UACf5I,KAAKk9I,WAAY,EAGrB,MAAOl9I,OAmBXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAUsyI,SAAW,SAAUroF,EAAME,EAAMD,EAAME,EAAMovF,EAAM5nD,EAAMC,GAmB/F,GAjBaxuF,SAAT4mD,IAAsBA,EAAO,GACpB5mD,SAAT8mD,IAAsBA,EAAO,GACpB9mD,SAAT6mD,IAAsBA,EAAO,GACpB7mD,SAAT+mD,IAAsBA,EAAO,GACpB/mD,SAATm2I,IAAsBA,EAAO,GACpBn2I,SAATuuF,IAAsBA,EAAO53F,EAAOyyF,OAAOK,OAAOC,MACzC1pF,SAATwuF,IAAsBA,GAAO,GAGjCl4F,KAAK49I,iBAAmB,EACxB59I,KAAK69I,iBAAmB,EAExB79I,KAAKy+I,kBAAkBxyI,IAAIqkD,EAAMC,GACjCvwD,KAAK0+I,kBAAkBzyI,IAAIukD,EAAMC,GAEjCzwD,KAAK+8I,WAAY,EAEb8C,EAAO,IAAOvvF,IAASE,GAAUD,IAASE,GAC9C,CACI,GAAIqvF,IAAc75I,EAAGqqD,EAAM7jD,EAAG8jD,GAC1BY,EAAQnxD,KAAKwa,KAAKqF,KAAKsxC,MAAM2uF,GAAW1zI,IAAMnG,EAAGuqD,EAAM/jD,EAAGgkD,GAAQovF,EAAM5nD,EAC5E9mC,GAAM+mC,KAAKA,GAEXl4F,KAAKg9I,UAAY7rF,EAAMkoC,aAAa,IAGpCr5F,KAAKg9I,UAAUp0I,UACf5I,KAAK+8I,WAAY,EAGrB,MAAO/8I,OAYXK,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAU05I,GAAK,SAAUxqH,GAarD,MAXIA,GAAOvkB,QAEPhR,KAAKq+I,MAAQ9oH,EAAOvkB,OAAO/K,EAC3BjG,KAAKs+I,MAAQ/oH,EAAOvkB,OAAOvE,IAI3BzM,KAAKq+I,MAAQ9oH,EAAO9a,MAAMxU,EAAKsvB,EAAOlM,OAAOpjB,EAAIsvB,EAAOxlB,MACxD/P,KAAKs+I,MAAQ/oH,EAAO9a,MAAMhO,EAAK8oB,EAAOlM,OAAO5c,EAAI8oB,EAAOvlB,QAGrDhQ,MAQXuH,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,SAE7D2F,IAAK,WACD,MAAOhM,MAAKsX,KAAKvH,OAGrB9D,IAAK,SAAU1C,GACXvJ,KAAKsX,KAAKvH,MAAQxG,KAS1BhC,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,UAE7D2F,IAAK,WACD,MAAOhM,MAAKsX,KAAKtH,QAGrB/D,IAAK,SAAU1C,GACXvJ,KAAKsX,KAAKtH,OAASzG,KAS3BhC,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,KAE7D2F,IAAK,WACD,MAAOhM,MAAKq+I,OAGhBpyI,IAAK,SAAU1C,GACXvJ,KAAKq+I,MAAQ90I,KASrBhC,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,KAE7D2F,IAAK,WACD,MAAOhM,MAAKs+I,OAGhBryI,IAAK,SAAU1C,GACXvJ,KAAKs+I,MAAQ/0I,KAUrBhC,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,QAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKiG,EAAKjG,KAAKsX,KAAKvH,MAAQ,MAUtDxI,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,SAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKiG,EAAKjG,KAAKsX,KAAKvH,MAAQ,MAUtDxI,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,OAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKyM,EAAKzM,KAAKsX,KAAKtH,OAAS,MAUvDzI,OAAO2E,eAAe7L,EAAO45B,UAAUs4B,OAAOC,QAAQnsD,UAAW,UAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKyM,EAAKzM,KAAKsX,KAAKtH,OAAS,MAmCvD3P,EAAOwwD,OAAS,SAAUr2C,EAAMgP,GAE5BnpB,EAAOkpB,OAAOziB,KAAK9G,KAAMwa,EAAMgP,GAM/BxpB,KAAKggJ,QAAU,KAOfhgJ,KAAKigJ,wBAAyB,EAO9BjgJ,KAAKkgJ,UAAW,EAQhBlgJ,KAAKmgJ,MAAQ,EAQbngJ,KAAKogJ,UAAY,EAMjBpgJ,KAAKqgJ,SAAW,IAShBrgJ,KAAKsgJ,iBAAmB,EAQxBtgJ,KAAKugJ,SAAW,GAAIlgJ,GAAOkN,UAAU,EAAG,EAAG,EAAG,GAO9CvN,KAAKwgJ,UAAYngJ,EAAO8C,SAMxBnD,KAAKygJ,0BAA2B,EAOhCzgJ,KAAK0gJ,gBAAkB,GAOvB1gJ,KAAK2gJ,mBAAoB,EAUzB3gJ,KAAK4gJ,kBAAmB,EAOxB5gJ,KAAK6gJ,iBAAkB,EAQvB7gJ,KAAK8gJ,uBAAyB,EAS9B9gJ,KAAK+gJ,kBAAoB,EASzB/gJ,KAAKghJ,oBAAsB,EAO3BhhJ,KAAKihJ,YAAc,IAQnBjhJ,KAAKkhJ,oBAAsB,EAQ3BlhJ,KAAKmhJ,eAAiB,EAOtBnhJ,KAAKohJ,mBAAqB,EAO1BphJ,KAAKqhJ,cAAgB,GAAIhhJ,GAAO2M,MAAM,EAAG,GAQzChN,KAAKshJ,wBAAyB,EAO9BthJ,KAAKuhJ,UAAY,GAOjBvhJ,KAAKwhJ,YAAc,GAOnBxhJ,KAAKyhJ,aAAephJ,EAAOqhJ,OAO3B1hJ,KAAK2hJ,2BAA4B,EAOjC3hJ,KAAK4hJ,gBAAkBvhJ,EAAOwwD,OAAOgxF,kBAQrC7hJ,KAAK+7E,OACD+lE,YAAY,EACZ/xI,MAAO,EACPC,OAAQ,EACR6lC,QAAS,EACTC,QAAS,GAWb91C,KAAK2a,OAAS,GAAIta,GAAOkN,UAQzBvN,KAAK+hJ,aAAevnI,EAAKC,MAAME,OAQ/B3a,KAAKgiJ,gBAQLhiJ,KAAKiiJ,iBAAmB,EAOxBjiJ,KAAKkiJ,SASLliJ,KAAKmiJ,OAAS,GAAI9hJ,GAAO+a,OASzBpb,KAAKoiJ,OAAS,GAAI/hJ,GAAO+a,OAUzBpb,KAAKqiJ,YAAc,GAAIhiJ,GAAO+a,OAQ9Bpb,KAAKsiJ,cAAgB,KAQrBtiJ,KAAKuiJ,eAAiB,KAStBviJ,KAAKwiJ,eAAgB,EAUrBxiJ,KAAKyiJ,YAAc,GAAIpiJ,GAAO2M,MAQ9BhN,KAAK0iJ,UAAY,GAIrBriJ,EAAOwwD,OAAOxqD,UAAYkB,OAAOmZ,OAAOrgB,EAAOkpB,OAAOljB,WACtDhG,EAAOwwD,OAAOxqD,UAAU8B,YAAc9H,EAAOwwD,OAO7CxwD,EAAOwwD,OAAO8xF,WAAa,EAO3BtiJ,EAAOwwD,OAAO+xF,cAAgB,EAQ9BviJ,EAAOwwD,OAAOgyF,cAAgB,EAO9BxiJ,EAAOwwD,OAAOiyF,mBAAqB,EAOnCziJ,EAAOwwD,OAAOkyF,mBAAqB,EAOnC1iJ,EAAOwwD,OAAOgxF,kBAAoB,EAOlCxhJ,EAAOwwD,OAAOmyF,mBAAqB,EA4BnC3iJ,EAAOwwD,OAAOxqD,UAAUyqD,cAAgB,SAAUjgC,EAAU9kB,EAAK4kB,EAAO6F,GA2BpE,MAzBiB9sB,UAAbmnB,IAA0BA,EAAW,GAC3BnnB,SAAV8sB,IAAuBA,EAAQx2B,KAAKwa,KAAKC,OAExCza,KAAKggJ,UAENhgJ,KAAKggJ,QAAUhgJ,KAAKwa,KAAK3I,IAAIu/C,aAAa/wD,EAAOutB,QAAQC,OAAQ2I,GACjEx2B,KAAKggJ,QAAQ7xH,UAAYnuB,KAAKyhJ,cAGjB,IAAb5wH,IAEIA,KAAa,IAEb7wB,KAAKigJ,wBAAyB,EAC9BpvH,EAAW,GAGf7wB,KAAKggJ,QAAQpvH,eAAeC,EAAU9kB,EAAK4kB,GAE3C3wB,KAAKggJ,QAAQptH,OAAO,qBAAsB5yB,MAE1CA,KAAKuhJ,UAAYx1I,EACjB/L,KAAKwhJ,YAAc7wH,GAGhB3wB,MAeXK,EAAOwwD,OAAOxqD,UAAUoB,QAAU,SAAU6rB,EAAUvQ,GAIlD,MAFA/iB,MAAKggJ,QAAQ9rH,cAAcZ,EAAUvQ,EAAiBhc,WAE/C/G,MAYXK,EAAOwwD,OAAOxqD,UAAU2wF,SAAW,WAI/B,MAFAh3F,MAAKggJ,QAAQptH,OAAO,eAAe,GAE5B5yB,MAYXK,EAAOwwD,OAAOxqD,UAAU4wF,UAAY,WAIhC,MAFAj3F,MAAKggJ,QAAQptH,OAAO,eAAe,GAE5B5yB,MAWXK,EAAOwwD,OAAOxqD,UAAU48I,QAAU,WAM9B,MAJAjjJ,MAAKggJ,QAAQ3sH,cAAc,QAAQ,GAEnCrzB,KAAKggJ,QAAQptH,OAAO,eAAe,GAE5B5yB,MAYXK,EAAOwwD,OAAOxqD,UAAU68I,WAAa,SAAUC,GAS3C,MAPAnjJ,MAAKmgJ,MAAQ,EAEIz2I,SAAby5I,IAEAnjJ,KAAKogJ,UAAY+C,GAGdnjJ,MAUXK,EAAOwwD,OAAOxqD,UAAUyd,QAAU,WAE9B9jB,KAAKwpB,OAAO1G,OAAO9iB,MAAM,GAEzBA,KAAKggJ,QAAQl8H,UAEb9jB,KAAKwa,KAAO,KACZxa,KAAKwpB,OAAS,KACdxpB,KAAK6kB,QAAS,EACd7kB,KAAK6a,SAAU,GAUnBxa,EAAOwwD,OAAOxqD,UAAUkY,OAAS,WAEzBve,KAAK4hJ,kBAAoBvhJ,EAAOwwD,OAAOiyF,qBAEnC9iJ,KAAKsiJ,eAELtiJ,KAAKsiJ,cAAc12H,kBACnB5rB,KAAK2a,OAAOjJ,SAAS1R,KAAKsiJ,cAAcrjI,cAAchZ,EAAGjG,KAAKsiJ,cAAcrjI,cAAcxS,IAErFzM,KAAKuiJ,gBAEVviJ,KAAK2a,OAAOjJ,SAAS1R,KAAKuiJ,eAAex/B,OAAQ/iH,KAAKuiJ,eAAev/B,SAIzEhjH,KAAKkgJ,UAAYlgJ,KAAKwa,KAAKmE,KAAKya,IAAMp5B,KAAK0iJ,WAE3C1iJ,KAAKojJ;EAsBb/iJ,EAAOwwD,OAAOxqD,UAAUg9I,YAAc,SAAUjsH,EAAQye,EAASC,EAAS0sG,GAYtE,MAVgB94I,UAAZmsC,IAAyBA,EAAU,GACvBnsC,SAAZosC,IAAyBA,EAAU,GACjBpsC,SAAlB84I,IAA+BA,GAAgB,GAEnDxiJ,KAAKuiJ,eAAiB,KACtBviJ,KAAKsiJ,cAAgBlrH,EACrBp3B,KAAKwiJ,cAAgBA,EAErBxiJ,KAAKyiJ,YAAYx2I,IAAI4pC,EAASC,GAEvB91C,MAoBXK,EAAOwwD,OAAOxqD,UAAUi9I,aAAe,SAAUx6H,EAAS+sB,EAASC,GAY/D,MAVgBpsC,UAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAM8e,eACvCn1B,SAAZmsC,IAAyBA,EAAU,GACvBnsC,SAAZosC,IAAyBA,EAAU,GAEvC91C,KAAKuiJ,eAAiBz5H,EACtB9oB,KAAKsiJ,cAAgB,KACrBtiJ,KAAKwiJ,eAAgB,EAErBxiJ,KAAKyiJ,YAAYx2I,IAAI4pC,EAASC,GAEvB91C,MAyBXK,EAAOwwD,OAAOxqD,UAAU+8I,KAAO,SAAUj3I,EAAMlG,EAAGwG,GAE9C,GAAIzM,KAAKwa,KAAKmE,KAAKya,IAAMp5B,KAAK0iJ,WAAc1iJ,KAAKogJ,UAAY,GAAKpgJ,KAAKmgJ,QAAUngJ,KAAKogJ,UAElF,OAAO,CAGX,IAAI7iH,GAAQv9B,KAAKihJ,WAGgB,KAA7BjhJ,KAAKkhJ,sBAEL3jH,GAASl9B,EAAO0F,KAAKwxB,SAASv3B,KAAKkhJ,oBAAqBlhJ,KAAKkhJ,sBAG7D/0I,EAEInM,KAAKugJ,SAASxwI,MAAQ,EAEtB/P,KAAKugJ,SAAS7uI,SAASvF,EAAKlG,EAAGkG,EAAKM,IAIpCzM,KAAKugJ,SAASt6I,EAAIkG,EAAKlG,EACvBjG,KAAKugJ,SAAS9zI,EAAIN,EAAKM,GAGtBzM,KAAKsiJ,eAENtiJ,KAAKugJ,SAASxwI,MAAQ,EAEtB/P,KAAKugJ,SAAS7uI,SAAS1R,KAAKsiJ,cAAc7nI,MAAMxU,EAAIjG,KAAKyiJ,YAAYx8I,EAAGjG,KAAKsiJ,cAAc7nI,MAAMhO,EAAIzM,KAAKyiJ,YAAYh2I,IAItHzM,KAAKugJ,SAASt6I,EAAIjG,KAAKsiJ,cAAc7nI,MAAMxU,EAAIjG,KAAKyiJ,YAAYx8I,EAChEjG,KAAKugJ,SAAS9zI,EAAIzM,KAAKsiJ,cAAc7nI,MAAMhO,EAAIzM,KAAKyiJ,YAAYh2I,GAGhEzM,KAAKygJ,2BAELljH,GAASv9B,KAAKsiJ,cAAc1yH,KAAK2N,QAGhCv9B,KAAKuiJ,iBAENviJ,KAAKugJ,SAASxwI,MAAQ,EAEtB/P,KAAKugJ,SAAS7uI,SAAS1R,KAAKuiJ,eAAe9nI,MAAMxU,EAAIjG,KAAKyiJ,YAAYx8I,EAAGjG,KAAKuiJ,eAAe9nI,MAAMhO,EAAIzM,KAAKyiJ,YAAYh2I,IAIxHzM,KAAKugJ,SAASt6I,EAAIjG,KAAKuiJ,eAAe9nI,MAAMxU,EAAIjG,KAAKyiJ,YAAYx8I,EACjEjG,KAAKugJ,SAAS9zI,EAAIzM,KAAKuiJ,eAAe9nI,MAAMhO,EAAIzM,KAAKyiJ,YAAYh2I,GAIzE,IAAIy1D,GAASliE,KAAKugJ,SAASxwI,MAAQ,EAAK/P,KAAKugJ,SAASnnI,QAAUpZ,KAAKugJ,SAASt6I,EAC1Ek8D,EAASniE,KAAKugJ,SAASvwI,OAAS,EAAKhQ,KAAKugJ,SAASlnI,QAAUrZ,KAAKugJ,SAAS9zI,EAE3EyB,EAASlO,KAAkB,cAAIA,KAAKsiJ,cAAcp0I,MAAQlO,KAAKwgJ,SAGzD92I,UAANzD,GAAyByD,SAAN+C,IAEnByB,EAAQlO,KAAKwa,KAAK0E,KAAKxJ,SAAS3P,KAAK+M,MAAMrG,EAAI01D,EAAOl8D,EAAIi8D,KAI7B,IAA7BliE,KAAKghJ,sBAEL9yI,GAAS7N,EAAO0F,KAAKwxB,SAASv3B,KAAKghJ,oBAAqBhhJ,KAAKghJ,qBAGjE,IAAIuC,GAAQ,EACRC,EAAQ,CAGE,KAAVt1I,GAAyB,MAAVA,EAEfq1I,EAAQx9I,KAAKoH,IAAInN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUqvB,EAEpC,KAAVrvB,GAA0B,MAAVA,EAErBs1I,EAAQz9I,KAAKqH,IAAIpN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUqvB,GAInDgmH,EAAQx9I,KAAKoH,IAAInN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUqvB,EACnDimH,EAAQz9I,KAAKqH,IAAIpN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUqvB,EAGvD,IAAIkmH,GAAS,IAab,IAXIzjJ,KAAKigJ,wBAELwD,EAASzjJ,KAAKggJ,QAAQlrH,gBAAe,GAAO,EAAMotC,EAAOC,EAAOniE,KAAKuhJ,UAAWvhJ,KAAKwhJ,aAErFiC,EAAO/gH,KAAKghH,cAAgB1jJ,MAI5ByjJ,EAASzjJ,KAAKggJ,QAAQlrH,gBAAe,GAGrC2uH,EACJ,CAiBI,GAhBAA,EAAO/jI,MAAMwiD,EAAOC,GAEpBshF,EAAO/gH,KAAKw/B,MAAQA,EACpBuhF,EAAO/gH,KAAKy/B,MAAQA,EACpBshF,EAAO/gH,KAAKihH,SAAW3jJ,KAAK4jJ,eAC5BH,EAAO/gH,KAAKmhH,aAAe7jJ,KAAKohJ,mBAChCqC,EAAO/gH,KAAKohH,iBAAmB9jJ,KAAKshJ,uBAEhCthJ,KAAK4jJ,iBAAmBvjJ,EAAOwwD,OAAO+xF,gBAEtCa,EAAO71F,SAAW5tD,KAAKmhJ,gBAG3BsC,EAAOv1I,MAAQA,EAAQlO,KAAK+gJ,kBAGC,KAAzB/gJ,KAAK0gJ,gBACT,CACI,GAA6D,OAAzD+C,EAAOn8F,WAAW22C,aAAaj+F,KAAK0gJ,iBACxC,CACI,GAAIhjD,GAAO19F,KAAKkiJ,MAAMliJ,KAAK0gJ,gBAE3B+C,GAAOn8F,WAAWz1C,IAAI6rF,EAAKtyF,KAAMsyF,EAAKvd,OAAQud,EAAKv2C,UAAWu2C,EAAKt2C,KAAMs2C,EAAKE,iBAGlF6lD,EAAOn8F,WAAWJ,KAAKlnD,KAAK0gJ,qBAIxB1gJ,MAAK4gJ,kBAEL6C,EAAO9yH,MAAQ3wB,KAAKgiJ,aAAahiJ,KAAKiiJ,kBAEtCjiJ,KAAKiiJ,mBAEDjiJ,KAAKiiJ,kBAAoBjiJ,KAAKgiJ,aAAan6I,SAE3C7H,KAAKiiJ,iBAAmB,IAGvBjiJ,KAAK2gJ,oBAEV8C,EAAO9yH,MAAQ3wB,KAAKgiJ,aAAaj8I,KAAKI,MAAMJ,KAAK4D,SAAW3J,KAAKgiJ,aAAan6I,SAIlF47I,GAAO/gH,KAAKqhH,YAER/jJ,KAAK+7E,MAAM+lE,YAEX2B,EAAO7zH,KAAKnQ,QAAQzf,KAAK+7E,MAAMhsE,MAAO/P,KAAK+7E,MAAM/rE,OAAQhQ,KAAK+7E,MAAMlmC,QAAS71C,KAAK+7E,MAAMjmC,SAG5F2tG,EAAO7zH,KAAKymG,mBAAqBr2H,KAAKgkJ,yBAEtCP,EAAO/gH,KAAKqhH,WAAY,GAG5BN,EAAO7zH,KAAKugG,SAASlkH,IAAIs3I,EAAOC,GAChCC,EAAO7zH,KAAKo/F,QAAQ/iH,IAAIjM,KAAKqhJ,cAAcp7I,EAAGjG,KAAKqhJ,cAAc50I,GAEjEzM,KAAK0iJ,UAAY1iJ,KAAKwa,KAAKmE,KAAKya,IAAMp5B,KAAKqgJ,SAE3CrgJ,KAAKmgJ,QAELngJ,KAAKmiJ,OAAOtjI,SAAS4kI,EAAQzjJ,KAAMu9B,GAE/Bv9B,KAAKogJ,UAAY,GAAKpgJ,KAAKmgJ,QAAUngJ,KAAKogJ,WAE1CpgJ,KAAKqiJ,YAAYxjI,SAAS7e,KAAMA,KAAKogJ,aAejD//I,EAAOwwD,OAAOxqD,UAAU49I,cAAgB,SAAUn7H,GAI9C,MAFgBpf,UAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAM8e,eAEhD7+B,KAAKojJ,KAAK,KAAMt6H,EAAQi6F,OAAQj6F,EAAQk6F,SAYnD3iH,EAAOwwD,OAAOxqD,UAAU69I,aAAe,SAAU9sH,GAE7C,MAAOp3B,MAAKojJ,KAAK,KAAMhsH,EAAO3c,MAAMxU,EAAGmxB,EAAO3c,MAAMhO,IAaxDpM,EAAOwwD,OAAOxqD,UAAU89I,SAAW,SAAUl+I,EAAGwG,GAE5C,MAAOzM,MAAKojJ,KAAK,KAAMn9I,EAAGwG,IA0B9BpM,EAAOwwD,OAAOxqD,UAAU+9I,oBAAsB,SAAUr0I,EAAOC,EAAQ6lC,EAASC,GAe5E,MAbgBpsC,UAAZmsC,IAAyBA,EAAU,GACvBnsC,SAAZosC,IAAyBA,EAAU,GAEvC91C,KAAK+7E,MAAM+lE,YAAa,EACxB9hJ,KAAK+7E,MAAMhsE,MAAQA,EACnB/P,KAAK+7E,MAAM/rE,OAASA,EACpBhQ,KAAK+7E,MAAMlmC,QAAUA,EACrB71C,KAAK+7E,MAAMjmC,QAAUA,EAGrB91C,KAAKggJ,QAAQvsH,QAAQ,eAAgB,OAAQ1jB,EAAOC,EAAQ6lC,EAASC,GACrE91C,KAAKggJ,QAAQptH,OAAO,kBAAkB,GAE/B5yB,MAsBXK,EAAOwwD,OAAOxqD,UAAUg+I,gBAAkB,SAAUpyI,EAAKE,EAAKmyI,EAAO36I,GAYjE,MAVcD,UAAV46I,IAAuBA,GAAQ,GACpB56I,SAAXC,IAAwBA,GAAS,GAErC3J,KAAKgiJ,aAAe3hJ,EAAOy1B,WAAW2xF,YAAYx1G,EAAKE,GAEvDnS,KAAKiiJ,iBAAmB,EAExBjiJ,KAAK4gJ,iBAAmB0D,EACxBtkJ,KAAK2gJ,kBAAoBh3I,EAElB3J,MAuBXK,EAAOwwD,OAAOxqD,UAAUk+I,mBAAqB,SAAUn5I,EAAM+0E,EAAQh5B,EAAWC,EAAMw2C,GAelF,MAbA59F,MAAKkiJ,MAAM92I,IACPA,KAAMA,EACN+0E,OAAQA,EACRh5B,UAAWA,EACXC,KAAMA,EACNw2C,gBAAiBA,GAIrB59F,KAAKggJ,QAAQvsH,QAAQ,iBAAkB,aAAcroB,EAAM+0E,EAAQh5B,EAAWC,EAAMw2C,GAEpF59F,KAAK0gJ,gBAAkBt1I,EAEhBpL,MAaXK,EAAOwwD,OAAOxqD,UAAUwd,MAAQ,SAAU5d,EAAGwG,EAAG+3I,GAElC96I,SAANzD,IAAmBA,EAAI,IACjByD,SAAN+C,IAAmBA,EAAI,IACP/C,SAAhB86I,IAA6BA,GAAc,GAE/CxkJ,KAAKwa,KAAKqJ,MAAMguC,KAAK,gBAAiB5rD,EAAGwG,GACzCzM,KAAKwa,KAAKqJ,MAAMguC,KAAK,kBAAoB7xD,KAAKggJ,QAAQnrH,MAAQ,aAAe70B,KAAKggJ,QAAQn4I,OAAQ5B,EAAGwG,EAAI,IAErG+3I,GAEAxkJ,KAAKggJ,QAAQ9rH,cAAcl0B,KAAKwa,KAAKqJ,MAAM+L,KAAM5vB,KAAKwa,KAAKqJ,MAAO,2BAY1Etc,OAAO2E,eAAe7L,EAAOwwD,OAAOxqD,UAAW,eAE3C2F,IAAK,WAED,MAAOhM,MAAKyhJ,cAIhBx1I,IAAK,SAAUkiB,GAEXnuB,KAAKyhJ,aAAetzH,EAEpBnuB,KAAKggJ,QAAQ7xH,UAAYnuB,KAAKyhJ,gBAqCtCl6I,OAAO2E,eAAe7L,EAAOwwD,OAAOxqD,UAAW,kBAE3C2F,IAAK,WAED,MAAOhM,MAAK4hJ,iBAIhB31I,IAAK,SAAU/D,GAEX,OAAQA,GAEJ,IAAK7H,GAAOwwD,OAAOmyF,mBACnB,IAAK3iJ,GAAOwwD,OAAOiyF,mBACf9iJ,KAAK+hJ,aAAe/hJ,KAAK2a,MACzB,MAEJ,KAAKta,GAAOwwD,OAAOkyF,mBACf/iJ,KAAK+hJ,aAAe/hJ,KAAKwa,KAAKoC,OAAOlC,IACrC,MAEJ,KAAKra,GAAOwwD,OAAOgxF,kBACf7hJ,KAAK+hJ,aAAe/hJ,KAAKwa,KAAKC,MAAME,OAI5C3a,KAAK4hJ,gBAAkB15I,KAY/BX,OAAO2E,eAAe7L,EAAOwwD,OAAOxqD,UAAW,4BAE3C2F,IAAK,WAED,MAAOhM,MAAK2hJ,2BAIhB11I,IAAK,SAAU1C,GAEXvJ,KAAK2hJ,0BAA4Bp4I,EAEjCvJ,KAAKggJ,QAAQptH,OAAO,0BAA2BrpB,GAC/CvJ,KAAKggJ,QAAQptH,OAAO,kBAAkB,MAa9CrrB,OAAO2E,eAAe7L,EAAOwwD,OAAOxqD,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAKugJ,SAASt6I,GAIzBgG,IAAK,SAAU1C,GAEXvJ,KAAKugJ,SAASt6I,EAAIsD,KAY1BhC,OAAO2E,eAAe7L,EAAOwwD,OAAOxqD,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAKugJ,SAAS9zI,GAIzBR,IAAK,SAAU1C,GAEXvJ,KAAKugJ,SAAS9zI,EAAIlD,KAwB1BlJ,EAAOqhJ,OAAS,SAAUlnI,EAAMvU,EAAGwG,EAAGV,EAAK4kB,GAEvCtwB,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK4kB,GAE1C3wB,KAAKqpB,OAAOpd,IAAI,IAEhBjM,KAAK0iC,MACDghH,cAAe,KACfxhF,MAAO,EACPC,MAAO,EACP4hF,WAAW,EACXD,kBAAkB,EAClBH,SAAU,EACVE,aAAc,IAKtBxjJ,EAAOqhJ,OAAOr7I,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WACtDhG,EAAOqhJ,OAAOr7I,UAAU8B,YAAc9H,EAAOqhJ,OAS7CrhJ,EAAOqhJ,OAAOr7I,UAAU0mD,KAAO,WAQ3B,MANA/sD,MAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEf7a,KAAK0iC,KAAKghH,cAActB,OAAOvjI,SAAS7e,MAEjCA,MAUXK,EAAOqhJ,OAAOr7I,UAAUkY,OAAS,WAExBve,KAAKwqB,SAKNxqB,KAAK0iC,KAAKihH,SAAWtjJ,EAAOwwD,OAAO+xF,gBAE/B5iJ,KAAK0iC,KAAKihH,WAAatjJ,EAAOwwD,OAAOgyF,cAEjC7iJ,KAAKwa,KAAK6F,QAAQguG,OAAO6G,aAAal1H,KAAMA,KAAK0iC,KAAKw/B,MAAOliE,KAAK0iC,KAAKy/B,OAAO,GAAQniE,KAAK0iC,KAAKmhH,cAEhG7jJ,KAAK+sD,OAKJ/sD,KAAK0iC,KAAKghH,cAAc3B,aAAajzI,WAAW9O,OAEjDA,KAAK+sD,QAKb/sD,KAAK0iC,KAAKohH,mBAEV9jJ,KAAK62B,SAAW9wB,KAAK+M,MAAM9S,KAAK4vB,KAAKugG,SAAS1jH,EAAGzM,KAAK4vB,KAAKugG,SAASlqH,IAGpEjG,KAAK0iC,KAAKghH,cAAc7C,iBAExB7gJ,KAAKwa,KAAKC,MAAM1H,KAAK/S,KAAMA,KAAK0iC,KAAKghH,cAAc5C,0BA0C3DzgJ,EAAOupD,MAAQ,SAAUpvC,EAAMzO,EAAK8nD,GAyLhC,GAvLYnqD,SAARqC,IAAqBA,EAAM,MACnBrC,SAARmqD,IAAqBA,EAAM,MAK/B7zD,KAAKwa,KAAOA,EAMZxa,KAAK+L,IAAMA,EAMX/L,KAAK+P,MAAQ,EAMb/P,KAAKgQ,OAAS,EAMdhQ,KAAKkI,KAAO7H,EAAOwC,MAKnB7C,KAAKu4D,sBAAuB,EAM5Bv4D,KAAKkkG,aAAc,EAKnBlkG,KAAK60G,OAAS,GAAIx0G,GAAO+a,OAKzBpb,KAAK6pD,eAAiB,GAAIxpD,GAAO+a,OAKjCpb,KAAK03F,WAAa,GAAIr3F,GAAO+a,OAK7Bpb,KAAKykJ,SAAW,GAAIpkJ,GAAO+a,OAK3Bpb,KAAK0kJ,QAAU,GAAIrkJ,GAAO+a,OAO1Bpb,KAAK2kJ,UAAY,GAAItkJ,GAAO+a,OAM5Bpb,KAAKwwG,QAAU,KAMfxwG,KAAKwrF,WAAa,KAKlBxrF,KAAK4zD,MAAQ,KAKb5zD,KAAK4kJ,YAAc,KAKnB5kJ,KAAK6kJ,aAAc,EASnB7kJ,KAAK8kJ,WAAa,GAMlB9kJ,KAAK+kJ,MAAQ,EAMb/kJ,KAAKglJ,cAAgB,IAMrBhlJ,KAAKilJ,SAAW,KAOhBjlJ,KAAKi3G,YAAa,EAOlBj3G,KAAKm1G,QAAS,EAOdn1G,KAAKy4B,aAAc,EAOnBz4B,KAAKw4B,SAAU,EAOfx4B,KAAKklJ,UAAW,EAOhBllJ,KAAKmlJ,WAAY,EAMjBnlJ,KAAKolJ,aAAe,KAMpBplJ,KAAKqlJ,cAAgB,KAEjBt5I,GAAO/L,KAAKwa,KAAKsF,MAAM+mF,cAAc96F,GACzC,CACI,GAAIu5I,GAAStlJ,KAAKwa,KAAKsF,MAAM+nF,SAAS97F,EAElCu5I,GAAOngD,OAEPnlG,KAAKulJ,oBAAoBD,EAAO5iH,MAIhC1iC,KAAK4zD,MAAQ0xF,EAAO5iH,KAGxB1iC,KAAK+P,MAAQ/P,KAAK4zD,MAAM4xF,WACxBxlJ,KAAKgQ,OAAShQ,KAAK4zD,MAAM6xF,gBAEpB5xF,IAEL7zD,KAAK0lJ,mBAAmB7xF,GAAK,EAO7B7zD,MAAK4zD,QAAUC,GAEf7zD,KAAK8yC,YAAc,GAAIhtC,MAAKoyD,YAAYl4D,KAAK4zD,OAC7C5zD,KAAK8yC,YAAY6yG,YAAY3lJ,KAAK+P,MAAO/P,KAAKgQ,UAI9ChQ,KAAK8yC,YAAc,GAAIhtC,MAAKoyD,YAAY73D,EAAOs5B,MAAMh0B,QAAQmtC,YAAYplC,QACzE1N,KAAK8yC,YAAY6yG,YAAY3lJ,KAAK+P,MAAO/P,KAAKgQ,SAOlDhQ,KAAKwiC,QAAU,GAAI18B,MAAKgpD,QAAQ9uD,KAAK8yC,aAMrC9yC,KAAKo4D,aAAe,GAAI/3D,GAAOi4D,MAAM,EAAG,EAAG,EAAGt4D,KAAK+P,MAAO/P,KAAKgQ,OAAQ,SAEvEhQ,KAAKwiC,QAAQ0rB,SAASluD,KAAKo4D,cAE3Bp4D,KAAKwiC,QAAQmsB,OAAQ,EAET,OAAR5iD,GAAgB/L,KAAK4zD,QAErB5zD,KAAKwiC,QAAQmsB,MAAQ3uD,KAAK4zD,MAAMg8C,SAWpC5vG,KAAK4lJ,SAAW,KAEZvlJ,EAAOiuD,aAEPtuD,KAAK4lJ,SAAW,GAAIvlJ,GAAOiuD,WAAWtuD,KAAKwa,KAAM,GAAIxa,KAAK+P,MAAO/P,KAAKgQ,UAGrEhQ,KAAKwa,KAAKkS,OAAOwO,WAAal7B,KAAKwa,KAAKkS,OAAOkQ,KAAO58B,KAAKwa,KAAKkS,OAAO8X,UAAaz8B,OAAqB,cAAKA,OAAqB,aAAE4vG,iBAEtI33G,KAAK43G,eAID0tC,IAEAA,EAAOhiH,QAAS,IAM5BjjC,EAAOupD,MAAMvjD,WAUTw/I,qBAAsB,SAAUjyF,EAAOkyF,GAcnC,MAZIlyF,IAASkyF,IAET9lJ,KAAK4zD,MAAQA,EACb5zD,KAAK4kJ,YAAckB,EAEnB9lJ,KAAK6kJ,aAAc,EACnB7kJ,KAAK8yC,YAAYplC,OAAS1N,KAAK4zD,MAC/B5zD,KAAKg5E,cAAc,KAAMh5E,KAAK4zD,MAAM4xF,WAAYxlJ,KAAK4zD,MAAM6xF,aAE3DzlJ,KAAKykJ,SAAS5lI,SAAS7e,OAGpBA,MAuBX+lJ,iBAAkB,SAAUC,EAAcj2I,EAAOC,GAM7C,GAJqBtG,SAAjBs8I,IAA8BA,GAAe,GACnCt8I,SAAVqG,IAAuBA,EAAQ,MACpBrG,SAAXsG,IAAwBA,EAAS,OAEhChQ,KAAKwa,KAAKkS,OAAO+1D,aAGlB,MADAziF,MAAK0kJ,QAAQ7lI,SAAS7e,KAAM,oBACrB,CAGc,QAArBA,KAAK4kJ,cAED5kJ,KAAK4kJ,YAAoB,OAEzB5kJ,KAAK4kJ,YAAY//H,QAAS,EAI1B7kB,KAAK4kJ,YAAYtoH,QAIzBt8B,KAAKimJ,qBAELjmJ,KAAK4zD,MAAQ9nC,SAAS4vD,cAAc,SACpC17E,KAAK4zD,MAAMsyF,aAAa,WAAY,YAEtB,OAAVn2I,IAEA/P,KAAK4zD,MAAM7jD,MAAQA,GAGR,OAAXC,IAEAhQ,KAAK4zD,MAAM5jD,OAASA,GAKxBhQ,KAAKwrF,WAAazjF,OAAO49E,WAAW3lF,KAAKmmJ,oBAAoB7/I,KAAKtG,MAAOA,KAAKwwG,QAE9E,KACIr6D,UAAUssC,cACJlxB,MAASy0F,EAAcpyF,OAAS,GAClC5zD,KAAKomJ,oBAAoB9/I,KAAKtG,MAC9BA,KAAKqmJ,kBAAkB//I,KAAKtG,OAGpC,MAAOqmF,GAEHrmF,KAAKqmJ,kBAAkBhgE,GAG3B,MAAOrmF,OAQXmmJ,oBAAqB,WAEjBt6D,aAAa7rF,KAAKwrF,YAElBxrF,KAAK2kJ,UAAU9lI,SAAS7e,OAQ5BqmJ,kBAAmB,SAAUl6H,GAEzB0/D,aAAa7rF,KAAKwrF,YAElBxrF,KAAK0kJ,QAAQ7lI,SAAS7e,KAAMmsB,IAQhCi6H,oBAAqB,SAAUN,GAE3Bj6D,aAAa7rF,KAAKwrF,YAGlBxrF,KAAK4kJ,YAAckB,EAGap8I,SAA5B1J,KAAK4zD,MAAM0yF,aAEXtmJ,KAAK4zD,MAAM0yF,aAAeR,EAI1B9lJ,KAAK4zD,MAAMvoD,IAAOtD,OAAO6+E,KAAO7+E,OAAO6+E,IAAI2/D,gBAAgBT,IAAYA,CAG3E,IAAIriC,GAAOzjH,IAEXA,MAAK4zD,MAAM4yF,aAAe,WAItB,QAASC,KAEL,GAAI1B,EAAQ,EAER,GAAIthC,EAAK7vD,MAAM4xF,WAAa,EAC5B,CAEI,GAAIz1I,GAAQ0zG,EAAK7vD,MAAM4xF,WACnBx1I,EAASyzG,EAAK7vD,MAAM6xF,WAEpB1nG,OAAM0lE,EAAK7vD,MAAM6xF,eAEjBz1I,EAASD,GAAS,EAAE,IAGxB0zG,EAAK7vD,MAAM1M,OAEXu8D,EAAKohC,aAAc,EACnBphC,EAAK3wE,YAAYplC,OAAS+1G,EAAK7vD,MAC/B6vD,EAAKzqC,cAAc,KAAMjpE,EAAOC,GAChCyzG,EAAKghC,SAAS5lI,SAAS4kG,OAIvB17G,QAAO49E,WAAW8gE,EAAa,SAKnCr+I,SAAQG,KAAK,mDAGjBw8I,KAlCJ,GAAIA,GAAQ,EAqCZ0B,OAcRlB,oBAAqB,SAAUrrD,GAE3B,GAAIzzE,GAAQzmB,IASZ,OAPAA,MAAK4zD,MAAQ9nC,SAAS4vD,cAAc,SACpC17E,KAAK4zD,MAAM67C,UAAW,EACtBzvG,KAAK4zD,MAAMsyF,aAAa,WAAY,YACpClmJ,KAAK4zD,MAAMvnC,iBAAiB,aAAc,SAAUF,GAAS1F,EAAMuyD,cAAc7sD,KAAW,GAC5FnsB,KAAK4zD,MAAMvoD,IAAMtD,OAAO6+E,IAAI2/D,gBAAgBrsD,GAC5Cl6F,KAAK4zD,MAAMg8C,SAAU,EAEd5vG,MAYX0lJ,mBAAoB,SAAU7xF,EAAK67C,GA8B/B,MA5BiBhmG,UAAbgmG,IAA0BA,GAAW,GAGrC1vG,KAAKwiC,UAELxiC,KAAKwiC,QAAQmsB,OAAQ,GAGzB3uD,KAAK4zD,MAAQ9nC,SAAS4vD,cAAc,SACpC17E,KAAK4zD,MAAM67C,UAAW,EAElBC,GAEA1vG,KAAK4zD,MAAMsyF,aAAa,WAAY,YAGxClmJ,KAAK4zD,MAAMvoD,IAAMwoD,EAEjB7zD,KAAK4zD,MAAMg8C,SAAU,EAErB5vG,KAAK4zD,MAAM5zC,OAEXhgB,KAAK+kJ,MAAQ/kJ,KAAK8kJ,WAElB9kJ,KAAKilJ,SAAWl9I,OAAO49E,WAAW3lF,KAAK0mJ,mBAAmBpgJ,KAAKtG,MAAOA,KAAKglJ,eAE3EhlJ,KAAK+L,IAAM8nD,EAEJ7zD,MAaXg5E,cAAe,SAAU7sD,EAAOpc,EAAOC,GAEnC,GAAI22I,IAAS,CAECj9I,UAAVqG,GAAiC,OAAVA,IAAkBA,EAAQ/P,KAAK4zD,MAAM4xF,WAAYmB,GAAS,GACtEj9I,SAAXsG,GAAmC,OAAXA,IAAmBA,EAAShQ,KAAK4zD,MAAM6xF,aAEnEzlJ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEVhQ,KAAK8yC,YAAYplC,SAAW1N,KAAK4zD,QAEjC5zD,KAAK8yC,YAAYplC,OAAS1N,KAAK4zD,OAGnC5zD,KAAK8yC,YAAY6yG,YAAY51I,EAAOC,GAEpChQ,KAAKwiC,QAAQ7R,MAAM7X,OAAO/I,EAAOC,GAEjChQ,KAAKwiC,QAAQzyB,MAAQA,EACrB/P,KAAKwiC,QAAQxyB,OAASA,EAEtBhQ,KAAKwiC,QAAQmsB,OAAQ,EAEjB3uD,KAAK4lJ,UAEL5lJ,KAAK4lJ,SAAS9sI,OAAO/I,EAAOC,GAG5B22I,GAAuB,OAAb3mJ,KAAK+L,MAEf/L,KAAK6pD,eAAehrC,SAAS7e,KAAM+P,EAAOC,GAEtChQ,KAAKmlJ,YAELnlJ,KAAK4zD,MAAM1M,OACXlnD,KAAK60G,OAAOh2F,SAAS7e,KAAMA,KAAKonD,KAAMpnD,KAAK4mJ,iBAYvDruD,SAAU,WAENv4F,KAAK03F,WAAW74E,SAAS7e,OAY7BknD,KAAM,SAAUE,EAAMw/F,GA8DlB,MA5Dal9I,UAAT09C,IAAsBA,GAAO,GACZ19C,SAAjBk9I,IAA8BA,EAAe,GAE7C5mJ,KAAKwa,KAAKyF,MAAM80F,SAEhB/0G,KAAKwa,KAAKyF,MAAM80F,OAAOljG,IAAI7R,KAAK08B,QAAS18B,MACzCA,KAAKwa,KAAKyF,MAAM82F,SAASllG,IAAI7R,KAAK68B,UAAW78B,MAEzCA,KAAKwa,KAAKyF,MAAMo2F,MAEhBr2G,KAAK08B,WAIb18B,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAK6mJ,SAAU7mJ,MACrCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAK8mJ,UAAW9mJ,MAEvCA,KAAKolJ,aAAeplJ,KAAKu4F,SAASjyF,KAAKtG,MAEvCA,KAAK4zD,MAAMvnC,iBAAiB,QAASrsB,KAAKolJ,cAAc,GACxDplJ,KAAK4zD,MAAMvnC,iBAAiB,sBAAuBrsB,KAAKolJ,cAAc,GAElEh+F,EAEApnD,KAAK4zD,MAAMxM,KAAO,OAIlBpnD,KAAK4zD,MAAMxM,KAAO,GAGtBpnD,KAAK4zD,MAAMgzF,aAAeA,EAEtB5mJ,KAAKkkG,YAELlkG,KAAKklJ,UAAW,GAIhBllJ,KAAKklJ,UAAW,EAEC,OAAbllJ,KAAK+L,MAEyB,IAA1B/L,KAAK4zD,MAAM8xB,YAEX1lF,KAAK+kJ,MAAQ/kJ,KAAK8kJ,WAClB9kJ,KAAKilJ,SAAWl9I,OAAO49E,WAAW3lF,KAAK0mJ,mBAAmBpgJ,KAAKtG,MAAOA,KAAKglJ,iBAI3EhlJ,KAAKqlJ,cAAgBrlJ,KAAK+mJ,YAAYzgJ,KAAKtG,MAC3CA,KAAK4zD,MAAMvnC,iBAAiB,UAAWrsB,KAAKqlJ,eAAe,KAInErlJ,KAAK4zD,MAAM1M,OAEXlnD,KAAK60G,OAAOh2F,SAAS7e,KAAMonD,EAAMw/F,IAG9B5mJ,MAUX+mJ,YAAa,WAET/mJ,KAAK4zD,MAAMrmC,oBAAoB,UAAWvtB,KAAKqlJ,eAAe,GAE9DrlJ,KAAKg5E,iBAkBT18C,KAAM,WA+DF,MA7DIt8B,MAAKwa,KAAKyF,MAAM80F,SAEhB/0G,KAAKwa,KAAKyF,MAAM80F,OAAOjyF,OAAO9iB,KAAK08B,QAAS18B,MAC5CA,KAAKwa,KAAKyF,MAAM82F,SAASj0F,OAAO9iB,KAAK68B,UAAW78B,OAGpDA,KAAKwa,KAAK+H,QAAQO,OAAO9iB,KAAK6mJ,SAAU7mJ,MACxCA,KAAKwa,KAAKiI,SAASK,OAAO9iB,KAAK8mJ,UAAW9mJ,MAItCA,KAAK6kJ,aAED7kJ,KAAK4zD,MAAM0yF,cAEXtmJ,KAAK4zD,MAAM0yF,aAAahqH,OACxBt8B,KAAK4zD,MAAMvoD,IAAM,OAIjBrL,KAAK4zD,MAAMvoD,IAAM,GAEbrL,KAAK4kJ,YAAoB,OAEzB5kJ,KAAK4kJ,YAAY//H,QAAS,EAItB7kB,KAAK4kJ,YAAYoC,UAEjBhnJ,KAAK4kJ,YAAYoC,YAAYv/I,QAAQ,SAAUw/I,GAC3CA,EAAM3qH,SAKVt8B,KAAK4kJ,YAAYtoH,QAM7Bt8B,KAAK4kJ,YAAc,KACnB5kJ,KAAK6kJ,aAAc,IAInB7kJ,KAAK4zD,MAAMrmC,oBAAoB,QAASvtB,KAAKolJ,cAAc,GAC3DplJ,KAAK4zD,MAAMrmC,oBAAoB,sBAAuBvtB,KAAKolJ,cAAc,GACzEplJ,KAAK4zD,MAAMrmC,oBAAoB,UAAWvtB,KAAKqlJ,eAAe,GAE1DrlJ,KAAKkkG,YAELlkG,KAAKklJ,UAAW,EAIhBllJ,KAAK4zD,MAAMpxC,SAIZxiB,MAYX6R,IAAK,SAAU0jB,GAEX,GAAI/uB,MAAMa,QAAQkuB,GAEd,IAAK,GAAIztB,GAAI,EAAGA,EAAIytB,EAAO1tB,OAAQC,IAE3BytB,EAAOztB,GAAgB,aAEvBytB,EAAOztB,GAAGqtB,YAAYn1B,UAM9Bu1B,GAAOJ,YAAYn1B,KAGvB,OAAOA,OAgBXipB,WAAY,SAAUhjB,EAAGwG,EAAGyc,EAASC,EAAS6yC,EAAQC,GAElDD,EAASA,GAAU,EACnBC,EAASA,GAAU,CAEnB,IAAI7yC,GAAQppB,KAAKwa,KAAK3I,IAAIuX,MAAMnjB,EAAGwG,EAAGzM,KAKtC,OAHAopB,GAAMC,OAAOpd,IAAIid,EAASC,GAC1BC,EAAMvU,MAAM5I,IAAI+vD,EAAQC,GAEjB7yC,GAWXxI,OAAQ,YAEC5gB,KAAKu4D,sBAAwBv4D,KAAKknJ,SAEnClnJ,KAAK8yC,YAAYrrB,SAWzBiV,QAAS,WAED18B,KAAKm1G,SAKTn1G,KAAKm1G,QAAS,EAEdn1G,KAAK4zD,MAAMwiD,OAAQ,IAUvBv5E,UAAW,WAEF78B,KAAKm1G,SAAUn1G,KAAKi3G,aAKzBj3G,KAAKm1G,QAAS,EAEdn1G,KAAK4zD,MAAMwiD,OAAQ,IAUvBywC,SAAU,WAEF7mJ,KAAKw4B,SAAWx4B,KAAKkkG,cAKzBlkG,KAAKw4B,SAAU,EAEfx4B,KAAK4zD,MAAMpxC,UAUfskI,UAAW,YAEF9mJ,KAAKw4B,SAAWx4B,KAAKy4B,aAAez4B,KAAKkkG,cAK9ClkG,KAAKw4B,SAAU,EAEVx4B,KAAK4zD,MAAMuzF,OAEZnnJ,KAAK4zD,MAAM1M,SA0BnBkgG,aAAc,SAAU/7I,EAAKqkG,GAwBzB,MAtBiBhmG,UAAbgmG,IAA0BA,GAAW,GAGzC1vG,KAAKwiC,QAAQmsB,OAAQ,EAErB3uD,KAAK4zD,MAAMpxC,QAEXxiB,KAAK+kJ,MAAQ/kJ,KAAK8kJ,WAElB9kJ,KAAKilJ,SAAWl9I,OAAO49E,WAAW3lF,KAAK0mJ,mBAAmBpgJ,KAAKtG,MAAOA,KAAKglJ,eAE3EhlJ,KAAK4zD,MAAMvoD,IAAMA,EAEjBrL,KAAK4zD,MAAM5zC,OAEXhgB,KAAKmlJ,UAAYz1C,EAEZA,IAED1vG,KAAK6gB,QAAS,GAGX7gB,MAUX0mJ,mBAAoB,WAGc,IAA1B1mJ,KAAK4zD,MAAM8xB,WAGX1lF,KAAKg5E,iBAILh5E,KAAK+kJ,QAED/kJ,KAAK+kJ,MAAQ,EAEb/kJ,KAAKilJ,SAAWl9I,OAAO49E,WAAW3lF,KAAK0mJ,mBAAmBpgJ,KAAKtG,MAAOA,KAAKglJ,eAI3E58I,QAAQG,KAAK,0DAA2DvI,KAAK6kJ,eAYzFjtC,aAAc,WAEV53G,KAAKwa,KAAKuF,MAAMif,MAAMwP,qBAAqBxuC,KAAK63G,OAAQ73G,MACxDA,KAAKkkG,aAAc,GAWvB2T,OAAQ,WAQJ,GANA73G,KAAKkkG,aAAc,EAEnBlkG,KAAK4zD,MAAM1M,OAEXlnD,KAAK60G,OAAOh2F,SAAS7e,KAAMA,KAAKonD,KAAMpnD,KAAK4mJ,cAEvC5mJ,KAAK+L,IACT,CACI,GAAIu5I,GAAStlJ,KAAKwa,KAAKsF,MAAM+nF,SAAS7nG,KAAK+L,IAEvCu5I,KAAWA,EAAOngD,SAElBmgD,EAAOhiH,QAAS,GAIxB,OAAO,GAiBX+jH,KAAM,SAAUppI,EAAOI,EAAO+9C,GAM1B,MAJc1yD,UAAVuU,IAAuBA,GAAQ,GACrBvU,SAAV2U,IAAuBA,EAAQ,GACjB3U,SAAd0yD,IAA2BA,EAAY,MAErB,OAAlBp8D,KAAK4lJ,aAELx9I,SAAQG,KAAK,mEAIb0V,GAEAje,KAAK4lJ,SAASptF,MAGlBx4D,KAAK4lJ,SAASt6I,KAAKtL,KAAK4zD,MAAO,EAAG,EAAG5zD,KAAK+P,MAAO/P,KAAKgQ,OAAQ,EAAG,EAAGhQ,KAAK+P,MAAO/P,KAAKgQ,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAGqO,EAAO+9C,GAE5Gp8D,KAAK4lJ,WAUhBK,mBAAoB,WAEhB,GAAKjmJ,KAAK4zD,MAAV,CAUA,IALI5zD,KAAK4zD,MAAM+2B,YAEX3qF,KAAK4zD,MAAM+2B,WAAWr4D,YAAYtyB,KAAK4zD,OAGpC5zD,KAAK4zD,MAAM0zF,iBAEdtnJ,KAAK4zD,MAAMthC,YAAYtyB,KAAK4zD,MAAM2zF,WAGtCvnJ,MAAK4zD,MAAM4zF,gBAAgB,YAC3BxnJ,KAAK4zD,MAAM4zF,gBAAgB,OAE3BxnJ,KAAK4zD,MAAQ,OAUjB9vC,QAAS,WAEL9jB,KAAKs8B,OAELt8B,KAAKimJ,qBAEDjmJ,KAAKkkG,aAELlkG,KAAKwa,KAAKuF,MAAMif,MAAM0P,wBAAwB1uC,KAAK63G,OAAQ73G,MAG3DA,KAAKilJ,UAELl9I,OAAO8jF,aAAa7rF,KAAKilJ,YAWrC19I,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,eAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAK4zD,MAAM6/C,YAAc,GAInDxnG,IAAK,SAAU1C,GAEXvJ,KAAK4zD,MAAM6/C,YAAclqG,KAWjChC,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,YAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAK4zD,MAAM/3C,SAAW,KAWpDtU,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,YAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAKA,KAAK4zD,MAAM6/C,YAAczzG,KAAK4zD,MAAM/3C,SAAY,KAU/EtU,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,QAE1C2F,IAAK,WAED,MAAOhM,MAAKm1G,QAIhBlpG,IAAK,SAAU1C,GAIX,GAFAA,EAAQA,GAAS,KAGjB,CACI,GAAIvJ,KAAKm1G,OAEL,MAGJn1G,MAAKi3G,YAAa,EAClBj3G,KAAK08B,cAGT,CACI,IAAK18B,KAAKm1G,OAEN,MAGJn1G,MAAKi3G,YAAa,EAClBj3G,KAAK68B,gBAajBt1B,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,UAE1C2F,IAAK,WAED,MAAOhM,MAAKw4B,SAIhBvsB,IAAK,SAAU1C,GAIX,GAFAA,EAAQA,GAAS,MAEbvJ,KAAKkkG,YAKT,GAAI36F,EACJ,CACI,GAAIvJ,KAAKw4B,QAEL,MAGJx4B,MAAKy4B,aAAc,EACnBz4B,KAAK6mJ,eAGT,CACI,IAAK7mJ,KAAKw4B,QAEN,MAGJx4B,MAAKy4B,aAAc,EACnBz4B,KAAK8mJ,gBAUjBv/I,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,UAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAK4zD,MAAM55C,OAAS,GAI9C/N,IAAK,SAAU1C,GAEPA,EAAQ,EAERA,EAAQ,EAEHA,EAAQ,IAEbA,EAAQ,GAGRvJ,KAAK4zD,QAEL5zD,KAAK4zD,MAAM55C,OAASzQ,MAWhChC,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,gBAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAK4zD,MAAMgzF,aAAe,GAIpD36I,IAAK,SAAU1C,GAEPvJ,KAAK4zD,QAEL5zD,KAAK4zD,MAAMgzF,aAAer9I,MAetChC,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,QAE1C2F,IAAK,WAED,QAAQhM,KAAU,OAAIA,KAAK4zD,MAAMxM,MAIrCn7C,IAAK,SAAU1C,GAEPA,GAASvJ,KAAK4zD,MAEd5zD,KAAK4zD,MAAMxM,KAAO,OAEbpnD,KAAK4zD,QAEV5zD,KAAK4zD,MAAMxM,KAAO,OAY9B7/C,OAAO2E,eAAe7L,EAAOupD,MAAMvjD,UAAW,WAE1C2F,IAAK,WAED,QAAShM,KAAK4zD,MAAM/yC,QAAU7gB,KAAK4zD,MAAMuzF,UAMjD9mJ,EAAOupD,MAAMvjD,UAAU8B,YAAc9H,EAAOupD,MAWpBlgD,SAApB5D,KAAKtB,aAELsB,KAAKtB,WAAanE,EAAOmE,YAGLkF,SAApB5D,KAAKJ,aAELI,KAAKJ,WAAarF,EAAOqF,YAGKgE,SAA9B5D,KAAKgpD,QAAQ24F,eAEb3hJ,KAAKgpD,QAAQ24F,aAAe,GAAI3hJ,MAAKgpD,QAAQ,GAAIhpD,MAAKoyD,cAGnBxuD,SAAnC5D,KAAK4hJ,cAAczyE,cAEnBnvE,KAAK4hJ,cAAczyE,YAAc,GAAInvE,MAAKkO,QAGRtK,SAAlC5D,KAAKsoD,cAAcu5F,aAEnB7hJ,KAAKsoD,cAAcu5F,WAAa,GAAI7hJ,MAAKkO,QAGzClO,KAAK+W,UAAmCnT,SAAvB5D,KAAK+W,SAASirD,OAE/BhiE,KAAK+W,SAASirD,KAAOznE,EAAOwB,QAC5BiE,KAAK+W,SAASyqD,KAAOjnE,EAAOkC,UAC5BuD,KAAK+W,SAAS2qD,KAAOnnE,EAAOiC,OAC5BwD,KAAK+W,SAAS4qD,KAAOpnE,EAAO4B,QAC5B6D,KAAK+W,SAAS0qD,KAAOlnE,EAAOsC,kBAGhCmD,KAAK8hJ,mBAAoB,EAQE,mBAAZC,UACe,mBAAXC,SAA0BA,OAAOD,UACxCA,QAAUC,OAAOD,QAAUxnJ,GAE/BwnJ,QAAQxnJ,OAASA,GACQ,mBAAX0nJ,SAA0BA,OAAOC,IAC/CD,OAAO,SAAU,WAAc,MAAO3nJ,GAAKC,OAASA,MAEpDD,EAAKC,OAASA,EAGXA,IACRyG,KAAK9G","file":"phaser-split.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-split.min.js b/build/custom/phaser-split.min.js index 3f8e56ac7..6a5f94cb1 100644 --- a/build/custom/phaser-split.min.js +++ b/build/custom/phaser-split.min.js @@ -1,22 +1,22 @@ -/* Phaser v2.6.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.2 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0, -c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a), -!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height); -},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]), -c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "), -this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0; -},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary"; -if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h={},i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius, -radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a), -this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])]; -var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){ -a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}).call(this); +(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.7.0 Beta",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return a<0?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function a(b){if(b&&(a.prototype=b),!(this instanceof a))return new a}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;e0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);i0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return i+j<=k},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a=c&&a<=d&&b>=e&&b<=f},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=c-h&&(k-=h,c+=i),m=0&&p<=1&&q>=0&&q<=1?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&d<=j&&e>=i&&e<=k||f>=h&&f<=j&&g>=i&&g<=k)return!0;if(d=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&l<=k)return!0}else if(d>j&&f<=j&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&l<=k))return!0;if(e=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&l<=j)return!0}else if(e>k&&g<=k&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&l<=j))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(this.y*-1,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y*-1,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(d<1)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;e0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;c=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return!(a.width<=0||a.height<=0)&&(b>=a.x&&b=a.y&&c=a&&e=b&&fb.volume)&&(a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0; +},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!(!d&&this._shake.duration>0)&&(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?!!(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)||(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(h!==-1){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return this._indexOfListener(a,b)!==-1},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;e=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;gthis.children.length||a===-1&&b===-1))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor)return this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor};c.Group.prototype.next=function(){if(this.cursor)return this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.previous=function(){if(this.cursor)return 0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return a<0||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!(!c.Utils.getProperty(a,b)&&e)&&c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){if(void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible))return this.setProperty(a,b,c,f,g)},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(0===this.children.length){if(d===c.Group.RETURN_TOTAL)return 0;if(d===c.Group.RETURN_ALL)return[]}var h=0;if(d===c.Group.RETURN_ALL)var i=[];for(var j=0;j0)return this.children[this.children.length-1]},c.Group.prototype.getBottom=function(){if(this.children.length>0)return this.children[0]},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return void 0===a&&(a=0),void 0===b&&(b=this.children.length),0===b?null:c.ArrayUtils.getRandomItem(this.children,a,b)},c.Group.prototype.getRandomExists=function(a,b){var c=this.getAll("exists",!0,a,b);return this.game.rnd.pick(c)},c.Group.prototype.getAll=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=this.children.length);for(var e=[],f=c;f0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||a<0||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fa||this.priorityID===a&&this.sprite.renderOrderID>b))},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;b<10;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;b<10;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return!!(a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectClick)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPointerOver:function(a,b){return!!(this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectOver)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){if(null!==this.sprite&&void 0!==this.sprite.parent)return this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold), +this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1)},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)this.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||navigator.userAgent.indexOf("Firefox/")!=-1||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||d<0&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return!(this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0))||(this.kill(),!1)},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,!(!this._exists||!this.parent.exists)||(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,(!0),a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return!!this.preUpdateInWorld()&&this.preUpdateCore()},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c&&(this.frame=c,!0)},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;b=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e], +d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){if(a>=0&&a<=this.width&&b>=0&&b<=this.height)return this.pixels[b*this.width+a]},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||e<=0)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||d<=0)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;l<=g;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;q<=l;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(m<1e-8||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&e<=d?e+=2*Math.PI:f&&d<=e&&(d+=2*Math.PI);var h=f?(d-e)*-1:e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;s<=q;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dv?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;cb?h+j:b,d=ie?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else{g=f.points;for(var p=0;pb?h+o:b,d=i-oe?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(c<3)return[];for(var d=[],e=[],f=0;f3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;r3*g){if(!b)return null;for(d=[],e=[],f=0;f=0&&v>=0&&u+v<1},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;oj&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;f0)for(f=b;f=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);h<=e&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fc.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;b0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;ch?e:h,i=fj?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;kA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;dy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLines0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;q<0&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;h0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;gk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(p<=k)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;ig;i--){for(j=0;j0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;e0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),a<0&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(a){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=navigator.userAgent.toLowerCase().indexOf("iphone")!=-1,l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=navigator.userAgent.toLowerCase().indexOf("ipad")!=-1,"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]||2712847316!=c[0]&&null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return!("mp3"!==a||!this.mp3)||(!("ogg"!==a||!this.ogg&&!this.opus)||(!("m4a"!==a||!this.m4a)||(!("opus"!==a||!this.opus)||(!("wav"!==a||!this.wav)||(!("webm"!==a||!this.webm)||!("mp4"!==a||!this.dolby))))))},c.Device.canPlayVideo=function(a){return!("webm"!==a||!this.webmVideo&&!this.vp9Video)||(!("mp4"!==a||!this.mp4Video&&!this.h264Video)||(!("ogg"!==a&&"ogv"!==a||!this.oggVideo)||!("mpeg"!==a||!this.hlsVideo)))},c.Device.isConsoleOpen=function(){return!(!window.console||!window.console.firebug)||!(!window.console||(console.profile(),console.profileEnd(),console.clear&&console.clear(),!console.profiles))&&console.profiles.length>0},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);if(b)return a[b]},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;cb-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;c=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(d<=0)return 0;var e=(a-b)%d;return e<0&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;ba[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;cb[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return b<0?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;e<=d;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(b<0&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):b<0?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[c0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;j0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:aa?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){ +return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),b!==-1))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(d!==-1?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return window.location.hostname.indexOf(a)!==-1},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=d.indexOf("?")!==-1?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;a0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||b<=0)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;bthis.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),c===-1)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return a<.5?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,(!1)),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;a=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a])return this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d))},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return!(this.updateIfVisible&&!this.sprite.visible)&&(!(!this.currentAnim||!this.currentAnim.update())&&(this.currentFrame=this.currentAnim.currentFrame,!0))},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total; +}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){if(this.currentAnim)return this.currentAnim.name}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){if(this.currentFrame)return this.currentFrame.index},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){if(this.currentFrame)return this.currentFrame.name},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame)&&(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),!this.onUpdate||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)):(this.complete(),!1):this.updateCurrentFrame(!0)))},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),!this.onUpdate||!a||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;b<0&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(b=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;bj&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1&&{index:c,file:this._fileList[c]}},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else i===-1&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(a){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(b){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(a){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,a)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;a1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottleb;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,(!0)),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return a-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);if(b>-1)return this.list.splice(b,1),a},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;e-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||b===-270||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(b===-90||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(b1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);if(b)return c.Color.getColor32(b.a,b.r,b.g,b.b)},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return b<128?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return b<128?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return b<128?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return b<128?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return b<128?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:c+e<0?c+=e:c=0),c>f?c=f:c<-f&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return!(!a.body||!b.body)&&(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0)},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h={},i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right)&&!(a.position.y>=b.bottom))))},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){ +this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius,radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){if(0!==b.length&&a.exists)return this.getObjectsAtLocation(a.x,a.y,b,c,d,a)},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return!(b||a>=1||void 0!==c&&c!==!0)||(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1)},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){b<0?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){b<0?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return!a.data.world&&(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0); +},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;d-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;a=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;eo;e=0<=o?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;if(a.endFill(),b.length>2)return a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c); +},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,PIXI.Tilemap=function(a,b,c,d,e,f){PIXI.DisplayObjectContainer.call(this),this.texture=a,this.tileWide=d,this.tileHigh=e,this.mapWide=b,this.mapHigh=c,this.width=this.mapWide*this.tileWide,this.height=this.mapHigh*this.tileHigh,this.layer=f,this.glBatch=null,this.lastTile=-1,this.dirty=!0,this.blendMode=PIXI.blendModes.NORMAL,this.batchDataElement=16;var g=b*c*this.batchDataElement;this.buffer=new PIXI.Float32Array(g)},PIXI.Tilemap.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Tilemap.prototype.constructor=PIXI.Tilemap,PIXI.Tilemap.prototype.update=function(){},PIXI.Tilemap.prototype.postUpdate=function(){},PIXI.Tilemap.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.tilemapShader),this._renderWholeTilemap(a),a.spriteBatch.start())},PIXI.Tilemap.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),this.positionBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this.positionBuffer),b.bufferData(b.ARRAY_BUFFER,this.buffer,b.STATIC_DRAW)},PIXI.Tilemap.prototype._renderBatch=function(a){if(this.glBatch){for(var b,c,d,e,f=a.gl,g=.5*this.game.width,h=.5*this.game.height,i=1/this.texture.width,j=1/this.texture.height,k=this.tileWide*i,l=this.tileHigh*j,m=1/g,n=1/h,o=.5*this.tileWide/g,p=.5*this.tileHigh/h,q=this.buffer,r=0,s=!1,t=0,u=this.glBatch.length;t0){var A=a.shaderManager.tilemapShader;f.bufferData(f.ARRAY_BUFFER,q,f.STATIC_DRAW),f.vertexAttribPointer(A.aPosition,4,f.FLOAT,!1,0,0),f.drawArrays(f.TRIANGLE_STRIP,0,Math.floor(r/4))}}},PIXI.Tilemap.prototype._renderWholeTilemap=function(a){var b=a.gl,c=a.shaderManager.tilemapShader;a.blendModeManager.setBlendMode(this.blendMode),b.uniform2f(c.uCentreOffset,1,-1),b.uniform1f(c.uAlpha,this.alpha),b.uniform2f(c.uScale,this.worldScale.x,this.worldScale.y),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ARRAY_BUFFER,this.positionBuffer),this._renderBatch(a)},PIXI.Tilemap.prototype.onTextureUpdate=function(){this.updateFrame=!0},PIXI.Tilemap.prototype.getBounds=function(a){for(var b=a||this.worldTransform,c=b.a,d=b.b,e=b.c,f=b.d,g=b.tx,h=b.ty,i=-(1/0),j=-(1/0),k=1/0,l=1/0,m=[0,0,this.mapWide*this.tileWide,0,this.mapWide*this.tileWide,this.mapHigh*this.tileHigh,0,this.mapHigh*this.tileHigh],n=0,o=m.length;ni?r:i,j=s>j?s:j}if(k===-(1/0)||j===1/0)return PIXI.EmptyRectangle;var t=this._bounds;return t.x=k,t.width=i-k,t.y=l,t.height=j-l,this._currentBounds=t,t},PIXI.TilemapShader=function(a){this._UID=PIXI._UID++,this.gl=a,this.program=null,this.fragmentSrc=[" precision lowp float;"," uniform sampler2D uImageSampler;"," uniform float uAlpha;"," varying vec2 vTexCoord;"," void main(void) {"," gl_FragColor = texture2D(uImageSampler, vTexCoord) * uAlpha;"," }"],this.vertexSrc=[" precision lowp float;"," uniform vec2 uCentreOffset;"," uniform vec2 uScale;"," attribute vec4 aPosition;"," varying vec2 vTexCoord;"," void main(void) {"," gl_Position.zw = vec2(1, 1);"," gl_Position.xy = (aPosition.xy + uCentreOffset) * uScale - uCentreOffset;"," vTexCoord = aPosition.zw;"," }"],this.textureCount=0,this.init()},PIXI.TilemapShader.prototype.constructor=PIXI.TilemapShader,PIXI.TilemapShader.prototype.init=function(){var a=this.gl,b=PIXI.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(b),this.aPosition=a.getAttribLocation(b,"aPosition"),this.uSampler=a.getUniformLocation(b,"uImageSampler"),this.uCentreOffset=a.getUniformLocation(b,"uCentreOffset"),this.uAlpha=a.getUniformLocation(b,"uAlpha"),this.uScale=a.getUniformLocation(b,"uScale"),this.attributes=[this.aPosition],this.uniforms=[this.uCentreOffset,this.uAlpha,this.uScale,this.uSampler],this.program=b},PIXI.TilemapShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.gl=null,this.uniforms=null,this.attributes=null},c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||c<=0)&&(c=32),(void 0===d||d<=0)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return!(c<=this.worldX)&&(!(d<=this.worldY)&&(!(a>=this.worldX+this.width)&&!(b>=this.worldY+this.height)))},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:!!b&&(this.faceTop||this.faceBottom||this.faceLeft||this.faceRight)},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tilesetLayers=null,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;r1)for(l=0;lthis.layers.length)return void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f);for(var g=1,h=this.tilesets.length;gthis.game.width&&(q=this.game.width),r>this.game.height&&(r=this.game.height);var k;return k=this.game.renderType===c.WEBGL?new c.TilemapLayerGL(this.game,this,this.layers.length-1,q,r):new c.TilemapLayer(this.game,this,this.layers.length-1,q,r),k.name=a,h.add(k)},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;kthis.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j;return j=this.game.renderType===c.WEBGL?new c.TilemapLayerGL(this.game,this,this.layers.length-1,m,n):new c.TilemapLayer(this.game,this,this.layers.length-1,m,n),j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;cb)){for(var f=a;f<=b;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;e-1&&this.collideIndexes.splice(e,1)}for(var f=0;f0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&bthis.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;f1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;h=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(a<0?(i=e+a,j=e-1):a>0&&(j=a),b<0?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),i<=j){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(k<=l){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapLayerGL=function(a,b,d,e,f){this.game=a,e|=0,f|=0,this.map=b,this.index=d,this.layer=b.layers[d],this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1;var g=this.layer.tileset||this.map.tilesets[0];this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:g.tileWidth,ch:g.tileHeight,tileset:g,tilesets:[]},this._renderMode=0,this._scrollX=0,this._scrollY=0,this._results=[];var h=new PIXI.BaseTexture(g.image);PIXI.Tilemap.call(this,new PIXI.Texture(h),this.map.width,this.map.height,this._mc.tileset.tileWidth,this._mc.tileset.tileHeight,this.layer),c.Component.Core.init.call(this,a,0,0,null,null),this.fixedToCamera=!0},c.TilemapLayerGL.prototype=Object.create(PIXI.Tilemap.prototype),c.TilemapLayerGL.prototype.constructor=c.TilemapLayerGL,c.Component.Core.install.call(c.TilemapLayerGL.prototype,["FixedToCamera"]),c.TilemapLayerGL.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TileSprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.TileSprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.TileSprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.TileSprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayerGL.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayerGL.prototype.postUpdate=function(){c.Component.FixedToCamera.postUpdate.call(this);var a=this.game.camera;this.scrollX=a.x*this.scrollFactorX/this.scale.x,this.scrollY=a.y*this.scrollFactorY/this.scale.y,this.render()},c.TilemapLayerGL.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayerGL.prototype.resize=function(a,b){this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayerGL.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayerGL.prototype._fixX=function(a){return a<0&&(a=0),1===this.scrollFactorX?a:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayerGL.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayerGL.prototype._fixY=function(a){return a<0&&(a=0),1===this.scrollFactorY?a:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayerGL.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayerGL.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayerGL.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayerGL.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayerGL.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;h=0;p++,r--,n+=l){p>=j&&(p-=j);var w=this.layer.data[p];for(o=u,q=e-c,m=s;q>=0;o++,q--,m+=k){o>=i&&(o-=i);var x=w[o];if(!x||x.index<0)this._mc.tileset.addDegenerate(this.glBatch);else{var y=x.index;x.rotation||x.flipped?this._mc.tileset.drawGl(this.glBatch,-x.centerX+g,-x.centerY+h,y,x.alpha):this._mc.tileset.drawGl(this.glBatch,m+g,n+h,y,x.alpha)}}this._mc.tileset.addDegenerate(this.glBatch)}},c.TilemapLayerGL.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.game._width,d=this.game._height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=this._mc.cw,h=this._mc.ch,i=Math.floor((a-(g-e))/e),j=Math.floor((c-1+a)/e),k=Math.floor((b-(h-f))/f),l=Math.floor((d-1+b)/f);this.glBatch=[],this.renderRegion(a,b,i,k,j,l,0,-(h-f))},c.TilemapLayerGL.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=0|this._scrollX,c=0|this._scrollY,d=this._mc,e=d.scrollX-b,f=d.scrollY-c;if(a||0!==e||0!==f)return d.scrollX=b,d.scrollY=c,this.renderFull(),this.texture.baseTexture.dirty(),this.dirty=!1,!0}},Object.defineProperty(c.TilemapLayerGL.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayerGL.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayerGL.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayerGL.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayerGL.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;k>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;t536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,(-1),q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;f=0&&e+1=0&&f+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,this._flowTotal!==-1&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);gthis.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;f1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(a===-1&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(a){this.getUserMediaError(a)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){a<0?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return!!this.video&&this.video.loop},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}).call(this); //# sourceMappingURL=phaser-split.map \ No newline at end of file diff --git a/build/custom/pixi.js b/build/custom/pixi.js index 255c23e48..c1866d634 100644 --- a/build/custom/pixi.js +++ b/build/custom/pixi.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:12 +* v2.6.2 "Kore Springs" - Built: Mon Jul 18 2016 23:41:20 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -4451,6 +4451,9 @@ PIXI.WebGLShaderManager.prototype.setContext = function(gl) // the next one is used for rendering triangle strips this.stripShader = new PIXI.StripShader(gl); + // shader for batch drawing tilemap tiles as a set of triangle strips with degenerate triangles between them + this.tilemapShader = new PIXI.TilemapShader(gl); + this.setShader(this.defaultShader); }; @@ -4538,6 +4541,8 @@ PIXI.WebGLShaderManager.prototype.destroy = function() this.stripShader.destroy(); + this.tilemapShader.destroy(); + this.gl = null; }; diff --git a/build/custom/pixi.map b/build/custom/pixi.map index cd78f61b8..2b41e955c 100644 --- a/build/custom/pixi.map +++ b/build/custom/pixi.map @@ -1 +1 @@ -{"version":3,"sources":["pixi.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd"],"mappings":"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","file":"pixi.min.js"} \ No newline at end of file +{"version":3,"sources":["pixi.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","tilemapShader","TilemapShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd"],"mappings":"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","file":"pixi.min.js"} \ No newline at end of file diff --git a/build/custom/pixi.min.js b/build/custom/pixi.min.js index 0f8021f93..ef69234a3 100644 --- a/build/custom/pixi.min.js +++ b/build/custom/pixi.min.js @@ -1,6 +1,6 @@ -/* Phaser v2.6.1 PIXI Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.2 PIXI Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(c<0||d<0)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(b===-1)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(b<0||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a<0||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(b!==-1)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&e<=d){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;co?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;b0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(f===-1){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;q0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;e=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;e0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;ej?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;j1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bv?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this); //# sourceMappingURL=pixi.map \ No newline at end of file diff --git a/build/p2.js b/build/p2.js deleted file mode 100644 index 895bd39e8..000000000 --- a/build/p2.js +++ /dev/null @@ -1,13613 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2015 p2.js authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&false)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.p2=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=0 && s<=1 && t>=0 && t<=1); -}; - - -},{"./Scalar":4}],2:[function(_dereq_,module,exports){ -module.exports = Point; - -/** - * Point related functions - * @class Point - */ -function Point(){}; - -/** - * Get the area of a triangle spanned by the three given points. Note that the area will be negative if the points are not given in counter-clockwise order. - * @static - * @method area - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @return {Number} - */ -Point.area = function(a,b,c){ - return (((b[0] - a[0])*(c[1] - a[1]))-((c[0] - a[0])*(b[1] - a[1]))); -}; - -Point.left = function(a,b,c){ - return Point.area(a,b,c) > 0; -}; - -Point.leftOn = function(a,b,c) { - return Point.area(a, b, c) >= 0; -}; - -Point.right = function(a,b,c) { - return Point.area(a, b, c) < 0; -}; - -Point.rightOn = function(a,b,c) { - return Point.area(a, b, c) <= 0; -}; - -var tmpPoint1 = [], - tmpPoint2 = []; - -/** - * Check if three points are collinear - * @method collinear - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @param {Number} [thresholdAngle=0] Threshold angle to use when comparing the vectors. The function will return true if the angle between the resulting vectors is less than this value. Use zero for max precision. - * @return {Boolean} - */ -Point.collinear = function(a,b,c,thresholdAngle) { - if(!thresholdAngle) - return Point.area(a, b, c) == 0; - else { - var ab = tmpPoint1, - bc = tmpPoint2; - - ab[0] = b[0]-a[0]; - ab[1] = b[1]-a[1]; - bc[0] = c[0]-b[0]; - bc[1] = c[1]-b[1]; - - var dot = ab[0]*bc[0] + ab[1]*bc[1], - magA = Math.sqrt(ab[0]*ab[0] + ab[1]*ab[1]), - magB = Math.sqrt(bc[0]*bc[0] + bc[1]*bc[1]), - angle = Math.acos(dot/(magA*magB)); - return angle < thresholdAngle; - } -}; - -Point.sqdist = function(a,b){ - var dx = b[0] - a[0]; - var dy = b[1] - a[1]; - return dx * dx + dy * dy; -}; - -},{}],3:[function(_dereq_,module,exports){ -var Line = _dereq_("./Line") -, Point = _dereq_("./Point") -, Scalar = _dereq_("./Scalar") - -module.exports = Polygon; - -/** - * Polygon class. - * @class Polygon - * @constructor - */ -function Polygon(){ - - /** - * Vertices that this polygon consists of. An array of array of numbers, example: [[0,0],[1,0],..] - * @property vertices - * @type {Array} - */ - this.vertices = []; -} - -/** - * Get a vertex at position i. It does not matter if i is out of bounds, this function will just cycle. - * @method at - * @param {Number} i - * @return {Array} - */ -Polygon.prototype.at = function(i){ - var v = this.vertices, - s = v.length; - return v[i < 0 ? i % s + s : i % s]; -}; - -/** - * Get first vertex - * @method first - * @return {Array} - */ -Polygon.prototype.first = function(){ - return this.vertices[0]; -}; - -/** - * Get last vertex - * @method last - * @return {Array} - */ -Polygon.prototype.last = function(){ - return this.vertices[this.vertices.length-1]; -}; - -/** - * Clear the polygon data - * @method clear - * @return {Array} - */ -Polygon.prototype.clear = function(){ - this.vertices.length = 0; -}; - -/** - * Append points "from" to "to"-1 from an other polygon "poly" onto this one. - * @method append - * @param {Polygon} poly The polygon to get points from. - * @param {Number} from The vertex index in "poly". - * @param {Number} to The end vertex index in "poly". Note that this vertex is NOT included when appending. - * @return {Array} - */ -Polygon.prototype.append = function(poly,from,to){ - if(typeof(from) == "undefined") throw new Error("From is not given!"); - if(typeof(to) == "undefined") throw new Error("To is not given!"); - - if(to-1 < from) throw new Error("lol1"); - if(to > poly.vertices.length) throw new Error("lol2"); - if(from < 0) throw new Error("lol3"); - - for(var i=from; i v[br][0])) { - br = i; - } - } - - // reverse poly if clockwise - if (!Point.left(this.at(br - 1), this.at(br), this.at(br + 1))) { - this.reverse(); - } -}; - -/** - * Reverse the vertices in the polygon - * @method reverse - */ -Polygon.prototype.reverse = function(){ - var tmp = []; - for(var i=0, N=this.vertices.length; i!==N; i++){ - tmp.push(this.vertices.pop()); - } - this.vertices = tmp; -}; - -/** - * Check if a point in the polygon is a reflex point - * @method isReflex - * @param {Number} i - * @return {Boolean} - */ -Polygon.prototype.isReflex = function(i){ - return Point.right(this.at(i - 1), this.at(i), this.at(i + 1)); -}; - -var tmpLine1=[], - tmpLine2=[]; - -/** - * Check if two vertices in the polygon can see each other - * @method canSee - * @param {Number} a Vertex index 1 - * @param {Number} b Vertex index 2 - * @return {Boolean} - */ -Polygon.prototype.canSee = function(a,b) { - var p, dist, l1=tmpLine1, l2=tmpLine2; - - if (Point.leftOn(this.at(a + 1), this.at(a), this.at(b)) && Point.rightOn(this.at(a - 1), this.at(a), this.at(b))) { - return false; - } - dist = Point.sqdist(this.at(a), this.at(b)); - for (var i = 0; i !== this.vertices.length; ++i) { // for each edge - if ((i + 1) % this.vertices.length === a || i === a) // ignore incident edges - continue; - if (Point.leftOn(this.at(a), this.at(b), this.at(i + 1)) && Point.rightOn(this.at(a), this.at(b), this.at(i))) { // if diag intersects an edge - l1[0] = this.at(a); - l1[1] = this.at(b); - l2[0] = this.at(i); - l2[1] = this.at(i + 1); - p = Line.lineInt(l1,l2); - if (Point.sqdist(this.at(a), p) < dist) { // if edge is blocking visibility to b - return false; - } - } - } - - return true; -}; - -/** - * Copy the polygon from vertex i to vertex j. - * @method copy - * @param {Number} i - * @param {Number} j - * @param {Polygon} [targetPoly] Optional target polygon to save in. - * @return {Polygon} The resulting copy. - */ -Polygon.prototype.copy = function(i,j,targetPoly){ - var p = targetPoly || new Polygon(); - p.clear(); - if (i < j) { - // Insert all vertices from i to j - for(var k=i; k<=j; k++) - p.vertices.push(this.vertices[k]); - - } else { - - // Insert vertices 0 to j - for(var k=0; k<=j; k++) - p.vertices.push(this.vertices[k]); - - // Insert vertices i to end - for(var k=i; k 0) - return this.slice(edges); - else - return [this]; -}; - -/** - * Slices the polygon given one or more cut edges. If given one, this function will return two polygons (false on failure). If many, an array of polygons. - * @method slice - * @param {Array} cutEdges A list of edges, as returned by .getCutEdges() - * @return {Array} - */ -Polygon.prototype.slice = function(cutEdges){ - if(cutEdges.length == 0) return [this]; - if(cutEdges instanceof Array && cutEdges.length && cutEdges[0] instanceof Array && cutEdges[0].length==2 && cutEdges[0][0] instanceof Array){ - - var polys = [this]; - - for(var i=0; i maxlevel){ - console.warn("quickDecomp: max level ("+maxlevel+") reached."); - return result; - } - - for (var i = 0; i < this.vertices.length; ++i) { - if (poly.isReflex(i)) { - reflexVertices.push(poly.vertices[i]); - upperDist = lowerDist = Number.MAX_VALUE; - - - for (var j = 0; j < this.vertices.length; ++j) { - if (Point.left(poly.at(i - 1), poly.at(i), poly.at(j)) - && Point.rightOn(poly.at(i - 1), poly.at(i), poly.at(j - 1))) { // if line intersects with an edge - p = getIntersectionPoint(poly.at(i - 1), poly.at(i), poly.at(j), poly.at(j - 1)); // find the point of intersection - if (Point.right(poly.at(i + 1), poly.at(i), p)) { // make sure it's inside the poly - d = Point.sqdist(poly.vertices[i], p); - if (d < lowerDist) { // keep only the closest intersection - lowerDist = d; - lowerInt = p; - lowerIndex = j; - } - } - } - if (Point.left(poly.at(i + 1), poly.at(i), poly.at(j + 1)) - && Point.rightOn(poly.at(i + 1), poly.at(i), poly.at(j))) { - p = getIntersectionPoint(poly.at(i + 1), poly.at(i), poly.at(j), poly.at(j + 1)); - if (Point.left(poly.at(i - 1), poly.at(i), p)) { - d = Point.sqdist(poly.vertices[i], p); - if (d < upperDist) { - upperDist = d; - upperInt = p; - upperIndex = j; - } - } - } - } - - // if there are no vertices to connect to, choose a point in the middle - if (lowerIndex == (upperIndex + 1) % this.vertices.length) { - //console.log("Case 1: Vertex("+i+"), lowerIndex("+lowerIndex+"), upperIndex("+upperIndex+"), poly.size("+this.vertices.length+")"); - p[0] = (lowerInt[0] + upperInt[0]) / 2; - p[1] = (lowerInt[1] + upperInt[1]) / 2; - steinerPoints.push(p); - - if (i < upperIndex) { - //lowerPoly.insert(lowerPoly.end(), poly.begin() + i, poly.begin() + upperIndex + 1); - lowerPoly.append(poly, i, upperIndex+1); - lowerPoly.vertices.push(p); - upperPoly.vertices.push(p); - if (lowerIndex != 0){ - //upperPoly.insert(upperPoly.end(), poly.begin() + lowerIndex, poly.end()); - upperPoly.append(poly,lowerIndex,poly.vertices.length); - } - //upperPoly.insert(upperPoly.end(), poly.begin(), poly.begin() + i + 1); - upperPoly.append(poly,0,i+1); - } else { - if (i != 0){ - //lowerPoly.insert(lowerPoly.end(), poly.begin() + i, poly.end()); - lowerPoly.append(poly,i,poly.vertices.length); - } - //lowerPoly.insert(lowerPoly.end(), poly.begin(), poly.begin() + upperIndex + 1); - lowerPoly.append(poly,0,upperIndex+1); - lowerPoly.vertices.push(p); - upperPoly.vertices.push(p); - //upperPoly.insert(upperPoly.end(), poly.begin() + lowerIndex, poly.begin() + i + 1); - upperPoly.append(poly,lowerIndex,i+1); - } - } else { - // connect to the closest point within the triangle - //console.log("Case 2: Vertex("+i+"), closestIndex("+closestIndex+"), poly.size("+this.vertices.length+")\n"); - - if (lowerIndex > upperIndex) { - upperIndex += this.vertices.length; - } - closestDist = Number.MAX_VALUE; - - if(upperIndex < lowerIndex){ - return result; - } - - for (var j = lowerIndex; j <= upperIndex; ++j) { - if (Point.leftOn(poly.at(i - 1), poly.at(i), poly.at(j)) - && Point.rightOn(poly.at(i + 1), poly.at(i), poly.at(j))) { - d = Point.sqdist(poly.at(i), poly.at(j)); - if (d < closestDist) { - closestDist = d; - closestIndex = j % this.vertices.length; - } - } - } - - if (i < closestIndex) { - lowerPoly.append(poly,i,closestIndex+1); - if (closestIndex != 0){ - upperPoly.append(poly,closestIndex,v.length); - } - upperPoly.append(poly,0,i+1); - } else { - if (i != 0){ - lowerPoly.append(poly,i,v.length); - } - lowerPoly.append(poly,0,closestIndex+1); - upperPoly.append(poly,closestIndex,i+1); - } - } - - // solve smallest poly first - if (lowerPoly.vertices.length < upperPoly.vertices.length) { - lowerPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - upperPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - } else { - upperPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - lowerPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - } - - return result; - } - } - result.push(this); - - return result; -}; - -/** - * Remove collinear points in the polygon. - * @method removeCollinearPoints - * @param {Number} [precision] The threshold angle to use when determining whether two edges are collinear. Use zero for finest precision. - * @return {Number} The number of points removed - */ -Polygon.prototype.removeCollinearPoints = function(precision){ - var num = 0; - for(var i=this.vertices.length-1; this.vertices.length>3 && i>=0; --i){ - if(Point.collinear(this.at(i-1),this.at(i),this.at(i+1),precision)){ - // Remove the middle point - this.vertices.splice(i%this.vertices.length,1); - i--; // Jump one point forward. Otherwise we may get a chain removal - num++; - } - } - return num; -}; - -},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(_dereq_,module,exports){ -module.exports = Scalar; - -/** - * Scalar functions - * @class Scalar - */ -function Scalar(){} - -/** - * Check if two scalars are equal - * @static - * @method eq - * @param {Number} a - * @param {Number} b - * @param {Number} [precision] - * @return {Boolean} - */ -Scalar.eq = function(a,b,precision){ - precision = precision || 0; - return Math.abs(a-b) < precision; -}; - -},{}],5:[function(_dereq_,module,exports){ -module.exports = { - Polygon : _dereq_("./Polygon"), - Point : _dereq_("./Point"), -}; - -},{"./Point":2,"./Polygon":3}],6:[function(_dereq_,module,exports){ -module.exports={ - "name": "p2", - "version": "0.7.0", - "description": "A JavaScript 2D physics engine.", - "author": "Stefan Hedman (http://steffe.se)", - "keywords": [ - "p2.js", - "p2", - "physics", - "engine", - "2d" - ], - "main": "./src/p2.js", - "engines": { - "node": "*" - }, - "repository": { - "type": "git", - "url": "https://github.com/schteppe/p2.js.git" - }, - "bugs": { - "url": "https://github.com/schteppe/p2.js/issues" - }, - "licenses": [ - { - "type": "MIT" - } - ], - "devDependencies": { - "grunt": "^0.4.5", - "grunt-contrib-jshint": "^0.11.2", - "grunt-contrib-nodeunit": "^0.4.1", - "grunt-contrib-uglify": "~0.4.0", - "grunt-contrib-watch": "~0.5.0", - "grunt-browserify": "~2.0.1", - "grunt-contrib-concat": "^0.4.0" - }, - "dependencies": { - "poly-decomp": "0.1.0" - } -} - -},{}],7:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Utils = _dereq_('../utils/Utils'); - -module.exports = AABB; - -/** - * Axis aligned bounding box class. - * @class AABB - * @constructor - * @param {Object} [options] - * @param {Array} [options.upperBound] - * @param {Array} [options.lowerBound] - */ -function AABB(options){ - - /** - * The lower bound of the bounding box. - * @property lowerBound - * @type {Array} - */ - this.lowerBound = vec2.create(); - if(options && options.lowerBound){ - vec2.copy(this.lowerBound, options.lowerBound); - } - - /** - * The upper bound of the bounding box. - * @property upperBound - * @type {Array} - */ - this.upperBound = vec2.create(); - if(options && options.upperBound){ - vec2.copy(this.upperBound, options.upperBound); - } -} - -var tmp = vec2.create(); - -/** - * Set the AABB bounds from a set of points, transformed by the given position and angle. - * @method setFromPoints - * @param {Array} points An array of vec2's. - * @param {Array} position - * @param {number} angle - * @param {number} skinSize Some margin to be added to the AABB. - */ -AABB.prototype.setFromPoints = function(points, position, angle, skinSize){ - var l = this.lowerBound, - u = this.upperBound; - - if(typeof(angle) !== "number"){ - angle = 0; - } - - // Set to the first point - if(angle !== 0){ - vec2.rotate(l, points[0], angle); - } else { - vec2.copy(l, points[0]); - } - vec2.copy(u, l); - - // Compute cosines and sines just once - var cosAngle = Math.cos(angle), - sinAngle = Math.sin(angle); - for(var i = 1; i u[j]){ - u[j] = p[j]; - } - if(p[j] < l[j]){ - l[j] = p[j]; - } - } - } - - // Add offset - if(position){ - vec2.add(this.lowerBound, this.lowerBound, position); - vec2.add(this.upperBound, this.upperBound, position); - } - - if(skinSize){ - this.lowerBound[0] -= skinSize; - this.lowerBound[1] -= skinSize; - this.upperBound[0] += skinSize; - this.upperBound[1] += skinSize; - } -}; - -/** - * Copy bounds from an AABB to this AABB - * @method copy - * @param {AABB} aabb - */ -AABB.prototype.copy = function(aabb){ - vec2.copy(this.lowerBound, aabb.lowerBound); - vec2.copy(this.upperBound, aabb.upperBound); -}; - -/** - * Extend this AABB so that it covers the given AABB too. - * @method extend - * @param {AABB} aabb - */ -AABB.prototype.extend = function(aabb){ - // Loop over x and y - var i = 2; - while(i--){ - // Extend lower bound - var l = aabb.lowerBound[i]; - if(this.lowerBound[i] > l){ - this.lowerBound[i] = l; - } - - // Upper - var u = aabb.upperBound[i]; - if(this.upperBound[i] < u){ - this.upperBound[i] = u; - } - } -}; - -/** - * Returns true if the given AABB overlaps this AABB. - * @method overlaps - * @param {AABB} aabb - * @return {Boolean} - */ -AABB.prototype.overlaps = function(aabb){ - var l1 = this.lowerBound, - u1 = this.upperBound, - l2 = aabb.lowerBound, - u2 = aabb.upperBound; - - // l2 u2 - // |---------| - // |--------| - // l1 u1 - - return ((l2[0] <= u1[0] && u1[0] <= u2[0]) || (l1[0] <= u2[0] && u2[0] <= u1[0])) && - ((l2[1] <= u1[1] && u1[1] <= u2[1]) || (l1[1] <= u2[1] && u2[1] <= u1[1])); -}; - -/** - * @method containsPoint - * @param {Array} point - * @return {boolean} - */ -AABB.prototype.containsPoint = function(point){ - var l = this.lowerBound, - u = this.upperBound; - return l[0] <= point[0] && point[0] <= u[0] && l[1] <= point[1] && point[1] <= u[1]; -}; - -/** - * Check if the AABB is hit by a ray. - * @method overlapsRay - * @param {Ray} ray - * @return {number} -1 if no hit, a number between 0 and 1 if hit. - */ -AABB.prototype.overlapsRay = function(ray){ - var t = 0; - - // ray.direction is unit direction vector of ray - var dirFracX = 1 / ray.direction[0]; - var dirFracY = 1 / ray.direction[1]; - - // this.lowerBound is the corner of AABB with minimal coordinates - left bottom, rt is maximal corner - var t1 = (this.lowerBound[0] - ray.from[0]) * dirFracX; - var t2 = (this.upperBound[0] - ray.from[0]) * dirFracX; - var t3 = (this.lowerBound[1] - ray.from[1]) * dirFracY; - var t4 = (this.upperBound[1] - ray.from[1]) * dirFracY; - - var tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4))); - var tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4))); - - // if tmax < 0, ray (line) is intersecting AABB, but whole AABB is behing us - if (tmax < 0){ - //t = tmax; - return -1; - } - - // if tmin > tmax, ray doesn't intersect AABB - if (tmin > tmax){ - //t = tmax; - return -1; - } - - return tmin; -}; -},{"../math/vec2":30,"../utils/Utils":57}],8:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Body = _dereq_('../objects/Body'); - -module.exports = Broadphase; - -/** - * Base class for broadphase implementations. - * @class Broadphase - * @constructor - */ -function Broadphase(type){ - - this.type = type; - - /** - * The resulting overlapping pairs. Will be filled with results during .getCollisionPairs(). - * @property result - * @type {Array} - */ - this.result = []; - - /** - * The world to search for collision pairs in. To change it, use .setWorld() - * @property world - * @type {World} - * @readOnly - */ - this.world = null; - - /** - * The bounding volume type to use in the broadphase algorithms. Should be set to Broadphase.AABB or Broadphase.BOUNDING_CIRCLE. - * @property {Number} boundingVolumeType - */ - this.boundingVolumeType = Broadphase.AABB; -} - -/** - * Axis aligned bounding box type. - * @static - * @property {Number} AABB - */ -Broadphase.AABB = 1; - -/** - * Bounding circle type. - * @static - * @property {Number} BOUNDING_CIRCLE - */ -Broadphase.BOUNDING_CIRCLE = 2; - -/** - * Set the world that we are searching for collision pairs in. - * @method setWorld - * @param {World} world - */ -Broadphase.prototype.setWorld = function(world){ - this.world = world; -}; - -/** - * Get all potential intersecting body pairs. - * @method getCollisionPairs - * @param {World} world The world to search in. - * @return {Array} An array of the bodies, ordered in pairs. Example: A result of [a,b,c,d] means that the potential pairs are: (a,b), (c,d). - */ -Broadphase.prototype.getCollisionPairs = function(world){}; - -var dist = vec2.create(); - -/** - * Check whether the bounding radius of two bodies overlap. - * @method boundingRadiusCheck - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.boundingRadiusCheck = function(bodyA, bodyB){ - vec2.sub(dist, bodyA.position, bodyB.position); - var d2 = vec2.squaredLength(dist), - r = bodyA.boundingRadius + bodyB.boundingRadius; - return d2 <= r*r; -}; - -/** - * Check whether the bounding radius of two bodies overlap. - * @method boundingRadiusCheck - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.aabbCheck = function(bodyA, bodyB){ - return bodyA.getAABB().overlaps(bodyB.getAABB()); -}; - -/** - * Check whether the bounding radius of two bodies overlap. - * @method boundingRadiusCheck - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.prototype.boundingVolumeCheck = function(bodyA, bodyB){ - var result; - - switch(this.boundingVolumeType){ - case Broadphase.BOUNDING_CIRCLE: - result = Broadphase.boundingRadiusCheck(bodyA,bodyB); - break; - case Broadphase.AABB: - result = Broadphase.aabbCheck(bodyA,bodyB); - break; - default: - throw new Error('Bounding volume type not recognized: '+this.boundingVolumeType); - } - return result; -}; - -/** - * Check whether two bodies are allowed to collide at all. - * @method canCollide - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.canCollide = function(bodyA, bodyB){ - var KINEMATIC = Body.KINEMATIC; - var STATIC = Body.STATIC; - - // Cannot collide static bodies - if(bodyA.type === STATIC && bodyB.type === STATIC){ - return false; - } - - // Cannot collide static vs kinematic bodies - if( (bodyA.type === KINEMATIC && bodyB.type === STATIC) || - (bodyA.type === STATIC && bodyB.type === KINEMATIC)){ - return false; - } - - // Cannot collide kinematic vs kinematic - if(bodyA.type === KINEMATIC && bodyB.type === KINEMATIC){ - return false; - } - - // Cannot collide both sleeping bodies - if(bodyA.sleepState === Body.SLEEPING && bodyB.sleepState === Body.SLEEPING){ - return false; - } - - // Cannot collide if one is static and the other is sleeping - if( (bodyA.sleepState === Body.SLEEPING && bodyB.type === STATIC) || - (bodyB.sleepState === Body.SLEEPING && bodyA.type === STATIC)){ - return false; - } - - return true; -}; - -Broadphase.NAIVE = 1; -Broadphase.SAP = 2; - -},{"../math/vec2":30,"../objects/Body":31}],9:[function(_dereq_,module,exports){ -var Circle = _dereq_('../shapes/Circle'), - Plane = _dereq_('../shapes/Plane'), - Shape = _dereq_('../shapes/Shape'), - Particle = _dereq_('../shapes/Particle'), - Broadphase = _dereq_('../collision/Broadphase'), - vec2 = _dereq_('../math/vec2'); - -module.exports = NaiveBroadphase; - -/** - * Naive broadphase implementation. Does N^2 tests. - * - * @class NaiveBroadphase - * @constructor - * @extends Broadphase - */ -function NaiveBroadphase(){ - Broadphase.call(this, Broadphase.NAIVE); -} -NaiveBroadphase.prototype = new Broadphase(); -NaiveBroadphase.prototype.constructor = NaiveBroadphase; - -/** - * Get the colliding pairs - * @method getCollisionPairs - * @param {World} world - * @return {Array} - */ -NaiveBroadphase.prototype.getCollisionPairs = function(world){ - var bodies = world.bodies, - result = this.result; - - result.length = 0; - - for(var i=0, Ncolliding=bodies.length; i!==Ncolliding; i++){ - var bi = bodies[i]; - - for(var j=0; j pos0 && pos < pos1){ - // We got contact! - - if(justTest){ - return true; - } - - var c = this.createContactEquation(circleBody,lineBody,circleShape,lineShape); - - vec2.scale(c.normalA, orthoDist, -1); - vec2.normalize(c.normalA, c.normalA); - - vec2.scale( c.contactPointA, c.normalA, circleRadius); - add(c.contactPointA, c.contactPointA, circleOffset); - sub(c.contactPointA, c.contactPointA, circleBody.position); - - sub(c.contactPointB, projectedPoint, lineOffset); - add(c.contactPointB, c.contactPointB, lineOffset); - sub(c.contactPointB, c.contactPointB, lineBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - - return 1; - } - } - - // Add corner - verts[0] = worldVertex0; - verts[1] = worldVertex1; - - for(var i=0; i 0){ - for(var i=0; i Math.pow(r,2)){ - return 0; - } - - if(justTest){ - return true; - } - - var c = this.createContactEquation(bodyA,bodyB,shapeA,shapeB); - sub(c.normalA, offsetB, offsetA); - vec2.normalize(c.normalA,c.normalA); - - vec2.scale( c.contactPointA, c.normalA, radiusA); - vec2.scale( c.contactPointB, c.normalA, -radiusB); - - add(c.contactPointA, c.contactPointA, offsetA); - sub(c.contactPointA, c.contactPointA, bodyA.position); - - add(c.contactPointB, c.contactPointB, offsetB); - sub(c.contactPointB, c.contactPointB, bodyB.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - return 1; -}; - -/** - * Plane/Convex Narrowphase - * @method planeConvex - * @param {Body} planeBody - * @param {Plane} planeShape - * @param {Array} planeOffset - * @param {Number} planeAngle - * @param {Body} convexBody - * @param {Convex} convexShape - * @param {Array} convexOffset - * @param {Number} convexAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.PLANE | Shape.CONVEX] = -Narrowphase.prototype[Shape.PLANE | Shape.BOX] = -Narrowphase.prototype.planeConvex = function( - planeBody, - planeShape, - planeOffset, - planeAngle, - convexBody, - convexShape, - convexOffset, - convexAngle, - justTest -){ - var worldVertex = tmp1, - worldNormal = tmp2, - dist = tmp3; - - var numReported = 0; - vec2.rotate(worldNormal, yAxis, planeAngle); - - for(var i=0; i!==convexShape.vertices.length; i++){ - var v = convexShape.vertices[i]; - vec2.rotate(worldVertex, v, convexAngle); - add(worldVertex, worldVertex, convexOffset); - - sub(dist, worldVertex, planeOffset); - - if(dot(dist,worldNormal) <= 0){ - - if(justTest){ - return true; - } - - // Found vertex - numReported++; - - var c = this.createContactEquation(planeBody,convexBody,planeShape,convexShape); - - sub(dist, worldVertex, planeOffset); - - vec2.copy(c.normalA, worldNormal); - - var d = dot(dist, c.normalA); - vec2.scale(dist, c.normalA, d); - - // rj is from convex center to contact - sub(c.contactPointB, worldVertex, convexBody.position); - - - // ri is from plane center to contact - sub( c.contactPointA, worldVertex, dist); - sub( c.contactPointA, c.contactPointA, planeBody.position); - - this.contactEquations.push(c); - - if(!this.enableFrictionReduction){ - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - } - } - } - - if(this.enableFrictionReduction){ - if(this.enableFriction && numReported){ - this.frictionEquations.push(this.createFrictionFromAverage(numReported)); - } - } - - return numReported; -}; - -/** - * Narrowphase for particle vs plane - * @method particlePlane - * @param {Body} particleBody - * @param {Particle} particleShape - * @param {Array} particleOffset - * @param {Number} particleAngle - * @param {Body} planeBody - * @param {Plane} planeShape - * @param {Array} planeOffset - * @param {Number} planeAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.PARTICLE | Shape.PLANE] = -Narrowphase.prototype.particlePlane = function( - particleBody, - particleShape, - particleOffset, - particleAngle, - planeBody, - planeShape, - planeOffset, - planeAngle, - justTest -){ - var dist = tmp1, - worldNormal = tmp2; - - planeAngle = planeAngle || 0; - - sub(dist, particleOffset, planeOffset); - vec2.rotate(worldNormal, yAxis, planeAngle); - - var d = dot(dist, worldNormal); - - if(d > 0){ - return 0; - } - if(justTest){ - return true; - } - - var c = this.createContactEquation(planeBody,particleBody,planeShape,particleShape); - - vec2.copy(c.normalA, worldNormal); - vec2.scale( dist, c.normalA, d ); - // dist is now the distance vector in the normal direction - - // ri is the particle position projected down onto the plane, from the plane center - sub( c.contactPointA, particleOffset, dist); - sub( c.contactPointA, c.contactPointA, planeBody.position); - - // rj is from the body center to the particle center - sub( c.contactPointB, particleOffset, particleBody.position ); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - return 1; -}; - -/** - * Circle/Particle Narrowphase - * @method circleParticle - * @param {Body} circleBody - * @param {Circle} circleShape - * @param {Array} circleOffset - * @param {Number} circleAngle - * @param {Body} particleBody - * @param {Particle} particleShape - * @param {Array} particleOffset - * @param {Number} particleAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.CIRCLE | Shape.PARTICLE] = -Narrowphase.prototype.circleParticle = function( - circleBody, - circleShape, - circleOffset, - circleAngle, - particleBody, - particleShape, - particleOffset, - particleAngle, - justTest -){ - var dist = tmp1; - - sub(dist, particleOffset, circleOffset); - if(vec2.squaredLength(dist) > Math.pow(circleShape.radius, 2)){ - return 0; - } - if(justTest){ - return true; - } - - var c = this.createContactEquation(circleBody,particleBody,circleShape,particleShape); - vec2.copy(c.normalA, dist); - vec2.normalize(c.normalA,c.normalA); - - // Vector from circle to contact point is the normal times the circle radius - vec2.scale(c.contactPointA, c.normalA, circleShape.radius); - add(c.contactPointA, c.contactPointA, circleOffset); - sub(c.contactPointA, c.contactPointA, circleBody.position); - - // Vector from particle center to contact point is zero - sub(c.contactPointB, particleOffset, particleBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - - return 1; -}; - -var planeCapsule_tmpCircle = new Circle({ radius: 1 }), - planeCapsule_tmp1 = vec2.create(), - planeCapsule_tmp2 = vec2.create(), - planeCapsule_tmp3 = vec2.create(); - -/** - * @method planeCapsule - * @param {Body} planeBody - * @param {Circle} planeShape - * @param {Array} planeOffset - * @param {Number} planeAngle - * @param {Body} capsuleBody - * @param {Particle} capsuleShape - * @param {Array} capsuleOffset - * @param {Number} capsuleAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.PLANE | Shape.CAPSULE] = -Narrowphase.prototype.planeCapsule = function( - planeBody, - planeShape, - planeOffset, - planeAngle, - capsuleBody, - capsuleShape, - capsuleOffset, - capsuleAngle, - justTest -){ - var end1 = planeCapsule_tmp1, - end2 = planeCapsule_tmp2, - circle = planeCapsule_tmpCircle, - dst = planeCapsule_tmp3; - - // Compute world end positions - vec2.set(end1, -capsuleShape.length/2, 0); - vec2.rotate(end1,end1,capsuleAngle); - add(end1,end1,capsuleOffset); - - vec2.set(end2, capsuleShape.length/2, 0); - vec2.rotate(end2,end2,capsuleAngle); - add(end2,end2,capsuleOffset); - - circle.radius = capsuleShape.radius; - - var enableFrictionBefore; - - // Temporarily turn off friction - if(this.enableFrictionReduction){ - enableFrictionBefore = this.enableFriction; - this.enableFriction = false; - } - - // Do Narrowphase as two circles - var numContacts1 = this.circlePlane(capsuleBody,circle,end1,0, planeBody,planeShape,planeOffset,planeAngle, justTest), - numContacts2 = this.circlePlane(capsuleBody,circle,end2,0, planeBody,planeShape,planeOffset,planeAngle, justTest); - - // Restore friction - if(this.enableFrictionReduction){ - this.enableFriction = enableFrictionBefore; - } - - if(justTest){ - return numContacts1 || numContacts2; - } else { - var numTotal = numContacts1 + numContacts2; - if(this.enableFrictionReduction){ - if(numTotal){ - this.frictionEquations.push(this.createFrictionFromAverage(numTotal)); - } - } - return numTotal; - } -}; - -/** - * Creates ContactEquations and FrictionEquations for a collision. - * @method circlePlane - * @param {Body} bi The first body that should be connected to the equations. - * @param {Circle} si The circle shape participating in the collision. - * @param {Array} xi Extra offset to take into account for the Shape, in addition to the one in circleBody.position. Will *not* be rotated by circleBody.angle (maybe it should, for sake of homogenity?). Set to null if none. - * @param {Body} bj The second body that should be connected to the equations. - * @param {Plane} sj The Plane shape that is participating - * @param {Array} xj Extra offset for the plane shape. - * @param {Number} aj Extra angle to apply to the plane - */ -Narrowphase.prototype[Shape.CIRCLE | Shape.PLANE] = -Narrowphase.prototype.circlePlane = function( bi,si,xi,ai, bj,sj,xj,aj, justTest ){ - var circleBody = bi, - circleShape = si, - circleOffset = xi, // Offset from body center, rotated! - planeBody = bj, - shapeB = sj, - planeOffset = xj, - planeAngle = aj; - - planeAngle = planeAngle || 0; - - // Vector from plane to circle - var planeToCircle = tmp1, - worldNormal = tmp2, - temp = tmp3; - - sub(planeToCircle, circleOffset, planeOffset); - - // World plane normal - vec2.rotate(worldNormal, yAxis, planeAngle); - - // Normal direction distance - var d = dot(worldNormal, planeToCircle); - - if(d > circleShape.radius){ - return 0; // No overlap. Abort. - } - - if(justTest){ - return true; - } - - // Create contact - var contact = this.createContactEquation(planeBody,circleBody,sj,si); - - // ni is the plane world normal - vec2.copy(contact.normalA, worldNormal); - - // rj is the vector from circle center to the contact point - vec2.scale(contact.contactPointB, contact.normalA, -circleShape.radius); - add(contact.contactPointB, contact.contactPointB, circleOffset); - sub(contact.contactPointB, contact.contactPointB, circleBody.position); - - // ri is the distance from plane center to contact. - vec2.scale(temp, contact.normalA, d); - sub(contact.contactPointA, planeToCircle, temp ); // Subtract normal distance vector from the distance vector - add(contact.contactPointA, contact.contactPointA, planeOffset); - sub(contact.contactPointA, contact.contactPointA, planeBody.position); - - this.contactEquations.push(contact); - - if(this.enableFriction){ - this.frictionEquations.push( this.createFrictionFromContact(contact) ); - } - - return 1; -}; - -/** - * Convex/convex Narrowphase.See this article for more info. - * @method convexConvex - * @param {Body} bi - * @param {Convex} si - * @param {Array} xi - * @param {Number} ai - * @param {Body} bj - * @param {Convex} sj - * @param {Array} xj - * @param {Number} aj - */ -Narrowphase.prototype[Shape.CONVEX] = -Narrowphase.prototype[Shape.CONVEX | Shape.BOX] = -Narrowphase.prototype[Shape.BOX] = -Narrowphase.prototype.convexConvex = function( bi,si,xi,ai, bj,sj,xj,aj, justTest, precision ){ - var sepAxis = tmp1, - worldPoint = tmp2, - worldPoint0 = tmp3, - worldPoint1 = tmp4, - worldEdge = tmp5, - projected = tmp6, - penetrationVec = tmp7, - dist = tmp8, - worldNormal = tmp9, - numContacts = 0, - precision = typeof(precision) === 'number' ? precision : 0; - - var found = Narrowphase.findSeparatingAxis(si,xi,ai,sj,xj,aj,sepAxis); - if(!found){ - return 0; - } - - // Make sure the separating axis is directed from shape i to shape j - sub(dist,xj,xi); - if(dot(sepAxis,dist) > 0){ - vec2.scale(sepAxis,sepAxis,-1); - } - - // Find edges with normals closest to the separating axis - var closestEdge1 = Narrowphase.getClosestEdge(si,ai,sepAxis,true), // Flipped axis - closestEdge2 = Narrowphase.getClosestEdge(sj,aj,sepAxis); - - if(closestEdge1 === -1 || closestEdge2 === -1){ - return 0; - } - - // Loop over the shapes - for(var k=0; k<2; k++){ - - var closestEdgeA = closestEdge1, - closestEdgeB = closestEdge2, - shapeA = si, shapeB = sj, - offsetA = xi, offsetB = xj, - angleA = ai, angleB = aj, - bodyA = bi, bodyB = bj; - - if(k === 0){ - // Swap! - var tmp; - tmp = closestEdgeA; - closestEdgeA = closestEdgeB; - closestEdgeB = tmp; - - tmp = shapeA; - shapeA = shapeB; - shapeB = tmp; - - tmp = offsetA; - offsetA = offsetB; - offsetB = tmp; - - tmp = angleA; - angleA = angleB; - angleB = tmp; - - tmp = bodyA; - bodyA = bodyB; - bodyB = tmp; - } - - // Loop over 2 points in convex B - for(var j=closestEdgeB; j= 3){ - - if(justTest){ - return true; - } - - // worldPoint was on the "inside" side of each of the 3 checked edges. - // Project it to the center edge and use the projection direction as normal - - // Create contact - var c = this.createContactEquation(bodyA,bodyB,shapeA,shapeB); - numContacts++; - - // Get center edge from body A - var v0 = shapeA.vertices[(closestEdgeA) % shapeA.vertices.length], - v1 = shapeA.vertices[(closestEdgeA+1) % shapeA.vertices.length]; - - // Construct the edge - vec2.rotate(worldPoint0, v0, angleA); - vec2.rotate(worldPoint1, v1, angleA); - add(worldPoint0, worldPoint0, offsetA); - add(worldPoint1, worldPoint1, offsetA); - - sub(worldEdge, worldPoint1, worldPoint0); - - vec2.rotate90cw(c.normalA, worldEdge); // Normal points out of convex A - vec2.normalize(c.normalA,c.normalA); - - sub(dist, worldPoint, worldPoint0); // From edge point to the penetrating point - var d = dot(c.normalA,dist); // Penetration - vec2.scale(penetrationVec, c.normalA, d); // Vector penetration - - sub(c.contactPointA, worldPoint, offsetA); - sub(c.contactPointA, c.contactPointA, penetrationVec); - add(c.contactPointA, c.contactPointA, offsetA); - sub(c.contactPointA, c.contactPointA, bodyA.position); - - sub(c.contactPointB, worldPoint, offsetB); - add(c.contactPointB, c.contactPointB, offsetB); - sub(c.contactPointB, c.contactPointB, bodyB.position); - - this.contactEquations.push(c); - - // Todo reduce to 1 friction equation if we have 2 contact points - if(!this.enableFrictionReduction){ - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - } - } - } - } - - if(this.enableFrictionReduction){ - if(this.enableFriction && numContacts){ - this.frictionEquations.push(this.createFrictionFromAverage(numContacts)); - } - } - - return numContacts; -}; - -// .projectConvex is called by other functions, need local tmp vectors -var pcoa_tmp1 = vec2.fromValues(0,0); - -/** - * Project a Convex onto a world-oriented axis - * @method projectConvexOntoAxis - * @static - * @param {Convex} convexShape - * @param {Array} convexOffset - * @param {Number} convexAngle - * @param {Array} worldAxis - * @param {Array} result - */ -Narrowphase.projectConvexOntoAxis = function(convexShape, convexOffset, convexAngle, worldAxis, result){ - var max=null, - min=null, - v, - value, - localAxis = pcoa_tmp1; - - // Convert the axis to local coords of the body - vec2.rotate(localAxis, worldAxis, -convexAngle); - - // Get projected position of all vertices - for(var i=0; i max){ - max = value; - } - if(min === null || value < min){ - min = value; - } - } - - if(min > max){ - var t = min; - min = max; - max = t; - } - - // Project the position of the body onto the axis - need to add this to the result - var offset = dot(convexOffset, worldAxis); - - vec2.set( result, min + offset, max + offset); -}; - -// .findSeparatingAxis is called by other functions, need local tmp vectors -var fsa_tmp1 = vec2.fromValues(0,0) -, fsa_tmp2 = vec2.fromValues(0,0) -, fsa_tmp3 = vec2.fromValues(0,0) -, fsa_tmp4 = vec2.fromValues(0,0) -, fsa_tmp5 = vec2.fromValues(0,0) -, fsa_tmp6 = vec2.fromValues(0,0); - -/** - * Find a separating axis between the shapes, that maximizes the separating distance between them. - * @method findSeparatingAxis - * @static - * @param {Convex} c1 - * @param {Array} offset1 - * @param {Number} angle1 - * @param {Convex} c2 - * @param {Array} offset2 - * @param {Number} angle2 - * @param {Array} sepAxis The resulting axis - * @return {Boolean} Whether the axis could be found. - */ -Narrowphase.findSeparatingAxis = function(c1,offset1,angle1,c2,offset2,angle2,sepAxis){ - var maxDist = null, - overlap = false, - found = false, - edge = fsa_tmp1, - worldPoint0 = fsa_tmp2, - worldPoint1 = fsa_tmp3, - normal = fsa_tmp4, - span1 = fsa_tmp5, - span2 = fsa_tmp6; - - if(c1 instanceof Box && c2 instanceof Box){ - - for(var j=0; j!==2; j++){ - var c = c1, - angle = angle1; - if(j===1){ - c = c2; - angle = angle2; - } - - for(var i=0; i!==2; i++){ - - // Get the world edge - if(i === 0){ - vec2.set(normal, 0, 1); - } else if(i === 1) { - vec2.set(normal, 1, 0); - } - if(angle !== 0){ - vec2.rotate(normal, normal, angle); - } - - // Project hulls onto that normal - Narrowphase.projectConvexOntoAxis(c1,offset1,angle1,normal,span1); - Narrowphase.projectConvexOntoAxis(c2,offset2,angle2,normal,span2); - - // Order by span position - var a=span1, - b=span2, - swapped = false; - if(span1[0] > span2[0]){ - b=span1; - a=span2; - swapped = true; - } - - // Get separating distance - var dist = b[0] - a[1]; - overlap = (dist <= 0); - - if(maxDist===null || dist > maxDist){ - vec2.copy(sepAxis, normal); - maxDist = dist; - found = overlap; - } - } - } - - } else { - - for(var j=0; j!==2; j++){ - var c = c1, - angle = angle1; - if(j===1){ - c = c2; - angle = angle2; - } - - for(var i=0; i!==c.vertices.length; i++){ - // Get the world edge - vec2.rotate(worldPoint0, c.vertices[i], angle); - vec2.rotate(worldPoint1, c.vertices[(i+1)%c.vertices.length], angle); - - sub(edge, worldPoint1, worldPoint0); - - // Get normal - just rotate 90 degrees since vertices are given in CCW - vec2.rotate90cw(normal, edge); - vec2.normalize(normal,normal); - - // Project hulls onto that normal - Narrowphase.projectConvexOntoAxis(c1,offset1,angle1,normal,span1); - Narrowphase.projectConvexOntoAxis(c2,offset2,angle2,normal,span2); - - // Order by span position - var a=span1, - b=span2, - swapped = false; - if(span1[0] > span2[0]){ - b=span1; - a=span2; - swapped = true; - } - - // Get separating distance - var dist = b[0] - a[1]; - overlap = (dist <= 0); - - if(maxDist===null || dist > maxDist){ - vec2.copy(sepAxis, normal); - maxDist = dist; - found = overlap; - } - } - } - } - - - /* - // Needs to be tested some more - for(var j=0; j!==2; j++){ - var c = c1, - angle = angle1; - if(j===1){ - c = c2; - angle = angle2; - } - - for(var i=0; i!==c.axes.length; i++){ - - var normal = c.axes[i]; - - // Project hulls onto that normal - Narrowphase.projectConvexOntoAxis(c1, offset1, angle1, normal, span1); - Narrowphase.projectConvexOntoAxis(c2, offset2, angle2, normal, span2); - - // Order by span position - var a=span1, - b=span2, - swapped = false; - if(span1[0] > span2[0]){ - b=span1; - a=span2; - swapped = true; - } - - // Get separating distance - var dist = b[0] - a[1]; - overlap = (dist <= Narrowphase.convexPrecision); - - if(maxDist===null || dist > maxDist){ - vec2.copy(sepAxis, normal); - maxDist = dist; - found = overlap; - } - } - } - */ - - return found; -}; - -// .getClosestEdge is called by other functions, need local tmp vectors -var gce_tmp1 = vec2.fromValues(0,0) -, gce_tmp2 = vec2.fromValues(0,0) -, gce_tmp3 = vec2.fromValues(0,0); - -/** - * Get the edge that has a normal closest to an axis. - * @method getClosestEdge - * @static - * @param {Convex} c - * @param {Number} angle - * @param {Array} axis - * @param {Boolean} flip - * @return {Number} Index of the edge that is closest. This index and the next spans the resulting edge. Returns -1 if failed. - */ -Narrowphase.getClosestEdge = function(c,angle,axis,flip){ - var localAxis = gce_tmp1, - edge = gce_tmp2, - normal = gce_tmp3; - - // Convert the axis to local coords of the body - vec2.rotate(localAxis, axis, -angle); - if(flip){ - vec2.scale(localAxis,localAxis,-1); - } - - var closestEdge = -1, - N = c.vertices.length, - maxDot = -1; - for(var i=0; i!==N; i++){ - // Get the edge - sub(edge, c.vertices[(i+1)%N], c.vertices[i%N]); - - // Get normal - just rotate 90 degrees since vertices are given in CCW - vec2.rotate90cw(normal, edge); - vec2.normalize(normal,normal); - - var d = dot(normal,localAxis); - if(closestEdge === -1 || d > maxDot){ - closestEdge = i % N; - maxDot = d; - } - } - - return closestEdge; -}; - -var circleHeightfield_candidate = vec2.create(), - circleHeightfield_dist = vec2.create(), - circleHeightfield_v0 = vec2.create(), - circleHeightfield_v1 = vec2.create(), - circleHeightfield_minCandidate = vec2.create(), - circleHeightfield_worldNormal = vec2.create(), - circleHeightfield_minCandidateNormal = vec2.create(); - -/** - * @method circleHeightfield - * @param {Body} bi - * @param {Circle} si - * @param {Array} xi - * @param {Body} bj - * @param {Heightfield} sj - * @param {Array} xj - * @param {Number} aj - */ -Narrowphase.prototype[Shape.CIRCLE | Shape.HEIGHTFIELD] = -Narrowphase.prototype.circleHeightfield = function( circleBody,circleShape,circlePos,circleAngle, - hfBody,hfShape,hfPos,hfAngle, justTest, radius ){ - var data = hfShape.heights, - radius = radius || circleShape.radius, - w = hfShape.elementWidth, - dist = circleHeightfield_dist, - candidate = circleHeightfield_candidate, - minCandidate = circleHeightfield_minCandidate, - minCandidateNormal = circleHeightfield_minCandidateNormal, - worldNormal = circleHeightfield_worldNormal, - v0 = circleHeightfield_v0, - v1 = circleHeightfield_v1; - - // Get the index of the points to test against - var idxA = Math.floor( (circlePos[0] - radius - hfPos[0]) / w ), - idxB = Math.ceil( (circlePos[0] + radius - hfPos[0]) / w ); - - /*if(idxB < 0 || idxA >= data.length) - return justTest ? false : 0;*/ - - if(idxA < 0){ - idxA = 0; - } - if(idxB >= data.length){ - idxB = data.length-1; - } - - // Get max and min - var max = data[idxA], - min = data[idxB]; - for(var i=idxA; i max){ - max = data[i]; - } - } - - if(circlePos[1]-radius > max){ - return justTest ? false : 0; - } - - /* - if(circlePos[1]+radius < min){ - // Below the minimum point... We can just guess. - // TODO - } - */ - - // 1. Check so center of circle is not inside the field. If it is, this wont work... - // 2. For each edge - // 2. 1. Get point on circle that is closest to the edge (scale normal with -radius) - // 2. 2. Check if point is inside. - - var found = false; - - // Check all edges first - for(var i=idxA; i= v0[0] && candidate[0] < v1[0] && d <= 0){ - - if(justTest){ - return true; - } - - found = true; - - // Store the candidate point, projected to the edge - vec2.scale(dist,worldNormal,-d); - vec2.add(minCandidate,candidate,dist); - vec2.copy(minCandidateNormal,worldNormal); - - var c = this.createContactEquation(hfBody,circleBody,hfShape,circleShape); - - // Normal is out of the heightfield - vec2.copy(c.normalA, minCandidateNormal); - - // Vector from circle to heightfield - vec2.scale(c.contactPointB, c.normalA, -radius); - add(c.contactPointB, c.contactPointB, circlePos); - sub(c.contactPointB, c.contactPointB, circleBody.position); - - vec2.copy(c.contactPointA, minCandidate); - vec2.sub(c.contactPointA, c.contactPointA, hfBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push( this.createFrictionFromContact(c) ); - } - } - } - - // Check all vertices - found = false; - if(radius > 0){ - for(var i=idxA; i<=idxB; i++){ - - // Get point - vec2.set(v0, i*w, data[i]); - vec2.add(v0,v0,hfPos); - - vec2.sub(dist, circlePos, v0); - - if(vec2.squaredLength(dist) < Math.pow(radius, 2)){ - - if(justTest){ - return true; - } - - found = true; - - var c = this.createContactEquation(hfBody,circleBody,hfShape,circleShape); - - // Construct normal - out of heightfield - vec2.copy(c.normalA, dist); - vec2.normalize(c.normalA,c.normalA); - - vec2.scale(c.contactPointB, c.normalA, -radius); - add(c.contactPointB, c.contactPointB, circlePos); - sub(c.contactPointB, c.contactPointB, circleBody.position); - - sub(c.contactPointA, v0, hfPos); - add(c.contactPointA, c.contactPointA, hfPos); - sub(c.contactPointA, c.contactPointA, hfBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - } - } - } - - if(found){ - return 1; - } - - return 0; - -}; - -var convexHeightfield_v0 = vec2.create(), - convexHeightfield_v1 = vec2.create(), - convexHeightfield_tilePos = vec2.create(), - convexHeightfield_tempConvexShape = new Convex({ vertices: [vec2.create(),vec2.create(),vec2.create(),vec2.create()] }); -/** - * @method circleHeightfield - * @param {Body} bi - * @param {Circle} si - * @param {Array} xi - * @param {Body} bj - * @param {Heightfield} sj - * @param {Array} xj - * @param {Number} aj - */ -Narrowphase.prototype[Shape.BOX | Shape.HEIGHTFIELD] = -Narrowphase.prototype[Shape.CONVEX | Shape.HEIGHTFIELD] = -Narrowphase.prototype.convexHeightfield = function( convexBody,convexShape,convexPos,convexAngle, - hfBody,hfShape,hfPos,hfAngle, justTest ){ - var data = hfShape.heights, - w = hfShape.elementWidth, - v0 = convexHeightfield_v0, - v1 = convexHeightfield_v1, - tilePos = convexHeightfield_tilePos, - tileConvex = convexHeightfield_tempConvexShape; - - // Get the index of the points to test against - var idxA = Math.floor( (convexBody.aabb.lowerBound[0] - hfPos[0]) / w ), - idxB = Math.ceil( (convexBody.aabb.upperBound[0] - hfPos[0]) / w ); - - if(idxA < 0){ - idxA = 0; - } - if(idxB >= data.length){ - idxB = data.length-1; - } - - // Get max and min - var max = data[idxA], - min = data[idxB]; - for(var i=idxA; i max){ - max = data[i]; - } - } - - if(convexBody.aabb.lowerBound[1] > max){ - return justTest ? false : 0; - } - - var found = false; - var numContacts = 0; - - // Loop over all edges - // TODO: If possible, construct a convex from several data points (need o check if the points make a convex shape) - for(var i=idxA; i= 0 || aabb.containsPoint(this.from)){ - this.intersectBody(result, body); - } - } -}; - -var intersectBody_worldPosition = vec2.create(); - -/** - * Shoot a ray at a body, get back information about the hit. - * @method intersectBody - * @private - * @param {Body} body - */ -Ray.prototype.intersectBody = function (result, body) { - var checkCollisionResponse = this.checkCollisionResponse; - - if(checkCollisionResponse && !body.collisionResponse){ - return; - } - - var worldPosition = intersectBody_worldPosition; - - for (var i = 0, N = body.shapes.length; i < N; i++) { - var shape = body.shapes[i]; - - if(checkCollisionResponse && !shape.collisionResponse){ - continue; // Skip - } - - if((this.collisionGroup & shape.collisionMask) === 0 || (shape.collisionGroup & this.collisionMask) === 0){ - continue; - } - - // Get world angle and position of the shape - vec2.rotate(worldPosition, shape.position, body.angle); - vec2.add(worldPosition, worldPosition, body.position); - var worldAngle = shape.angle + body.angle; - - this.intersectShape( - result, - shape, - worldAngle, - worldPosition, - body - ); - - if(result.shouldStop(this)){ - break; - } - } -}; - -/** - * @method intersectShape - * @private - * @param {Shape} shape - * @param {number} angle - * @param {array} position - * @param {Body} body - */ -Ray.prototype.intersectShape = function(result, shape, angle, position, body){ - var from = this.from; - - // Checking radius - var distance = distanceFromIntersectionSquared(from, this.direction, position); - if (distance > shape.boundingRadius * shape.boundingRadius) { - return; - } - - this._currentBody = body; - this._currentShape = shape; - - shape.raycast(result, this, position, angle); - - this._currentBody = this._currentShape = null; -}; - -/** - * Get the AABB of the ray. - * @method getAABB - * @param {AABB} aabb - */ -Ray.prototype.getAABB = function(result){ - var to = this.to; - var from = this.from; - vec2.set( - result.lowerBound, - Math.min(to[0], from[0]), - Math.min(to[1], from[1]) - ); - vec2.set( - result.upperBound, - Math.max(to[0], from[0]), - Math.max(to[1], from[1]) - ); -}; - -var hitPointWorld = vec2.create(); - -/** - * @method reportIntersection - * @private - * @param {number} fraction - * @param {array} normal - * @param {number} [faceIndex=-1] - * @return {boolean} True if the intersections should continue - */ -Ray.prototype.reportIntersection = function(result, fraction, normal, faceIndex){ - var from = this.from; - var to = this.to; - var shape = this._currentShape; - var body = this._currentBody; - - // Skip back faces? - if(this.skipBackfaces && vec2.dot(normal, this.direction) > 0){ - return; - } - - switch(this.mode){ - - case Ray.ALL: - result.set( - normal, - shape, - body, - fraction, - faceIndex - ); - this.callback(result); - break; - - case Ray.CLOSEST: - - // Store if closer than current closest - if(fraction < result.fraction || !result.hasHit()){ - result.set( - normal, - shape, - body, - fraction, - faceIndex - ); - } - break; - - case Ray.ANY: - - // Report and stop. - result.set( - normal, - shape, - body, - fraction, - faceIndex - ); - break; - } -}; - -var v0 = vec2.create(), - intersect = vec2.create(); -function distanceFromIntersectionSquared(from, direction, position) { - - // v0 is vector from from to position - vec2.sub(v0, position, from); - var dot = vec2.dot(v0, direction); - - // intersect = direction * dot + from - vec2.scale(intersect, direction, dot); - vec2.add(intersect, intersect, from); - - return vec2.squaredDistance(position, intersect); -} - - -},{"../collision/AABB":7,"../collision/RaycastResult":12,"../math/vec2":30,"../shapes/Shape":45}],12:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Ray = _dereq_('../collision/Ray'); - -module.exports = RaycastResult; - -/** - * Storage for Ray casting hit data. - * @class RaycastResult - * @constructor - */ -function RaycastResult(){ - - /** - * The normal of the hit, oriented in world space. - * @property {array} normal - */ - this.normal = vec2.create(); - - /** - * The hit shape, or null. - * @property {Shape} shape - */ - this.shape = null; - - /** - * The hit body, or null. - * @property {Body} body - */ - this.body = null; - - /** - * The index of the hit triangle, if the hit shape was indexable. - * @property {number} faceIndex - * @default -1 - */ - this.faceIndex = -1; - - /** - * Distance to the hit, as a fraction. 0 is at the "from" point, 1 is at the "to" point. Will be set to -1 if there was no hit yet. - * @property {number} fraction - * @default -1 - */ - this.fraction = -1; - - /** - * If the ray should stop traversing. - * @readonly - * @property {Boolean} isStopped - */ - this.isStopped = false; -} - -/** - * Reset all result data. Must be done before re-using the result object. - * @method reset - */ -RaycastResult.prototype.reset = function () { - vec2.set(this.normal, 0, 0); - this.shape = null; - this.body = null; - this.faceIndex = -1; - this.fraction = -1; - this.isStopped = false; -}; - -/** - * Get the distance to the hit point. - * @method getHitDistance - * @param {Ray} ray - */ -RaycastResult.prototype.getHitDistance = function (ray) { - return vec2.distance(ray.from, ray.to) * this.fraction; -}; - -/** - * Returns true if the ray hit something since the last reset(). - * @method hasHit - */ -RaycastResult.prototype.hasHit = function () { - return this.fraction !== -1; -}; - -/** - * Get world hit point. - * @method getHitPoint - * @param {array} out - * @param {Ray} ray - */ -RaycastResult.prototype.getHitPoint = function (out, ray) { - vec2.lerp(out, ray.from, ray.to, this.fraction); -}; - -/** - * Can be called while iterating over hits to stop searching for hit points. - * @method stop - */ -RaycastResult.prototype.stop = function(){ - this.isStopped = true; -}; - -/** - * @method shouldStop - * @private - * @param {Ray} ray - * @return {boolean} - */ -RaycastResult.prototype.shouldStop = function(ray){ - return this.isStopped || (this.fraction !== -1 && ray.mode === Ray.ANY); -}; - -/** - * @method set - * @private - * @param {array} normal - * @param {Shape} shape - * @param {Body} body - * @param {number} fraction - */ -RaycastResult.prototype.set = function( - normal, - shape, - body, - fraction, - faceIndex -){ - vec2.copy(this.normal, normal); - this.shape = shape; - this.body = body; - this.fraction = fraction; - this.faceIndex = faceIndex; -}; -},{"../collision/Ray":11,"../math/vec2":30}],13:[function(_dereq_,module,exports){ -var Utils = _dereq_('../utils/Utils') -, Broadphase = _dereq_('../collision/Broadphase'); - -module.exports = SAPBroadphase; - -/** - * Sweep and prune broadphase along one axis. - * - * @class SAPBroadphase - * @constructor - * @extends Broadphase - */ -function SAPBroadphase(){ - Broadphase.call(this,Broadphase.SAP); - - /** - * List of bodies currently in the broadphase. - * @property axisList - * @type {Array} - */ - this.axisList = []; - - /** - * The axis to sort along. 0 means x-axis and 1 y-axis. If your bodies are more spread out over the X axis, set axisIndex to 0, and you will gain some performance. - * @property axisIndex - * @type {Number} - */ - this.axisIndex = 0; - - var that = this; - this._addBodyHandler = function(e){ - that.axisList.push(e.body); - }; - - this._removeBodyHandler = function(e){ - // Remove from list - var idx = that.axisList.indexOf(e.body); - if(idx !== -1){ - that.axisList.splice(idx,1); - } - }; -} -SAPBroadphase.prototype = new Broadphase(); -SAPBroadphase.prototype.constructor = SAPBroadphase; - -/** - * Change the world - * @method setWorld - * @param {World} world - */ -SAPBroadphase.prototype.setWorld = function(world){ - // Clear the old axis array - this.axisList.length = 0; - - // Add all bodies from the new world - Utils.appendArray(this.axisList, world.bodies); - - // Remove old handlers, if any - world - .off("addBody",this._addBodyHandler) - .off("removeBody",this._removeBodyHandler); - - // Add handlers to update the list of bodies. - world.on("addBody",this._addBodyHandler).on("removeBody",this._removeBodyHandler); - - this.world = world; -}; - -/** - * Sorts bodies along an axis. - * @method sortAxisList - * @param {Array} a - * @param {number} axisIndex - * @return {Array} - */ -SAPBroadphase.sortAxisList = function(a, axisIndex){ - axisIndex = axisIndex|0; - for(var i=1,l=a.length; i=0;j--) { - if(a[j].aabb.lowerBound[axisIndex] <= v.aabb.lowerBound[axisIndex]){ - break; - } - a[j+1] = a[j]; - } - a[j+1] = v; - } - return a; -}; - -SAPBroadphase.prototype.sortList = function(){ - var bodies = this.axisList, - axisIndex = this.axisIndex; - - // Sort the lists - SAPBroadphase.sortAxisList(bodies, axisIndex); -}; - -/** - * Get the colliding pairs - * @method getCollisionPairs - * @param {World} world - * @return {Array} - */ -SAPBroadphase.prototype.getCollisionPairs = function(world){ - var bodies = this.axisList, - result = this.result, - axisIndex = this.axisIndex; - - result.length = 0; - - // Update all AABBs if needed - var l = bodies.length; - while(l--){ - var b = bodies[l]; - if(b.aabbNeedsUpdate){ - b.updateAABB(); - } - } - - // Sort the lists - this.sortList(); - - // Look through the X list - for(var i=0, N=bodies.length|0; i!==N; i++){ - var bi = bodies[i]; - - for(var j=i+1; j G = [-n -rixn n rjxn] - - var r = vec2.create(); - var ri = vec2.create(); // worldAnchorA - var rj = vec2.create(); // worldAnchorB - var that = this; - normal.computeGq = function(){ - var bodyA = this.bodyA, - bodyB = this.bodyB, - xi = bodyA.position, - xj = bodyB.position; - - // Transform local anchors to world - vec2.rotate(ri, localAnchorA, bodyA.angle); - vec2.rotate(rj, localAnchorB, bodyB.angle); - - vec2.add(r, xj, rj); - vec2.sub(r, r, ri); - vec2.sub(r, r, xi); - - //vec2.sub(r, bodyB.position, bodyA.position); - return vec2.length(r) - that.distance; - }; - - // Make the contact constraint bilateral - this.setMaxForce(maxForce); - - /** - * If the upper limit is enabled or not. - * @property {Boolean} upperLimitEnabled - */ - this.upperLimitEnabled = false; - - /** - * The upper constraint limit. - * @property {number} upperLimit - */ - this.upperLimit = 1; - - /** - * If the lower limit is enabled or not. - * @property {Boolean} lowerLimitEnabled - */ - this.lowerLimitEnabled = false; - - /** - * The lower constraint limit. - * @property {number} lowerLimit - */ - this.lowerLimit = 0; - - /** - * Current constraint position. This is equal to the current distance between the world anchor points. - * @property {number} position - */ - this.position = 0; -} -DistanceConstraint.prototype = new Constraint(); -DistanceConstraint.prototype.constructor = DistanceConstraint; - -/** - * Update the constraint equations. Should be done if any of the bodies changed position, before solving. - * @method update - */ -var n = vec2.create(); -var ri = vec2.create(); // worldAnchorA -var rj = vec2.create(); // worldAnchorB -DistanceConstraint.prototype.update = function(){ - var normal = this.equations[0], - bodyA = this.bodyA, - bodyB = this.bodyB, - distance = this.distance, - xi = bodyA.position, - xj = bodyB.position, - normalEquation = this.equations[0], - G = normal.G; - - // Transform local anchors to world - vec2.rotate(ri, this.localAnchorA, bodyA.angle); - vec2.rotate(rj, this.localAnchorB, bodyB.angle); - - // Get world anchor points and normal - vec2.add(n, xj, rj); - vec2.sub(n, n, ri); - vec2.sub(n, n, xi); - this.position = vec2.length(n); - - var violating = false; - if(this.upperLimitEnabled){ - if(this.position > this.upperLimit){ - normalEquation.maxForce = 0; - normalEquation.minForce = -this.maxForce; - this.distance = this.upperLimit; - violating = true; - } - } - - if(this.lowerLimitEnabled){ - if(this.position < this.lowerLimit){ - normalEquation.maxForce = this.maxForce; - normalEquation.minForce = 0; - this.distance = this.lowerLimit; - violating = true; - } - } - - if((this.lowerLimitEnabled || this.upperLimitEnabled) && !violating){ - // No constraint needed. - normalEquation.enabled = false; - return; - } - - normalEquation.enabled = true; - - vec2.normalize(n,n); - - // Caluclate cross products - var rixn = vec2.crossLength(ri, n), - rjxn = vec2.crossLength(rj, n); - - // G = [-n -rixn n rjxn] - G[0] = -n[0]; - G[1] = -n[1]; - G[2] = -rixn; - G[3] = n[0]; - G[4] = n[1]; - G[5] = rjxn; -}; - -/** - * Set the max force to be used - * @method setMaxForce - * @param {Number} maxForce - */ -DistanceConstraint.prototype.setMaxForce = function(maxForce){ - var normal = this.equations[0]; - normal.minForce = -maxForce; - normal.maxForce = maxForce; -}; - -/** - * Get the max force - * @method getMaxForce - * @return {Number} - */ -DistanceConstraint.prototype.getMaxForce = function(){ - var normal = this.equations[0]; - return normal.maxForce; -}; - -},{"../equations/Equation":22,"../math/vec2":30,"../utils/Utils":57,"./Constraint":14}],16:[function(_dereq_,module,exports){ -var Constraint = _dereq_('./Constraint') -, Equation = _dereq_('../equations/Equation') -, AngleLockEquation = _dereq_('../equations/AngleLockEquation') -, vec2 = _dereq_('../math/vec2'); - -module.exports = GearConstraint; - -/** - * Constrains the angle of two bodies to each other to be equal. If a gear ratio is not one, the angle of bodyA must be a multiple of the angle of bodyB. - * @class GearConstraint - * @constructor - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.angle=0] Relative angle between the bodies. Will be set to the current angle between the bodies (the gear ratio is accounted for). - * @param {Number} [options.ratio=1] Gear ratio. - * @param {Number} [options.maxTorque] Maximum torque to apply. - * @extends Constraint - * - * @example - * var constraint = new GearConstraint(bodyA, bodyB); - * world.addConstraint(constraint); - * - * @example - * var constraint = new GearConstraint(bodyA, bodyB, { - * ratio: 2, - * maxTorque: 1000 - * }); - * world.addConstraint(constraint); - */ -function GearConstraint(bodyA, bodyB, options){ - options = options || {}; - - Constraint.call(this, bodyA, bodyB, Constraint.GEAR, options); - - /** - * The gear ratio. - * @property ratio - * @type {Number} - */ - this.ratio = options.ratio !== undefined ? options.ratio : 1; - - /** - * The relative angle - * @property angle - * @type {Number} - */ - this.angle = options.angle !== undefined ? options.angle : bodyB.angle - this.ratio * bodyA.angle; - - // Send same parameters to the equation - options.angle = this.angle; - options.ratio = this.ratio; - - this.equations = [ - new AngleLockEquation(bodyA,bodyB,options), - ]; - - // Set max torque - if(options.maxTorque !== undefined){ - this.setMaxTorque(options.maxTorque); - } -} -GearConstraint.prototype = new Constraint(); -GearConstraint.prototype.constructor = GearConstraint; - -GearConstraint.prototype.update = function(){ - var eq = this.equations[0]; - if(eq.ratio !== this.ratio){ - eq.setRatio(this.ratio); - } - eq.angle = this.angle; -}; - -/** - * Set the max torque for the constraint. - * @method setMaxTorque - * @param {Number} torque - */ -GearConstraint.prototype.setMaxTorque = function(torque){ - this.equations[0].setMaxTorque(torque); -}; - -/** - * Get the max torque for the constraint. - * @method getMaxTorque - * @return {Number} - */ -GearConstraint.prototype.getMaxTorque = function(torque){ - return this.equations[0].maxForce; -}; -},{"../equations/AngleLockEquation":20,"../equations/Equation":22,"../math/vec2":30,"./Constraint":14}],17:[function(_dereq_,module,exports){ -var Constraint = _dereq_('./Constraint') -, vec2 = _dereq_('../math/vec2') -, Equation = _dereq_('../equations/Equation'); - -module.exports = LockConstraint; - -/** - * Locks the relative position and rotation between two bodies. - * - * @class LockConstraint - * @constructor - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Array} [options.localOffsetB] The offset of bodyB in bodyA's frame. If not given the offset is computed from current positions. - * @param {number} [options.localAngleB] The angle of bodyB in bodyA's frame. If not given, the angle is computed from current angles. - * @param {number} [options.maxForce] - * @extends Constraint - * - * @example - * // Locks the relative position and rotation between bodyA and bodyB - * var constraint = new LockConstraint(bodyA, bodyB); - * world.addConstraint(constraint); - */ -function LockConstraint(bodyA, bodyB, options){ - options = options || {}; - - Constraint.call(this,bodyA,bodyB,Constraint.LOCK,options); - - var maxForce = ( typeof(options.maxForce)==="undefined" ? Number.MAX_VALUE : options.maxForce ); - - var localAngleB = options.localAngleB || 0; - - // Use 3 equations: - // gx = (xj - xi - l) * xhat = 0 - // gy = (xj - xi - l) * yhat = 0 - // gr = (xi - xj + r) * that = 0 - // - // ...where: - // l is the localOffsetB vector rotated to world in bodyA frame - // r is the same vector but reversed and rotated from bodyB frame - // xhat, yhat are world axis vectors - // that is the tangent of r - // - // For the first two constraints, we get - // G*W = (vj - vi - ldot ) * xhat - // = (vj - vi - wi x l) * xhat - // - // Since (wi x l) * xhat = (l x xhat) * wi, we get - // G*W = [ -1 0 (-l x xhat) 1 0 0] * [vi wi vj wj] - // - // The last constraint gives - // GW = (vi - vj + wj x r) * that - // = [ that 0 -that (r x t) ] - - var x = new Equation(bodyA,bodyB,-maxForce,maxForce), - y = new Equation(bodyA,bodyB,-maxForce,maxForce), - rot = new Equation(bodyA,bodyB,-maxForce,maxForce); - - var l = vec2.create(), - g = vec2.create(), - that = this; - x.computeGq = function(){ - vec2.rotate(l, that.localOffsetB, bodyA.angle); - vec2.sub(g, bodyB.position, bodyA.position); - vec2.sub(g, g, l); - return g[0]; - }; - y.computeGq = function(){ - vec2.rotate(l, that.localOffsetB, bodyA.angle); - vec2.sub(g, bodyB.position, bodyA.position); - vec2.sub(g, g, l); - return g[1]; - }; - var r = vec2.create(), - t = vec2.create(); - rot.computeGq = function(){ - vec2.rotate(r, that.localOffsetB, bodyB.angle - that.localAngleB); - vec2.scale(r,r,-1); - vec2.sub(g,bodyA.position,bodyB.position); - vec2.add(g,g,r); - vec2.rotate(t,r,-Math.PI/2); - vec2.normalize(t,t); - return vec2.dot(g,t); - }; - - /** - * The offset of bodyB in bodyA's frame. - * @property {Array} localOffsetB - */ - this.localOffsetB = vec2.create(); - if(options.localOffsetB){ - vec2.copy(this.localOffsetB, options.localOffsetB); - } else { - // Construct from current positions - vec2.sub(this.localOffsetB, bodyB.position, bodyA.position); - vec2.rotate(this.localOffsetB, this.localOffsetB, -bodyA.angle); - } - - /** - * The offset angle of bodyB in bodyA's frame. - * @property {Number} localAngleB - */ - this.localAngleB = 0; - if(typeof(options.localAngleB) === 'number'){ - this.localAngleB = options.localAngleB; - } else { - // Construct - this.localAngleB = bodyB.angle - bodyA.angle; - } - - this.equations.push(x, y, rot); - this.setMaxForce(maxForce); -} -LockConstraint.prototype = new Constraint(); -LockConstraint.prototype.constructor = LockConstraint; - -/** - * Set the maximum force to be applied. - * @method setMaxForce - * @param {Number} force - */ -LockConstraint.prototype.setMaxForce = function(force){ - var eqs = this.equations; - for(var i=0; ithis tutorial. Also called "slider constraint". - * - * @class PrismaticConstraint - * @constructor - * @extends Constraint - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.maxForce] Max force to be applied by the constraint - * @param {Array} [options.localAnchorA] Body A's anchor point, defined in its own local frame. - * @param {Array} [options.localAnchorB] Body B's anchor point, defined in its own local frame. - * @param {Array} [options.localAxisA] An axis, defined in body A frame, that body B's anchor point may slide along. - * @param {Boolean} [options.disableRotationalLock] If set to true, bodyB will be free to rotate around its anchor point. - * @param {Number} [options.upperLimit] - * @param {Number} [options.lowerLimit] - * @todo Ability to create using only a point and a worldAxis - */ -function PrismaticConstraint(bodyA, bodyB, options){ - options = options || {}; - Constraint.call(this,bodyA,bodyB,Constraint.PRISMATIC,options); - - // Get anchors - var localAnchorA = vec2.fromValues(0,0), - localAxisA = vec2.fromValues(1,0), - localAnchorB = vec2.fromValues(0,0); - if(options.localAnchorA){ vec2.copy(localAnchorA, options.localAnchorA); } - if(options.localAxisA){ vec2.copy(localAxisA, options.localAxisA); } - if(options.localAnchorB){ vec2.copy(localAnchorB, options.localAnchorB); } - - /** - * @property localAnchorA - * @type {Array} - */ - this.localAnchorA = localAnchorA; - - /** - * @property localAnchorB - * @type {Array} - */ - this.localAnchorB = localAnchorB; - - /** - * @property localAxisA - * @type {Array} - */ - this.localAxisA = localAxisA; - - /* - - The constraint violation for the common axis point is - - g = ( xj + rj - xi - ri ) * t := gg*t - - where r are body-local anchor points, and t is a tangent to the constraint axis defined in body i frame. - - gdot = ( vj + wj x rj - vi - wi x ri ) * t + ( xj + rj - xi - ri ) * ( wi x t ) - - Note the use of the chain rule. Now we identify the jacobian - - G*W = [ -t -ri x t + t x gg t rj x t ] * [vi wi vj wj] - - The rotational part is just a rotation lock. - - */ - - var maxForce = this.maxForce = typeof(options.maxForce)!=="undefined" ? options.maxForce : Number.MAX_VALUE; - - // Translational part - var trans = new Equation(bodyA,bodyB,-maxForce,maxForce); - var ri = new vec2.create(), - rj = new vec2.create(), - gg = new vec2.create(), - t = new vec2.create(); - trans.computeGq = function(){ - // g = ( xj + rj - xi - ri ) * t - return vec2.dot(gg,t); - }; - trans.updateJacobian = function(){ - var G = this.G, - xi = bodyA.position, - xj = bodyB.position; - vec2.rotate(ri,localAnchorA,bodyA.angle); - vec2.rotate(rj,localAnchorB,bodyB.angle); - vec2.add(gg,xj,rj); - vec2.sub(gg,gg,xi); - vec2.sub(gg,gg,ri); - vec2.rotate(t,localAxisA,bodyA.angle+Math.PI/2); - - G[0] = -t[0]; - G[1] = -t[1]; - G[2] = -vec2.crossLength(ri,t) + vec2.crossLength(t,gg); - G[3] = t[0]; - G[4] = t[1]; - G[5] = vec2.crossLength(rj,t); - }; - this.equations.push(trans); - - // Rotational part - if(!options.disableRotationalLock){ - var rot = new RotationalLockEquation(bodyA,bodyB,-maxForce,maxForce); - this.equations.push(rot); - } - - /** - * The position of anchor A relative to anchor B, along the constraint axis. - * @property position - * @type {Number} - */ - this.position = 0; - - // Is this one used at all? - this.velocity = 0; - - /** - * Set to true to enable lower limit. - * @property lowerLimitEnabled - * @type {Boolean} - */ - this.lowerLimitEnabled = typeof(options.lowerLimit)!=="undefined" ? true : false; - - /** - * Set to true to enable upper limit. - * @property upperLimitEnabled - * @type {Boolean} - */ - this.upperLimitEnabled = typeof(options.upperLimit)!=="undefined" ? true : false; - - /** - * Lower constraint limit. The constraint position is forced to be larger than this value. - * @property lowerLimit - * @type {Number} - */ - this.lowerLimit = typeof(options.lowerLimit)!=="undefined" ? options.lowerLimit : 0; - - /** - * Upper constraint limit. The constraint position is forced to be smaller than this value. - * @property upperLimit - * @type {Number} - */ - this.upperLimit = typeof(options.upperLimit)!=="undefined" ? options.upperLimit : 1; - - // Equations used for limits - this.upperLimitEquation = new ContactEquation(bodyA,bodyB); - this.lowerLimitEquation = new ContactEquation(bodyA,bodyB); - - // Set max/min forces - this.upperLimitEquation.minForce = this.lowerLimitEquation.minForce = 0; - this.upperLimitEquation.maxForce = this.lowerLimitEquation.maxForce = maxForce; - - /** - * Equation used for the motor. - * @property motorEquation - * @type {Equation} - */ - this.motorEquation = new Equation(bodyA,bodyB); - - /** - * The current motor state. Enable or disable the motor using .enableMotor - * @property motorEnabled - * @type {Boolean} - */ - this.motorEnabled = false; - - /** - * Set the target speed for the motor. - * @property motorSpeed - * @type {Number} - */ - this.motorSpeed = 0; - - var that = this; - var motorEquation = this.motorEquation; - var old = motorEquation.computeGW; - motorEquation.computeGq = function(){ return 0; }; - motorEquation.computeGW = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - vi = bi.velocity, - vj = bj.velocity, - wi = bi.angularVelocity, - wj = bj.angularVelocity; - return this.gmult(G,vi,wi,vj,wj) + that.motorSpeed; - }; -} - -PrismaticConstraint.prototype = new Constraint(); -PrismaticConstraint.prototype.constructor = PrismaticConstraint; - -var worldAxisA = vec2.create(), - worldAnchorA = vec2.create(), - worldAnchorB = vec2.create(), - orientedAnchorA = vec2.create(), - orientedAnchorB = vec2.create(), - tmp = vec2.create(); - -/** - * Update the constraint equations. Should be done if any of the bodies changed position, before solving. - * @method update - */ -PrismaticConstraint.prototype.update = function(){ - var eqs = this.equations, - trans = eqs[0], - upperLimit = this.upperLimit, - lowerLimit = this.lowerLimit, - upperLimitEquation = this.upperLimitEquation, - lowerLimitEquation = this.lowerLimitEquation, - bodyA = this.bodyA, - bodyB = this.bodyB, - localAxisA = this.localAxisA, - localAnchorA = this.localAnchorA, - localAnchorB = this.localAnchorB; - - trans.updateJacobian(); - - // Transform local things to world - vec2.rotate(worldAxisA, localAxisA, bodyA.angle); - vec2.rotate(orientedAnchorA, localAnchorA, bodyA.angle); - vec2.add(worldAnchorA, orientedAnchorA, bodyA.position); - vec2.rotate(orientedAnchorB, localAnchorB, bodyB.angle); - vec2.add(worldAnchorB, orientedAnchorB, bodyB.position); - - var relPosition = this.position = vec2.dot(worldAnchorB,worldAxisA) - vec2.dot(worldAnchorA,worldAxisA); - - // Motor - if(this.motorEnabled){ - // G = [ a a x ri -a -a x rj ] - var G = this.motorEquation.G; - G[0] = worldAxisA[0]; - G[1] = worldAxisA[1]; - G[2] = vec2.crossLength(worldAxisA,orientedAnchorB); - G[3] = -worldAxisA[0]; - G[4] = -worldAxisA[1]; - G[5] = -vec2.crossLength(worldAxisA,orientedAnchorA); - } - - /* - Limits strategy: - Add contact equation, with normal along the constraint axis. - min/maxForce is set so the constraint is repulsive in the correct direction. - Some offset is added to either equation.contactPointA or .contactPointB to get the correct upper/lower limit. - - ^ - | - upperLimit x - | ------ - anchorB x<---| B | - | | | - ------ | ------ - | | | - | A |-->x anchorA - ------ | - x lowerLimit - | - axis - */ - - - if(this.upperLimitEnabled && relPosition > upperLimit){ - // Update contact constraint normal, etc - vec2.scale(upperLimitEquation.normalA, worldAxisA, -1); - vec2.sub(upperLimitEquation.contactPointA, worldAnchorA, bodyA.position); - vec2.sub(upperLimitEquation.contactPointB, worldAnchorB, bodyB.position); - vec2.scale(tmp,worldAxisA,upperLimit); - vec2.add(upperLimitEquation.contactPointA,upperLimitEquation.contactPointA,tmp); - if(eqs.indexOf(upperLimitEquation) === -1){ - eqs.push(upperLimitEquation); - } - } else { - var idx = eqs.indexOf(upperLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } - - if(this.lowerLimitEnabled && relPosition < lowerLimit){ - // Update contact constraint normal, etc - vec2.scale(lowerLimitEquation.normalA, worldAxisA, 1); - vec2.sub(lowerLimitEquation.contactPointA, worldAnchorA, bodyA.position); - vec2.sub(lowerLimitEquation.contactPointB, worldAnchorB, bodyB.position); - vec2.scale(tmp,worldAxisA,lowerLimit); - vec2.sub(lowerLimitEquation.contactPointB,lowerLimitEquation.contactPointB,tmp); - if(eqs.indexOf(lowerLimitEquation) === -1){ - eqs.push(lowerLimitEquation); - } - } else { - var idx = eqs.indexOf(lowerLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } -}; - -/** - * Enable the motor - * @method enableMotor - */ -PrismaticConstraint.prototype.enableMotor = function(){ - if(this.motorEnabled){ - return; - } - this.equations.push(this.motorEquation); - this.motorEnabled = true; -}; - -/** - * Disable the rotational motor - * @method disableMotor - */ -PrismaticConstraint.prototype.disableMotor = function(){ - if(!this.motorEnabled){ - return; - } - var i = this.equations.indexOf(this.motorEquation); - this.equations.splice(i,1); - this.motorEnabled = false; -}; - -/** - * Set the constraint limits. - * @method setLimits - * @param {number} lower Lower limit. - * @param {number} upper Upper limit. - */ -PrismaticConstraint.prototype.setLimits = function (lower, upper) { - if(typeof(lower) === 'number'){ - this.lowerLimit = lower; - this.lowerLimitEnabled = true; - } else { - this.lowerLimit = lower; - this.lowerLimitEnabled = false; - } - - if(typeof(upper) === 'number'){ - this.upperLimit = upper; - this.upperLimitEnabled = true; - } else { - this.upperLimit = upper; - this.upperLimitEnabled = false; - } -}; - - -},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(_dereq_,module,exports){ -var Constraint = _dereq_('./Constraint') -, Equation = _dereq_('../equations/Equation') -, RotationalVelocityEquation = _dereq_('../equations/RotationalVelocityEquation') -, RotationalLockEquation = _dereq_('../equations/RotationalLockEquation') -, vec2 = _dereq_('../math/vec2'); - -module.exports = RevoluteConstraint; - -var worldPivotA = vec2.create(), - worldPivotB = vec2.create(), - xAxis = vec2.fromValues(1,0), - yAxis = vec2.fromValues(0,1), - g = vec2.create(); - -/** - * Connects two bodies at given offset points, letting them rotate relative to each other around this point. - * @class RevoluteConstraint - * @constructor - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Array} [options.worldPivot] A pivot point given in world coordinates. If specified, localPivotA and localPivotB are automatically computed from this value. - * @param {Array} [options.localPivotA] The point relative to the center of mass of bodyA which bodyA is constrained to. - * @param {Array} [options.localPivotB] See localPivotA. - * @param {Number} [options.maxForce] The maximum force that should be applied to constrain the bodies. - * @extends Constraint - * - * @example - * // This will create a revolute constraint between two bodies with pivot point in between them. - * var bodyA = new Body({ mass: 1, position: [-1, 0] }); - * var bodyB = new Body({ mass: 1, position: [1, 0] }); - * var constraint = new RevoluteConstraint(bodyA, bodyB, { - * worldPivot: [0, 0] - * }); - * world.addConstraint(constraint); - * - * // Using body-local pivot points, the constraint could have been constructed like this: - * var constraint = new RevoluteConstraint(bodyA, bodyB, { - * localPivotA: [1, 0], - * localPivotB: [-1, 0] - * }); - */ -function RevoluteConstraint(bodyA, bodyB, options){ - options = options || {}; - Constraint.call(this,bodyA,bodyB,Constraint.REVOLUTE,options); - - var maxForce = this.maxForce = typeof(options.maxForce) !== "undefined" ? options.maxForce : Number.MAX_VALUE; - - /** - * @property {Array} pivotA - */ - this.pivotA = vec2.create(); - - /** - * @property {Array} pivotB - */ - this.pivotB = vec2.create(); - - if(options.worldPivot){ - // Compute pivotA and pivotB - vec2.sub(this.pivotA, options.worldPivot, bodyA.position); - vec2.sub(this.pivotB, options.worldPivot, bodyB.position); - // Rotate to local coordinate system - vec2.rotate(this.pivotA, this.pivotA, -bodyA.angle); - vec2.rotate(this.pivotB, this.pivotB, -bodyB.angle); - } else { - // Get pivotA and pivotB - vec2.copy(this.pivotA, options.localPivotA); - vec2.copy(this.pivotB, options.localPivotB); - } - - // Equations to be fed to the solver - var eqs = this.equations = [ - new Equation(bodyA,bodyB,-maxForce,maxForce), - new Equation(bodyA,bodyB,-maxForce,maxForce), - ]; - - var x = eqs[0]; - var y = eqs[1]; - var that = this; - - x.computeGq = function(){ - vec2.rotate(worldPivotA, that.pivotA, bodyA.angle); - vec2.rotate(worldPivotB, that.pivotB, bodyB.angle); - vec2.add(g, bodyB.position, worldPivotB); - vec2.sub(g, g, bodyA.position); - vec2.sub(g, g, worldPivotA); - return vec2.dot(g,xAxis); - }; - - y.computeGq = function(){ - vec2.rotate(worldPivotA, that.pivotA, bodyA.angle); - vec2.rotate(worldPivotB, that.pivotB, bodyB.angle); - vec2.add(g, bodyB.position, worldPivotB); - vec2.sub(g, g, bodyA.position); - vec2.sub(g, g, worldPivotA); - return vec2.dot(g,yAxis); - }; - - y.minForce = x.minForce = -maxForce; - y.maxForce = x.maxForce = maxForce; - - this.motorEquation = new RotationalVelocityEquation(bodyA,bodyB); - - /** - * Indicates whether the motor is enabled. Use .enableMotor() to enable the constraint motor. - * @property {Boolean} motorEnabled - * @readOnly - */ - this.motorEnabled = false; - - /** - * The constraint position. - * @property angle - * @type {Number} - * @readOnly - */ - this.angle = 0; - - /** - * Set to true to enable lower limit - * @property lowerLimitEnabled - * @type {Boolean} - */ - this.lowerLimitEnabled = false; - - /** - * Set to true to enable upper limit - * @property upperLimitEnabled - * @type {Boolean} - */ - this.upperLimitEnabled = false; - - /** - * The lower limit on the constraint angle. - * @property lowerLimit - * @type {Boolean} - */ - this.lowerLimit = 0; - - /** - * The upper limit on the constraint angle. - * @property upperLimit - * @type {Boolean} - */ - this.upperLimit = 0; - - this.upperLimitEquation = new RotationalLockEquation(bodyA,bodyB); - this.lowerLimitEquation = new RotationalLockEquation(bodyA,bodyB); - this.upperLimitEquation.minForce = 0; - this.lowerLimitEquation.maxForce = 0; -} -RevoluteConstraint.prototype = new Constraint(); -RevoluteConstraint.prototype.constructor = RevoluteConstraint; - -/** - * Set the constraint angle limits. - * @method setLimits - * @param {number} lower Lower angle limit. - * @param {number} upper Upper angle limit. - */ -RevoluteConstraint.prototype.setLimits = function (lower, upper) { - if(typeof(lower) === 'number'){ - this.lowerLimit = lower; - this.lowerLimitEnabled = true; - } else { - this.lowerLimit = lower; - this.lowerLimitEnabled = false; - } - - if(typeof(upper) === 'number'){ - this.upperLimit = upper; - this.upperLimitEnabled = true; - } else { - this.upperLimit = upper; - this.upperLimitEnabled = false; - } -}; - -RevoluteConstraint.prototype.update = function(){ - var bodyA = this.bodyA, - bodyB = this.bodyB, - pivotA = this.pivotA, - pivotB = this.pivotB, - eqs = this.equations, - normal = eqs[0], - tangent= eqs[1], - x = eqs[0], - y = eqs[1], - upperLimit = this.upperLimit, - lowerLimit = this.lowerLimit, - upperLimitEquation = this.upperLimitEquation, - lowerLimitEquation = this.lowerLimitEquation; - - var relAngle = this.angle = bodyB.angle - bodyA.angle; - - if(this.upperLimitEnabled && relAngle > upperLimit){ - upperLimitEquation.angle = upperLimit; - if(eqs.indexOf(upperLimitEquation) === -1){ - eqs.push(upperLimitEquation); - } - } else { - var idx = eqs.indexOf(upperLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } - - if(this.lowerLimitEnabled && relAngle < lowerLimit){ - lowerLimitEquation.angle = lowerLimit; - if(eqs.indexOf(lowerLimitEquation) === -1){ - eqs.push(lowerLimitEquation); - } - } else { - var idx = eqs.indexOf(lowerLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } - - /* - - The constraint violation is - - g = xj + rj - xi - ri - - ...where xi and xj are the body positions and ri and rj world-oriented offset vectors. Differentiate: - - gdot = vj + wj x rj - vi - wi x ri - - We split this into x and y directions. (let x and y be unit vectors along the respective axes) - - gdot * x = ( vj + wj x rj - vi - wi x ri ) * x - = ( vj*x + (wj x rj)*x -vi*x -(wi x ri)*x - = ( vj*x + (rj x x)*wj -vi*x -(ri x x)*wi - = [ -x -(ri x x) x (rj x x)] * [vi wi vj wj] - = G*W - - ...and similar for y. We have then identified the jacobian entries for x and y directions: - - Gx = [ x (rj x x) -x -(ri x x)] - Gy = [ y (rj x y) -y -(ri x y)] - - */ - - vec2.rotate(worldPivotA, pivotA, bodyA.angle); - vec2.rotate(worldPivotB, pivotB, bodyB.angle); - - // todo: these are a bit sparse. We could save some computations on making custom eq.computeGW functions, etc - - x.G[0] = -1; - x.G[1] = 0; - x.G[2] = -vec2.crossLength(worldPivotA,xAxis); - x.G[3] = 1; - x.G[4] = 0; - x.G[5] = vec2.crossLength(worldPivotB,xAxis); - - y.G[0] = 0; - y.G[1] = -1; - y.G[2] = -vec2.crossLength(worldPivotA,yAxis); - y.G[3] = 0; - y.G[4] = 1; - y.G[5] = vec2.crossLength(worldPivotB,yAxis); -}; - -/** - * Enable the rotational motor - * @method enableMotor - */ -RevoluteConstraint.prototype.enableMotor = function(){ - if(this.motorEnabled){ - return; - } - this.equations.push(this.motorEquation); - this.motorEnabled = true; -}; - -/** - * Disable the rotational motor - * @method disableMotor - */ -RevoluteConstraint.prototype.disableMotor = function(){ - if(!this.motorEnabled){ - return; - } - var i = this.equations.indexOf(this.motorEquation); - this.equations.splice(i,1); - this.motorEnabled = false; -}; - -/** - * Check if the motor is enabled. - * @method motorIsEnabled - * @deprecated use property motorEnabled instead. - * @return {Boolean} - */ -RevoluteConstraint.prototype.motorIsEnabled = function(){ - return !!this.motorEnabled; -}; - -/** - * Set the speed of the rotational constraint motor - * @method setMotorSpeed - * @param {Number} speed - */ -RevoluteConstraint.prototype.setMotorSpeed = function(speed){ - if(!this.motorEnabled){ - return; - } - var i = this.equations.indexOf(this.motorEquation); - this.equations[i].relativeVelocity = speed; -}; - -/** - * Get the speed of the rotational constraint motor - * @method getMotorSpeed - * @return {Number} The current speed, or false if the motor is not enabled. - */ -RevoluteConstraint.prototype.getMotorSpeed = function(){ - if(!this.motorEnabled){ - return false; - } - return this.motorEquation.relativeVelocity; -}; - -},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = AngleLockEquation; - -/** - * Locks the relative angle between two bodies. The constraint tries to keep the dot product between two vectors, local in each body, to zero. The local angle in body i is a parameter. - * - * @class AngleLockEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.angle] Angle to add to the local vector in body A. - * @param {Number} [options.ratio] Gear ratio - */ -function AngleLockEquation(bodyA, bodyB, options){ - options = options || {}; - Equation.call(this,bodyA,bodyB,-Number.MAX_VALUE,Number.MAX_VALUE); - this.angle = options.angle || 0; - - /** - * The gear ratio. - * @property {Number} ratio - * @private - * @see setRatio - */ - this.ratio = typeof(options.ratio)==="number" ? options.ratio : 1; - - this.setRatio(this.ratio); -} -AngleLockEquation.prototype = new Equation(); -AngleLockEquation.prototype.constructor = AngleLockEquation; - -AngleLockEquation.prototype.computeGq = function(){ - return this.ratio * this.bodyA.angle - this.bodyB.angle + this.angle; -}; - -/** - * Set the gear ratio for this equation - * @method setRatio - * @param {Number} ratio - */ -AngleLockEquation.prototype.setRatio = function(ratio){ - var G = this.G; - G[2] = ratio; - G[5] = -1; - this.ratio = ratio; -}; - -/** - * Set the max force for the equation. - * @method setMaxTorque - * @param {Number} torque - */ -AngleLockEquation.prototype.setMaxTorque = function(torque){ - this.maxForce = torque; - this.minForce = -torque; -}; - -},{"../math/vec2":30,"./Equation":22}],21:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = ContactEquation; - -/** - * Non-penetration constraint equation. Tries to make the contactPointA and contactPointB vectors coincide, while keeping the applied force repulsive. - * - * @class ContactEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - */ -function ContactEquation(bodyA, bodyB){ - Equation.call(this, bodyA, bodyB, 0, Number.MAX_VALUE); - - /** - * Vector from body i center of mass to the contact point. - * @property contactPointA - * @type {Array} - */ - this.contactPointA = vec2.create(); - this.penetrationVec = vec2.create(); - - /** - * World-oriented vector from body A center of mass to the contact point. - * @property contactPointB - * @type {Array} - */ - this.contactPointB = vec2.create(); - - /** - * The normal vector, pointing out of body i - * @property normalA - * @type {Array} - */ - this.normalA = vec2.create(); - - /** - * The restitution to use (0=no bounciness, 1=max bounciness). - * @property restitution - * @type {Number} - */ - this.restitution = 0; - - /** - * This property is set to true if this is the first impact between the bodies (not persistant contact). - * @property firstImpact - * @type {Boolean} - * @readOnly - */ - this.firstImpact = false; - - /** - * The shape in body i that triggered this contact. - * @property shapeA - * @type {Shape} - */ - this.shapeA = null; - - /** - * The shape in body j that triggered this contact. - * @property shapeB - * @type {Shape} - */ - this.shapeB = null; -} -ContactEquation.prototype = new Equation(); -ContactEquation.prototype.constructor = ContactEquation; -ContactEquation.prototype.computeB = function(a,b,h){ - var bi = this.bodyA, - bj = this.bodyB, - ri = this.contactPointA, - rj = this.contactPointB, - xi = bi.position, - xj = bj.position; - - var penetrationVec = this.penetrationVec, - n = this.normalA, - G = this.G; - - // Caluclate cross products - var rixn = vec2.crossLength(ri,n), - rjxn = vec2.crossLength(rj,n); - - // G = [-n -rixn n rjxn] - G[0] = -n[0]; - G[1] = -n[1]; - G[2] = -rixn; - G[3] = n[0]; - G[4] = n[1]; - G[5] = rjxn; - - // Calculate q = xj+rj -(xi+ri) i.e. the penetration vector - vec2.add(penetrationVec,xj,rj); - vec2.sub(penetrationVec,penetrationVec,xi); - vec2.sub(penetrationVec,penetrationVec,ri); - - // Compute iteration - var GW, Gq; - if(this.firstImpact && this.restitution !== 0){ - Gq = 0; - GW = (1/b)*(1+this.restitution) * this.computeGW(); - } else { - Gq = vec2.dot(n,penetrationVec) + this.offset; - GW = this.computeGW(); - } - - var GiMf = this.computeGiMf(); - var B = - Gq * a - GW * b - h*GiMf; - - return B; -}; - -},{"../math/vec2":30,"./Equation":22}],22:[function(_dereq_,module,exports){ -module.exports = Equation; - -var vec2 = _dereq_('../math/vec2'), - Utils = _dereq_('../utils/Utils'), - Body = _dereq_('../objects/Body'); - -/** - * Base class for constraint equations. - * @class Equation - * @constructor - * @param {Body} bodyA First body participating in the equation - * @param {Body} bodyB Second body participating in the equation - * @param {number} minForce Minimum force to apply. Default: -Number.MAX_VALUE - * @param {number} maxForce Maximum force to apply. Default: Number.MAX_VALUE - */ -function Equation(bodyA, bodyB, minForce, maxForce){ - - /** - * Minimum force to apply when solving. - * @property minForce - * @type {Number} - */ - this.minForce = typeof(minForce)==="undefined" ? -Number.MAX_VALUE : minForce; - - /** - * Max force to apply when solving. - * @property maxForce - * @type {Number} - */ - this.maxForce = typeof(maxForce)==="undefined" ? Number.MAX_VALUE : maxForce; - - /** - * First body participating in the constraint - * @property bodyA - * @type {Body} - */ - this.bodyA = bodyA; - - /** - * Second body participating in the constraint - * @property bodyB - * @type {Body} - */ - this.bodyB = bodyB; - - /** - * The stiffness of this equation. Typically chosen to a large number (~1e7), but can be chosen somewhat freely to get a stable simulation. - * @property stiffness - * @type {Number} - */ - this.stiffness = Equation.DEFAULT_STIFFNESS; - - /** - * The number of time steps needed to stabilize the constraint equation. Typically between 3 and 5 time steps. - * @property relaxation - * @type {Number} - */ - this.relaxation = Equation.DEFAULT_RELAXATION; - - /** - * The Jacobian entry of this equation. 6 numbers, 3 per body (x,y,angle). - * @property G - * @type {Array} - */ - this.G = new Utils.ARRAY_TYPE(6); - for(var i=0; i<6; i++){ - this.G[i]=0; - } - - this.offset = 0; - - this.a = 0; - this.b = 0; - this.epsilon = 0; - this.timeStep = 1/60; - - /** - * Indicates if stiffness or relaxation was changed. - * @property {Boolean} needsUpdate - */ - this.needsUpdate = true; - - /** - * The resulting constraint multiplier from the last solve. This is mostly equivalent to the force produced by the constraint. - * @property multiplier - * @type {Number} - */ - this.multiplier = 0; - - /** - * Relative velocity. - * @property {Number} relativeVelocity - */ - this.relativeVelocity = 0; - - /** - * Whether this equation is enabled or not. If true, it will be added to the solver. - * @property {Boolean} enabled - */ - this.enabled = true; -} -Equation.prototype.constructor = Equation; - -/** - * The default stiffness when creating a new Equation. - * @static - * @property {Number} DEFAULT_STIFFNESS - * @default 1e6 - */ -Equation.DEFAULT_STIFFNESS = 1e6; - -/** - * The default relaxation when creating a new Equation. - * @static - * @property {Number} DEFAULT_RELAXATION - * @default 4 - */ -Equation.DEFAULT_RELAXATION = 4; - -/** - * Compute SPOOK parameters .a, .b and .epsilon according to the current parameters. See equations 9, 10 and 11 in the SPOOK notes. - * @method update - */ -Equation.prototype.update = function(){ - var k = this.stiffness, - d = this.relaxation, - h = this.timeStep; - - this.a = 4.0 / (h * (1 + 4 * d)); - this.b = (4.0 * d) / (1 + 4 * d); - this.epsilon = 4.0 / (h * h * k * (1 + 4 * d)); - - this.needsUpdate = false; -}; - -/** - * Multiply a jacobian entry with corresponding positions or velocities - * @method gmult - * @return {Number} - */ -Equation.prototype.gmult = function(G,vi,wi,vj,wj){ - return G[0] * vi[0] + - G[1] * vi[1] + - G[2] * wi + - G[3] * vj[0] + - G[4] * vj[1] + - G[5] * wj; -}; - -/** - * Computes the RHS of the SPOOK equation - * @method computeB - * @return {Number} - */ -Equation.prototype.computeB = function(a,b,h){ - var GW = this.computeGW(); - var Gq = this.computeGq(); - var GiMf = this.computeGiMf(); - return - Gq * a - GW * b - GiMf*h; -}; - -/** - * Computes G\*q, where q are the generalized body coordinates - * @method computeGq - * @return {Number} - */ -var qi = vec2.create(), - qj = vec2.create(); -Equation.prototype.computeGq = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - xi = bi.position, - xj = bj.position, - ai = bi.angle, - aj = bj.angle; - - return this.gmult(G, qi, ai, qj, aj) + this.offset; -}; - -/** - * Computes G\*W, where W are the body velocities - * @method computeGW - * @return {Number} - */ -Equation.prototype.computeGW = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - vi = bi.velocity, - vj = bj.velocity, - wi = bi.angularVelocity, - wj = bj.angularVelocity; - return this.gmult(G,vi,wi,vj,wj) + this.relativeVelocity; -}; - -/** - * Computes G\*Wlambda, where W are the body velocities - * @method computeGWlambda - * @return {Number} - */ -Equation.prototype.computeGWlambda = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - vi = bi.vlambda, - vj = bj.vlambda, - wi = bi.wlambda, - wj = bj.wlambda; - return this.gmult(G,vi,wi,vj,wj); -}; - -/** - * Computes G\*inv(M)\*f, where M is the mass matrix with diagonal blocks for each body, and f are the forces on the bodies. - * @method computeGiMf - * @return {Number} - */ -var iMfi = vec2.create(), - iMfj = vec2.create(); -Equation.prototype.computeGiMf = function(){ - var bi = this.bodyA, - bj = this.bodyB, - fi = bi.force, - ti = bi.angularForce, - fj = bj.force, - tj = bj.angularForce, - invMassi = bi.invMassSolve, - invMassj = bj.invMassSolve, - invIi = bi.invInertiaSolve, - invIj = bj.invInertiaSolve, - G = this.G; - - vec2.scale(iMfi, fi, invMassi); - vec2.multiply(iMfi, bi.massMultiplier, iMfi); - vec2.scale(iMfj, fj,invMassj); - vec2.multiply(iMfj, bj.massMultiplier, iMfj); - - return this.gmult(G,iMfi,ti*invIi,iMfj,tj*invIj); -}; - -/** - * Computes G\*inv(M)\*G' - * @method computeGiMGt - * @return {Number} - */ -Equation.prototype.computeGiMGt = function(){ - var bi = this.bodyA, - bj = this.bodyB, - invMassi = bi.invMassSolve, - invMassj = bj.invMassSolve, - invIi = bi.invInertiaSolve, - invIj = bj.invInertiaSolve, - G = this.G; - - return G[0] * G[0] * invMassi * bi.massMultiplier[0] + - G[1] * G[1] * invMassi * bi.massMultiplier[1] + - G[2] * G[2] * invIi + - G[3] * G[3] * invMassj * bj.massMultiplier[0] + - G[4] * G[4] * invMassj * bj.massMultiplier[1] + - G[5] * G[5] * invIj; -}; - -var addToWlambda_temp = vec2.create(), - addToWlambda_Gi = vec2.create(), - addToWlambda_Gj = vec2.create(), - addToWlambda_ri = vec2.create(), - addToWlambda_rj = vec2.create(), - addToWlambda_Mdiag = vec2.create(); - -/** - * Add constraint velocity to the bodies. - * @method addToWlambda - * @param {Number} deltalambda - */ -Equation.prototype.addToWlambda = function(deltalambda){ - var bi = this.bodyA, - bj = this.bodyB, - temp = addToWlambda_temp, - Gi = addToWlambda_Gi, - Gj = addToWlambda_Gj, - ri = addToWlambda_ri, - rj = addToWlambda_rj, - invMassi = bi.invMassSolve, - invMassj = bj.invMassSolve, - invIi = bi.invInertiaSolve, - invIj = bj.invInertiaSolve, - Mdiag = addToWlambda_Mdiag, - G = this.G; - - Gi[0] = G[0]; - Gi[1] = G[1]; - Gj[0] = G[3]; - Gj[1] = G[4]; - - // Add to linear velocity - // v_lambda += inv(M) * delta_lamba * G - vec2.scale(temp, Gi, invMassi*deltalambda); - vec2.multiply(temp, temp, bi.massMultiplier); - vec2.add( bi.vlambda, bi.vlambda, temp); - // This impulse is in the offset frame - // Also add contribution to angular - //bi.wlambda -= vec2.crossLength(temp,ri); - bi.wlambda += invIi * G[2] * deltalambda; - - - vec2.scale(temp, Gj, invMassj*deltalambda); - vec2.multiply(temp, temp, bj.massMultiplier); - vec2.add( bj.vlambda, bj.vlambda, temp); - //bj.wlambda -= vec2.crossLength(temp,rj); - bj.wlambda += invIj * G[5] * deltalambda; -}; - -/** - * Compute the denominator part of the SPOOK equation: C = G\*inv(M)\*G' + eps - * @method computeInvC - * @param {Number} eps - * @return {Number} - */ -Equation.prototype.computeInvC = function(eps){ - return 1.0 / (this.computeGiMGt() + eps); -}; - -},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Equation = _dereq_('./Equation') -, Utils = _dereq_('../utils/Utils'); - -module.exports = FrictionEquation; - -/** - * Constrains the slipping in a contact along a tangent - * - * @class FrictionEquation - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Number} slipForce - * @extends Equation - */ -function FrictionEquation(bodyA, bodyB, slipForce){ - Equation.call(this, bodyA, bodyB, -slipForce, slipForce); - - /** - * Relative vector from center of body A to the contact point, world oriented. - * @property contactPointA - * @type {Array} - */ - this.contactPointA = vec2.create(); - - /** - * Relative vector from center of body B to the contact point, world oriented. - * @property contactPointB - * @type {Array} - */ - this.contactPointB = vec2.create(); - - /** - * Tangent vector that the friction force will act along. World oriented. - * @property t - * @type {Array} - */ - this.t = vec2.create(); - - /** - * ContactEquations connected to this friction equation. The contact equations can be used to rescale the max force for the friction. If more than one contact equation is given, then the max force can be set to the average. - * @property contactEquations - * @type {ContactEquation} - */ - this.contactEquations = []; - - /** - * The shape in body i that triggered this friction. - * @property shapeA - * @type {Shape} - * @todo Needed? The shape can be looked up via contactEquation.shapeA... - */ - this.shapeA = null; - - /** - * The shape in body j that triggered this friction. - * @property shapeB - * @type {Shape} - * @todo Needed? The shape can be looked up via contactEquation.shapeB... - */ - this.shapeB = null; - - /** - * The friction coefficient to use. - * @property frictionCoefficient - * @type {Number} - */ - this.frictionCoefficient = 0.3; -} -FrictionEquation.prototype = new Equation(); -FrictionEquation.prototype.constructor = FrictionEquation; - -/** - * Set the slipping condition for the constraint. The friction force cannot be - * larger than this value. - * @method setSlipForce - * @param {Number} slipForce - */ -FrictionEquation.prototype.setSlipForce = function(slipForce){ - this.maxForce = slipForce; - this.minForce = -slipForce; -}; - -/** - * Get the max force for the constraint. - * @method getSlipForce - * @return {Number} - */ -FrictionEquation.prototype.getSlipForce = function(){ - return this.maxForce; -}; - -FrictionEquation.prototype.computeB = function(a,b,h){ - var bi = this.bodyA, - bj = this.bodyB, - ri = this.contactPointA, - rj = this.contactPointB, - t = this.t, - G = this.G; - - // G = [-t -rixt t rjxt] - // And remember, this is a pure velocity constraint, g is always zero! - G[0] = -t[0]; - G[1] = -t[1]; - G[2] = -vec2.crossLength(ri,t); - G[3] = t[0]; - G[4] = t[1]; - G[5] = vec2.crossLength(rj,t); - - var GW = this.computeGW(), - GiMf = this.computeGiMf(); - - var B = /* - g * a */ - GW * b - h*GiMf; - - return B; -}; - -},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = RotationalLockEquation; - -/** - * Locks the relative angle between two bodies. The constraint tries to keep the dot product between two vectors, local in each body, to zero. The local angle in body i is a parameter. - * - * @class RotationalLockEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.angle] Angle to add to the local vector in bodyA. - */ -function RotationalLockEquation(bodyA, bodyB, options){ - options = options || {}; - Equation.call(this, bodyA, bodyB, -Number.MAX_VALUE, Number.MAX_VALUE); - - /** - * @property {number} angle - */ - this.angle = options.angle || 0; - - var G = this.G; - G[2] = 1; - G[5] = -1; -} -RotationalLockEquation.prototype = new Equation(); -RotationalLockEquation.prototype.constructor = RotationalLockEquation; - -var worldVectorA = vec2.create(), - worldVectorB = vec2.create(), - xAxis = vec2.fromValues(1,0), - yAxis = vec2.fromValues(0,1); -RotationalLockEquation.prototype.computeGq = function(){ - vec2.rotate(worldVectorA,xAxis,this.bodyA.angle+this.angle); - vec2.rotate(worldVectorB,yAxis,this.bodyB.angle); - return vec2.dot(worldVectorA,worldVectorB); -}; - -},{"../math/vec2":30,"./Equation":22}],25:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = RotationalVelocityEquation; - -/** - * Syncs rotational velocity of two bodies, or sets a relative velocity (motor). - * - * @class RotationalVelocityEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - */ -function RotationalVelocityEquation(bodyA, bodyB){ - Equation.call(this, bodyA, bodyB, -Number.MAX_VALUE, Number.MAX_VALUE); - this.relativeVelocity = 1; - this.ratio = 1; -} -RotationalVelocityEquation.prototype = new Equation(); -RotationalVelocityEquation.prototype.constructor = RotationalVelocityEquation; -RotationalVelocityEquation.prototype.computeB = function(a,b,h){ - var G = this.G; - G[2] = -1; - G[5] = this.ratio; - - var GiMf = this.computeGiMf(); - var GW = this.computeGW(); - var B = - GW * b - h*GiMf; - - return B; -}; - -},{"../math/vec2":30,"./Equation":22}],26:[function(_dereq_,module,exports){ -/** - * Base class for objects that dispatches events. - * @class EventEmitter - * @constructor - */ -var EventEmitter = function () {}; - -module.exports = EventEmitter; - -EventEmitter.prototype = { - constructor: EventEmitter, - - /** - * Add an event listener - * @method on - * @param {String} type - * @param {Function} listener - * @return {EventEmitter} The self object, for chainability. - */ - on: function ( type, listener, context ) { - listener.context = context || this; - if ( this._listeners === undefined ){ - this._listeners = {}; - } - var listeners = this._listeners; - if ( listeners[ type ] === undefined ) { - listeners[ type ] = []; - } - if ( listeners[ type ].indexOf( listener ) === - 1 ) { - listeners[ type ].push( listener ); - } - return this; - }, - - /** - * Check if an event listener is added - * @method has - * @param {String} type - * @param {Function} listener - * @return {Boolean} - */ - has: function ( type, listener ) { - if ( this._listeners === undefined ){ - return false; - } - var listeners = this._listeners; - if(listener){ - if ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) { - return true; - } - } else { - if ( listeners[ type ] !== undefined ) { - return true; - } - } - - return false; - }, - - /** - * Remove an event listener - * @method off - * @param {String} type - * @param {Function} listener - * @return {EventEmitter} The self object, for chainability. - */ - off: function ( type, listener ) { - if ( this._listeners === undefined ){ - return this; - } - var listeners = this._listeners; - var index = listeners[ type ].indexOf( listener ); - if ( index !== - 1 ) { - listeners[ type ].splice( index, 1 ); - } - return this; - }, - - /** - * Emit an event. - * @method emit - * @param {Object} event - * @param {String} event.type - * @return {EventEmitter} The self object, for chainability. - */ - emit: function ( event ) { - if ( this._listeners === undefined ){ - return this; - } - var listeners = this._listeners; - var listenerArray = listeners[ event.type ]; - if ( listenerArray !== undefined ) { - event.target = this; - for ( var i = 0, l = listenerArray.length; i < l; i ++ ) { - var listener = listenerArray[ i ]; - listener.call( listener.context, event ); - } - } - return this; - } -}; - -},{}],27:[function(_dereq_,module,exports){ -var Material = _dereq_('./Material'); -var Equation = _dereq_('../equations/Equation'); - -module.exports = ContactMaterial; - -/** - * Defines what happens when two materials meet, such as what friction coefficient to use. You can also set other things such as restitution, surface velocity and constraint parameters. - * @class ContactMaterial - * @constructor - * @param {Material} materialA - * @param {Material} materialB - * @param {Object} [options] - * @param {Number} [options.friction=0.3] Friction coefficient. - * @param {Number} [options.restitution=0] Restitution coefficient aka "bounciness". - * @param {Number} [options.stiffness] ContactEquation stiffness. - * @param {Number} [options.relaxation] ContactEquation relaxation. - * @param {Number} [options.frictionStiffness] FrictionEquation stiffness. - * @param {Number} [options.frictionRelaxation] FrictionEquation relaxation. - * @param {Number} [options.surfaceVelocity=0] Surface velocity. - * @author schteppe - */ -function ContactMaterial(materialA, materialB, options){ - options = options || {}; - - if(!(materialA instanceof Material) || !(materialB instanceof Material)){ - throw new Error("First two arguments must be Material instances."); - } - - /** - * The contact material identifier - * @property id - * @type {Number} - */ - this.id = ContactMaterial.idCounter++; - - /** - * First material participating in the contact material - * @property materialA - * @type {Material} - */ - this.materialA = materialA; - - /** - * Second material participating in the contact material - * @property materialB - * @type {Material} - */ - this.materialB = materialB; - - /** - * Friction to use in the contact of these two materials - * @property friction - * @type {Number} - */ - this.friction = typeof(options.friction) !== "undefined" ? Number(options.friction) : 0.3; - - /** - * Restitution to use in the contact of these two materials - * @property restitution - * @type {Number} - */ - this.restitution = typeof(options.restitution) !== "undefined" ? Number(options.restitution) : 0.0; - - /** - * Stiffness of the resulting ContactEquation that this ContactMaterial generate - * @property stiffness - * @type {Number} - */ - this.stiffness = typeof(options.stiffness) !== "undefined" ? Number(options.stiffness) : Equation.DEFAULT_STIFFNESS; - - /** - * Relaxation of the resulting ContactEquation that this ContactMaterial generate - * @property relaxation - * @type {Number} - */ - this.relaxation = typeof(options.relaxation) !== "undefined" ? Number(options.relaxation) : Equation.DEFAULT_RELAXATION; - - /** - * Stiffness of the resulting FrictionEquation that this ContactMaterial generate - * @property frictionStiffness - * @type {Number} - */ - this.frictionStiffness = typeof(options.frictionStiffness) !== "undefined" ? Number(options.frictionStiffness) : Equation.DEFAULT_STIFFNESS; - - /** - * Relaxation of the resulting FrictionEquation that this ContactMaterial generate - * @property frictionRelaxation - * @type {Number} - */ - this.frictionRelaxation = typeof(options.frictionRelaxation) !== "undefined" ? Number(options.frictionRelaxation) : Equation.DEFAULT_RELAXATION; - - /** - * Will add surface velocity to this material. If bodyA rests on top if bodyB, and the surface velocity is positive, bodyA will slide to the right. - * @property {Number} surfaceVelocity - */ - this.surfaceVelocity = typeof(options.surfaceVelocity) !== "undefined" ? Number(options.surfaceVelocity) : 0; - - /** - * Offset to be set on ContactEquations. A positive value will make the bodies penetrate more into each other. Can be useful in scenes where contacts need to be more persistent, for example when stacking. Aka "cure for nervous contacts". - * @property contactSkinSize - * @type {Number} - */ - this.contactSkinSize = 0.005; -} - -ContactMaterial.idCounter = 0; - -},{"../equations/Equation":22,"./Material":28}],28:[function(_dereq_,module,exports){ -module.exports = Material; - -/** - * Defines a physics material. - * @class Material - * @constructor - * @param {number} id Material identifier - * @author schteppe - */ -function Material(id){ - /** - * The material identifier - * @property id - * @type {Number} - */ - this.id = id || Material.idCounter++; -} - -Material.idCounter = 0; - -},{}],29:[function(_dereq_,module,exports){ - - /* - PolyK library - url: http://polyk.ivank.net - Released under MIT licence. - - Copyright (c) 2012 Ivan Kuckir - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - */ - - var PolyK = {}; - - /* - Is Polygon self-intersecting? - - O(n^2) - */ - /* - PolyK.IsSimple = function(p) - { - var n = p.length>>1; - if(n<4) return true; - var a1 = new PolyK._P(), a2 = new PolyK._P(); - var b1 = new PolyK._P(), b2 = new PolyK._P(); - var c = new PolyK._P(); - - for(var i=0; i>1; - if(n<3) return []; - var tgs = []; - var avl = []; - for(var i=0; i 3) - { - var i0 = avl[(i+0)%al]; - var i1 = avl[(i+1)%al]; - var i2 = avl[(i+2)%al]; - - var ax = p[2*i0], ay = p[2*i0+1]; - var bx = p[2*i1], by = p[2*i1+1]; - var cx = p[2*i2], cy = p[2*i2+1]; - - var earFound = false; - if(PolyK._convex(ax, ay, bx, by, cx, cy)) - { - earFound = true; - for(var j=0; j 3*al) break; // no convex angles :( - } - tgs.push(avl[0], avl[1], avl[2]); - return tgs; - } - /* - PolyK.ContainsPoint = function(p, px, py) - { - var n = p.length>>1; - var ax, ay, bx = p[2*n-2]-px, by = p[2*n-1]-py; - var depth = 0; - for(var i=0; i=0 && by>=0) continue; // both "up" or both "donw" - if(ax< 0 && bx< 0) continue; - - var lx = ax + (bx-ax)*(-ay)/(by-ay); - if(lx>0) depth++; - } - return (depth & 1) == 1; - } - - PolyK.Slice = function(p, ax, ay, bx, by) - { - if(PolyK.ContainsPoint(p, ax, ay) || PolyK.ContainsPoint(p, bx, by)) return [p.slice(0)]; - - var a = new PolyK._P(ax, ay); - var b = new PolyK._P(bx, by); - var iscs = []; // intersections - var ps = []; // points - for(var i=0; i 0) - { - var n = ps.length; - var i0 = iscs[0]; - var i1 = iscs[1]; - var ind0 = ps.indexOf(i0); - var ind1 = ps.indexOf(i1); - var solved = false; - - if(PolyK._firstWithFlag(ps, ind0) == ind1) solved = true; - else - { - i0 = iscs[1]; - i1 = iscs[0]; - ind0 = ps.indexOf(i0); - ind1 = ps.indexOf(i1); - if(PolyK._firstWithFlag(ps, ind0) == ind1) solved = true; - } - if(solved) - { - dir--; - var pgn = PolyK._getPoints(ps, ind0, ind1); - pgs.push(pgn); - ps = PolyK._getPoints(ps, ind1, ind0); - i0.flag = i1.flag = false; - iscs.splice(0,2); - if(iscs.length == 0) pgs.push(ps); - } - else { dir++; iscs.reverse(); } - if(dir>1) break; - } - var result = []; - for(var i=0; i>1, isc); - } - b1.x = b2.x; b1.y = b2.y; - b2.x = p[0]; b2.y = p[1]; - PolyK._pointLineDist(a1, b1, b2, l>>1, isc); - - var idst = 1/isc.dist; - isc.norm.x = (x-isc.point.x)*idst; - isc.norm.y = (y-isc.point.y)*idst; - return isc; - } - - PolyK._pointLineDist = function(p, a, b, edge, isc) - { - var x = p.x, y = p.y, x1 = a.x, y1 = a.y, x2 = b.x, y2 = b.y; - - var A = x - x1; - var B = y - y1; - var C = x2 - x1; - var D = y2 - y1; - - var dot = A * C + B * D; - var len_sq = C * C + D * D; - var param = dot / len_sq; - - var xx, yy; - - if (param < 0 || (x1 == x2 && y1 == y2)) { - xx = x1; - yy = y1; - } - else if (param > 1) { - xx = x2; - yy = y2; - } - else { - xx = x1 + param * C; - yy = y1 + param * D; - } - - var dx = x - xx; - var dy = y - yy; - var dst = Math.sqrt(dx * dx + dy * dy); - if(dst= 0) && (v >= 0) && (u + v < 1); - } - /* - PolyK._RayLineIntersection = function(a1, a2, b1, b2, c) - { - var dax = (a1.x-a2.x), dbx = (b1.x-b2.x); - var day = (a1.y-a2.y), dby = (b1.y-b2.y); - - var Den = dax*dby - day*dbx; - if (Den == 0) return null; // parallel - - var A = (a1.x * a2.y - a1.y * a2.x); - var B = (b1.x * b2.y - b1.y * b2.x); - - var I = c; - var iDen = 1/Den; - I.x = ( A*dbx - dax*B ) * iDen; - I.y = ( A*dby - day*B ) * iDen; - - if(!PolyK._InRect(I, b1, b2)) return null; - if((day>0 && I.y>a1.y) || (day<0 && I.y0 && I.x>a1.x) || (dax<0 && I.x=Math.min(b.y, c.y) && a.y<=Math.max(b.y, c.y)); - if (b.y == c.y) return (a.x>=Math.min(b.x, c.x) && a.x<=Math.max(b.x, c.x)); - - if(a.x >= Math.min(b.x, c.x) && a.x <= Math.max(b.x, c.x) - && a.y >= Math.min(b.y, c.y) && a.y <= Math.max(b.y, c.y)) - return true; - return false; - } - */ - PolyK._convex = function(ax, ay, bx, by, cx, cy) - { - return (ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0; - } - /* - PolyK._P = function(x,y) - { - this.x = x; - this.y = y; - this.flag = false; - } - PolyK._P.prototype.toString = function() - { - return "Point ["+this.x+", "+this.y+"]"; - } - PolyK._P.dist = function(a,b) - { - var dx = b.x-a.x; - var dy = b.y-a.y; - return Math.sqrt(dx*dx + dy*dy); - } - - PolyK._tp = []; - for(var i=0; i<10; i++) PolyK._tp.push(new PolyK._P(0,0)); - */ - -module.exports = PolyK; - -},{}],30:[function(_dereq_,module,exports){ -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * The vec2 object from glMatrix, with some extensions and some removed methods. See http://glmatrix.net. - * @class vec2 - */ - -var vec2 = module.exports = {}; - -var Utils = _dereq_('../utils/Utils'); - -/** - * Make a cross product and only return the z component - * @method crossLength - * @static - * @param {Array} a - * @param {Array} b - * @return {Number} - */ -vec2.crossLength = function(a,b){ - return a[0] * b[1] - a[1] * b[0]; -}; - -/** - * Cross product between a vector and the Z component of a vector - * @method crossVZ - * @static - * @param {Array} out - * @param {Array} vec - * @param {Number} zcomp - * @return {Number} - */ -vec2.crossVZ = function(out, vec, zcomp){ - vec2.rotate(out,vec,-Math.PI/2);// Rotate according to the right hand rule - vec2.scale(out,out,zcomp); // Scale with z - return out; -}; - -/** - * Cross product between a vector and the Z component of a vector - * @method crossZV - * @static - * @param {Array} out - * @param {Number} zcomp - * @param {Array} vec - * @return {Number} - */ -vec2.crossZV = function(out, zcomp, vec){ - vec2.rotate(out,vec,Math.PI/2); // Rotate according to the right hand rule - vec2.scale(out,out,zcomp); // Scale with z - return out; -}; - -/** - * Rotate a vector by an angle - * @method rotate - * @static - * @param {Array} out - * @param {Array} a - * @param {Number} angle - */ -vec2.rotate = function(out,a,angle){ - if(angle !== 0){ - var c = Math.cos(angle), - s = Math.sin(angle), - x = a[0], - y = a[1]; - out[0] = c*x -s*y; - out[1] = s*x +c*y; - } else { - out[0] = a[0]; - out[1] = a[1]; - } -}; - -/** - * Rotate a vector 90 degrees clockwise - * @method rotate90cw - * @static - * @param {Array} out - * @param {Array} a - * @param {Number} angle - */ -vec2.rotate90cw = function(out, a) { - var x = a[0]; - var y = a[1]; - out[0] = y; - out[1] = -x; -}; - -/** - * Transform a point position to local frame. - * @method toLocalFrame - * @param {Array} out - * @param {Array} worldPoint - * @param {Array} framePosition - * @param {Number} frameAngle - */ -vec2.toLocalFrame = function(out, worldPoint, framePosition, frameAngle){ - vec2.copy(out, worldPoint); - vec2.sub(out, out, framePosition); - vec2.rotate(out, out, -frameAngle); -}; - -/** - * Transform a point position to global frame. - * @method toGlobalFrame - * @param {Array} out - * @param {Array} localPoint - * @param {Array} framePosition - * @param {Number} frameAngle - */ -vec2.toGlobalFrame = function(out, localPoint, framePosition, frameAngle){ - vec2.copy(out, localPoint); - vec2.rotate(out, out, frameAngle); - vec2.add(out, out, framePosition); -}; - -/** - * Transform a vector to local frame. - * @method vectorToLocalFrame - * @param {Array} out - * @param {Array} worldVector - * @param {Number} frameAngle - */ -vec2.vectorToLocalFrame = function(out, worldVector, frameAngle){ - vec2.rotate(out, worldVector, -frameAngle); -}; - -/** - * Transform a point position to global frame. - * @method toGlobalFrame - * @param {Array} out - * @param {Array} localVector - * @param {Number} frameAngle - */ -vec2.vectorToGlobalFrame = function(out, localVector, frameAngle){ - vec2.rotate(out, localVector, frameAngle); -}; - -/** - * Compute centroid of a triangle spanned by vectors a,b,c. See http://easycalculation.com/analytical/learn-centroid.php - * @method centroid - * @static - * @param {Array} out - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @return {Array} The out object - */ -vec2.centroid = function(out, a, b, c){ - vec2.add(out, a, b); - vec2.add(out, out, c); - vec2.scale(out, out, 1/3); - return out; -}; - -/** - * Creates a new, empty vec2 - * @static - * @method create - * @return {Array} a new 2D vector - */ -vec2.create = function() { - var out = new Utils.ARRAY_TYPE(2); - out[0] = 0; - out[1] = 0; - return out; -}; - -/** - * Creates a new vec2 initialized with values from an existing vector - * @static - * @method clone - * @param {Array} a vector to clone - * @return {Array} a new 2D vector - */ -vec2.clone = function(a) { - var out = new Utils.ARRAY_TYPE(2); - out[0] = a[0]; - out[1] = a[1]; - return out; -}; - -/** - * Creates a new vec2 initialized with the given values - * @static - * @method fromValues - * @param {Number} x X component - * @param {Number} y Y component - * @return {Array} a new 2D vector - */ -vec2.fromValues = function(x, y) { - var out = new Utils.ARRAY_TYPE(2); - out[0] = x; - out[1] = y; - return out; -}; - -/** - * Copy the values from one vec2 to another - * @static - * @method copy - * @param {Array} out the receiving vector - * @param {Array} a the source vector - * @return {Array} out - */ -vec2.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - return out; -}; - -/** - * Set the components of a vec2 to the given values - * @static - * @method set - * @param {Array} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @return {Array} out - */ -vec2.set = function(out, x, y) { - out[0] = x; - out[1] = y; - return out; -}; - -/** - * Adds two vec2's - * @static - * @method add - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.add = function(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - return out; -}; - -/** - * Subtracts two vec2's - * @static - * @method subtract - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.subtract = function(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - return out; -}; - -/** - * Alias for vec2.subtract - * @static - * @method sub - */ -vec2.sub = vec2.subtract; - -/** - * Multiplies two vec2's - * @static - * @method multiply - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.multiply = function(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - return out; -}; - -/** - * Alias for vec2.multiply - * @static - * @method mul - */ -vec2.mul = vec2.multiply; - -/** - * Divides two vec2's - * @static - * @method divide - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.divide = function(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - return out; -}; - -/** - * Alias for vec2.divide - * @static - * @method div - */ -vec2.div = vec2.divide; - -/** - * Scales a vec2 by a scalar number - * @static - * @method scale - * @param {Array} out the receiving vector - * @param {Array} a the vector to scale - * @param {Number} b amount to scale the vector by - * @return {Array} out - */ -vec2.scale = function(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - return out; -}; - -/** - * Calculates the euclidian distance between two vec2's - * @static - * @method distance - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Number} distance between a and b - */ -vec2.distance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Alias for vec2.distance - * @static - * @method dist - */ -vec2.dist = vec2.distance; - -/** - * Calculates the squared euclidian distance between two vec2's - * @static - * @method squaredDistance - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Number} squared distance between a and b - */ -vec2.squaredDistance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return x*x + y*y; -}; - -/** - * Alias for vec2.squaredDistance - * @static - * @method sqrDist - */ -vec2.sqrDist = vec2.squaredDistance; - -/** - * Calculates the length of a vec2 - * @static - * @method length - * @param {Array} a vector to calculate length of - * @return {Number} length of a - */ -vec2.length = function (a) { - var x = a[0], - y = a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Alias for vec2.length - * @method len - * @static - */ -vec2.len = vec2.length; - -/** - * Calculates the squared length of a vec2 - * @static - * @method squaredLength - * @param {Array} a vector to calculate squared length of - * @return {Number} squared length of a - */ -vec2.squaredLength = function (a) { - var x = a[0], - y = a[1]; - return x*x + y*y; -}; - -/** - * Alias for vec2.squaredLength - * @static - * @method sqrLen - */ -vec2.sqrLen = vec2.squaredLength; - -/** - * Negates the components of a vec2 - * @static - * @method negate - * @param {Array} out the receiving vector - * @param {Array} a vector to negate - * @return {Array} out - */ -vec2.negate = function(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - return out; -}; - -/** - * Normalize a vec2 - * @static - * @method normalize - * @param {Array} out the receiving vector - * @param {Array} a vector to normalize - * @return {Array} out - */ -vec2.normalize = function(out, a) { - var x = a[0], - y = a[1]; - var len = x*x + y*y; - if (len > 0) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec2's - * @static - * @method dot - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Number} dot product of a and b - */ -vec2.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1]; -}; - -/** - * Returns a string representation of a vector - * @static - * @method str - * @param {Array} vec vector to represent as a string - * @return {String} string representation of the vector - */ -vec2.str = function (a) { - return 'vec2(' + a[0] + ', ' + a[1] + ')'; -}; - -/** - * Linearly interpolate/mix two vectors. - * @static - * @method lerp - * @param {Array} out - * @param {Array} a First vector - * @param {Array} b Second vector - * @param {number} t Lerp factor - */ -vec2.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - return out; -}; - -/** - * Reflect a vector along a normal. - * @static - * @method reflect - * @param {Array} out - * @param {Array} vector - * @param {Array} normal - */ -vec2.reflect = function(out, vector, normal){ - var dot = vector[0] * normal[0] + vector[1] * normal[1]; - out[0] = vector[0] - 2 * normal[0] * dot; - out[1] = vector[1] - 2 * normal[1] * dot; -}; - -/** - * Get the intersection point between two line segments. - * @static - * @method getLineSegmentsIntersection - * @param {Array} out - * @param {Array} p0 - * @param {Array} p1 - * @param {Array} p2 - * @param {Array} p3 - * @return {boolean} True if there was an intersection, otherwise false. - */ -vec2.getLineSegmentsIntersection = function(out, p0, p1, p2, p3) { - var t = vec2.getLineSegmentsIntersectionFraction(p0, p1, p2, p3); - if(t < 0){ - return false; - } else { - out[0] = p0[0] + (t * (p1[0] - p0[0])); - out[1] = p0[1] + (t * (p1[1] - p0[1])); - return true; - } -}; - -/** - * Get the intersection fraction between two line segments. If successful, the intersection is at p0 + t * (p1 - p0) - * @static - * @method getLineSegmentsIntersectionFraction - * @param {Array} p0 - * @param {Array} p1 - * @param {Array} p2 - * @param {Array} p3 - * @return {number} A number between 0 and 1 if there was an intersection, otherwise -1. - */ -vec2.getLineSegmentsIntersectionFraction = function(p0, p1, p2, p3) { - var s1_x = p1[0] - p0[0]; - var s1_y = p1[1] - p0[1]; - var s2_x = p3[0] - p2[0]; - var s2_y = p3[1] - p2[1]; - - var s, t; - s = (-s1_y * (p0[0] - p2[0]) + s1_x * (p0[1] - p2[1])) / (-s2_x * s1_y + s1_x * s2_y); - t = ( s2_x * (p0[1] - p2[1]) - s2_y * (p0[0] - p2[0])) / (-s2_x * s1_y + s1_x * s2_y); - if (s >= 0 && s <= 1 && t >= 0 && t <= 1) { // Collision detected - return t; - } - return -1; // No collision -}; - -},{"../utils/Utils":57}],31:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, decomp = _dereq_('poly-decomp') -, Convex = _dereq_('../shapes/Convex') -, RaycastResult = _dereq_('../collision/RaycastResult') -, Ray = _dereq_('../collision/Ray') -, AABB = _dereq_('../collision/AABB') -, EventEmitter = _dereq_('../events/EventEmitter'); - -module.exports = Body; - -/** - * A rigid body. Has got a center of mass, position, velocity and a number of - * shapes that are used for collisions. - * - * @class Body - * @constructor - * @extends EventEmitter - * @param {Array} [options.force] - * @param {Array} [options.position] - * @param {Array} [options.velocity] - * @param {Boolean} [options.allowSleep] - * @param {Boolean} [options.collisionResponse] - * @param {Number} [options.angle=0] - * @param {Number} [options.angularForce=0] - * @param {Number} [options.angularVelocity=0] - * @param {Number} [options.ccdIterations=10] - * @param {Number} [options.ccdSpeedThreshold=-1] - * @param {Number} [options.fixedRotation=false] - * @param {Number} [options.gravityScale] - * @param {Number} [options.id] - * @param {Number} [options.mass=0] A number >= 0. If zero, the .type will be set to Body.STATIC. - * @param {Number} [options.sleepSpeedLimit] - * @param {Number} [options.sleepTimeLimit] - * @param {Object} [options] - * - * @example - * - * // Create a typical dynamic body - * var body = new Body({ - * mass: 1, - * position: [0, 0], - * angle: 0, - * velocity: [0, 0], - * angularVelocity: 0 - * }); - * - * // Add a circular shape to the body - * body.addShape(new Circle({ radius: 1 })); - * - * // Add the body to the world - * world.addBody(body); - */ -function Body(options){ - options = options || {}; - - EventEmitter.call(this); - - /** - * The body identifyer - * @property id - * @type {Number} - */ - this.id = options.id || ++Body._idCounter; - - /** - * The world that this body is added to. This property is set to NULL if the body is not added to any world. - * @property world - * @type {World} - */ - this.world = null; - - /** - * The shapes of the body. - * - * @property shapes - * @type {Array} - */ - this.shapes = []; - - /** - * The mass of the body. - * @property mass - * @type {number} - */ - this.mass = options.mass || 0; - - /** - * The inverse mass of the body. - * @property invMass - * @type {number} - */ - this.invMass = 0; - - /** - * The inertia of the body around the Z axis. - * @property inertia - * @type {number} - */ - this.inertia = 0; - - /** - * The inverse inertia of the body. - * @property invInertia - * @type {number} - */ - this.invInertia = 0; - - this.invMassSolve = 0; - this.invInertiaSolve = 0; - - /** - * Set to true if you want to fix the rotation of the body. - * @property fixedRotation - * @type {Boolean} - */ - this.fixedRotation = !!options.fixedRotation; - - /** - * Set to true if you want to fix the body movement along the X axis. The body will still be able to move along Y. - * @property {Boolean} fixedX - */ - this.fixedX = !!options.fixedX; - - /** - * Set to true if you want to fix the body movement along the Y axis. The body will still be able to move along X. - * @property {Boolean} fixedY - */ - this.fixedY = !!options.fixedY; - - /** - * @private - * @property {array} massMultiplier - */ - this.massMultiplier = vec2.create(); - - /** - * The position of the body - * @property position - * @type {Array} - */ - this.position = vec2.fromValues(0,0); - if(options.position){ - vec2.copy(this.position, options.position); - } - - /** - * The interpolated position of the body. Use this for rendering. - * @property interpolatedPosition - * @type {Array} - */ - this.interpolatedPosition = vec2.fromValues(0,0); - - /** - * The interpolated angle of the body. Use this for rendering. - * @property interpolatedAngle - * @type {Number} - */ - this.interpolatedAngle = 0; - - /** - * The previous position of the body. - * @property previousPosition - * @type {Array} - */ - this.previousPosition = vec2.fromValues(0,0); - - /** - * The previous angle of the body. - * @property previousAngle - * @type {Number} - */ - this.previousAngle = 0; - - /** - * The current velocity of the body. - * @property velocity - * @type {Array} - */ - this.velocity = vec2.fromValues(0,0); - if(options.velocity){ - vec2.copy(this.velocity, options.velocity); - } - - /** - * Constraint velocity that was added to the body during the last step. - * @property vlambda - * @type {Array} - */ - this.vlambda = vec2.fromValues(0,0); - - /** - * Angular constraint velocity that was added to the body during last step. - * @property wlambda - * @type {Array} - */ - this.wlambda = 0; - - /** - * The angle of the body, in radians. - * @property angle - * @type {number} - * @example - * // The angle property is not normalized to the interval 0 to 2*pi, it can be any value. - * // If you need a value between 0 and 2*pi, use the following function to normalize it. - * function normalizeAngle(angle){ - * angle = angle % (2*Math.PI); - * if(angle < 0){ - * angle += (2*Math.PI); - * } - * return angle; - * } - */ - this.angle = options.angle || 0; - - /** - * The angular velocity of the body, in radians per second. - * @property angularVelocity - * @type {number} - */ - this.angularVelocity = options.angularVelocity || 0; - - /** - * The force acting on the body. Since the body force (and {{#crossLink "Body/angularForce:property"}}{{/crossLink}}) will be zeroed after each step, so you need to set the force before each step. - * @property force - * @type {Array} - * - * @example - * // This produces a forcefield of 1 Newton in the positive x direction. - * for(var i=0; i radius){ - radius = offset + r; - } - } - - this.boundingRadius = radius; -}; - -/** - * Add a shape to the body. You can pass a local transform when adding a shape, - * so that the shape gets an offset and angle relative to the body center of mass. - * Will automatically update the mass properties and bounding radius. - * - * @method addShape - * @param {Shape} shape - * @param {Array} [offset] Local body offset of the shape. - * @param {Number} [angle] Local body angle. - * - * @example - * var body = new Body(), - * shape = new Circle({ radius: 1 }); - * - * // Add the shape to the body, positioned in the center - * body.addShape(shape); - * - * // Add another shape to the body, positioned 1 unit length from the body center of mass along the local x-axis. - * body.addShape(shape,[1,0]); - * - * // Add another shape to the body, positioned 1 unit length from the body center of mass along the local y-axis, and rotated 90 degrees CCW. - * body.addShape(shape,[0,1],Math.PI/2); - */ -Body.prototype.addShape = function(shape, offset, angle){ - if(shape.body){ - throw new Error('A shape can only be added to one body.'); - } - shape.body = this; - - // Copy the offset vector - if(offset){ - vec2.copy(shape.position, offset); - } else { - vec2.set(shape.position, 0, 0); - } - - shape.angle = angle || 0; - - this.shapes.push(shape); - this.updateMassProperties(); - this.updateBoundingRadius(); - - this.aabbNeedsUpdate = true; -}; - -/** - * Remove a shape - * @method removeShape - * @param {Shape} shape - * @return {Boolean} True if the shape was found and removed, else false. - */ -Body.prototype.removeShape = function(shape){ - var idx = this.shapes.indexOf(shape); - - if(idx !== -1){ - this.shapes.splice(idx,1); - this.aabbNeedsUpdate = true; - shape.body = null; - return true; - } else { - return false; - } -}; - -/** - * Updates .inertia, .invMass, .invInertia for this Body. Should be called when - * changing the structure or mass of the Body. - * - * @method updateMassProperties - * - * @example - * body.mass += 1; - * body.updateMassProperties(); - */ -Body.prototype.updateMassProperties = function(){ - if(this.type === Body.STATIC || this.type === Body.KINEMATIC){ - - this.mass = Number.MAX_VALUE; - this.invMass = 0; - this.inertia = Number.MAX_VALUE; - this.invInertia = 0; - - } else { - - var shapes = this.shapes, - N = shapes.length, - m = this.mass / N, - I = 0; - - if(!this.fixedRotation){ - for(var i=0; i0 ? 1/I : 0; - - } else { - this.inertia = Number.MAX_VALUE; - this.invInertia = 0; - } - - // Inverse mass properties are easy - this.invMass = 1 / this.mass; - - vec2.set( - this.massMultiplier, - this.fixedX ? 0 : 1, - this.fixedY ? 0 : 1 - ); - } -}; - -var Body_applyForce_r = vec2.create(); - -/** - * Apply force to a point relative to the center of mass of the body. This could for example be a point on the RigidBody surface. Applying force this way will add to Body.force and Body.angularForce. If relativePoint is zero, the force will be applied directly on the center of mass, and the torque produced will be zero. - * @method applyForce - * @param {Array} force The force to add. - * @param {Array} [relativePoint] A world point to apply the force on. - */ -Body.prototype.applyForce = function(force, relativePoint){ - - // Add linear force - vec2.add(this.force, this.force, force); - - if(relativePoint){ - - // Compute produced rotational force - var rotForce = vec2.crossLength(relativePoint,force); - - // Add rotational force - this.angularForce += rotForce; - } -}; - -/** - * Apply force to a body-local point. - * @method applyForceLocal - * @param {Array} localForce The force vector to add, oriented in local body space. - * @param {Array} localPoint A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. - */ -var Body_applyForce_forceWorld = vec2.create(); -var Body_applyForce_pointWorld = vec2.create(); -var Body_applyForce_pointLocal = vec2.create(); -Body.prototype.applyForceLocal = function(localForce, localPoint){ - localPoint = localPoint || Body_applyForce_pointLocal; - var worldForce = Body_applyForce_forceWorld; - var worldPoint = Body_applyForce_pointWorld; - this.vectorToWorldFrame(worldForce, localForce); - this.vectorToWorldFrame(worldPoint, localPoint); - this.applyForce(worldForce, worldPoint); -}; - -/** - * Apply impulse to a point relative to the body. This could for example be a point on the Body surface. An impulse is a force added to a body during a short period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. - * @method applyImpulse - * @param {Array} impulse The impulse vector to add, oriented in world space. - * @param {Array} [relativePoint] A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. - */ -var Body_applyImpulse_velo = vec2.create(); -Body.prototype.applyImpulse = function(impulseVector, relativePoint){ - if(this.type !== Body.DYNAMIC){ - return; - } - - // Compute produced central impulse velocity - var velo = Body_applyImpulse_velo; - vec2.scale(velo, impulseVector, this.invMass); - vec2.multiply(velo, this.massMultiplier, velo); - - // Add linear impulse - vec2.add(this.velocity, velo, this.velocity); - - if(relativePoint){ - // Compute produced rotational impulse velocity - var rotVelo = vec2.crossLength(relativePoint, impulseVector); - rotVelo *= this.invInertia; - - // Add rotational Impulse - this.angularVelocity += rotVelo; - } -}; - -/** - * Apply impulse to a point relative to the body. This could for example be a point on the Body surface. An impulse is a force added to a body during a short period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. - * @method applyImpulseLocal - * @param {Array} impulse The impulse vector to add, oriented in world space. - * @param {Array} [relativePoint] A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. - */ -var Body_applyImpulse_impulseWorld = vec2.create(); -var Body_applyImpulse_pointWorld = vec2.create(); -var Body_applyImpulse_pointLocal = vec2.create(); -Body.prototype.applyImpulseLocal = function(localImpulse, localPoint){ - localPoint = localPoint || Body_applyImpulse_pointLocal; - var worldImpulse = Body_applyImpulse_impulseWorld; - var worldPoint = Body_applyImpulse_pointWorld; - this.vectorToWorldFrame(worldImpulse, localImpulse); - this.vectorToWorldFrame(worldPoint, localPoint); - this.applyImpulse(worldImpulse, worldPoint); -}; - -/** - * Transform a world point to local body frame. - * @method toLocalFrame - * @param {Array} out The vector to store the result in - * @param {Array} worldPoint The input world point - */ -Body.prototype.toLocalFrame = function(out, worldPoint){ - vec2.toLocalFrame(out, worldPoint, this.position, this.angle); -}; - -/** - * Transform a local point to world frame. - * @method toWorldFrame - * @param {Array} out The vector to store the result in - * @param {Array} localPoint The input local point - */ -Body.prototype.toWorldFrame = function(out, localPoint){ - vec2.toGlobalFrame(out, localPoint, this.position, this.angle); -}; - -/** - * Transform a world point to local body frame. - * @method vectorToLocalFrame - * @param {Array} out The vector to store the result in - * @param {Array} worldVector The input world vector - */ -Body.prototype.vectorToLocalFrame = function(out, worldVector){ - vec2.vectorToLocalFrame(out, worldVector, this.angle); -}; - -/** - * Transform a local point to world frame. - * @method vectorToWorldFrame - * @param {Array} out The vector to store the result in - * @param {Array} localVector The input local vector - */ -Body.prototype.vectorToWorldFrame = function(out, localVector){ - vec2.vectorToGlobalFrame(out, localVector, this.angle); -}; - -/** - * Reads a polygon shape path, and assembles convex shapes from that and puts them at proper offset points. - * @method fromPolygon - * @param {Array} path An array of 2d vectors, e.g. [[0,0],[0,1],...] that resembles a concave or convex polygon. The shape must be simple and without holes. - * @param {Object} [options] - * @param {Boolean} [options.optimalDecomp=false] Set to true if you need optimal decomposition. Warning: very slow for polygons with more than 10 vertices. - * @param {Boolean} [options.skipSimpleCheck=false] Set to true if you already know that the path is not intersecting itself. - * @param {Boolean|Number} [options.removeCollinearPoints=false] Set to a number (angle threshold value) to remove collinear points, or false to keep all points. - * @return {Boolean} True on success, else false. - */ -Body.prototype.fromPolygon = function(path,options){ - options = options || {}; - - // Remove all shapes - for(var i=this.shapes.length; i>=0; --i){ - this.removeShape(this.shapes[i]); - } - - var p = new decomp.Polygon(); - p.vertices = path; - - // Make it counter-clockwise - p.makeCCW(); - - if(typeof(options.removeCollinearPoints) === "number"){ - p.removeCollinearPoints(options.removeCollinearPoints); - } - - // Check if any line segment intersects the path itself - if(typeof(options.skipSimpleCheck) === "undefined"){ - if(!p.isSimple()){ - return false; - } - } - - // Save this path for later - this.concavePath = p.vertices.slice(0); - for(var i=0; ithis for details. - * @method applyDamping - * @param {number} dt Current time step - */ -Body.prototype.applyDamping = function(dt){ - if(this.type === Body.DYNAMIC){ // Only for dynamic bodies - var v = this.velocity; - vec2.scale(v, v, Math.pow(1.0 - this.damping,dt)); - this.angularVelocity *= Math.pow(1.0 - this.angularDamping,dt); - } -}; - -/** - * Wake the body up. Normally you should not need this, as the body is automatically awoken at events such as collisions. - * Sets the sleepState to {{#crossLink "Body/AWAKE:property"}}Body.AWAKE{{/crossLink}} and emits the wakeUp event if the body wasn't awake before. - * @method wakeUp - */ -Body.prototype.wakeUp = function(){ - var s = this.sleepState; - this.sleepState = Body.AWAKE; - this.idleTime = 0; - if(s !== Body.AWAKE){ - this.emit(Body.wakeUpEvent); - } -}; - -/** - * Force body sleep - * @method sleep - */ -Body.prototype.sleep = function(){ - this.sleepState = Body.SLEEPING; - this.angularVelocity = 0; - this.angularForce = 0; - vec2.set(this.velocity,0,0); - vec2.set(this.force,0,0); - this.emit(Body.sleepEvent); -}; - -/** - * Called every timestep to update internal sleep timer and change sleep state if needed. - * @method sleepTick - * @param {number} time The world time in seconds - * @param {boolean} dontSleep - * @param {number} dt - */ -Body.prototype.sleepTick = function(time, dontSleep, dt){ - if(!this.allowSleep || this.type === Body.SLEEPING){ - return; - } - - this.wantsToSleep = false; - - var sleepState = this.sleepState, - speedSquared = vec2.squaredLength(this.velocity) + Math.pow(this.angularVelocity,2), - speedLimitSquared = Math.pow(this.sleepSpeedLimit,2); - - // Add to idle time - if(speedSquared >= speedLimitSquared){ - this.idleTime = 0; - this.sleepState = Body.AWAKE; - } else { - this.idleTime += dt; - this.sleepState = Body.SLEEPY; - } - if(this.idleTime > this.sleepTimeLimit){ - if(!dontSleep){ - this.sleep(); - } else { - this.wantsToSleep = true; - } - } -}; - -/** - * Check if the body is overlapping another body. Note that this method only works if the body was added to a World and if at least one step was taken. - * @method overlaps - * @param {Body} body - * @return {boolean} - */ -Body.prototype.overlaps = function(body){ - return this.world.overlapKeeper.bodiesAreOverlapping(this, body); -}; - -var integrate_fhMinv = vec2.create(); -var integrate_velodt = vec2.create(); - -/** - * Move the body forward in time given its current velocity. - * @method integrate - * @param {Number} dt - */ -Body.prototype.integrate = function(dt){ - var minv = this.invMass, - f = this.force, - pos = this.position, - velo = this.velocity; - - // Save old position - vec2.copy(this.previousPosition, this.position); - this.previousAngle = this.angle; - - // Velocity update - if(!this.fixedRotation){ - this.angularVelocity += this.angularForce * this.invInertia * dt; - } - vec2.scale(integrate_fhMinv, f, dt * minv); - vec2.multiply(integrate_fhMinv, this.massMultiplier, integrate_fhMinv); - vec2.add(velo, integrate_fhMinv, velo); - - // CCD - if(!this.integrateToTimeOfImpact(dt)){ - - // Regular position update - vec2.scale(integrate_velodt, velo, dt); - vec2.add(pos, pos, integrate_velodt); - if(!this.fixedRotation){ - this.angle += this.angularVelocity * dt; - } - } - - this.aabbNeedsUpdate = true; -}; - -var result = new RaycastResult(); -var ray = new Ray({ - mode: Ray.ALL -}); -var direction = vec2.create(); -var end = vec2.create(); -var startToEnd = vec2.create(); -var rememberPosition = vec2.create(); -Body.prototype.integrateToTimeOfImpact = function(dt){ - - if(this.ccdSpeedThreshold < 0 || vec2.squaredLength(this.velocity) < Math.pow(this.ccdSpeedThreshold, 2)){ - return false; - } - - vec2.normalize(direction, this.velocity); - - vec2.scale(end, this.velocity, dt); - vec2.add(end, end, this.position); - - vec2.sub(startToEnd, end, this.position); - var startToEndAngle = this.angularVelocity * dt; - var len = vec2.length(startToEnd); - - var timeOfImpact = 1; - - var hit; - var that = this; - result.reset(); - ray.callback = function (result) { - if(result.body === that){ - return; - } - hit = result.body; - result.getHitPoint(end, ray); - vec2.sub(startToEnd, end, that.position); - timeOfImpact = vec2.length(startToEnd) / len; - result.stop(); - }; - vec2.copy(ray.from, this.position); - vec2.copy(ray.to, end); - ray.update(); - this.world.raycast(result, ray); - - if(!hit){ - return false; - } - - var rememberAngle = this.angle; - vec2.copy(rememberPosition, this.position); - - // Got a start and end point. Approximate time of impact using binary search - var iter = 0; - var tmin = 0; - var tmid = 0; - var tmax = timeOfImpact; - while (tmax >= tmin && iter < this.ccdIterations) { - iter++; - - // calculate the midpoint - tmid = (tmax - tmin) / 2; - - // Move the body to that point - vec2.scale(integrate_velodt, startToEnd, timeOfImpact); - vec2.add(this.position, rememberPosition, integrate_velodt); - this.angle = rememberAngle + startToEndAngle * timeOfImpact; - this.updateAABB(); - - // check overlap - var overlaps = this.aabb.overlaps(hit.aabb) && this.world.narrowphase.bodiesOverlap(this, hit); - - if (overlaps) { - // change min to search upper interval - tmin = tmid; - } else { - // change max to search lower interval - tmax = tmid; - } - } - - timeOfImpact = tmid; - - vec2.copy(this.position, rememberPosition); - this.angle = rememberAngle; - - // move to TOI - vec2.scale(integrate_velodt, startToEnd, timeOfImpact); - vec2.add(this.position, this.position, integrate_velodt); - if(!this.fixedRotation){ - this.angle += startToEndAngle * timeOfImpact; - } - - return true; -}; - -/** - * Get velocity of a point in the body. - * @method getVelocityAtPoint - * @param {Array} result A vector to store the result in - * @param {Array} relativePoint A world oriented vector, indicating the position of the point to get the velocity from - * @return {Array} The result vector - */ -Body.prototype.getVelocityAtPoint = function(result, relativePoint){ - vec2.crossVZ(result, relativePoint, this.angularVelocity); - vec2.subtract(result, this.velocity, result); - return result; -}; - -/** - * @event sleepy - */ -Body.sleepyEvent = { - type: "sleepy" -}; - -/** - * @event sleep - */ -Body.sleepEvent = { - type: "sleep" -}; - -/** - * @event wakeup - */ -Body.wakeUpEvent = { - type: "wakeup" -}; - -/** - * Dynamic body. - * @property DYNAMIC - * @type {Number} - * @static - */ -Body.DYNAMIC = 1; - -/** - * Static body. - * @property STATIC - * @type {Number} - * @static - */ -Body.STATIC = 2; - -/** - * Kinematic body. - * @property KINEMATIC - * @type {Number} - * @static - */ -Body.KINEMATIC = 4; - -/** - * @property AWAKE - * @type {Number} - * @static - */ -Body.AWAKE = 0; - -/** - * @property SLEEPY - * @type {Number} - * @static - */ -Body.SLEEPY = 1; - -/** - * @property SLEEPING - * @type {Number} - * @static - */ -Body.SLEEPING = 2; - - -},{"../collision/AABB":7,"../collision/Ray":11,"../collision/RaycastResult":12,"../events/EventEmitter":26,"../math/vec2":30,"../shapes/Convex":40,"poly-decomp":5}],32:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Spring = _dereq_('./Spring'); -var Utils = _dereq_('../utils/Utils'); - -module.exports = LinearSpring; - -/** - * A spring, connecting two bodies. - * - * The Spring explicitly adds force and angularForce to the bodies. - * - * @class LinearSpring - * @extends Spring - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {number} [options.restLength] A number > 0. Default is the current distance between the world anchor points. - * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. - * @param {number} [options.damping=1] A number >= 0. Default: 1 - * @param {Array} [options.worldAnchorA] Where to hook the spring to body A, in world coordinates. Overrides the option "localAnchorA" if given. - * @param {Array} [options.worldAnchorB] - * @param {Array} [options.localAnchorA] Where to hook the spring to body A, in local body coordinates. Defaults to the body center. - * @param {Array} [options.localAnchorB] - */ -function LinearSpring(bodyA,bodyB,options){ - options = options || {}; - - Spring.call(this, bodyA, bodyB, options); - - /** - * Anchor for bodyA in local bodyA coordinates. - * @property localAnchorA - * @type {Array} - */ - this.localAnchorA = vec2.fromValues(0,0); - - /** - * Anchor for bodyB in local bodyB coordinates. - * @property localAnchorB - * @type {Array} - */ - this.localAnchorB = vec2.fromValues(0,0); - - if(options.localAnchorA){ vec2.copy(this.localAnchorA, options.localAnchorA); } - if(options.localAnchorB){ vec2.copy(this.localAnchorB, options.localAnchorB); } - if(options.worldAnchorA){ this.setWorldAnchorA(options.worldAnchorA); } - if(options.worldAnchorB){ this.setWorldAnchorB(options.worldAnchorB); } - - var worldAnchorA = vec2.create(); - var worldAnchorB = vec2.create(); - this.getWorldAnchorA(worldAnchorA); - this.getWorldAnchorB(worldAnchorB); - var worldDistance = vec2.distance(worldAnchorA, worldAnchorB); - - /** - * Rest length of the spring. - * @property restLength - * @type {number} - */ - this.restLength = typeof(options.restLength) === "number" ? options.restLength : worldDistance; -} -LinearSpring.prototype = new Spring(); -LinearSpring.prototype.constructor = LinearSpring; - -/** - * Set the anchor point on body A, using world coordinates. - * @method setWorldAnchorA - * @param {Array} worldAnchorA - */ -LinearSpring.prototype.setWorldAnchorA = function(worldAnchorA){ - this.bodyA.toLocalFrame(this.localAnchorA, worldAnchorA); -}; - -/** - * Set the anchor point on body B, using world coordinates. - * @method setWorldAnchorB - * @param {Array} worldAnchorB - */ -LinearSpring.prototype.setWorldAnchorB = function(worldAnchorB){ - this.bodyB.toLocalFrame(this.localAnchorB, worldAnchorB); -}; - -/** - * Get the anchor point on body A, in world coordinates. - * @method getWorldAnchorA - * @param {Array} result The vector to store the result in. - */ -LinearSpring.prototype.getWorldAnchorA = function(result){ - this.bodyA.toWorldFrame(result, this.localAnchorA); -}; - -/** - * Get the anchor point on body B, in world coordinates. - * @method getWorldAnchorB - * @param {Array} result The vector to store the result in. - */ -LinearSpring.prototype.getWorldAnchorB = function(result){ - this.bodyB.toWorldFrame(result, this.localAnchorB); -}; - -var applyForce_r = vec2.create(), - applyForce_r_unit = vec2.create(), - applyForce_u = vec2.create(), - applyForce_f = vec2.create(), - applyForce_worldAnchorA = vec2.create(), - applyForce_worldAnchorB = vec2.create(), - applyForce_ri = vec2.create(), - applyForce_rj = vec2.create(), - applyForce_tmp = vec2.create(); - -/** - * Apply the spring force to the connected bodies. - * @method applyForce - */ -LinearSpring.prototype.applyForce = function(){ - var k = this.stiffness, - d = this.damping, - l = this.restLength, - bodyA = this.bodyA, - bodyB = this.bodyB, - r = applyForce_r, - r_unit = applyForce_r_unit, - u = applyForce_u, - f = applyForce_f, - tmp = applyForce_tmp; - - var worldAnchorA = applyForce_worldAnchorA, - worldAnchorB = applyForce_worldAnchorB, - ri = applyForce_ri, - rj = applyForce_rj; - - // Get world anchors - this.getWorldAnchorA(worldAnchorA); - this.getWorldAnchorB(worldAnchorB); - - // Get offset points - vec2.sub(ri, worldAnchorA, bodyA.position); - vec2.sub(rj, worldAnchorB, bodyB.position); - - // Compute distance vector between world anchor points - vec2.sub(r, worldAnchorB, worldAnchorA); - var rlen = vec2.len(r); - vec2.normalize(r_unit,r); - - //console.log(rlen) - //console.log("A",vec2.str(worldAnchorA),"B",vec2.str(worldAnchorB)) - - // Compute relative velocity of the anchor points, u - vec2.sub(u, bodyB.velocity, bodyA.velocity); - vec2.crossZV(tmp, bodyB.angularVelocity, rj); - vec2.add(u, u, tmp); - vec2.crossZV(tmp, bodyA.angularVelocity, ri); - vec2.sub(u, u, tmp); - - // F = - k * ( x - L ) - D * ( u ) - vec2.scale(f, r_unit, -k*(rlen-l) - d*vec2.dot(u,r_unit)); - - // Add forces to bodies - vec2.sub( bodyA.force, bodyA.force, f); - vec2.add( bodyB.force, bodyB.force, f); - - // Angular force - var ri_x_f = vec2.crossLength(ri, f); - var rj_x_f = vec2.crossLength(rj, f); - bodyA.angularForce -= ri_x_f; - bodyB.angularForce += rj_x_f; -}; - -},{"../math/vec2":30,"../utils/Utils":57,"./Spring":34}],33:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Spring = _dereq_('./Spring'); - -module.exports = RotationalSpring; - -/** - * A rotational spring, connecting two bodies rotation. This spring explicitly adds angularForce (torque) to the bodies. - * - * The spring can be combined with a {{#crossLink "RevoluteConstraint"}}{{/crossLink}} to make, for example, a mouse trap. - * - * @class RotationalSpring - * @extends Spring - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {number} [options.restAngle] The relative angle of bodies at which the spring is at rest. If not given, it's set to the current relative angle between the bodies. - * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. - * @param {number} [options.damping=1] A number >= 0. - */ -function RotationalSpring(bodyA, bodyB, options){ - options = options || {}; - - Spring.call(this, bodyA, bodyB, options); - - /** - * Rest angle of the spring. - * @property restAngle - * @type {number} - */ - this.restAngle = typeof(options.restAngle) === "number" ? options.restAngle : bodyB.angle - bodyA.angle; -} -RotationalSpring.prototype = new Spring(); -RotationalSpring.prototype.constructor = RotationalSpring; - -/** - * Apply the spring force to the connected bodies. - * @method applyForce - */ -RotationalSpring.prototype.applyForce = function(){ - var k = this.stiffness, - d = this.damping, - l = this.restAngle, - bodyA = this.bodyA, - bodyB = this.bodyB, - x = bodyB.angle - bodyA.angle, - u = bodyB.angularVelocity - bodyA.angularVelocity; - - var torque = - k * (x - l) - d * u * 0; - - bodyA.angularForce -= torque; - bodyB.angularForce += torque; -}; - -},{"../math/vec2":30,"./Spring":34}],34:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Utils = _dereq_('../utils/Utils'); - -module.exports = Spring; - -/** - * A spring, connecting two bodies. The Spring explicitly adds force and angularForce to the bodies and does therefore not put load on the constraint solver. - * - * @class Spring - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. - * @param {number} [options.damping=1] A number >= 0. Default: 1 - * @param {Array} [options.localAnchorA] Where to hook the spring to body A, in local body coordinates. Defaults to the body center. - * @param {Array} [options.localAnchorB] - * @param {Array} [options.worldAnchorA] Where to hook the spring to body A, in world coordinates. Overrides the option "localAnchorA" if given. - * @param {Array} [options.worldAnchorB] - */ -function Spring(bodyA, bodyB, options){ - options = Utils.defaults(options,{ - stiffness: 100, - damping: 1, - }); - - /** - * Stiffness of the spring. - * @property stiffness - * @type {number} - */ - this.stiffness = options.stiffness; - - /** - * Damping of the spring. - * @property damping - * @type {number} - */ - this.damping = options.damping; - - /** - * First connected body. - * @property bodyA - * @type {Body} - */ - this.bodyA = bodyA; - - /** - * Second connected body. - * @property bodyB - * @type {Body} - */ - this.bodyB = bodyB; -} - -/** - * Apply the spring force to the connected bodies. - * @method applyForce - */ -Spring.prototype.applyForce = function(){ - // To be implemented by subclasses -}; - -},{"../math/vec2":30,"../utils/Utils":57}],35:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Utils = _dereq_('../utils/Utils'); -var Constraint = _dereq_('../constraints/Constraint'); -var FrictionEquation = _dereq_('../equations/FrictionEquation'); -var Body = _dereq_('../objects/Body'); - -module.exports = TopDownVehicle; - -/** - * @class TopDownVehicle - * @constructor - * @param {Body} chassisBody A dynamic body, already added to the world. - * @param {Object} [options] - * - * @example - * - * // Create a dynamic body for the chassis - * var chassisBody = new Body({ - * mass: 1 - * }); - * var boxShape = new Box({ width: 0.5, height: 1 }); - * chassisBody.addShape(boxShape); - * world.addBody(chassisBody); - * - * // Create the vehicle - * var vehicle = new TopDownVehicle(chassisBody); - * - * // Add one front wheel and one back wheel - we don't actually need four :) - * var frontWheel = vehicle.addWheel({ - * localPosition: [0, 0.5] // front - * }); - * frontWheel.setSideFriction(4); - * - * // Back wheel - * var backWheel = vehicle.addWheel({ - * localPosition: [0, -0.5] // back - * }); - * backWheel.setSideFriction(3); // Less side friction on back wheel makes it easier to drift - * vehicle.addToWorld(world); - * - * // Steer value zero means straight forward. Positive is left and negative right. - * frontWheel.steerValue = Math.PI / 16; - * - * // Engine force forward - * backWheel.engineForce = 10; - * backWheel.setBrakeForce(0); - */ -function TopDownVehicle(chassisBody, options){ - options = options || {}; - - /** - * @property {Body} chassisBody - */ - this.chassisBody = chassisBody; - - /** - * @property {Array} wheels - */ - this.wheels = []; - - // A dummy body to constrain the chassis to - this.groundBody = new Body({ mass: 0 }); - - this.world = null; - - var that = this; - this.preStepCallback = function(){ - that.update(); - }; -} - -/** - * @method addToWorld - * @param {World} world - */ -TopDownVehicle.prototype.addToWorld = function(world){ - this.world = world; - world.addBody(this.groundBody); - world.on('preStep', this.preStepCallback); - for (var i = 0; i < this.wheels.length; i++) { - var wheel = this.wheels[i]; - world.addConstraint(wheel); - } -}; - -/** - * @method removeFromWorld - * @param {World} world - */ -TopDownVehicle.prototype.removeFromWorld = function(){ - var world = this.world; - world.removeBody(this.groundBody); - world.off('preStep', this.preStepCallback); - for (var i = 0; i < this.wheels.length; i++) { - var wheel = this.wheels[i]; - world.removeConstraint(wheel); - } - this.world = null; -}; - -/** - * @method addWheel - * @param {object} [wheelOptions] - * @return {WheelConstraint} - */ -TopDownVehicle.prototype.addWheel = function(wheelOptions){ - var wheel = new WheelConstraint(this,wheelOptions); - this.wheels.push(wheel); - return wheel; -}; - -/** - * @method update - */ -TopDownVehicle.prototype.update = function(){ - for (var i = 0; i < this.wheels.length; i++) { - this.wheels[i].update(); - } -}; - -/** - * @class WheelConstraint - * @constructor - * @extends {Constraint} - * @param {Vehicle} vehicle - * @param {object} [options] - * @param {Array} [options.localForwardVector]The local wheel forward vector in local body space. Default is zero. - * @param {Array} [options.localPosition] The local position of the wheen in the chassis body. Default is zero - the center of the body. - * @param {Array} [options.sideFriction=5] The max friction force in the sideways direction. - */ -function WheelConstraint(vehicle, options){ - options = options || {}; - - this.vehicle = vehicle; - - this.forwardEquation = new FrictionEquation(vehicle.chassisBody, vehicle.groundBody); - - this.sideEquation = new FrictionEquation(vehicle.chassisBody, vehicle.groundBody); - - /** - * @property {number} steerValue - */ - this.steerValue = 0; - - /** - * @property {number} engineForce - */ - this.engineForce = 0; - - this.setSideFriction(options.sideFriction !== undefined ? options.sideFriction : 5); - - /** - * @property {Array} localForwardVector - */ - this.localForwardVector = vec2.fromValues(0, 1); - if(options.localForwardVector){ - vec2.copy(this.localForwardVector, options.localForwardVector); - } - - /** - * @property {Array} localPosition - */ - this.localPosition = vec2.fromValues(0, 0); - if(options.localPosition){ - vec2.copy(this.localPosition, options.localPosition); - } - - Constraint.apply(this, vehicle.chassisBody, vehicle.groundBody); - - this.equations.push( - this.forwardEquation, - this.sideEquation - ); - - this.setBrakeForce(0); -} -WheelConstraint.prototype = new Constraint(); - -/** - * @method setForwardFriction - */ -WheelConstraint.prototype.setBrakeForce = function(force){ - this.forwardEquation.setSlipForce(force); -}; - -/** - * @method setSideFriction - */ -WheelConstraint.prototype.setSideFriction = function(force){ - this.sideEquation.setSlipForce(force); -}; - -var worldVelocity = vec2.create(); -var relativePoint = vec2.create(); - -/** - * @method getSpeed - */ -WheelConstraint.prototype.getSpeed = function(){ - this.vehicle.chassisBody.vectorToWorldFrame(relativePoint, this.localForwardVector); - this.vehicle.chassisBody.getVelocityAtPoint(worldVelocity, relativePoint); - return vec2.dot(worldVelocity, relativePoint); -}; - -var tmpVec = vec2.create(); - -/** - * @method update - */ -WheelConstraint.prototype.update = function(){ - - // Directional - this.vehicle.chassisBody.vectorToWorldFrame(this.forwardEquation.t, this.localForwardVector); - vec2.rotate(this.sideEquation.t, this.localForwardVector, Math.PI / 2); - this.vehicle.chassisBody.vectorToWorldFrame(this.sideEquation.t, this.sideEquation.t); - - vec2.rotate(this.forwardEquation.t, this.forwardEquation.t, this.steerValue); - vec2.rotate(this.sideEquation.t, this.sideEquation.t, this.steerValue); - - // Attachment point - this.vehicle.chassisBody.toWorldFrame(this.forwardEquation.contactPointB, this.localPosition); - vec2.copy(this.sideEquation.contactPointB, this.forwardEquation.contactPointB); - - this.vehicle.chassisBody.vectorToWorldFrame(this.forwardEquation.contactPointA, this.localPosition); - vec2.copy(this.sideEquation.contactPointA, this.forwardEquation.contactPointA); - - // Add engine force - vec2.normalize(tmpVec, this.forwardEquation.t); - vec2.scale(tmpVec, tmpVec, this.engineForce); - - this.vehicle.chassisBody.applyForce(tmpVec, this.forwardEquation.contactPointA); -}; -},{"../constraints/Constraint":14,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],36:[function(_dereq_,module,exports){ -// Export p2 classes -var p2 = module.exports = { - AABB : _dereq_('./collision/AABB'), - AngleLockEquation : _dereq_('./equations/AngleLockEquation'), - Body : _dereq_('./objects/Body'), - Broadphase : _dereq_('./collision/Broadphase'), - Capsule : _dereq_('./shapes/Capsule'), - Circle : _dereq_('./shapes/Circle'), - Constraint : _dereq_('./constraints/Constraint'), - ContactEquation : _dereq_('./equations/ContactEquation'), - ContactEquationPool : _dereq_('./utils/ContactEquationPool'), - ContactMaterial : _dereq_('./material/ContactMaterial'), - Convex : _dereq_('./shapes/Convex'), - DistanceConstraint : _dereq_('./constraints/DistanceConstraint'), - Equation : _dereq_('./equations/Equation'), - EventEmitter : _dereq_('./events/EventEmitter'), - FrictionEquation : _dereq_('./equations/FrictionEquation'), - FrictionEquationPool : _dereq_('./utils/FrictionEquationPool'), - GearConstraint : _dereq_('./constraints/GearConstraint'), - GSSolver : _dereq_('./solver/GSSolver'), - Heightfield : _dereq_('./shapes/Heightfield'), - Line : _dereq_('./shapes/Line'), - LockConstraint : _dereq_('./constraints/LockConstraint'), - Material : _dereq_('./material/Material'), - Narrowphase : _dereq_('./collision/Narrowphase'), - NaiveBroadphase : _dereq_('./collision/NaiveBroadphase'), - Particle : _dereq_('./shapes/Particle'), - Plane : _dereq_('./shapes/Plane'), - Pool : _dereq_('./utils/Pool'), - RevoluteConstraint : _dereq_('./constraints/RevoluteConstraint'), - PrismaticConstraint : _dereq_('./constraints/PrismaticConstraint'), - Ray : _dereq_('./collision/Ray'), - RaycastResult : _dereq_('./collision/RaycastResult'), - Box : _dereq_('./shapes/Box'), - RotationalVelocityEquation : _dereq_('./equations/RotationalVelocityEquation'), - SAPBroadphase : _dereq_('./collision/SAPBroadphase'), - Shape : _dereq_('./shapes/Shape'), - Solver : _dereq_('./solver/Solver'), - Spring : _dereq_('./objects/Spring'), - TopDownVehicle : _dereq_('./objects/TopDownVehicle'), - LinearSpring : _dereq_('./objects/LinearSpring'), - RotationalSpring : _dereq_('./objects/RotationalSpring'), - Utils : _dereq_('./utils/Utils'), - World : _dereq_('./world/World'), - vec2 : _dereq_('./math/vec2'), - version : _dereq_('../package.json').version, -}; - -Object.defineProperty(p2, 'Rectangle', { - get: function() { - console.warn('The Rectangle class has been renamed to Box.'); - return this.Box; - } -}); -},{"../package.json":6,"./collision/AABB":7,"./collision/Broadphase":8,"./collision/NaiveBroadphase":9,"./collision/Narrowphase":10,"./collision/Ray":11,"./collision/RaycastResult":12,"./collision/SAPBroadphase":13,"./constraints/Constraint":14,"./constraints/DistanceConstraint":15,"./constraints/GearConstraint":16,"./constraints/LockConstraint":17,"./constraints/PrismaticConstraint":18,"./constraints/RevoluteConstraint":19,"./equations/AngleLockEquation":20,"./equations/ContactEquation":21,"./equations/Equation":22,"./equations/FrictionEquation":23,"./equations/RotationalVelocityEquation":25,"./events/EventEmitter":26,"./material/ContactMaterial":27,"./material/Material":28,"./math/vec2":30,"./objects/Body":31,"./objects/LinearSpring":32,"./objects/RotationalSpring":33,"./objects/Spring":34,"./objects/TopDownVehicle":35,"./shapes/Box":37,"./shapes/Capsule":38,"./shapes/Circle":39,"./shapes/Convex":40,"./shapes/Heightfield":41,"./shapes/Line":42,"./shapes/Particle":43,"./shapes/Plane":44,"./shapes/Shape":45,"./solver/GSSolver":46,"./solver/Solver":47,"./utils/ContactEquationPool":48,"./utils/FrictionEquationPool":49,"./utils/Pool":55,"./utils/Utils":57,"./world/World":61}],37:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Shape = _dereq_('./Shape') -, Convex = _dereq_('./Convex'); - -module.exports = Box; - -/** - * Box shape class. - * @class Box - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Number} [options.width=1] Total width of the box - * @param {Number} [options.height=1] Total height of the box - * @extends Convex - */ -function Box(options){ - if(typeof(arguments[0]) === 'number' && typeof(arguments[1]) === 'number'){ - options = { - width: arguments[0], - height: arguments[1] - }; - console.warn('The Rectangle has been renamed to Box and its constructor signature has changed. Please use the following format: new Box({ width: 1, height: 1, ... })'); - } - options = options || {}; - - /** - * Total width of the box - * @property width - * @type {Number} - */ - var width = this.width = options.width || 1; - - /** - * Total height of the box - * @property height - * @type {Number} - */ - var height = this.height = options.height || 1; - - var verts = [ - vec2.fromValues(-width/2, -height/2), - vec2.fromValues( width/2, -height/2), - vec2.fromValues( width/2, height/2), - vec2.fromValues(-width/2, height/2) - ]; - var axes = [ - vec2.fromValues(1, 0), - vec2.fromValues(0, 1) - ]; - - options.vertices = verts; - options.axes = axes; - options.type = Shape.BOX; - Convex.call(this, options); -} -Box.prototype = new Convex(); -Box.prototype.constructor = Box; - -/** - * Compute moment of inertia - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} - */ -Box.prototype.computeMomentOfInertia = function(mass){ - var w = this.width, - h = this.height; - return mass * (h*h + w*w) / 12; -}; - -/** - * Update the bounding radius - * @method updateBoundingRadius - */ -Box.prototype.updateBoundingRadius = function(){ - var w = this.width, - h = this.height; - this.boundingRadius = Math.sqrt(w*w + h*h) / 2; -}; - -var corner1 = vec2.create(), - corner2 = vec2.create(), - corner3 = vec2.create(), - corner4 = vec2.create(); - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Box.prototype.computeAABB = function(out, position, angle){ - out.setFromPoints(this.vertices,position,angle,0); -}; - -Box.prototype.updateArea = function(){ - this.area = this.width * this.height; -}; - - -},{"../math/vec2":30,"./Convex":40,"./Shape":45}],38:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Capsule; - -/** - * Capsule shape class. - * @class Capsule - * @constructor - * @extends Shape - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Number} [options.length=1] The distance between the end points - * @param {Number} [options.radius=1] Radius of the capsule - * @example - * var capsuleShape = new Capsule({ - * length: 1, - * radius: 2 - * }); - * body.addShape(capsuleShape); - */ -function Capsule(options){ - if(typeof(arguments[0]) === 'number' && typeof(arguments[1]) === 'number'){ - options = { - length: arguments[0], - radius: arguments[1] - }; - console.warn('The Capsule constructor signature has changed. Please use the following format: new Capsule({ radius: 1, length: 1 })'); - } - options = options || {}; - - /** - * The distance between the end points. - * @property {Number} length - */ - this.length = options.length || 1; - - /** - * The radius of the capsule. - * @property {Number} radius - */ - this.radius = options.radius || 1; - - options.type = Shape.CAPSULE; - Shape.call(this, options); -} -Capsule.prototype = new Shape(); -Capsule.prototype.constructor = Capsule; - -/** - * Compute the mass moment of inertia of the Capsule. - * @method conputeMomentOfInertia - * @param {Number} mass - * @return {Number} - * @todo - */ -Capsule.prototype.computeMomentOfInertia = function(mass){ - // Approximate with rectangle - var r = this.radius, - w = this.length + r, // 2*r is too much, 0 is too little - h = r*2; - return mass * (h*h + w*w) / 12; -}; - -/** - * @method updateBoundingRadius - */ -Capsule.prototype.updateBoundingRadius = function(){ - this.boundingRadius = this.radius + this.length/2; -}; - -/** - * @method updateArea - */ -Capsule.prototype.updateArea = function(){ - this.area = Math.PI * this.radius * this.radius + this.radius * 2 * this.length; -}; - -var r = vec2.create(); - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Capsule.prototype.computeAABB = function(out, position, angle){ - var radius = this.radius; - - // Compute center position of one of the the circles, world oriented, but with local offset - vec2.set(r,this.length / 2,0); - if(angle !== 0){ - vec2.rotate(r,r,angle); - } - - // Get bounds - vec2.set(out.upperBound, Math.max(r[0]+radius, -r[0]+radius), - Math.max(r[1]+radius, -r[1]+radius)); - vec2.set(out.lowerBound, Math.min(r[0]-radius, -r[0]-radius), - Math.min(r[1]-radius, -r[1]-radius)); - - // Add offset - vec2.add(out.lowerBound, out.lowerBound, position); - vec2.add(out.upperBound, out.upperBound, position); -}; - -var intersectCapsule_hitPointWorld = vec2.create(); -var intersectCapsule_normal = vec2.create(); -var intersectCapsule_l0 = vec2.create(); -var intersectCapsule_l1 = vec2.create(); -var intersectCapsule_unit_y = vec2.fromValues(0,1); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Capsule.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - var direction = ray.direction; - - var hitPointWorld = intersectCapsule_hitPointWorld; - var normal = intersectCapsule_normal; - var l0 = intersectCapsule_l0; - var l1 = intersectCapsule_l1; - - // The sides - var halfLen = this.length / 2; - for(var i=0; i<2; i++){ - - // get start and end of the line - var y = this.radius * (i*2-1); - vec2.set(l0, -halfLen, y); - vec2.set(l1, halfLen, y); - vec2.toGlobalFrame(l0, l0, position, angle); - vec2.toGlobalFrame(l1, l1, position, angle); - - var delta = vec2.getLineSegmentsIntersectionFraction(from, to, l0, l1); - if(delta >= 0){ - vec2.rotate(normal, intersectCapsule_unit_y, angle); - vec2.scale(normal, normal, (i*2-1)); - ray.reportIntersection(result, delta, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } - - // Circles - var diagonalLengthSquared = Math.pow(this.radius, 2) + Math.pow(halfLen, 2); - for(var i=0; i<2; i++){ - vec2.set(l0, halfLen * (i*2-1), 0); - vec2.toGlobalFrame(l0, l0, position, angle); - - var a = Math.pow(to[0] - from[0], 2) + Math.pow(to[1] - from[1], 2); - var b = 2 * ((to[0] - from[0]) * (from[0] - l0[0]) + (to[1] - from[1]) * (from[1] - l0[1])); - var c = Math.pow(from[0] - l0[0], 2) + Math.pow(from[1] - l0[1], 2) - Math.pow(this.radius, 2); - var delta = Math.pow(b, 2) - 4 * a * c; - - if(delta < 0){ - // No intersection - continue; - - } else if(delta === 0){ - // single intersection point - vec2.lerp(hitPointWorld, from, to, delta); - - if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ - vec2.sub(normal, hitPointWorld, l0); - vec2.normalize(normal,normal); - ray.reportIntersection(result, delta, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - - } else { - var sqrtDelta = Math.sqrt(delta); - var inv2a = 1 / (2 * a); - var d1 = (- b - sqrtDelta) * inv2a; - var d2 = (- b + sqrtDelta) * inv2a; - - if(d1 >= 0 && d1 <= 1){ - vec2.lerp(hitPointWorld, from, to, d1); - if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ - vec2.sub(normal, hitPointWorld, l0); - vec2.normalize(normal,normal); - ray.reportIntersection(result, d1, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } - - if(d2 >= 0 && d2 <= 1){ - vec2.lerp(hitPointWorld, from, to, d2); - if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ - vec2.sub(normal, hitPointWorld, l0); - vec2.normalize(normal,normal); - ray.reportIntersection(result, d2, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } - } - } -}; -},{"../math/vec2":30,"./Shape":45}],39:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Circle; - -/** - * Circle shape class. - * @class Circle - * @extends Shape - * @constructor - * @param {options} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {number} [options.radius=1] The radius of this circle - * - * @example - * var circleShape = new Circle({ radius: 1 }); - * body.addShape(circleShape); - */ -function Circle(options){ - if(typeof(arguments[0]) === 'number'){ - options = { - radius: arguments[0] - }; - console.warn('The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })'); - } - options = options || {}; - - /** - * The radius of the circle. - * @property radius - * @type {number} - */ - this.radius = options.radius || 1; - - options.type = Shape.CIRCLE; - Shape.call(this, options); -} -Circle.prototype = new Shape(); -Circle.prototype.constructor = Circle; - -/** - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} - */ -Circle.prototype.computeMomentOfInertia = function(mass){ - var r = this.radius; - return mass * r * r / 2; -}; - -/** - * @method updateBoundingRadius - * @return {Number} - */ -Circle.prototype.updateBoundingRadius = function(){ - this.boundingRadius = this.radius; -}; - -/** - * @method updateArea - * @return {Number} - */ -Circle.prototype.updateArea = function(){ - this.area = Math.PI * this.radius * this.radius; -}; - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Circle.prototype.computeAABB = function(out, position, angle){ - var r = this.radius; - vec2.set(out.upperBound, r, r); - vec2.set(out.lowerBound, -r, -r); - if(position){ - vec2.add(out.lowerBound, out.lowerBound, position); - vec2.add(out.upperBound, out.upperBound, position); - } -}; - -var Ray_intersectSphere_intersectionPoint = vec2.create(); -var Ray_intersectSphere_normal = vec2.create(); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Circle.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from, - to = ray.to, - r = this.radius; - - var a = Math.pow(to[0] - from[0], 2) + Math.pow(to[1] - from[1], 2); - var b = 2 * ((to[0] - from[0]) * (from[0] - position[0]) + (to[1] - from[1]) * (from[1] - position[1])); - var c = Math.pow(from[0] - position[0], 2) + Math.pow(from[1] - position[1], 2) - Math.pow(r, 2); - var delta = Math.pow(b, 2) - 4 * a * c; - - var intersectionPoint = Ray_intersectSphere_intersectionPoint; - var normal = Ray_intersectSphere_normal; - - if(delta < 0){ - // No intersection - return; - - } else if(delta === 0){ - // single intersection point - vec2.lerp(intersectionPoint, from, to, delta); - - vec2.sub(normal, intersectionPoint, position); - vec2.normalize(normal,normal); - - ray.reportIntersection(result, delta, normal, -1); - - } else { - var sqrtDelta = Math.sqrt(delta); - var inv2a = 1 / (2 * a); - var d1 = (- b - sqrtDelta) * inv2a; - var d2 = (- b + sqrtDelta) * inv2a; - - if(d1 >= 0 && d1 <= 1){ - vec2.lerp(intersectionPoint, from, to, d1); - - vec2.sub(normal, intersectionPoint, position); - vec2.normalize(normal,normal); - - ray.reportIntersection(result, d1, normal, -1); - - if(result.shouldStop(ray)){ - return; - } - } - - if(d2 >= 0 && d2 <= 1){ - vec2.lerp(intersectionPoint, from, to, d2); - - vec2.sub(normal, intersectionPoint, position); - vec2.normalize(normal,normal); - - ray.reportIntersection(result, d2, normal, -1); - } - } -}; -},{"../math/vec2":30,"./Shape":45}],40:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2') -, polyk = _dereq_('../math/polyk') -, decomp = _dereq_('poly-decomp'); - -module.exports = Convex; - -/** - * Convex shape class. - * @class Convex - * @constructor - * @extends Shape - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Array} [options.vertices] An array of vertices that span this shape. Vertices are given in counter-clockwise (CCW) direction. - * @param {Array} [options.axes] An array of unit length vectors, representing the symmetry axes in the convex. - * @example - * // Create a box - * var vertices = [[-1,-1], [1,-1], [1,1], [-1,1]]; - * var convexShape = new Convex({ vertices: vertices }); - * body.addShape(convexShape); - */ -function Convex(options){ - if(Array.isArray(arguments[0])){ - options = { - vertices: arguments[0], - axes: arguments[1] - }; - console.warn('The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })'); - } - options = options || {}; - - /** - * Vertices defined in the local frame. - * @property vertices - * @type {Array} - */ - this.vertices = []; - - // Copy the verts - var vertices = options.vertices !== undefined ? options.vertices : []; - for(var i=0; i < vertices.length; i++){ - var v = vec2.create(); - vec2.copy(v, vertices[i]); - this.vertices.push(v); - } - - /** - * Axes defined in the local frame. - * @property axes - * @type {Array} - */ - this.axes = []; - - if(options.axes){ - - // Copy the axes - for(var i=0; i < options.axes.length; i++){ - var axis = vec2.create(); - vec2.copy(axis, options.axes[i]); - this.axes.push(axis); - } - - } else { - - // Construct axes from the vertex data - for(var i = 0; i < this.vertices.length; i++){ - // Get the world edge - var worldPoint0 = this.vertices[i]; - var worldPoint1 = this.vertices[(i+1) % this.vertices.length]; - - var normal = vec2.create(); - vec2.sub(normal, worldPoint1, worldPoint0); - - // Get normal - just rotate 90 degrees since vertices are given in CCW - vec2.rotate90cw(normal, normal); - vec2.normalize(normal, normal); - - this.axes.push(normal); - } - - } - - /** - * The center of mass of the Convex - * @property centerOfMass - * @type {Array} - */ - this.centerOfMass = vec2.fromValues(0,0); - - /** - * Triangulated version of this convex. The structure is Array of 3-Arrays, and each subarray contains 3 integers, referencing the vertices. - * @property triangles - * @type {Array} - */ - this.triangles = []; - - if(this.vertices.length){ - this.updateTriangles(); - this.updateCenterOfMass(); - } - - /** - * The bounding radius of the convex - * @property boundingRadius - * @type {Number} - */ - this.boundingRadius = 0; - - options.type = Shape.CONVEX; - Shape.call(this, options); - - this.updateBoundingRadius(); - this.updateArea(); - if(this.area < 0){ - throw new Error("Convex vertices must be given in conter-clockwise winding."); - } -} -Convex.prototype = new Shape(); -Convex.prototype.constructor = Convex; - -var tmpVec1 = vec2.create(); -var tmpVec2 = vec2.create(); - -/** - * Project a Convex onto a world-oriented axis - * @method projectOntoAxis - * @static - * @param {Array} offset - * @param {Array} localAxis - * @param {Array} result - */ -Convex.prototype.projectOntoLocalAxis = function(localAxis, result){ - var max=null, - min=null, - v, - value, - localAxis = tmpVec1; - - // Get projected position of all vertices - for(var i=0; i max){ - max = value; - } - if(min === null || value < min){ - min = value; - } - } - - if(min > max){ - var t = min; - min = max; - max = t; - } - - vec2.set(result, min, max); -}; - -Convex.prototype.projectOntoWorldAxis = function(localAxis, shapeOffset, shapeAngle, result){ - var worldAxis = tmpVec2; - - this.projectOntoLocalAxis(localAxis, result); - - // Project the position of the body onto the axis - need to add this to the result - if(shapeAngle !== 0){ - vec2.rotate(worldAxis, localAxis, shapeAngle); - } else { - worldAxis = localAxis; - } - var offset = vec2.dot(shapeOffset, worldAxis); - - vec2.set(result, result[0] + offset, result[1] + offset); -}; - - -/** - * Update the .triangles property - * @method updateTriangles - */ -Convex.prototype.updateTriangles = function(){ - - this.triangles.length = 0; - - // Rewrite on polyk notation, array of numbers - var polykVerts = []; - for(var i=0; i r2){ - r2 = l2; - } - } - - this.boundingRadius = Math.sqrt(r2); -}; - -/** - * Get the area of the triangle spanned by the three points a, b, c. The area is positive if the points are given in counter-clockwise order, otherwise negative. - * @static - * @method triangleArea - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @return {Number} - */ -Convex.triangleArea = function(a,b,c){ - return (((b[0] - a[0])*(c[1] - a[1]))-((c[0] - a[0])*(b[1] - a[1]))) * 0.5; -}; - -/** - * Update the .area - * @method updateArea - */ -Convex.prototype.updateArea = function(){ - this.updateTriangles(); - this.area = 0; - - var triangles = this.triangles, - verts = this.vertices; - for(var i=0; i!==triangles.length; i++){ - var t = triangles[i], - a = verts[t[0]], - b = verts[t[1]], - c = verts[t[2]]; - - // Get mass for the triangle (density=1 in this case) - var m = Convex.triangleArea(a,b,c); - this.area += m; - } -}; - -/** - * @method computeAABB - * @param {AABB} out - * @param {Array} position - * @param {Number} angle - */ -Convex.prototype.computeAABB = function(out, position, angle){ - out.setFromPoints(this.vertices, position, angle, 0); -}; - -var intersectConvex_rayStart = vec2.create(); -var intersectConvex_rayEnd = vec2.create(); -var intersectConvex_normal = vec2.create(); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Convex.prototype.raycast = function(result, ray, position, angle){ - var rayStart = intersectConvex_rayStart; - var rayEnd = intersectConvex_rayEnd; - var normal = intersectConvex_normal; - var vertices = this.vertices; - - // Transform to local shape space - vec2.toLocalFrame(rayStart, ray.from, position, angle); - vec2.toLocalFrame(rayEnd, ray.to, position, angle); - - var n = vertices.length; - - for (var i = 0; i < n && !result.shouldStop(ray); i++) { - var q1 = vertices[i]; - var q2 = vertices[(i+1) % n]; - var delta = vec2.getLineSegmentsIntersectionFraction(rayStart, rayEnd, q1, q2); - - if(delta >= 0){ - vec2.sub(normal, q2, q1); - vec2.rotate(normal, normal, -Math.PI / 2 + angle); - vec2.normalize(normal, normal); - ray.reportIntersection(result, delta, normal, i); - } - } -}; - -},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2') -, Utils = _dereq_('../utils/Utils'); - -module.exports = Heightfield; - -/** - * Heightfield shape class. Height data is given as an array. These data points are spread out evenly with a distance "elementWidth". - * @class Heightfield - * @extends Shape - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {array} [options.heights] An array of Y values that will be used to construct the terrain. - * @param {Number} [options.minValue] Minimum value of the data points in the data array. Will be computed automatically if not given. - * @param {Number} [options.maxValue] Maximum value. - * @param {Number} [options.elementWidth=0.1] World spacing between the data points in X direction. - * - * @example - * // Generate some height data (y-values). - * var heights = []; - * for(var i = 0; i < 1000; i++){ - * var y = 0.5 * Math.cos(0.2 * i); - * heights.push(y); - * } - * - * // Create the heightfield shape - * var heightfieldShape = new Heightfield({ - * heights: heights, - * elementWidth: 1 // Distance between the data points in X direction - * }); - * var heightfieldBody = new Body(); - * heightfieldBody.addShape(heightfieldShape); - * world.addBody(heightfieldBody); - * - * @todo Should use a scale property with X and Y direction instead of just elementWidth - */ -function Heightfield(options){ - if(Array.isArray(arguments[0])){ - options = { - heights: arguments[0] - }; - - if(typeof(arguments[1]) === 'object'){ - for(var key in arguments[1]){ - options[key] = arguments[1][key]; - } - } - - console.warn('The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })'); - } - options = options || {}; - - /** - * An array of numbers, or height values, that are spread out along the x axis. - * @property {array} heights - */ - this.heights = options.heights ? options.heights.slice(0) : []; - - /** - * Max value of the heights - * @property {number} maxValue - */ - this.maxValue = options.maxValue || null; - - /** - * Max value of the heights - * @property {number} minValue - */ - this.minValue = options.minValue || null; - - /** - * The width of each element - * @property {number} elementWidth - */ - this.elementWidth = options.elementWidth || 0.1; - - if(options.maxValue === undefined || options.minValue === undefined){ - this.updateMaxMinValues(); - } - - options.type = Shape.HEIGHTFIELD; - Shape.call(this, options); -} -Heightfield.prototype = new Shape(); -Heightfield.prototype.constructor = Heightfield; - -/** - * Update the .minValue and the .maxValue - * @method updateMaxMinValues - */ -Heightfield.prototype.updateMaxMinValues = function(){ - var data = this.heights; - var maxValue = data[0]; - var minValue = data[0]; - for(var i=0; i !== data.length; i++){ - var v = data[i]; - if(v > maxValue){ - maxValue = v; - } - if(v < minValue){ - minValue = v; - } - } - this.maxValue = maxValue; - this.minValue = minValue; -}; - -/** - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} - */ -Heightfield.prototype.computeMomentOfInertia = function(mass){ - return Number.MAX_VALUE; -}; - -Heightfield.prototype.updateBoundingRadius = function(){ - this.boundingRadius = Number.MAX_VALUE; -}; - -Heightfield.prototype.updateArea = function(){ - var data = this.heights, - area = 0; - for(var i=0; i= 0 && s <= 1 && t >= 0 && t <= 1) { // Collision detected - var intX = p0[0] + (t * s1_x); - var intY = p0[1] + (t * s1_y); - out[0] = intX; - out[1] = intY; - return t; - } - return -1; // No collision -} - -/** - * @method raycast - * @param {RayResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Heightfield.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - var direction = ray.direction; - - var hitPointWorld = intersectHeightfield_hitPointWorld; - var worldNormal = intersectHeightfield_worldNormal; - var l0 = intersectHeightfield_l0; - var l1 = intersectHeightfield_l1; - var localFrom = intersectHeightfield_localFrom; - var localTo = intersectHeightfield_localTo; - - // get local ray start and end - vec2.toLocalFrame(localFrom, from, position, angle); - vec2.toLocalFrame(localTo, to, position, angle); - - // Get the segment range - var i0 = this.getClampedSegmentIndex(localFrom); - var i1 = this.getClampedSegmentIndex(localTo); - if(i0 > i1){ - var tmp = i0; - i0 = i1; - i1 = tmp; - } - - // The segments - for(var i=0; i= 0){ - vec2.sub(worldNormal, l1, l0); - vec2.rotate(worldNormal, worldNormal, angle + Math.PI / 2); - vec2.normalize(worldNormal, worldNormal); - ray.reportIntersection(result, t, worldNormal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } -}; -},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Line; - -/** - * Line shape class. The line shape is along the x direction, and stretches from [-length/2, 0] to [length/2,0]. - * @class Line - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Number} [options.length=1] The total length of the line - * @extends Shape - * @constructor - */ -function Line(options){ - if(typeof(arguments[0]) === 'number'){ - options = { - length: arguments[0] - }; - console.warn('The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })'); - } - options = options || {}; - - /** - * Length of this line - * @property {Number} length - * @default 1 - */ - this.length = options.length || 1; - - options.type = Shape.LINE; - Shape.call(this, options); -} -Line.prototype = new Shape(); -Line.prototype.constructor = Line; - -Line.prototype.computeMomentOfInertia = function(mass){ - return mass * Math.pow(this.length,2) / 12; -}; - -Line.prototype.updateBoundingRadius = function(){ - this.boundingRadius = this.length/2; -}; - -var points = [vec2.create(),vec2.create()]; - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Line.prototype.computeAABB = function(out, position, angle){ - var l2 = this.length / 2; - vec2.set(points[0], -l2, 0); - vec2.set(points[1], l2, 0); - out.setFromPoints(points,position,angle,0); -}; - -var raycast_hitPoint = vec2.create(); -var raycast_normal = vec2.create(); -var raycast_l0 = vec2.create(); -var raycast_l1 = vec2.create(); -var raycast_unit_y = vec2.fromValues(0,1); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {number} angle - * @param {array} position - */ -Line.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - - var l0 = raycast_l0; - var l1 = raycast_l1; - - // get start and end of the line - var halfLen = this.length / 2; - vec2.set(l0, -halfLen, 0); - vec2.set(l1, halfLen, 0); - vec2.toGlobalFrame(l0, l0, position, angle); - vec2.toGlobalFrame(l1, l1, position, angle); - - var fraction = vec2.getLineSegmentsIntersectionFraction(l0, l1, from, to); - if(fraction >= 0){ - var normal = raycast_normal; - vec2.rotate(normal, raycast_unit_y, angle); // todo: this should depend on which side the ray comes from - ray.reportIntersection(result, fraction, normal, -1); - } -}; -},{"../math/vec2":30,"./Shape":45}],43:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Particle; - -/** - * Particle shape class. - * @class Particle - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @extends Shape - */ -function Particle(options){ - options = options || {}; - options.type = Shape.PARTICLE; - Shape.call(this, options); -} -Particle.prototype = new Shape(); -Particle.prototype.constructor = Particle; - -Particle.prototype.computeMomentOfInertia = function(mass){ - return 0; // Can't rotate a particle -}; - -Particle.prototype.updateBoundingRadius = function(){ - this.boundingRadius = 0; -}; - -/** - * @method computeAABB - * @param {AABB} out - * @param {Array} position - * @param {Number} angle - */ -Particle.prototype.computeAABB = function(out, position, angle){ - vec2.copy(out.lowerBound, position); - vec2.copy(out.upperBound, position); -}; - -},{"../math/vec2":30,"./Shape":45}],44:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2') -, Utils = _dereq_('../utils/Utils'); - -module.exports = Plane; - -/** - * Plane shape class. The plane is facing in the Y direction. - * @class Plane - * @extends Shape - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - */ -function Plane(options){ - options = options || {}; - options.type = Shape.PLANE; - Shape.call(this, options); -} -Plane.prototype = new Shape(); -Plane.prototype.constructor = Plane; - -/** - * Compute moment of inertia - * @method computeMomentOfInertia - */ -Plane.prototype.computeMomentOfInertia = function(mass){ - return 0; // Plane is infinite. The inertia should therefore be infinty but by convention we set 0 here -}; - -/** - * Update the bounding radius - * @method updateBoundingRadius - */ -Plane.prototype.updateBoundingRadius = function(){ - this.boundingRadius = Number.MAX_VALUE; -}; - -/** - * @method computeAABB - * @param {AABB} out - * @param {Array} position - * @param {Number} angle - */ -Plane.prototype.computeAABB = function(out, position, angle){ - var a = angle % (2 * Math.PI); - var set = vec2.set; - var max = Number.MAX_VALUE; - var lowerBound = out.lowerBound; - var upperBound = out.upperBound; - - if(a === 0){ - // y goes from -inf to 0 - set(lowerBound, -max, -max); - set(upperBound, max, 0); - - } else if(a === Math.PI / 2){ - - // x goes from 0 to inf - set(lowerBound, 0, -max); - set(upperBound, max, max); - - } else if(a === Math.PI){ - - // y goes from 0 to inf - set(lowerBound, -max, 0); - set(upperBound, max, max); - - } else if(a === 3*Math.PI/2){ - - // x goes from -inf to 0 - set(lowerBound, -max, -max); - set(upperBound, 0, max); - - } else { - - // Set max bounds - set(lowerBound, -max, -max); - set(upperBound, max, max); - } - - vec2.add(lowerBound, lowerBound, position); - vec2.add(upperBound, upperBound, position); -}; - -Plane.prototype.updateArea = function(){ - this.area = Number.MAX_VALUE; -}; - -var intersectPlane_planePointToFrom = vec2.create(); -var intersectPlane_dir_scaled_with_t = vec2.create(); -var intersectPlane_hitPoint = vec2.create(); -var intersectPlane_normal = vec2.create(); -var intersectPlane_len = vec2.create(); - -/** - * @method raycast - * @param {RayResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Plane.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - var direction = ray.direction; - var planePointToFrom = intersectPlane_planePointToFrom; - var dir_scaled_with_t = intersectPlane_dir_scaled_with_t; - var hitPoint = intersectPlane_hitPoint; - var normal = intersectPlane_normal; - var len = intersectPlane_len; - - // Get plane normal - vec2.set(normal, 0, 1); - vec2.rotate(normal, normal, angle); - - vec2.sub(len, from, position); - var planeToFrom = vec2.dot(len, normal); - vec2.sub(len, to, position); - var planeToTo = vec2.dot(len, normal); - - if(planeToFrom * planeToTo > 0){ - // "from" and "to" are on the same side of the plane... bail out - return; - } - - if(vec2.squaredDistance(from, to) < planeToFrom * planeToFrom){ - return; - } - - var n_dot_dir = vec2.dot(normal, direction); - - vec2.sub(planePointToFrom, from, position); - var t = -vec2.dot(normal, planePointToFrom) / n_dot_dir / ray.length; - - ray.reportIntersection(result, t, normal, -1); -}; -},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],45:[function(_dereq_,module,exports){ -module.exports = Shape; - -var vec2 = _dereq_('../math/vec2'); - -/** - * Base class for shapes. - * @class Shape - * @constructor - * @param {object} [options] - * @param {array} [options.position] - * @param {number} [options.angle=0] - * @param {number} [options.collisionGroup=1] - * @param {number} [options.collisionMask=1] - * @param {boolean} [options.sensor=false] - * @param {boolean} [options.collisionResponse=true] - * @param {object} [options.type=0] - */ -function Shape(options){ - options = options || {}; - - /** - * The body this shape is attached to. A shape can only be attached to a single body. - * @property {Body} body - */ - this.body = null; - - /** - * Body-local position of the shape. - * @property {Array} position - */ - this.position = vec2.fromValues(0,0); - if(options.position){ - vec2.copy(this.position, options.position); - } - - /** - * Body-local angle of the shape. - * @property {number} angle - */ - this.angle = options.angle || 0; - - /** - * The type of the shape. One of: - * - * * {{#crossLink "Shape/CIRCLE:property"}}Shape.CIRCLE{{/crossLink}} - * * {{#crossLink "Shape/PARTICLE:property"}}Shape.PARTICLE{{/crossLink}} - * * {{#crossLink "Shape/PLANE:property"}}Shape.PLANE{{/crossLink}} - * * {{#crossLink "Shape/CONVEX:property"}}Shape.CONVEX{{/crossLink}} - * * {{#crossLink "Shape/LINE:property"}}Shape.LINE{{/crossLink}} - * * {{#crossLink "Shape/BOX:property"}}Shape.BOX{{/crossLink}} - * * {{#crossLink "Shape/CAPSULE:property"}}Shape.CAPSULE{{/crossLink}} - * * {{#crossLink "Shape/HEIGHTFIELD:property"}}Shape.HEIGHTFIELD{{/crossLink}} - * - * @property {number} type - */ - this.type = options.type || 0; - - /** - * Shape object identifier. - * @type {Number} - * @property id - */ - this.id = Shape.idCounter++; - - /** - * Bounding circle radius of this shape - * @property boundingRadius - * @type {Number} - */ - this.boundingRadius = 0; - - /** - * Collision group that this shape belongs to (bit mask). See this tutorial. - * @property collisionGroup - * @type {Number} - * @example - * // Setup bits for each available group - * var PLAYER = Math.pow(2,0), - * ENEMY = Math.pow(2,1), - * GROUND = Math.pow(2,2) - * - * // Put shapes into their groups - * player1Shape.collisionGroup = PLAYER; - * player2Shape.collisionGroup = PLAYER; - * enemyShape .collisionGroup = ENEMY; - * groundShape .collisionGroup = GROUND; - * - * // Assign groups that each shape collide with. - * // Note that the players can collide with ground and enemies, but not with other players. - * player1Shape.collisionMask = ENEMY | GROUND; - * player2Shape.collisionMask = ENEMY | GROUND; - * enemyShape .collisionMask = PLAYER | GROUND; - * groundShape .collisionMask = PLAYER | ENEMY; - * - * @example - * // How collision check is done - * if(shapeA.collisionGroup & shapeB.collisionMask)!=0 && (shapeB.collisionGroup & shapeA.collisionMask)!=0){ - * // The shapes will collide - * } - */ - this.collisionGroup = options.collisionGroup !== undefined ? options.collisionGroup : 1; - - /** - * Whether to produce contact forces when in contact with other bodies. Note that contacts will be generated, but they will be disabled. That means that this shape will move through other body shapes, but it will still trigger contact events, etc. - * @property {Boolean} collisionResponse - */ - this.collisionResponse = options.collisionResponse !== undefined ? options.collisionResponse : true; - - /** - * Collision mask of this shape. See .collisionGroup. - * @property collisionMask - * @type {Number} - */ - this.collisionMask = options.collisionMask !== undefined ? options.collisionMask : 1; - - /** - * Material to use in collisions for this Shape. If this is set to null, the world will use default material properties instead. - * @property material - * @type {Material} - */ - this.material = options.material || null; - - /** - * Area of this shape. - * @property area - * @type {Number} - */ - this.area = 0; - - /** - * Set to true if you want this shape to be a sensor. A sensor does not generate contacts, but it still reports contact events. This is good if you want to know if a shape is overlapping another shape, without them generating contacts. - * @property {Boolean} sensor - */ - this.sensor = options.sensor !== undefined ? options.sensor : false; - - if(this.type){ - this.updateBoundingRadius(); - } - - this.updateArea(); -} - -Shape.idCounter = 0; - -/** - * @static - * @property {Number} CIRCLE - */ -Shape.CIRCLE = 1; - -/** - * @static - * @property {Number} PARTICLE - */ -Shape.PARTICLE = 2; - -/** - * @static - * @property {Number} PLANE - */ -Shape.PLANE = 4; - -/** - * @static - * @property {Number} CONVEX - */ -Shape.CONVEX = 8; - -/** - * @static - * @property {Number} LINE - */ -Shape.LINE = 16; - -/** - * @static - * @property {Number} BOX - */ -Shape.BOX = 32; - -Object.defineProperty(Shape, 'RECTANGLE', { - get: function() { - console.warn('Shape.RECTANGLE is deprecated, use Shape.BOX instead.'); - return Shape.BOX; - } -}); - -/** - * @static - * @property {Number} CAPSULE - */ -Shape.CAPSULE = 64; - -/** - * @static - * @property {Number} HEIGHTFIELD - */ -Shape.HEIGHTFIELD = 128; - -/** - * Should return the moment of inertia around the Z axis of the body given the total mass. See Wikipedia's list of moments of inertia. - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} If the inertia is infinity or if the object simply isn't possible to rotate, return 0. - */ -Shape.prototype.computeMomentOfInertia = function(mass){}; - -/** - * Returns the bounding circle radius of this shape. - * @method updateBoundingRadius - * @return {Number} - */ -Shape.prototype.updateBoundingRadius = function(){}; - -/** - * Update the .area property of the shape. - * @method updateArea - */ -Shape.prototype.updateArea = function(){ - // To be implemented in all subclasses -}; - -/** - * Compute the world axis-aligned bounding box (AABB) of this shape. - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position World position of the shape. - * @param {Number} angle World angle of the shape. - */ -Shape.prototype.computeAABB = function(out, position, angle){ - // To be implemented in each subclass -}; - -/** - * Perform raycasting on this shape. - * @method raycast - * @param {RayResult} result Where to store the resulting data. - * @param {Ray} ray The Ray that you want to use for raycasting. - * @param {array} position World position of the shape (the .position property will be ignored). - * @param {number} angle World angle of the shape (the .angle property will be ignored). - */ -Shape.prototype.raycast = function(result, ray, position, angle){ - // To be implemented in each subclass -}; -},{"../math/vec2":30}],46:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Solver = _dereq_('./Solver') -, Utils = _dereq_('../utils/Utils') -, FrictionEquation = _dereq_('../equations/FrictionEquation'); - -module.exports = GSSolver; - -/** - * Iterative Gauss-Seidel constraint equation solver. - * - * @class GSSolver - * @constructor - * @extends Solver - * @param {Object} [options] - * @param {Number} [options.iterations=10] - * @param {Number} [options.tolerance=0] - */ -function GSSolver(options){ - Solver.call(this,options,Solver.GS); - options = options || {}; - - /** - * The max number of iterations to do when solving. More gives better results, but is more expensive. - * @property iterations - * @type {Number} - */ - this.iterations = options.iterations || 10; - - /** - * The error tolerance, per constraint. If the total error is below this limit, the solver will stop iterating. Set to zero for as good solution as possible, but to something larger than zero to make computations faster. - * @property tolerance - * @type {Number} - * @default 1e-7 - */ - this.tolerance = options.tolerance || 1e-7; - - this.arrayStep = 30; - this.lambda = new Utils.ARRAY_TYPE(this.arrayStep); - this.Bs = new Utils.ARRAY_TYPE(this.arrayStep); - this.invCs = new Utils.ARRAY_TYPE(this.arrayStep); - - /** - * Set to true to set all right hand side terms to zero when solving. Can be handy for a few applications. - * @property useZeroRHS - * @type {Boolean} - */ - this.useZeroRHS = false; - - /** - * Number of solver iterations that are done to approximate normal forces. When these iterations are done, friction force will be computed from the contact normal forces. These friction forces will override any other friction forces set from the World for example. - * The solver will use less iterations if the solution is below the .tolerance. - * @property frictionIterations - * @type {Number} - */ - this.frictionIterations = 0; - - /** - * The number of iterations that were made during the last solve. If .tolerance is zero, this value will always be equal to .iterations, but if .tolerance is larger than zero, and the solver can quit early, then this number will be somewhere between 1 and .iterations. - * @property {Number} usedIterations - */ - this.usedIterations = 0; -} -GSSolver.prototype = new Solver(); -GSSolver.prototype.constructor = GSSolver; - -function setArrayZero(array){ - var l = array.length; - while(l--){ - array[l] = +0.0; - } -} - -/** - * Solve the system of equations - * @method solve - * @param {Number} h Time step - * @param {World} world World to solve - */ -GSSolver.prototype.solve = function(h, world){ - - this.sortEquations(); - - var iter = 0, - maxIter = this.iterations, - maxFrictionIter = this.frictionIterations, - equations = this.equations, - Neq = equations.length, - tolSquared = Math.pow(this.tolerance*Neq, 2), - bodies = world.bodies, - Nbodies = world.bodies.length, - add = vec2.add, - set = vec2.set, - useZeroRHS = this.useZeroRHS, - lambda = this.lambda; - - this.usedIterations = 0; - - if(Neq){ - for(var i=0; i!==Nbodies; i++){ - var b = bodies[i]; - - // Update solve mass - b.updateSolveMassProperties(); - } - } - - // Things that does not change during iteration can be computed once - if(lambda.length < Neq){ - lambda = this.lambda = new Utils.ARRAY_TYPE(Neq + this.arrayStep); - this.Bs = new Utils.ARRAY_TYPE(Neq + this.arrayStep); - this.invCs = new Utils.ARRAY_TYPE(Neq + this.arrayStep); - } - setArrayZero(lambda); - var invCs = this.invCs, - Bs = this.Bs, - lambda = this.lambda; - - for(var i=0; i!==equations.length; i++){ - var c = equations[i]; - if(c.timeStep !== h || c.needsUpdate){ - c.timeStep = h; - c.update(); - } - Bs[i] = c.computeB(c.a,c.b,h); - invCs[i] = c.computeInvC(c.epsilon); - } - - var q, B, c, deltalambdaTot,i,j; - - if(Neq !== 0){ - - for(i=0; i!==Nbodies; i++){ - var b = bodies[i]; - - // Reset vlambda - b.resetConstraintVelocity(); - } - - if(maxFrictionIter){ - // Iterate over contact equations to get normal forces - for(iter=0; iter!==maxFrictionIter; iter++){ - - // Accumulate the total error for each iteration. - deltalambdaTot = 0.0; - - for(j=0; j!==Neq; j++){ - c = equations[j]; - - var deltalambda = GSSolver.iterateEquation(j,c,c.epsilon,Bs,invCs,lambda,useZeroRHS,h,iter); - deltalambdaTot += Math.abs(deltalambda); - } - - this.usedIterations++; - - // If the total error is small enough - stop iterate - if(deltalambdaTot*deltalambdaTot <= tolSquared){ - break; - } - } - - GSSolver.updateMultipliers(equations, lambda, 1/h); - - // Set computed friction force - for(j=0; j!==Neq; j++){ - var eq = equations[j]; - if(eq instanceof FrictionEquation){ - var f = 0.0; - for(var k=0; k!==eq.contactEquations.length; k++){ - f += eq.contactEquations[k].multiplier; - } - f *= eq.frictionCoefficient / eq.contactEquations.length; - eq.maxForce = f; - eq.minForce = -f; - } - } - } - - // Iterate over all equations - for(iter=0; iter!==maxIter; iter++){ - - // Accumulate the total error for each iteration. - deltalambdaTot = 0.0; - - for(j=0; j!==Neq; j++){ - c = equations[j]; - - var deltalambda = GSSolver.iterateEquation(j,c,c.epsilon,Bs,invCs,lambda,useZeroRHS,h,iter); - deltalambdaTot += Math.abs(deltalambda); - } - - this.usedIterations++; - - // If the total error is small enough - stop iterate - if(deltalambdaTot*deltalambdaTot <= tolSquared){ - break; - } - } - - // Add result to velocity - for(i=0; i!==Nbodies; i++){ - bodies[i].addConstraintVelocity(); - } - - GSSolver.updateMultipliers(equations, lambda, 1/h); - } -}; - -// Sets the .multiplier property of each equation -GSSolver.updateMultipliers = function(equations, lambda, invDt){ - // Set the .multiplier property of each equation - var l = equations.length; - while(l--){ - equations[l].multiplier = lambda[l] * invDt; - } -}; - -GSSolver.iterateEquation = function(j,eq,eps,Bs,invCs,lambda,useZeroRHS,dt,iter){ - // Compute iteration - var B = Bs[j], - invC = invCs[j], - lambdaj = lambda[j], - GWlambda = eq.computeGWlambda(); - - var maxForce = eq.maxForce, - minForce = eq.minForce; - - if(useZeroRHS){ - B = 0; - } - - var deltalambda = invC * ( B - GWlambda - eps * lambdaj ); - - // Clamp if we are not within the min/max interval - var lambdaj_plus_deltalambda = lambdaj + deltalambda; - if(lambdaj_plus_deltalambda < minForce*dt){ - deltalambda = minForce*dt - lambdaj; - } else if(lambdaj_plus_deltalambda > maxForce*dt){ - deltalambda = maxForce*dt - lambdaj; - } - lambda[j] += deltalambda; - eq.addToWlambda(deltalambda); - - return deltalambda; -}; - -},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(_dereq_,module,exports){ -var Utils = _dereq_('../utils/Utils') -, EventEmitter = _dereq_('../events/EventEmitter'); - -module.exports = Solver; - -/** - * Base class for constraint solvers. - * @class Solver - * @constructor - * @extends EventEmitter - */ -function Solver(options,type){ - options = options || {}; - - EventEmitter.call(this); - - this.type = type; - - /** - * Current equations in the solver. - * - * @property equations - * @type {Array} - */ - this.equations = []; - - /** - * Function that is used to sort all equations before each solve. - * @property equationSortFunction - * @type {function|boolean} - */ - this.equationSortFunction = options.equationSortFunction || false; -} -Solver.prototype = new EventEmitter(); -Solver.prototype.constructor = Solver; - -/** - * Method to be implemented in each subclass - * @method solve - * @param {Number} dt - * @param {World} world - */ -Solver.prototype.solve = function(dt,world){ - throw new Error("Solver.solve should be implemented by subclasses!"); -}; - -var mockWorld = {bodies:[]}; - -/** - * Solves all constraints in an island. - * @method solveIsland - * @param {Number} dt - * @param {Island} island - */ -Solver.prototype.solveIsland = function(dt,island){ - - this.removeAllEquations(); - - if(island.equations.length){ - // Add equations to solver - this.addEquations(island.equations); - mockWorld.bodies.length = 0; - island.getBodies(mockWorld.bodies); - - // Solve - if(mockWorld.bodies.length){ - this.solve(dt,mockWorld); - } - } -}; - -/** - * Sort all equations using the .equationSortFunction. Should be called by subclasses before solving. - * @method sortEquations - */ -Solver.prototype.sortEquations = function(){ - if(this.equationSortFunction){ - this.equations.sort(this.equationSortFunction); - } -}; - -/** - * Add an equation to be solved. - * - * @method addEquation - * @param {Equation} eq - */ -Solver.prototype.addEquation = function(eq){ - if(eq.enabled){ - this.equations.push(eq); - } -}; - -/** - * Add equations. Same as .addEquation, but this time the argument is an array of Equations - * - * @method addEquations - * @param {Array} eqs - */ -Solver.prototype.addEquations = function(eqs){ - //Utils.appendArray(this.equations,eqs); - for(var i=0, N=eqs.length; i!==N; i++){ - var eq = eqs[i]; - if(eq.enabled){ - this.equations.push(eq); - } - } -}; - -/** - * Remove an equation. - * - * @method removeEquation - * @param {Equation} eq - */ -Solver.prototype.removeEquation = function(eq){ - var i = this.equations.indexOf(eq); - if(i !== -1){ - this.equations.splice(i,1); - } -}; - -/** - * Remove all currently added equations. - * - * @method removeAllEquations - */ -Solver.prototype.removeAllEquations = function(){ - this.equations.length=0; -}; - -Solver.GS = 1; -Solver.ISLAND = 2; - -},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(_dereq_,module,exports){ -var ContactEquation = _dereq_('../equations/ContactEquation'); -var Pool = _dereq_('./Pool'); - -module.exports = ContactEquationPool; - -/** - * @class - */ -function ContactEquationPool() { - Pool.apply(this, arguments); -} -ContactEquationPool.prototype = new Pool(); -ContactEquationPool.prototype.constructor = ContactEquationPool; - -/** - * @method create - * @return {ContactEquation} - */ -ContactEquationPool.prototype.create = function () { - return new ContactEquation(); -}; - -/** - * @method destroy - * @param {ContactEquation} equation - * @return {ContactEquationPool} - */ -ContactEquationPool.prototype.destroy = function (equation) { - equation.bodyA = equation.bodyB = null; - return this; -}; - -},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(_dereq_,module,exports){ -var FrictionEquation = _dereq_('../equations/FrictionEquation'); -var Pool = _dereq_('./Pool'); - -module.exports = FrictionEquationPool; - -/** - * @class - */ -function FrictionEquationPool() { - Pool.apply(this, arguments); -} -FrictionEquationPool.prototype = new Pool(); -FrictionEquationPool.prototype.constructor = FrictionEquationPool; - -/** - * @method create - * @return {FrictionEquation} - */ -FrictionEquationPool.prototype.create = function () { - return new FrictionEquation(); -}; - -/** - * @method destroy - * @param {FrictionEquation} equation - * @return {FrictionEquationPool} - */ -FrictionEquationPool.prototype.destroy = function (equation) { - equation.bodyA = equation.bodyB = null; - return this; -}; - -},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(_dereq_,module,exports){ -var IslandNode = _dereq_('../world/IslandNode'); -var Pool = _dereq_('./Pool'); - -module.exports = IslandNodePool; - -/** - * @class - */ -function IslandNodePool() { - Pool.apply(this, arguments); -} -IslandNodePool.prototype = new Pool(); -IslandNodePool.prototype.constructor = IslandNodePool; - -/** - * @method create - * @return {IslandNode} - */ -IslandNodePool.prototype.create = function () { - return new IslandNode(); -}; - -/** - * @method destroy - * @param {IslandNode} node - * @return {IslandNodePool} - */ -IslandNodePool.prototype.destroy = function (node) { - node.reset(); - return this; -}; - -},{"../world/IslandNode":60,"./Pool":55}],51:[function(_dereq_,module,exports){ -var Island = _dereq_('../world/Island'); -var Pool = _dereq_('./Pool'); - -module.exports = IslandPool; - -/** - * @class - */ -function IslandPool() { - Pool.apply(this, arguments); -} -IslandPool.prototype = new Pool(); -IslandPool.prototype.constructor = IslandPool; - -/** - * @method create - * @return {Island} - */ -IslandPool.prototype.create = function () { - return new Island(); -}; - -/** - * @method destroy - * @param {Island} island - * @return {IslandPool} - */ -IslandPool.prototype.destroy = function (island) { - island.reset(); - return this; -}; - -},{"../world/Island":58,"./Pool":55}],52:[function(_dereq_,module,exports){ -var TupleDictionary = _dereq_('./TupleDictionary'); -var OverlapKeeperRecord = _dereq_('./OverlapKeeperRecord'); -var OverlapKeeperRecordPool = _dereq_('./OverlapKeeperRecordPool'); -var Utils = _dereq_('./Utils'); - -module.exports = OverlapKeeper; - -/** - * Keeps track of overlaps in the current state and the last step state. - * @class OverlapKeeper - * @constructor - */ -function OverlapKeeper() { - this.overlappingShapesLastState = new TupleDictionary(); - this.overlappingShapesCurrentState = new TupleDictionary(); - this.recordPool = new OverlapKeeperRecordPool({ size: 16 }); - this.tmpDict = new TupleDictionary(); - this.tmpArray1 = []; -} - -/** - * Ticks one step forward in time. This will move the current overlap state to the "old" overlap state, and create a new one as current. - * @method tick - */ -OverlapKeeper.prototype.tick = function() { - var last = this.overlappingShapesLastState; - var current = this.overlappingShapesCurrentState; - - // Save old objects into pool - var l = last.keys.length; - while(l--){ - var key = last.keys[l]; - var lastObject = last.getByKey(key); - var currentObject = current.getByKey(key); - if(lastObject){ - // The record is only used in the "last" dict, and will be removed. We might as well pool it. - this.recordPool.release(lastObject); - } - } - - // Clear last object - last.reset(); - - // Transfer from new object to old - last.copy(current); - - // Clear current object - current.reset(); -}; - -/** - * @method setOverlapping - * @param {Body} bodyA - * @param {Body} shapeA - * @param {Body} bodyB - * @param {Body} shapeB - */ -OverlapKeeper.prototype.setOverlapping = function(bodyA, shapeA, bodyB, shapeB) { - var last = this.overlappingShapesLastState; - var current = this.overlappingShapesCurrentState; - - // Store current contact state - if(!current.get(shapeA.id, shapeB.id)){ - var data = this.recordPool.get(); - data.set(bodyA, shapeA, bodyB, shapeB); - current.set(shapeA.id, shapeB.id, data); - } -}; - -OverlapKeeper.prototype.getNewOverlaps = function(result){ - return this.getDiff(this.overlappingShapesLastState, this.overlappingShapesCurrentState, result); -}; - -OverlapKeeper.prototype.getEndOverlaps = function(result){ - return this.getDiff(this.overlappingShapesCurrentState, this.overlappingShapesLastState, result); -}; - -/** - * Checks if two bodies are currently overlapping. - * @method bodiesAreOverlapping - * @param {Body} bodyA - * @param {Body} bodyB - * @return {boolean} - */ -OverlapKeeper.prototype.bodiesAreOverlapping = function(bodyA, bodyB){ - var current = this.overlappingShapesCurrentState; - var l = current.keys.length; - while(l--){ - var key = current.keys[l]; - var data = current.data[key]; - if((data.bodyA === bodyA && data.bodyB === bodyB) || data.bodyA === bodyB && data.bodyB === bodyA){ - return true; - } - } - return false; -}; - -OverlapKeeper.prototype.getDiff = function(dictA, dictB, result){ - var result = result || []; - var last = dictA; - var current = dictB; - - result.length = 0; - - var l = current.keys.length; - while(l--){ - var key = current.keys[l]; - var data = current.data[key]; - - if(!data){ - throw new Error('Key '+key+' had no data!'); - } - - var lastData = last.data[key]; - if(!lastData){ - // Not overlapping in last state, but in current. - result.push(data); - } - } - - return result; -}; - -OverlapKeeper.prototype.isNewOverlap = function(shapeA, shapeB){ - var idA = shapeA.id|0, - idB = shapeB.id|0; - var last = this.overlappingShapesLastState; - var current = this.overlappingShapesCurrentState; - // Not in last but in new - return !!!last.get(idA, idB) && !!current.get(idA, idB); -}; - -OverlapKeeper.prototype.getNewBodyOverlaps = function(result){ - this.tmpArray1.length = 0; - var overlaps = this.getNewOverlaps(this.tmpArray1); - return this.getBodyDiff(overlaps, result); -}; - -OverlapKeeper.prototype.getEndBodyOverlaps = function(result){ - this.tmpArray1.length = 0; - var overlaps = this.getEndOverlaps(this.tmpArray1); - return this.getBodyDiff(overlaps, result); -}; - -OverlapKeeper.prototype.getBodyDiff = function(overlaps, result){ - result = result || []; - var accumulator = this.tmpDict; - - var l = overlaps.length; - - while(l--){ - var data = overlaps[l]; - - // Since we use body id's for the accumulator, these will be a subset of the original one - accumulator.set(data.bodyA.id|0, data.bodyB.id|0, data); - } - - l = accumulator.keys.length; - while(l--){ - var data = accumulator.getByKey(accumulator.keys[l]); - if(data){ - result.push(data.bodyA, data.bodyB); - } - } - - accumulator.reset(); - - return result; -}; - -},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(_dereq_,module,exports){ -module.exports = OverlapKeeperRecord; - -/** - * Overlap data container for the OverlapKeeper - * @class OverlapKeeperRecord - * @constructor - * @param {Body} bodyA - * @param {Shape} shapeA - * @param {Body} bodyB - * @param {Shape} shapeB - */ -function OverlapKeeperRecord(bodyA, shapeA, bodyB, shapeB){ - /** - * @property {Shape} shapeA - */ - this.shapeA = shapeA; - /** - * @property {Shape} shapeB - */ - this.shapeB = shapeB; - /** - * @property {Body} bodyA - */ - this.bodyA = bodyA; - /** - * @property {Body} bodyB - */ - this.bodyB = bodyB; -} - -/** - * Set the data for the record - * @method set - * @param {Body} bodyA - * @param {Shape} shapeA - * @param {Body} bodyB - * @param {Shape} shapeB - */ -OverlapKeeperRecord.prototype.set = function(bodyA, shapeA, bodyB, shapeB){ - OverlapKeeperRecord.call(this, bodyA, shapeA, bodyB, shapeB); -}; - -},{}],54:[function(_dereq_,module,exports){ -var OverlapKeeperRecord = _dereq_('./OverlapKeeperRecord'); -var Pool = _dereq_('./Pool'); - -module.exports = OverlapKeeperRecordPool; - -/** - * @class - */ -function OverlapKeeperRecordPool() { - Pool.apply(this, arguments); -} -OverlapKeeperRecordPool.prototype = new Pool(); -OverlapKeeperRecordPool.prototype.constructor = OverlapKeeperRecordPool; - -/** - * @method create - * @return {OverlapKeeperRecord} - */ -OverlapKeeperRecordPool.prototype.create = function () { - return new OverlapKeeperRecord(); -}; - -/** - * @method destroy - * @param {OverlapKeeperRecord} record - * @return {OverlapKeeperRecordPool} - */ -OverlapKeeperRecordPool.prototype.destroy = function (record) { - record.bodyA = record.bodyB = record.shapeA = record.shapeB = null; - return this; -}; - -},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(_dereq_,module,exports){ -module.exports = Pool; - -/** - * @class Object pooling utility. - */ -function Pool(options) { - options = options || {}; - - /** - * @property {Array} objects - * @type {Array} - */ - this.objects = []; - - if(options.size !== undefined){ - this.resize(options.size); - } -} - -/** - * @method resize - * @param {number} size - * @return {Pool} Self, for chaining - */ -Pool.prototype.resize = function (size) { - var objects = this.objects; - - while (objects.length > size) { - objects.pop(); - } - - while (objects.length < size) { - objects.push(this.create()); - } - - return this; -}; - -/** - * Get an object from the pool or create a new instance. - * @method get - * @return {Object} - */ -Pool.prototype.get = function () { - var objects = this.objects; - return objects.length ? objects.pop() : this.create(); -}; - -/** - * Clean up and put the object back into the pool for later use. - * @method release - * @param {Object} object - * @return {Pool} Self for chaining - */ -Pool.prototype.release = function (object) { - this.destroy(object); - this.objects.push(object); - return this; -}; - -},{}],56:[function(_dereq_,module,exports){ -var Utils = _dereq_('./Utils'); - -module.exports = TupleDictionary; - -/** - * @class TupleDictionary - * @constructor - */ -function TupleDictionary() { - - /** - * The data storage - * @property data - * @type {Object} - */ - this.data = {}; - - /** - * Keys that are currently used. - * @property {Array} keys - */ - this.keys = []; -} - -/** - * Generate a key given two integers - * @method getKey - * @param {number} i - * @param {number} j - * @return {string} - */ -TupleDictionary.prototype.getKey = function(id1, id2) { - id1 = id1|0; - id2 = id2|0; - - if ( (id1|0) === (id2|0) ){ - return -1; - } - - // valid for values < 2^16 - return ((id1|0) > (id2|0) ? - (id1 << 16) | (id2 & 0xFFFF) : - (id2 << 16) | (id1 & 0xFFFF))|0 - ; -}; - -/** - * @method getByKey - * @param {Number} key - * @return {Object} - */ -TupleDictionary.prototype.getByKey = function(key) { - key = key|0; - return this.data[key]; -}; - -/** - * @method get - * @param {Number} i - * @param {Number} j - * @return {Number} - */ -TupleDictionary.prototype.get = function(i, j) { - return this.data[this.getKey(i, j)]; -}; - -/** - * Set a value. - * @method set - * @param {Number} i - * @param {Number} j - * @param {Number} value - */ -TupleDictionary.prototype.set = function(i, j, value) { - if(!value){ - throw new Error("No data!"); - } - - var key = this.getKey(i, j); - - // Check if key already exists - if(!this.data[key]){ - this.keys.push(key); - } - - this.data[key] = value; - - return key; -}; - -/** - * Remove all data. - * @method reset - */ -TupleDictionary.prototype.reset = function() { - var data = this.data, - keys = this.keys; - - var l = keys.length; - while(l--) { - delete data[keys[l]]; - } - - keys.length = 0; -}; - -/** - * Copy another TupleDictionary. Note that all data in this dictionary will be removed. - * @method copy - * @param {TupleDictionary} dict The TupleDictionary to copy into this one. - */ -TupleDictionary.prototype.copy = function(dict) { - this.reset(); - Utils.appendArray(this.keys, dict.keys); - var l = dict.keys.length; - while(l--){ - var key = dict.keys[l]; - this.data[key] = dict.data[key]; - } -}; - -},{"./Utils":57}],57:[function(_dereq_,module,exports){ -/* global P2_ARRAY_TYPE */ - -module.exports = Utils; - -/** - * Misc utility functions - * @class Utils - * @constructor - */ -function Utils(){} - -/** - * Append the values in array b to the array a. See this for an explanation. - * @method appendArray - * @static - * @param {Array} a - * @param {Array} b - */ -Utils.appendArray = function(a,b){ - if (b.length < 150000) { - a.push.apply(a, b); - } else { - for (var i = 0, len = b.length; i !== len; ++i) { - a.push(b[i]); - } - } -}; - -/** - * Garbage free Array.splice(). Does not allocate a new array. - * @method splice - * @static - * @param {Array} array - * @param {Number} index - * @param {Number} howmany - */ -Utils.splice = function(array,index,howmany){ - howmany = howmany || 1; - for (var i=index, len=array.length-howmany; i < len; i++){ - array[i] = array[i + howmany]; - } - array.length = len; -}; - -/** - * The array type to use for internal numeric computations throughout the library. Float32Array is used if it is available, but falls back on Array. If you want to set array type manually, inject it via the global variable P2_ARRAY_TYPE. See example below. - * @static - * @property {function} ARRAY_TYPE - * @example - * - * - */ -if(typeof P2_ARRAY_TYPE !== 'undefined') { - Utils.ARRAY_TYPE = P2_ARRAY_TYPE; -} else if (typeof Float32Array !== 'undefined'){ - Utils.ARRAY_TYPE = Float32Array; -} else { - Utils.ARRAY_TYPE = Array; -} - -/** - * Extend an object with the properties of another - * @static - * @method extend - * @param {object} a - * @param {object} b - */ -Utils.extend = function(a,b){ - for(var key in b){ - a[key] = b[key]; - } -}; - -/** - * Extend an options object with default values. - * @static - * @method defaults - * @param {object} options The options object. May be falsy: in this case, a new object is created and returned. - * @param {object} defaults An object containing default values. - * @return {object} The modified options object. - */ -Utils.defaults = function(options, defaults){ - options = options || {}; - for(var key in defaults){ - if(!(key in options)){ - options[key] = defaults[key]; - } - } - return options; -}; - -},{}],58:[function(_dereq_,module,exports){ -var Body = _dereq_('../objects/Body'); - -module.exports = Island; - -/** - * An island of bodies connected with equations. - * @class Island - * @constructor - */ -function Island(){ - - /** - * Current equations in this island. - * @property equations - * @type {Array} - */ - this.equations = []; - - /** - * Current bodies in this island. - * @property bodies - * @type {Array} - */ - this.bodies = []; -} - -/** - * Clean this island from bodies and equations. - * @method reset - */ -Island.prototype.reset = function(){ - this.equations.length = this.bodies.length = 0; -}; - -var bodyIds = []; - -/** - * Get all unique bodies in this island. - * @method getBodies - * @return {Array} An array of Body - */ -Island.prototype.getBodies = function(result){ - var bodies = result || [], - eqs = this.equations; - bodyIds.length = 0; - for(var i=0; i!==eqs.length; i++){ - var eq = eqs[i]; - if(bodyIds.indexOf(eq.bodyA.id)===-1){ - bodies.push(eq.bodyA); - bodyIds.push(eq.bodyA.id); - } - if(bodyIds.indexOf(eq.bodyB.id)===-1){ - bodies.push(eq.bodyB); - bodyIds.push(eq.bodyB.id); - } - } - return bodies; -}; - -/** - * Check if the entire island wants to sleep. - * @method wantsToSleep - * @return {Boolean} - */ -Island.prototype.wantsToSleep = function(){ - for(var i=0; i= dt && substeps < maxSubSteps) { - // Do fixed steps to catch up - this.internalStep(dt); - this.time += dt; - this.accumulator -= dt; - substeps++; - } - - var t = (this.accumulator % dt) / dt; - for(var j=0; j!==this.bodies.length; j++){ - var b = this.bodies[j]; - vec2.lerp(b.interpolatedPosition, b.previousPosition, b.position, t); - b.interpolatedAngle = b.previousAngle + t * (b.angle - b.previousAngle); - } - } -}; - -var endOverlaps = []; - -/** - * Make a fixed step. - * @method internalStep - * @param {number} dt - * @private - */ -World.prototype.internalStep = function(dt){ - this.stepping = true; - - var that = this, - Nsprings = this.springs.length, - springs = this.springs, - bodies = this.bodies, - g = this.gravity, - solver = this.solver, - Nbodies = this.bodies.length, - broadphase = this.broadphase, - np = this.narrowphase, - constraints = this.constraints, - t0, t1, - fhMinv = step_fhMinv, - velodt = step_velodt, - mg = step_mg, - scale = vec2.scale, - add = vec2.add, - rotate = vec2.rotate, - islandManager = this.islandManager; - - this.overlapKeeper.tick(); - - this.lastTimeStep = dt; - - // Update approximate friction gravity. - if(this.useWorldGravityAsFrictionGravity){ - var gravityLen = vec2.length(this.gravity); - if(!(gravityLen === 0 && this.useFrictionGravityOnZeroGravity)){ - // Nonzero gravity. Use it. - this.frictionGravity = gravityLen; - } - } - - // Add gravity to bodies - if(this.applyGravity){ - for(var i=0; i!==Nbodies; i++){ - var b = bodies[i], - fi = b.force; - if(b.type !== Body.DYNAMIC || b.sleepState === Body.SLEEPING){ - continue; - } - vec2.scale(mg,g,b.mass*b.gravityScale); // F=m*g - add(fi,fi,mg); - } - } - - // Add spring forces - if(this.applySpringForces){ - for(var i=0; i!==Nsprings; i++){ - var s = springs[i]; - s.applyForce(); - } - } - - if(this.applyDamping){ - for(var i=0; i!==Nbodies; i++){ - var b = bodies[i]; - if(b.type === Body.DYNAMIC){ - b.applyDamping(dt); - } - } - } - - // Broadphase - var result = broadphase.getCollisionPairs(this); - - // Remove ignored collision pairs - var ignoredPairs = this.disabledBodyCollisionPairs; - for(var i=ignoredPairs.length-2; i>=0; i-=2){ - for(var j=result.length-2; j>=0; j-=2){ - if( (ignoredPairs[i] === result[j] && ignoredPairs[i+1] === result[j+1]) || - (ignoredPairs[i+1] === result[j] && ignoredPairs[i] === result[j+1])){ - result.splice(j,2); - } - } - } - - // Remove constrained pairs with collideConnected == false - var Nconstraints = constraints.length; - for(i=0; i!==Nconstraints; i++){ - var c = constraints[i]; - if(!c.collideConnected){ - for(var j=result.length-2; j>=0; j-=2){ - if( (c.bodyA === result[j] && c.bodyB === result[j+1]) || - (c.bodyB === result[j] && c.bodyA === result[j+1])){ - result.splice(j,2); - } - } - } - } - - // postBroadphase event - this.postBroadphaseEvent.pairs = result; - this.emit(this.postBroadphaseEvent); - this.postBroadphaseEvent.pairs = null; - - // Narrowphase - np.reset(this); - for(var i=0, Nresults=result.length; i!==Nresults; i+=2){ - var bi = result[i], - bj = result[i+1]; - - // Loop over all shapes of body i - for(var k=0, Nshapesi=bi.shapes.length; k!==Nshapesi; k++){ - var si = bi.shapes[k], - xi = si.position, - ai = si.angle; - - // All shapes of body j - for(var l=0, Nshapesj=bj.shapes.length; l!==Nshapesj; l++){ - var sj = bj.shapes[l], - xj = sj.position, - aj = sj.angle; - - var cm = this.defaultContactMaterial; - if(si.material && sj.material){ - var tmp = this.getContactMaterial(si.material,sj.material); - if(tmp){ - cm = tmp; - } - } - - this.runNarrowphase(np,bi,si,xi,ai,bj,sj,xj,aj,cm,this.frictionGravity); - } - } - } - - // Wake up bodies - for(var i=0; i!==Nbodies; i++){ - var body = bodies[i]; - if(body._wakeUpAfterNarrowphase){ - body.wakeUp(); - body._wakeUpAfterNarrowphase = false; - } - } - - // Emit end overlap events - if(this.has('endContact')){ - this.overlapKeeper.getEndOverlaps(endOverlaps); - var e = this.endContactEvent; - var l = endOverlaps.length; - while(l--){ - var data = endOverlaps[l]; - e.shapeA = data.shapeA; - e.shapeB = data.shapeB; - e.bodyA = data.bodyA; - e.bodyB = data.bodyB; - this.emit(e); - } - endOverlaps.length = 0; - } - - var preSolveEvent = this.preSolveEvent; - preSolveEvent.contactEquations = np.contactEquations; - preSolveEvent.frictionEquations = np.frictionEquations; - this.emit(preSolveEvent); - preSolveEvent.contactEquations = preSolveEvent.frictionEquations = null; - - // update constraint equations - var Nconstraints = constraints.length; - for(i=0; i!==Nconstraints; i++){ - constraints[i].update(); - } - - if(np.contactEquations.length || np.frictionEquations.length || Nconstraints){ - if(this.islandSplit){ - // Split into islands - islandManager.equations.length = 0; - Utils.appendArray(islandManager.equations, np.contactEquations); - Utils.appendArray(islandManager.equations, np.frictionEquations); - for(i=0; i!==Nconstraints; i++){ - Utils.appendArray(islandManager.equations, constraints[i].equations); - } - islandManager.split(this); - - for(var i=0; i!==islandManager.islands.length; i++){ - var island = islandManager.islands[i]; - if(island.equations.length){ - solver.solveIsland(dt,island); - } - } - - } else { - - // Add contact equations to solver - solver.addEquations(np.contactEquations); - solver.addEquations(np.frictionEquations); - - // Add user-defined constraint equations - for(i=0; i!==Nconstraints; i++){ - solver.addEquations(constraints[i].equations); - } - - if(this.solveConstraints){ - solver.solve(dt,this); - } - - solver.removeAllEquations(); - } - } - - // Step forward - for(var i=0; i!==Nbodies; i++){ - var body = bodies[i]; - - // if(body.sleepState !== Body.SLEEPING && body.type !== Body.STATIC){ - body.integrate(dt); - // } - } - - // Reset force - for(var i=0; i!==Nbodies; i++){ - bodies[i].setZeroForce(); - } - - // Emit impact event - if(this.emitImpactEvent && this.has('impact')){ - var ev = this.impactEvent; - for(var i=0; i!==np.contactEquations.length; i++){ - var eq = np.contactEquations[i]; - if(eq.firstImpact){ - ev.bodyA = eq.bodyA; - ev.bodyB = eq.bodyB; - ev.shapeA = eq.shapeA; - ev.shapeB = eq.shapeB; - ev.contactEquation = eq; - this.emit(ev); - } - } - } - - // Sleeping update - if(this.sleepMode === World.BODY_SLEEPING){ - for(i=0; i!==Nbodies; i++){ - bodies[i].sleepTick(this.time, false, dt); - } - } else if(this.sleepMode === World.ISLAND_SLEEPING && this.islandSplit){ - - // Tell all bodies to sleep tick but dont sleep yet - for(i=0; i!==Nbodies; i++){ - bodies[i].sleepTick(this.time, true, dt); - } - - // Sleep islands - for(var i=0; i 0; - np.frictionCoefficient = cm.friction; - var reducedMass; - if(bi.type === Body.STATIC || bi.type === Body.KINEMATIC){ - reducedMass = bj.mass; - } else if(bj.type === Body.STATIC || bj.type === Body.KINEMATIC){ - reducedMass = bi.mass; - } else { - reducedMass = (bi.mass*bj.mass)/(bi.mass+bj.mass); - } - np.slipForce = cm.friction*glen*reducedMass; - np.restitution = cm.restitution; - np.surfaceVelocity = cm.surfaceVelocity; - np.frictionStiffness = cm.frictionStiffness; - np.frictionRelaxation = cm.frictionRelaxation; - np.stiffness = cm.stiffness; - np.relaxation = cm.relaxation; - np.contactSkinSize = cm.contactSkinSize; - np.enabledEquations = bi.collisionResponse && bj.collisionResponse && si.collisionResponse && sj.collisionResponse; - - var resolver = np[si.type | sj.type], - numContacts = 0; - if (resolver) { - var sensor = si.sensor || sj.sensor; - var numFrictionBefore = np.frictionEquations.length; - if (si.type < sj.type) { - numContacts = resolver.call(np, bi,si,xiw,aiw, bj,sj,xjw,ajw, sensor); - } else { - numContacts = resolver.call(np, bj,sj,xjw,ajw, bi,si,xiw,aiw, sensor); - } - var numFrictionEquations = np.frictionEquations.length - numFrictionBefore; - - if(numContacts){ - - if( bi.allowSleep && - bi.type === Body.DYNAMIC && - bi.sleepState === Body.SLEEPING && - bj.sleepState === Body.AWAKE && - bj.type !== Body.STATIC - ){ - var speedSquaredB = vec2.squaredLength(bj.velocity) + Math.pow(bj.angularVelocity,2); - var speedLimitSquaredB = Math.pow(bj.sleepSpeedLimit,2); - if(speedSquaredB >= speedLimitSquaredB*2){ - bi._wakeUpAfterNarrowphase = true; - } - } - - if( bj.allowSleep && - bj.type === Body.DYNAMIC && - bj.sleepState === Body.SLEEPING && - bi.sleepState === Body.AWAKE && - bi.type !== Body.STATIC - ){ - var speedSquaredA = vec2.squaredLength(bi.velocity) + Math.pow(bi.angularVelocity,2); - var speedLimitSquaredA = Math.pow(bi.sleepSpeedLimit,2); - if(speedSquaredA >= speedLimitSquaredA*2){ - bj._wakeUpAfterNarrowphase = true; - } - } - - this.overlapKeeper.setOverlapping(bi, si, bj, sj); - if(this.has('beginContact') && this.overlapKeeper.isNewOverlap(si, sj)){ - - // Report new shape overlap - var e = this.beginContactEvent; - e.shapeA = si; - e.shapeB = sj; - e.bodyA = bi; - e.bodyB = bj; - - // Reset contact equations - e.contactEquations.length = 0; - - if(typeof(numContacts)==="number"){ - for(var i=np.contactEquations.length-numContacts; i 1){ // Why divide by 1? - for(var i=np.frictionEquations.length-numFrictionEquations; i=0; i--){ - this.removeConstraint(cs[i]); - } - - // Remove all bodies - var bodies = this.bodies; - for(var i=bodies.length-1; i>=0; i--){ - this.removeBody(bodies[i]); - } - - // Remove all springs - var springs = this.springs; - for(var i=springs.length-1; i>=0; i--){ - this.removeSpring(springs[i]); - } - - // Remove all contact materials - var cms = this.contactMaterials; - for(var i=cms.length-1; i>=0; i--){ - this.removeContactMaterial(cms[i]); - } - - World.apply(this); -}; - -var hitTest_tmp1 = vec2.create(), - hitTest_zero = vec2.fromValues(0,0), - hitTest_tmp2 = vec2.fromValues(0,0); - -/** - * Test if a world point overlaps bodies - * @method hitTest - * @param {Array} worldPoint Point to use for intersection tests - * @param {Array} bodies A list of objects to check for intersection - * @param {Number} precision Used for matching against particles and lines. Adds some margin to these infinitesimal objects. - * @return {Array} Array of bodies that overlap the point - * @todo Should use an api similar to the raycast function - * @todo Should probably implement a .containsPoint method for all shapes. Would be more efficient - */ -World.prototype.hitTest = function(worldPoint,bodies,precision){ - precision = precision || 0; - - // Create a dummy particle body with a particle shape to test against the bodies - var pb = new Body({ position:worldPoint }), - ps = new Particle(), - px = worldPoint, - pa = 0, - x = hitTest_tmp1, - zero = hitTest_zero, - tmp = hitTest_tmp2; - pb.addShape(ps); - - var n = this.narrowphase, - result = []; - - // Check bodies - for(var i=0, N=bodies.length; i!==N; i++){ - var b = bodies[i]; - - for(var j=0, NS=b.shapes.length; j!==NS; j++){ - var s = b.shapes[j]; - - // Get shape world position + angle - vec2.rotate(x, s.position, b.angle); - vec2.add(x, x, b.position); - var a = s.angle + b.angle; - - if( (s instanceof Circle && n.circleParticle (b,s,x,a, pb,ps,px,pa, true)) || - (s instanceof Convex && n.particleConvex (pb,ps,px,pa, b,s,x,a, true)) || - (s instanceof Plane && n.particlePlane (pb,ps,px,pa, b,s,x,a, true)) || - (s instanceof Capsule && n.particleCapsule (pb,ps,px,pa, b,s,x,a, true)) || - (s instanceof Particle && vec2.squaredLength(vec2.sub(tmp,x,worldPoint)) < precision*precision) - ){ - result.push(b); - } - } - } - - return result; -}; - -/** - * Set the stiffness for all equations and contact materials. - * @method setGlobalStiffness - * @param {Number} stiffness - */ -World.prototype.setGlobalStiffness = function(stiffness){ - - // Set for all constraints - var constraints = this.constraints; - for(var i=0; i !== constraints.length; i++){ - var c = constraints[i]; - for(var j=0; j !== c.equations.length; j++){ - var eq = c.equations[j]; - eq.stiffness = stiffness; - eq.needsUpdate = true; - } - } - - // Set for all contact materials - var contactMaterials = this.contactMaterials; - for(var i=0; i !== contactMaterials.length; i++){ - var c = contactMaterials[i]; - c.stiffness = c.frictionStiffness = stiffness; - } - - // Set for default contact material - var c = this.defaultContactMaterial; - c.stiffness = c.frictionStiffness = stiffness; -}; - -/** - * Set the relaxation for all equations and contact materials. - * @method setGlobalRelaxation - * @param {Number} relaxation - */ -World.prototype.setGlobalRelaxation = function(relaxation){ - - // Set for all constraints - for(var i=0; i !== this.constraints.length; i++){ - var c = this.constraints[i]; - for(var j=0; j !== c.equations.length; j++){ - var eq = c.equations[j]; - eq.relaxation = relaxation; - eq.needsUpdate = true; - } - } - - // Set for all contact materials - for(var i=0; i !== this.contactMaterials.length; i++){ - var c = this.contactMaterials[i]; - c.relaxation = c.frictionRelaxation = relaxation; - } - - // Set for default contact material - var c = this.defaultContactMaterial; - c.relaxation = c.frictionRelaxation = relaxation; -}; - -var tmpAABB = new AABB(); -var tmpArray = []; - -/** - * Ray cast against all bodies in the world. - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @return {boolean} True if any body was hit. - * - * @example - * var ray = new Ray({ - * mode: Ray.CLOSEST, // or ANY - * from: [0, 0], - * to: [10, 0], - * }); - * var result = new RaycastResult(); - * world.raycast(result, ray); - * - * // Get the hit point - * var hitPoint = vec2.create(); - * result.getHitPoint(hitPoint, ray); - * console.log('Hit point: ', hitPoint[0], hitPoint[1], ' at distance ' + result.getHitDistance(ray)); - * - * @example - * var ray = new Ray({ - * mode: Ray.ALL, - * from: [0, 0], - * to: [10, 0], - * callback: function(result){ - * - * // Print some info about the hit - * console.log('Hit body and shape: ', result.body, result.shape); - * - * // Get the hit point - * var hitPoint = vec2.create(); - * result.getHitPoint(hitPoint, ray); - * console.log('Hit point: ', hitPoint[0], hitPoint[1], ' at distance ' + result.getHitDistance(ray)); - * - * // If you are happy with the hits you got this far, you can stop the traversal here: - * result.stop(); - * } - * }); - * var result = new RaycastResult(); - * world.raycast(result, ray); - */ -World.prototype.raycast = function(result, ray){ - - // Get all bodies within the ray AABB - ray.getAABB(tmpAABB); - this.broadphase.aabbQuery(this, tmpAABB, tmpArray); - ray.intersectBodies(result, tmpArray); - tmpArray.length = 0; - - return result.hasHit(); -}; - -},{"../../package.json":6,"../collision/AABB":7,"../collision/Broadphase":8,"../collision/Narrowphase":10,"../collision/Ray":11,"../collision/SAPBroadphase":13,"../constraints/Constraint":14,"../constraints/DistanceConstraint":15,"../constraints/GearConstraint":16,"../constraints/LockConstraint":17,"../constraints/PrismaticConstraint":18,"../constraints/RevoluteConstraint":19,"../events/EventEmitter":26,"../material/ContactMaterial":27,"../material/Material":28,"../math/vec2":30,"../objects/Body":31,"../objects/LinearSpring":32,"../objects/RotationalSpring":33,"../shapes/Capsule":38,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Line":42,"../shapes/Particle":43,"../shapes/Plane":44,"../shapes/Shape":45,"../solver/GSSolver":46,"../solver/Solver":47,"../utils/OverlapKeeper":52,"../utils/Utils":57,"./IslandManager":59}]},{},[36]) -(36) -}); \ No newline at end of file diff --git a/build/p2.map b/build/p2.map deleted file mode 100644 index 703f1d345..000000000 --- a/build/p2.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["p2.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist","3","Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point","4","abs","5","./Polygon","6","name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp","7","AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body","9","NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape","10","Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary","11","Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList","14","Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation","15","DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint","16","GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis","18","PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation","19","RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation","20","./Equation","21","computeB","h","GW","Gq","GiMf","computeGiMf","B","22","ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps","23","FrictionEquation","getSlipForce","24","worldVectorA","worldVectorB","25","26","EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y","31","_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter","32","LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring","33","RotationalSpring","restAngle","34","35","TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint","36","Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World","37","arguments","axes","updateArea","./Convex","./Shape","38","intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1","39","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint","40","isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk","41","key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo","42","raycast_normal","raycast_l0","raycast_l1","raycast_unit_y","43","44","intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir","45","material","sensor","46","GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver","47","equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND","48","destroy","equation","./Pool","49","50","IslandNodePool","IslandNode","../world/IslandNode","51","IslandPool","Island","../world/Island","52","OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils","53","OverlapKeeperRecord","54","record","55","objects","resize","object","56","getKey","dict","57","howmany","P2_ARRAY_TYPE","Float32Array","58","bodyIds","59","IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode","60","61","springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager"],"mappings":"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","file":"p2.min.js"} \ No newline at end of file diff --git a/build/p2.min.js b/build/p2.min.js deleted file mode 100644 index 9a2a670ff..000000000 --- a/build/p2.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Phaser v2.6.1 P2.JS Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ - -!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d)},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0, -this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a)) -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -* -* @overview -* -* Phaser - http://phaser.io -* -* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:20 -* -* By Richard Davey http://www.photonstorm.com @photonstorm -* -* Phaser is a fun, free and fast 2D game framework for making HTML5 games -* for desktop and mobile web browsers, supporting Canvas and WebGL rendering. -* -* Phaser uses Pixi.js for rendering, created by Mat Groves http://matgroves.com @Doormat23 -* Phaser uses p2.js for full-body physics, created by Stefan Hedman https://github.com/schteppe/p2.js @schteppe -* Phaser contains a port of N+ Physics, converted by Richard Davey, original by http://www.metanetsoftware.com -* -* Many thanks to Adam Saltsman (@ADAMATOMIC) for releasing Flixel, from which both Phaser and my love of framework development originate. -* -* Follow development at http://phaser.io and on our forum -* -* "If you want your children to be intelligent, read them fairy tales." -* "If you want them to be more intelligent, read them more fairy tales." -* -- Albert Einstein -*/ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -(function(){ - - var root = this; - -/* global Phaser:true */ -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @namespace Phaser -*/ -var Phaser = Phaser || { - - /** - * The Phaser version number. - * @constant - * @type {string} - */ - VERSION: '2.6.1', - - /** - * An array of Phaser game instances. - * @constant - * @type {array} - */ - GAMES: [], - - /** - * AUTO renderer - picks between WebGL or Canvas based on device. - * @constant - * @type {integer} - */ - AUTO: 0, - - /** - * Canvas Renderer. - * @constant - * @type {integer} - */ - CANVAS: 1, - - /** - * WebGL Renderer. - * @constant - * @type {integer} - */ - WEBGL: 2, - - /** - * Headless renderer (not visual output) - * @constant - * @type {integer} - */ - HEADLESS: 3, - - /** - * Direction constant. - * @constant - * @type {integer} - */ - NONE: 0, - - /** - * Direction constant. - * @constant - * @type {integer} - */ - LEFT: 1, - - /** - * Direction constant. - * @constant - * @type {integer} - */ - RIGHT: 2, - - /** - * Direction constant. - * @constant - * @type {integer} - */ - UP: 3, - - /** - * Direction constant. - * @constant - * @type {integer} - */ - DOWN: 4, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - SPRITE: 0, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - BUTTON: 1, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - IMAGE: 2, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - GRAPHICS: 3, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - TEXT: 4, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - TILESPRITE: 5, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - BITMAPTEXT: 6, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - GROUP: 7, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - RENDERTEXTURE: 8, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - TILEMAP: 9, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - TILEMAPLAYER: 10, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - EMITTER: 11, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - POLYGON: 12, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - BITMAPDATA: 13, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - CANVAS_FILTER: 14, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - WEBGL_FILTER: 15, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - ELLIPSE: 16, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - SPRITEBATCH: 17, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - RETROFONT: 18, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - POINTER: 19, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - ROPE: 20, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - CIRCLE: 21, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - RECTANGLE: 22, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - LINE: 23, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - MATRIX: 24, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - POINT: 25, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - ROUNDEDRECTANGLE: 26, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - CREATURE: 27, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - VIDEO: 28, - - /** - * Game Object type. - * @constant - * @type {integer} - */ - PENDING_ATLAS: -1, - - /** - * A horizontal orientation - * @constant - * @type {integer} - */ - HORIZONTAL: 0, - - /** - * A vertical orientation - * @constant - * @type {integer} - */ - VERTICAL: 1, - - /** - * A landscape orientation - * @constant - * @type {integer} - */ - LANDSCAPE: 0, - - /** - * A portrait orientation - * @constant - * @type {integer} - */ - PORTRAIT: 1, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face up. - * @constant - * @type {integer} - */ - ANGLE_UP: 270, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face down. - * @constant - * @type {integer} - */ - ANGLE_DOWN: 90, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face left. - * @constant - * @type {integer} - */ - ANGLE_LEFT: 180, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face right. - * @constant - * @type {integer} - */ - ANGLE_RIGHT: 0, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face north east. - * @constant - * @type {integer} - */ - ANGLE_NORTH_EAST: 315, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face north west. - * @constant - * @type {integer} - */ - ANGLE_NORTH_WEST: 225, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face south east. - * @constant - * @type {integer} - */ - ANGLE_SOUTH_EAST: 45, - - /** - * The Angle (in degrees) a Game Object needs to be set to in order to face south west. - * @constant - * @type {integer} - */ - ANGLE_SOUTH_WEST: 135, - - /** - * A constant representing a top-left alignment or position. - * @constant - * @type {integer} - */ - TOP_LEFT: 0, - - /** - * A constant representing a top-center alignment or position. - * @constant - * @type {integer} - */ - TOP_CENTER: 1, - - /** - * A constant representing a top-right alignment or position. - * @constant - * @type {integer} - */ - TOP_RIGHT: 2, - - /** - * A constant representing a left-top alignment or position. - * @constant - * @type {integer} - */ - LEFT_TOP: 3, - - /** - * A constant representing a left-center alignment or position. - * @constant - * @type {integer} - */ - LEFT_CENTER: 4, - - /** - * A constant representing a left-bottom alignment or position. - * @constant - * @type {integer} - */ - LEFT_BOTTOM: 5, - - /** - * A constant representing a center alignment or position. - * @constant - * @type {integer} - */ - CENTER: 6, - - /** - * A constant representing a right-top alignment or position. - * @constant - * @type {integer} - */ - RIGHT_TOP: 7, - - /** - * A constant representing a right-center alignment or position. - * @constant - * @type {integer} - */ - RIGHT_CENTER: 8, - - /** - * A constant representing a right-bottom alignment or position. - * @constant - * @type {integer} - */ - RIGHT_BOTTOM: 9, - - /** - * A constant representing a bottom-left alignment or position. - * @constant - * @type {integer} - */ - BOTTOM_LEFT: 10, - - /** - * A constant representing a bottom-center alignment or position. - * @constant - * @type {integer} - */ - BOTTOM_CENTER: 11, - - /** - * A constant representing a bottom-right alignment or position. - * @constant - * @type {integer} - */ - BOTTOM_RIGHT: 12, - - /** - * Various blend modes supported by Pixi. - * - * IMPORTANT: The WebGL renderer only supports the NORMAL, ADD, MULTIPLY and SCREEN blend modes. - * - * @constant - * @property {Number} blendModes.NORMAL - * @property {Number} blendModes.ADD - * @property {Number} blendModes.MULTIPLY - * @property {Number} blendModes.SCREEN - * @property {Number} blendModes.OVERLAY - * @property {Number} blendModes.DARKEN - * @property {Number} blendModes.LIGHTEN - * @property {Number} blendModes.COLOR_DODGE - * @property {Number} blendModes.COLOR_BURN - * @property {Number} blendModes.HARD_LIGHT - * @property {Number} blendModes.SOFT_LIGHT - * @property {Number} blendModes.DIFFERENCE - * @property {Number} blendModes.EXCLUSION - * @property {Number} blendModes.HUE - * @property {Number} blendModes.SATURATION - * @property {Number} blendModes.COLOR - * @property {Number} blendModes.LUMINOSITY - * @static - */ - blendModes: { - NORMAL:0, - ADD:1, - MULTIPLY:2, - SCREEN:3, - OVERLAY:4, - DARKEN:5, - LIGHTEN:6, - COLOR_DODGE:7, - COLOR_BURN:8, - HARD_LIGHT:9, - SOFT_LIGHT:10, - DIFFERENCE:11, - EXCLUSION:12, - HUE:13, - SATURATION:14, - COLOR:15, - LUMINOSITY:16 - }, - - /** - * The scale modes that are supported by Pixi. - * - * The DEFAULT scale mode affects the default scaling mode of future operations. - * It can be re-assigned to either LINEAR or NEAREST, depending upon suitability. - * - * @constant - * @property {Object} Phaser.scaleModes - * @property {Number} scaleModes.DEFAULT=LINEAR - * @property {Number} scaleModes.LINEAR Smooth scaling - * @property {Number} scaleModes.NEAREST Pixelating scaling - * @static - */ - scaleModes: { - DEFAULT:0, - LINEAR:0, - NEAREST:1 - }, - - PIXI: PIXI || {} - -}; - -/** -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -// ES6 Math.trunc - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc -if (!Math.trunc) { - Math.trunc = function trunc(x) { - return x < 0 ? Math.ceil(x) : Math.floor(x); - }; -} - -/** -* A polyfill for Function.prototype.bind -*/ -if (!Function.prototype.bind) { - - /* jshint freeze: false */ - Function.prototype.bind = (function () { - - var slice = Array.prototype.slice; - - return function (thisArg) { - - var target = this, boundArgs = slice.call(arguments, 1); - - if (typeof target !== 'function') - { - throw new TypeError(); - } - - function bound() { - var args = boundArgs.concat(slice.call(arguments)); - target.apply(this instanceof bound ? this : thisArg, args); - } - - bound.prototype = (function F(proto) { - if (proto) - { - F.prototype = proto; - } - - if (!(this instanceof F)) - { - /* jshint supernew: true */ - return new F; - } - })(target.prototype); - - return bound; - }; - })(); -} - -/** -* A polyfill for Array.isArray -*/ -if (!Array.isArray) -{ - Array.isArray = function (arg) - { - return Object.prototype.toString.call(arg) == '[object Array]'; - }; -} - -/** -* A polyfill for Array.forEach -* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach -*/ -if (!Array.prototype.forEach) -{ - Array.prototype.forEach = function(fun /*, thisArg */) - { - "use strict"; - - if (this === void 0 || this === null) - { - throw new TypeError(); - } - - var t = Object(this); - var len = t.length >>> 0; - - if (typeof fun !== "function") - { - throw new TypeError(); - } - - var thisArg = arguments.length >= 2 ? arguments[1] : void 0; - - for (var i = 0; i < len; i++) - { - if (i in t) - { - fun.call(thisArg, t[i], i, t); - } - } - }; -} - -/** -* Low-budget Float32Array knock-off, suitable for use with P2.js in IE9 -* Source: http://www.html5gamedevs.com/topic/5988-phaser-12-ie9/ -* Cameron Foale (http://www.kibibu.com) -*/ -if (typeof window.Uint32Array !== "function" && typeof window.Uint32Array !== "object") -{ - var CheapArray = function(type) - { - var proto = new Array(); // jshint ignore:line - - window[type] = function(arg) { - - if (typeof(arg) === "number") - { - Array.call(this, arg); - this.length = arg; - - for (var i = 0; i < this.length; i++) - { - this[i] = 0; - } - } - else - { - Array.call(this, arg.length); - - this.length = arg.length; - - for (var i = 0; i < this.length; i++) - { - this[i] = arg[i]; - } - } - }; - - window[type].prototype = proto; - window[type].constructor = window[type]; - }; - - CheapArray('Uint32Array'); // jshint ignore:line - CheapArray('Int16Array'); // jshint ignore:line -} - -/** - * Also fix for the absent console in IE9 - */ -if (!window.console) -{ - window.console = {}; - window.console.log = window.console.assert = function(){}; - window.console.warn = window.console.assert = function(){}; -} - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @class Phaser.Utils -* @static -*/ -Phaser.Utils = { - - /** - * Takes the given string and reverses it, returning the reversed string. - * For example if given the string `Atari 520ST` it would return `TS025 iratA`. - * - * @method Phaser.Utils.reverseString - * @param {string} string - The string to be reversed. - * @return {string} The reversed string. - */ - reverseString: function (string) { - - return string.split('').reverse().join(''); - - }, - - /** - * Gets an objects property by string. - * - * @method Phaser.Utils.getProperty - * @param {object} obj - The object to traverse. - * @param {string} prop - The property whose value will be returned. - * @return {*} the value of the property or null if property isn't found . - */ - getProperty: function(obj, prop) { - - var parts = prop.split('.'), - last = parts.pop(), - l = parts.length, - i = 1, - current = parts[0]; - - while (i < l && (obj = obj[current])) - { - current = parts[i]; - i++; - } - - if (obj) - { - return obj[last]; - } - else - { - return null; - } - - }, - - /** - * Sets an objects property by string. - * - * @method Phaser.Utils.setProperty - * @param {object} obj - The object to traverse - * @param {string} prop - The property whose value will be changed - * @return {object} The object on which the property was set. - */ - setProperty: function(obj, prop, value) { - - var parts = prop.split('.'), - last = parts.pop(), - l = parts.length, - i = 1, - current = parts[0]; - - while (i < l && (obj = obj[current])) - { - current = parts[i]; - i++; - } - - if (obj) - { - obj[last] = value; - } - - return obj; - - }, - - /** - * Generate a random bool result based on the chance value. - * - * Returns true or false based on the chance value (default 50%). For example if you wanted a player to have a 30% chance - * of getting a bonus, call chanceRoll(30) - true means the chance passed, false means it failed. - * - * @method Phaser.Utils#chanceRoll - * @param {number} chance - The chance of receiving the value. A number between 0 and 100 (effectively 0% to 100%). - * @return {boolean} True if the roll passed, or false otherwise. - */ - chanceRoll: function (chance) { - if (chance === undefined) { chance = 50; } - return chance > 0 && (Math.random() * 100 <= chance); - }, - - /** - * Choose between one of two values randomly. - * - * @method Phaser.Utils#randomChoice - * @param {any} choice1 - * @param {any} choice2 - * @return {any} The randomly selected choice - */ - randomChoice: function (choice1, choice2) { - return (Math.random() < 0.5) ? choice1 : choice2; - }, - - /** - * Get a unit dimension from a string. - * - * @method Phaser.Utils.parseDimension - * @param {string|number} size - The size to parse. - * @param {number} dimension - The window dimension to check. - * @return {number} The parsed dimension. - */ - parseDimension: function (size, dimension) { - - var f = 0; - var px = 0; - - if (typeof size === 'string') - { - // %? - if (size.substr(-1) === '%') - { - f = parseInt(size, 10) / 100; - - if (dimension === 0) - { - px = window.innerWidth * f; - } - else - { - px = window.innerHeight * f; - } - } - else - { - px = parseInt(size, 10); - } - } - else - { - px = size; - } - - return px; - - }, - - /** - * Takes the given string and pads it out, to the length required, using the character - * specified. For example if you need a string to be 6 characters long, you can call: - * - * `pad('bob', 6, '-', 2)` - * - * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. - * - * You can also use it to pad numbers (they are always returned as strings): - * - * `pad(512, 6, '0', 1)` - * - * Would return: `000512` with the string padded to the left. - * - * If you don't specify a direction it'll pad to both sides: - * - * `pad('c64', 7, '*')` - * - * Would return: `**c64**` - * - * @method Phaser.Utils.pad - * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. - * @param {integer} [len=0] - The number of characters to be added. - * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string. - */ - pad: function (str, len, pad, dir) { - - if (len === undefined) { var len = 0; } - if (pad === undefined) { var pad = ' '; } - if (dir === undefined) { var dir = 3; } - - str = str.toString(); - - var padlen = 0; - - if (len + 1 >= str.length) - { - switch (dir) - { - case 1: - str = new Array(len + 1 - str.length).join(pad) + str; - break; - - case 3: - var right = Math.ceil((padlen = len - str.length) / 2); - var left = padlen - right; - str = new Array(left+1).join(pad) + str + new Array(right+1).join(pad); - break; - - default: - str = str + new Array(len + 1 - str.length).join(pad); - break; - } - } - - return str; - - }, - - /** - * This is a slightly modified version of jQuery.isPlainObject. - * A plain object is an object whose internal class property is [object Object]. - * @method Phaser.Utils.isPlainObject - * @param {object} obj - The object to inspect. - * @return {boolean} - true if the object is plain, otherwise false. - */ - isPlainObject: function (obj) { - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if (typeof(obj) !== "object" || obj.nodeType || obj === obj.window) - { - return false; - } - - // Support: Firefox <20 - // The try/catch suppresses exceptions thrown when attempting to access - // the "constructor" property of certain host objects, ie. |window.location| - // https://bugzilla.mozilla.org/show_bug.cgi?id=814622 - try { - if (obj.constructor && !({}).hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) - { - return false; - } - } catch (e) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - /** - * This is a slightly modified version of http://api.jquery.com/jQuery.extend/ - * - * @method Phaser.Utils.extend - * @param {boolean} deep - Perform a deep copy? - * @param {object} target - The target object to copy to. - * @return {object} The extended object. - */ - extend: function () { - - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if (typeof target === "boolean") - { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // extend Phaser if only one argument is passed - if (length === i) - { - target = this; - --i; - } - - for (; i < length; i++) - { - // Only deal with non-null/undefined values - if ((options = arguments[i]) != null) - { - // Extend the base object - for (name in options) - { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target === copy) - { - continue; - } - - // Recurse if we're merging plain objects or arrays - if (deep && copy && (Phaser.Utils.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) - { - if (copyIsArray) - { - copyIsArray = false; - clone = src && Array.isArray(src) ? src : []; - } - else - { - clone = src && Phaser.Utils.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = Phaser.Utils.extend(deep, clone, copy); - - // Don't bring in undefined values - } - else if (copy !== undefined) - { - target[name] = copy; - } - } - } - } - - // Return the modified object - return target; - - }, - - /** - * Mixes in an existing mixin object with the target. - * - * Values in the mixin that have either `get` or `set` functions are created as properties via `defineProperty` - * _except_ if they also define a `clone` method - if a clone method is defined that is called instead and - * the result is assigned directly. - * - * @method Phaser.Utils.mixinPrototype - * @param {object} target - The target object to receive the new functions. - * @param {object} mixin - The object to copy the functions from. - * @param {boolean} [replace=false] - If the target object already has a matching function should it be overwritten or not? - */ - mixinPrototype: function (target, mixin, replace) { - - if (replace === undefined) { replace = false; } - - var mixinKeys = Object.keys(mixin); - - for (var i = 0; i < mixinKeys.length; i++) - { - var key = mixinKeys[i]; - var value = mixin[key]; - - if (!replace && (key in target)) - { - // Not overwriting existing property - continue; - } - else - { - if (value && - (typeof value.get === 'function' || typeof value.set === 'function')) - { - // Special case for classes like Phaser.Point which has a 'set' function! - if (typeof value.clone === 'function') - { - target[key] = value.clone(); - } - else - { - Object.defineProperty(target, key, value); - } - } - else - { - target[key] = value; - } - } - } - - }, - - /** - * Mixes the source object into the destination object, returning the newly modified destination object. - * Based on original code by @mudcube - * - * @method Phaser.Utils.mixin - * @param {object} from - The object to copy (the source object). - * @param {object} to - The object to copy to (the destination object). - * @return {object} The modified destination object. - */ - mixin: function (from, to) { - - if (!from || typeof (from) !== "object") - { - return to; - } - - for (var key in from) - { - var o = from[key]; - - if (o.childNodes || o.cloneNode) - { - continue; - } - - var type = typeof (from[key]); - - if (!from[key] || type !== "object") - { - to[key] = from[key]; - } - else - { - // Clone sub-object - if (typeof (to[key]) === type) - { - to[key] = Phaser.Utils.mixin(from[key], to[key]); - } - else - { - to[key] = Phaser.Utils.mixin(from[key], new o.constructor()); - } - } - } - - return to; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a new Circle object with the center coordinate specified by the x and y parameters and the diameter specified by the diameter parameter. -* If you call this function without parameters, a circle with x, y, diameter and radius properties set to 0 is created. -* -* @class Phaser.Circle -* @constructor -* @param {number} [x=0] - The x coordinate of the center of the circle. -* @param {number} [y=0] - The y coordinate of the center of the circle. -* @param {number} [diameter=0] - The diameter of the circle. -*/ -Phaser.Circle = function (x, y, diameter) { - - x = x || 0; - y = y || 0; - diameter = diameter || 0; - - /** - * @property {number} x - The x coordinate of the center of the circle. - */ - this.x = x; - - /** - * @property {number} y - The y coordinate of the center of the circle. - */ - this.y = y; - - /** - * @property {number} _diameter - The diameter of the circle. - * @private - */ - this._diameter = diameter; - - /** - * @property {number} _radius - The radius of the circle. - * @private - */ - this._radius = 0; - - if (diameter > 0) - { - this._radius = diameter * 0.5; - } - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.CIRCLE; - -}; - -Phaser.Circle.prototype = { - - /** - * The circumference of the circle. - * - * @method Phaser.Circle#circumference - * @return {number} The circumference of the circle. - */ - circumference: function () { - - return 2 * (Math.PI * this._radius); - - }, - - /** - * Returns a uniformly distributed random point from anywhere within this Circle. - * - * @method Phaser.Circle#random - * @param {Phaser.Point|object} [out] - A Phaser.Point, or any object with public x/y properties, that the values will be set in. - * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. - * @return {Phaser.Point} An object containing the random point in its `x` and `y` properties. - */ - random: function (out) { - - if (out === undefined) { out = new Phaser.Point(); } - - var t = 2 * Math.PI * Math.random(); - var u = Math.random() + Math.random(); - var r = (u > 1) ? 2 - u : u; - var x = r * Math.cos(t); - var y = r * Math.sin(t); - - out.x = this.x + (x * this.radius); - out.y = this.y + (y * this.radius); - - return out; - - }, - - /** - * Returns the framing rectangle of the circle as a Phaser.Rectangle object. - * - * @method Phaser.Circle#getBounds - * @return {Phaser.Rectangle} The bounds of the Circle. - */ - getBounds: function () { - - return new Phaser.Rectangle(this.x - this.radius, this.y - this.radius, this.diameter, this.diameter); - - }, - - /** - * Sets the members of Circle to the specified values. - * @method Phaser.Circle#setTo - * @param {number} x - The x coordinate of the center of the circle. - * @param {number} y - The y coordinate of the center of the circle. - * @param {number} diameter - The diameter of the circle. - * @return {Circle} This circle object. - */ - setTo: function (x, y, diameter) { - - this.x = x; - this.y = y; - this._diameter = diameter; - this._radius = diameter * 0.5; - - return this; - - }, - - /** - * Copies the x, y and diameter properties from any given object to this Circle. - * @method Phaser.Circle#copyFrom - * @param {any} source - The object to copy from. - * @return {Circle} This Circle object. - */ - copyFrom: function (source) { - - return this.setTo(source.x, source.y, source.diameter); - - }, - - /** - * Copies the x, y and diameter properties from this Circle to any given object. - * @method Phaser.Circle#copyTo - * @param {any} dest - The object to copy to. - * @return {object} This dest object. - */ - copyTo: function (dest) { - - dest.x = this.x; - dest.y = this.y; - dest.diameter = this._diameter; - - return dest; - - }, - - /** - * Returns the distance from the center of the Circle object to the given object - * (can be Circle, Point or anything with x/y properties) - * @method Phaser.Circle#distance - * @param {object} dest - The target object. Must have visible x and y properties that represent the center of the object. - * @param {boolean} [round=false] - Round the distance to the nearest integer. - * @return {number} The distance between this Point object and the destination Point object. - */ - distance: function (dest, round) { - - var distance = Phaser.Math.distance(this.x, this.y, dest.x, dest.y); - return round ? Math.round(distance) : distance; - - }, - - /** - * Returns a new Circle object with the same values for the x, y, width, and height properties as this Circle object. - * @method Phaser.Circle#clone - * @param {Phaser.Circle} output - Optional Circle object. If given the values will be set into the object, otherwise a brand new Circle object will be created and returned. - * @return {Phaser.Circle} The cloned Circle object. - */ - clone: function (output) { - - if (output === undefined || output === null) - { - output = new Phaser.Circle(this.x, this.y, this.diameter); - } - else - { - output.setTo(this.x, this.y, this.diameter); - } - - return output; - - }, - - /** - * Return true if the given x/y coordinates are within this Circle object. - * @method Phaser.Circle#contains - * @param {number} x - The X value of the coordinate to test. - * @param {number} y - The Y value of the coordinate to test. - * @return {boolean} True if the coordinates are within this circle, otherwise false. - */ - contains: function (x, y) { - - return Phaser.Circle.contains(this, x, y); - - }, - - /** - * Returns a Point object containing the coordinates of a point on the circumference of the Circle based on the given angle. - * @method Phaser.Circle#circumferencePoint - * @param {number} angle - The angle in radians (unless asDegrees is true) to return the point from. - * @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)? - * @param {Phaser.Point} [out] - An optional Point object to put the result in to. If none specified a new Point object will be created. - * @return {Phaser.Point} The Point object holding the result. - */ - circumferencePoint: function (angle, asDegrees, out) { - - return Phaser.Circle.circumferencePoint(this, angle, asDegrees, out); - - }, - - /** - * Adjusts the location of the Circle object, as determined by its center coordinate, by the specified amounts. - * @method Phaser.Circle#offset - * @param {number} dx - Moves the x value of the Circle object by this amount. - * @param {number} dy - Moves the y value of the Circle object by this amount. - * @return {Circle} This Circle object. - */ - offset: function (dx, dy) { - - this.x += dx; - this.y += dy; - - return this; - - }, - - /** - * Adjusts the location of the Circle object using a Point object as a parameter. This method is similar to the Circle.offset() method, except that it takes a Point object as a parameter. - * @method Phaser.Circle#offsetPoint - * @param {Point} point A Point object to use to offset this Circle object (or any valid object with exposed x and y properties). - * @return {Circle} This Circle object. - */ - offsetPoint: function (point) { - return this.offset(point.x, point.y); - }, - - /** - * Returns a string representation of this object. - * @method Phaser.Circle#toString - * @return {string} a string representation of the instance. - */ - toString: function () { - return "[{Phaser.Circle (x=" + this.x + " y=" + this.y + " diameter=" + this.diameter + " radius=" + this.radius + ")}]"; - } - -}; - -Phaser.Circle.prototype.constructor = Phaser.Circle; - -/** -* The largest distance between any two points on the circle. The same as the radius * 2. -* -* @name Phaser.Circle#diameter -* @property {number} diameter - Gets or sets the diameter of the circle. -*/ -Object.defineProperty(Phaser.Circle.prototype, "diameter", { - - get: function () { - return this._diameter; - }, - - set: function (value) { - - if (value > 0) - { - this._diameter = value; - this._radius = value * 0.5; - } - } - -}); - -/** -* The length of a line extending from the center of the circle to any point on the circle itself. The same as half the diameter. -* @name Phaser.Circle#radius -* @property {number} radius - Gets or sets the radius of the circle. -*/ -Object.defineProperty(Phaser.Circle.prototype, "radius", { - - get: function () { - return this._radius; - }, - - set: function (value) { - - if (value > 0) - { - this._radius = value; - this._diameter = value * 2; - } - - } - -}); - -/** -* The x coordinate of the leftmost point of the circle. Changing the left property of a Circle object has no effect on the x and y properties. However it does affect the diameter, whereas changing the x value does not affect the diameter property. -* @name Phaser.Circle#left -* @propety {number} left - Gets or sets the value of the leftmost point of the circle. -*/ -Object.defineProperty(Phaser.Circle.prototype, "left", { - - get: function () { - return this.x - this._radius; - }, - - set: function (value) { - - if (value > this.x) - { - this._radius = 0; - this._diameter = 0; - } - else - { - this.radius = this.x - value; - } - - } - -}); - -/** -* The x coordinate of the rightmost point of the circle. Changing the right property of a Circle object has no effect on the x and y properties. However it does affect the diameter, whereas changing the x value does not affect the diameter property. -* @name Phaser.Circle#right -* @property {number} right - Gets or sets the value of the rightmost point of the circle. -*/ -Object.defineProperty(Phaser.Circle.prototype, "right", { - - get: function () { - return this.x + this._radius; - }, - - set: function (value) { - - if (value < this.x) - { - this._radius = 0; - this._diameter = 0; - } - else - { - this.radius = value - this.x; - } - - } - -}); - -/** -* The sum of the y minus the radius property. Changing the top property of a Circle object has no effect on the x and y properties, but does change the diameter. -* @name Phaser.Circle#top -* @property {number} top - Gets or sets the top of the circle. -*/ -Object.defineProperty(Phaser.Circle.prototype, "top", { - - get: function () { - return this.y - this._radius; - }, - - set: function (value) { - - if (value > this.y) - { - this._radius = 0; - this._diameter = 0; - } - else - { - this.radius = this.y - value; - } - - } - -}); - -/** -* The sum of the y and radius properties. Changing the bottom property of a Circle object has no effect on the x and y properties, but does change the diameter. -* @name Phaser.Circle#bottom -* @property {number} bottom - Gets or sets the bottom of the circle. -*/ -Object.defineProperty(Phaser.Circle.prototype, "bottom", { - - get: function () { - return this.y + this._radius; - }, - - set: function (value) { - - if (value < this.y) - { - this._radius = 0; - this._diameter = 0; - } - else - { - this.radius = value - this.y; - } - - } - -}); - -/** -* The area of this Circle. -* @name Phaser.Circle#area -* @property {number} area - The area of this circle. -* @readonly -*/ -Object.defineProperty(Phaser.Circle.prototype, "area", { - - get: function () { - - if (this._radius > 0) - { - return Math.PI * this._radius * this._radius; - } - else - { - return 0; - } - - } - -}); - -/** -* Determines whether or not this Circle object is empty. Will return a value of true if the Circle objects diameter is less than or equal to 0; otherwise false. -* If set to true it will reset all of the Circle objects properties to 0. A Circle object is empty if its diameter is less than or equal to 0. -* @name Phaser.Circle#empty -* @property {boolean} empty - Gets or sets the empty state of the circle. -*/ -Object.defineProperty(Phaser.Circle.prototype, "empty", { - - get: function () { - return (this._diameter === 0); - }, - - set: function (value) { - - if (value === true) - { - this.setTo(0, 0, 0); - } - - } - -}); - -/** -* Return true if the given x/y coordinates are within the Circle object. -* @method Phaser.Circle.contains -* @param {Phaser.Circle} a - The Circle to be checked. -* @param {number} x - The X value of the coordinate to test. -* @param {number} y - The Y value of the coordinate to test. -* @return {boolean} True if the coordinates are within this circle, otherwise false. -*/ -Phaser.Circle.contains = function (a, x, y) { - - // Check if x/y are within the bounds first - if (a.radius > 0 && x >= a.left && x <= a.right && y >= a.top && y <= a.bottom) - { - var dx = (a.x - x) * (a.x - x); - var dy = (a.y - y) * (a.y - y); - - return (dx + dy) <= (a.radius * a.radius); - } - else - { - return false; - } - -}; - -/** -* Determines whether the two Circle objects match. This method compares the x, y and diameter properties. -* @method Phaser.Circle.equals -* @param {Phaser.Circle} a - The first Circle object. -* @param {Phaser.Circle} b - The second Circle object. -* @return {boolean} A value of true if the object has exactly the same values for the x, y and diameter properties as this Circle object; otherwise false. -*/ -Phaser.Circle.equals = function (a, b) { - return (a.x == b.x && a.y == b.y && a.diameter == b.diameter); -}; - -/** -* Determines whether the two Circle objects intersect. -* This method checks the radius distances between the two Circle objects to see if they intersect. -* @method Phaser.Circle.intersects -* @param {Phaser.Circle} a - The first Circle object. -* @param {Phaser.Circle} b - The second Circle object. -* @return {boolean} A value of true if the specified object intersects with this Circle object; otherwise false. -*/ -Phaser.Circle.intersects = function (a, b) { - return (Phaser.Math.distance(a.x, a.y, b.x, b.y) <= (a.radius + b.radius)); -}; - -/** -* Returns a Point object containing the coordinates of a point on the circumference of the Circle based on the given angle. -* @method Phaser.Circle.circumferencePoint -* @param {Phaser.Circle} a - The first Circle object. -* @param {number} angle - The angle in radians (unless asDegrees is true) to return the point from. -* @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)? -* @param {Phaser.Point} [out] - An optional Point object to put the result in to. If none specified a new Point object will be created. -* @return {Phaser.Point} The Point object holding the result. -*/ -Phaser.Circle.circumferencePoint = function (a, angle, asDegrees, out) { - - if (asDegrees === undefined) { asDegrees = false; } - if (out === undefined) { out = new Phaser.Point(); } - - if (asDegrees === true) - { - angle = Phaser.Math.degToRad(angle); - } - - out.x = a.x + a.radius * Math.cos(angle); - out.y = a.y + a.radius * Math.sin(angle); - - return out; - -}; - -/** -* Checks if the given Circle and Rectangle objects intersect. -* @method Phaser.Circle.intersectsRectangle -* @param {Phaser.Circle} c - The Circle object to test. -* @param {Phaser.Rectangle} r - The Rectangle object to test. -* @return {boolean} True if the two objects intersect, otherwise false. -*/ -Phaser.Circle.intersectsRectangle = function (c, r) { - - var cx = Math.abs(c.x - r.x - r.halfWidth); - var xDist = r.halfWidth + c.radius; - - if (cx > xDist) - { - return false; - } - - var cy = Math.abs(c.y - r.y - r.halfHeight); - var yDist = r.halfHeight + c.radius; - - if (cy > yDist) - { - return false; - } - - if (cx <= r.halfWidth || cy <= r.halfHeight) - { - return true; - } - - var xCornerDist = cx - r.halfWidth; - var yCornerDist = cy - r.halfHeight; - var xCornerDistSq = xCornerDist * xCornerDist; - var yCornerDistSq = yCornerDist * yCornerDist; - var maxCornerDistSq = c.radius * c.radius; - - return xCornerDistSq + yCornerDistSq <= maxCornerDistSq; - -}; - -// Because PIXI uses its own Circle, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Circle = Phaser.Circle; - -/** -* @author Richard Davey -* @author Chad Engler -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a Ellipse object. A curve on a plane surrounding two focal points. -* -* @class Phaser.Ellipse -* @constructor -* @param {number} [x=0] - The X coordinate of the upper-left corner of the framing rectangle of this ellipse. -* @param {number} [y=0] - The Y coordinate of the upper-left corner of the framing rectangle of this ellipse. -* @param {number} [width=0] - The overall width of this ellipse. -* @param {number} [height=0] - The overall height of this ellipse. -*/ -Phaser.Ellipse = function (x, y, width, height) { - - x = x || 0; - y = y || 0; - width = width || 0; - height = height || 0; - - /** - * @property {number} x - The X coordinate of the upper-left corner of the framing rectangle of this ellipse. - */ - this.x = x; - - /** - * @property {number} y - The Y coordinate of the upper-left corner of the framing rectangle of this ellipse. - */ - this.y = y; - - /** - * @property {number} width - The overall width of this ellipse. - */ - this.width = width; - - /** - * @property {number} height - The overall height of this ellipse. - */ - this.height = height; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.ELLIPSE; - -}; - -Phaser.Ellipse.prototype = { - - /** - * Sets the members of the Ellipse to the specified values. - * @method Phaser.Ellipse#setTo - * @param {number} x - The X coordinate of the upper-left corner of the framing rectangle of this ellipse. - * @param {number} y - The Y coordinate of the upper-left corner of the framing rectangle of this ellipse. - * @param {number} width - The overall width of this ellipse. - * @param {number} height - The overall height of this ellipse. - * @return {Phaser.Ellipse} This Ellipse object. - */ - setTo: function (x, y, width, height) { - - this.x = x; - this.y = y; - this.width = width; - this.height = height; - - return this; - - }, - - /** - * Returns the framing rectangle of the ellipse as a Phaser.Rectangle object. - * - * @method Phaser.Ellipse#getBounds - * @return {Phaser.Rectangle} The bounds of the Ellipse. - */ - getBounds: function () { - - return new Phaser.Rectangle(this.x - this.width, this.y - this.height, this.width, this.height); - - }, - - /** - * Copies the x, y, width and height properties from any given object to this Ellipse. - * - * @method Phaser.Ellipse#copyFrom - * @param {any} source - The object to copy from. - * @return {Phaser.Ellipse} This Ellipse object. - */ - copyFrom: function (source) { - - return this.setTo(source.x, source.y, source.width, source.height); - - }, - - /** - * Copies the x, y, width and height properties from this Ellipse to any given object. - * @method Phaser.Ellipse#copyTo - * @param {any} dest - The object to copy to. - * @return {object} This dest object. - */ - copyTo: function(dest) { - - dest.x = this.x; - dest.y = this.y; - dest.width = this.width; - dest.height = this.height; - - return dest; - - }, - - /** - * Returns a new Ellipse object with the same values for the x, y, width, and height properties as this Ellipse object. - * @method Phaser.Ellipse#clone - * @param {Phaser.Ellipse} output - Optional Ellipse object. If given the values will be set into the object, otherwise a brand new Ellipse object will be created and returned. - * @return {Phaser.Ellipse} The cloned Ellipse object. - */ - clone: function(output) { - - if (output === undefined || output === null) - { - output = new Phaser.Ellipse(this.x, this.y, this.width, this.height); - } - else - { - output.setTo(this.x, this.y, this.width, this.height); - } - - return output; - - }, - - /** - * Return true if the given x/y coordinates are within this Ellipse object. - * - * @method Phaser.Ellipse#contains - * @param {number} x - The X value of the coordinate to test. - * @param {number} y - The Y value of the coordinate to test. - * @return {boolean} True if the coordinates are within this ellipse, otherwise false. - */ - contains: function (x, y) { - - return Phaser.Ellipse.contains(this, x, y); - - }, - - /** - * Returns a uniformly distributed random point from anywhere within this Ellipse. - * - * @method Phaser.Ellipse#random - * @param {Phaser.Point|object} [out] - A Phaser.Point, or any object with public x/y properties, that the values will be set in. - * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. - * @return {Phaser.Point} An object containing the random point in its `x` and `y` properties. - */ - random: function (out) { - - if (out === undefined) { out = new Phaser.Point(); } - - var p = Math.random() * Math.PI * 2; - var r = Math.random(); - - out.x = Math.sqrt(r) * Math.cos(p); - out.y = Math.sqrt(r) * Math.sin(p); - - out.x = this.x + (out.x * this.width / 2.0); - out.y = this.y + (out.y * this.height / 2.0); - - return out; - - }, - - /** - * Returns a string representation of this object. - * @method Phaser.Ellipse#toString - * @return {string} A string representation of the instance. - */ - toString: function () { - return "[{Phaser.Ellipse (x=" + this.x + " y=" + this.y + " width=" + this.width + " height=" + this.height + ")}]"; - } - -}; - -Phaser.Ellipse.prototype.constructor = Phaser.Ellipse; - -/** -* The left coordinate of the Ellipse. The same as the X coordinate. -* @name Phaser.Ellipse#left -* @propety {number} left - Gets or sets the value of the leftmost point of the ellipse. -*/ -Object.defineProperty(Phaser.Ellipse.prototype, "left", { - - get: function () { - return this.x; - }, - - set: function (value) { - - this.x = value; - - } - -}); - -/** -* The x coordinate of the rightmost point of the Ellipse. Changing the right property of an Ellipse object has no effect on the x property, but does adjust the width. -* @name Phaser.Ellipse#right -* @property {number} right - Gets or sets the value of the rightmost point of the ellipse. -*/ -Object.defineProperty(Phaser.Ellipse.prototype, "right", { - - get: function () { - return this.x + this.width; - }, - - set: function (value) { - - if (value < this.x) - { - this.width = 0; - } - else - { - this.width = value - this.x; - } - } - -}); - -/** -* The top of the Ellipse. The same as its y property. -* @name Phaser.Ellipse#top -* @property {number} top - Gets or sets the top of the ellipse. -*/ -Object.defineProperty(Phaser.Ellipse.prototype, "top", { - - get: function () { - return this.y; - }, - - set: function (value) { - this.y = value; - } - -}); - -/** -* The sum of the y and height properties. Changing the bottom property of an Ellipse doesn't adjust the y property, but does change the height. -* @name Phaser.Ellipse#bottom -* @property {number} bottom - Gets or sets the bottom of the ellipse. -*/ -Object.defineProperty(Phaser.Ellipse.prototype, "bottom", { - - get: function () { - return this.y + this.height; - }, - - set: function (value) { - - if (value < this.y) - { - this.height = 0; - } - else - { - this.height = value - this.y; - } - } - -}); - -/** -* Determines whether or not this Ellipse object is empty. Will return a value of true if the Ellipse objects dimensions are less than or equal to 0; otherwise false. -* If set to true it will reset all of the Ellipse objects properties to 0. An Ellipse object is empty if its width or height is less than or equal to 0. -* @name Phaser.Ellipse#empty -* @property {boolean} empty - Gets or sets the empty state of the ellipse. -*/ -Object.defineProperty(Phaser.Ellipse.prototype, "empty", { - - get: function () { - return (this.width === 0 || this.height === 0); - }, - - set: function (value) { - - if (value === true) - { - this.setTo(0, 0, 0, 0); - } - - } - -}); - -/** -* Return true if the given x/y coordinates are within the Ellipse object. -* -* @method Phaser.Ellipse.contains -* @param {Phaser.Ellipse} a - The Ellipse to be checked. -* @param {number} x - The X value of the coordinate to test. -* @param {number} y - The Y value of the coordinate to test. -* @return {boolean} True if the coordinates are within this ellipse, otherwise false. -*/ -Phaser.Ellipse.contains = function (a, x, y) { - - if (a.width <= 0 || a.height <= 0) { - return false; - } - - // Normalize the coords to an ellipse with center 0,0 and a radius of 0.5 - var normx = ((x - a.x) / a.width) - 0.5; - var normy = ((y - a.y) / a.height) - 0.5; - - normx *= normx; - normy *= normy; - - return (normx + normy < 0.25); - -}; - -// Because PIXI uses its own Ellipse, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Ellipse = Phaser.Ellipse; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a new Line object with a start and an end point. -* -* @class Phaser.Line -* @constructor -* @param {number} [x1=0] - The x coordinate of the start of the line. -* @param {number} [y1=0] - The y coordinate of the start of the line. -* @param {number} [x2=0] - The x coordinate of the end of the line. -* @param {number} [y2=0] - The y coordinate of the end of the line. -*/ -Phaser.Line = function (x1, y1, x2, y2) { - - x1 = x1 || 0; - y1 = y1 || 0; - x2 = x2 || 0; - y2 = y2 || 0; - - /** - * @property {Phaser.Point} start - The start point of the line. - */ - this.start = new Phaser.Point(x1, y1); - - /** - * @property {Phaser.Point} end - The end point of the line. - */ - this.end = new Phaser.Point(x2, y2); - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.LINE; - -}; - -Phaser.Line.prototype = { - - /** - * Sets the components of the Line to the specified values. - * - * @method Phaser.Line#setTo - * @param {number} [x1=0] - The x coordinate of the start of the line. - * @param {number} [y1=0] - The y coordinate of the start of the line. - * @param {number} [x2=0] - The x coordinate of the end of the line. - * @param {number} [y2=0] - The y coordinate of the end of the line. - * @return {Phaser.Line} This line object - */ - setTo: function (x1, y1, x2, y2) { - - this.start.setTo(x1, y1); - this.end.setTo(x2, y2); - - return this; - - }, - - /** - * Sets the line to match the x/y coordinates of the two given sprites. - * Can optionally be calculated from their center coordinates. - * - * @method Phaser.Line#fromSprite - * @param {Phaser.Sprite} startSprite - The coordinates of this Sprite will be set to the Line.start point. - * @param {Phaser.Sprite} endSprite - The coordinates of this Sprite will be set to the Line.start point. - * @param {boolean} [useCenter=false] - If true it will use startSprite.center.x, if false startSprite.x. Note that Sprites don't have a center property by default, so only enable if you've over-ridden your Sprite with a custom class. - * @return {Phaser.Line} This line object - */ - fromSprite: function (startSprite, endSprite, useCenter) { - - if (useCenter === undefined) { useCenter = false; } - - if (useCenter) - { - return this.setTo(startSprite.center.x, startSprite.center.y, endSprite.center.x, endSprite.center.y); - } - - return this.setTo(startSprite.x, startSprite.y, endSprite.x, endSprite.y); - - }, - - /** - * Sets this line to start at the given `x` and `y` coordinates and for the segment to extend at `angle` for the given `length`. - * - * @method Phaser.Line#fromAngle - * @param {number} x - The x coordinate of the start of the line. - * @param {number} y - The y coordinate of the start of the line. - * @param {number} angle - The angle of the line in radians. - * @param {number} length - The length of the line in pixels. - * @return {Phaser.Line} This line object - */ - fromAngle: function (x, y, angle, length) { - - this.start.setTo(x, y); - this.end.setTo(x + (Math.cos(angle) * length), y + (Math.sin(angle) * length)); - - return this; - - }, - - /** - * Rotates the line by the amount specified in `angle`. - * - * Rotation takes place from the center of the line. - * If you wish to rotate around a different point see Line.rotateAround. - * - * If you wish to rotate the ends of the Line then see Line.start.rotate or Line.end.rotate. - * - * @method Phaser.Line#rotate - * @param {number} angle - The angle in radians (unless asDegrees is true) to rotate the line by. - * @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)? - * @return {Phaser.Line} This line object - */ - rotate: function (angle, asDegrees) { - - var cx = (this.start.x + this.end.x) / 2; - var cy = (this.start.y + this.end.y) / 2; - - this.start.rotate(cx, cy, angle, asDegrees); - this.end.rotate(cx, cy, angle, asDegrees); - - return this; - - }, - - /** - * Rotates the line by the amount specified in `angle`. - * - * Rotation takes place around the coordinates given. - * - * @method Phaser.Line#rotateAround - * @param {number} x - The x coordinate to offset the rotation from. - * @param {number} y - The y coordinate to offset the rotation from. - * @param {number} angle - The angle in radians (unless asDegrees is true) to rotate the line by. - * @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)? - * @return {Phaser.Line} This line object - */ - rotateAround: function (x, y, angle, asDegrees) { - - this.start.rotate(x, y, angle, asDegrees); - this.end.rotate(x, y, angle, asDegrees); - - return this; - - }, - - /** - * Checks for intersection between this line and another Line. - * If asSegment is true it will check for segment intersection. If asSegment is false it will check for line intersection. - * Returns the intersection segment of AB and EF as a Point, or null if there is no intersection. - * - * @method Phaser.Line#intersects - * @param {Phaser.Line} line - The line to check against this one. - * @param {boolean} [asSegment=true] - If true it will check for segment intersection, otherwise full line intersection. - * @param {Phaser.Point} [result] - A Point object to store the result in, if not given a new one will be created. - * @return {Phaser.Point} The intersection segment of the two lines as a Point, or null if there is no intersection. - */ - intersects: function (line, asSegment, result) { - - return Phaser.Line.intersectsPoints(this.start, this.end, line.start, line.end, asSegment, result); - - }, - - /** - * Returns the reflected angle between two lines. - * This is the outgoing angle based on the angle of this line and the normalAngle of the given line. - * - * @method Phaser.Line#reflect - * @param {Phaser.Line} line - The line to reflect off this line. - * @return {number} The reflected angle in radians. - */ - reflect: function (line) { - - return Phaser.Line.reflect(this, line); - - }, - - /** - * Returns a Point object where the x and y values correspond to the center (or midpoint) of the Line segment. - * - * @method Phaser.Line#midPoint - * @param {Phaser.Point} [out] - A Phaser.Point object into which the result will be populated. If not given a new Point object is created. - * @return {Phaser.Point} A Phaser.Point object with the x and y values set to the center of the line segment. - */ - midPoint: function (out) { - - if (out === undefined) { out = new Phaser.Point(); } - - out.x = (this.start.x + this.end.x) / 2; - out.y = (this.start.y + this.end.y) / 2; - - return out; - - }, - - /** - * Centers this Line on the given coordinates. - * - * The line is centered by positioning the start and end points so that the lines midpoint matches - * the coordinates given. - * - * @method Phaser.Line#centerOn - * @param {number} x - The x position to center the line on. - * @param {number} y - The y position to center the line on. - * @return {Phaser.Line} This line object - */ - centerOn: function (x, y) { - - var cx = (this.start.x + this.end.x) / 2; - var cy = (this.start.y + this.end.y) / 2; - - var tx = x - cx; - var ty = y - cy; - - this.start.add(tx, ty); - this.end.add(tx, ty); - - }, - - /** - * Tests if the given coordinates fall on this line. See pointOnSegment to test against just the line segment. - * - * @method Phaser.Line#pointOnLine - * @param {number} x - The line to check against this one. - * @param {number} y - The line to check against this one. - * @return {boolean} True if the point is on the line, false if not. - */ - pointOnLine: function (x, y) { - - return ((x - this.start.x) * (this.end.y - this.start.y) === (this.end.x - this.start.x) * (y - this.start.y)); - - }, - - /** - * Tests if the given coordinates fall on this line and within the segment. See pointOnLine to test against just the line. - * - * @method Phaser.Line#pointOnSegment - * @param {number} x - The line to check against this one. - * @param {number} y - The line to check against this one. - * @return {boolean} True if the point is on the line and segment, false if not. - */ - pointOnSegment: function (x, y) { - - var xMin = Math.min(this.start.x, this.end.x); - var xMax = Math.max(this.start.x, this.end.x); - var yMin = Math.min(this.start.y, this.end.y); - var yMax = Math.max(this.start.y, this.end.y); - - return (this.pointOnLine(x, y) && (x >= xMin && x <= xMax) && (y >= yMin && y <= yMax)); - - }, - - /** - * Picks a random point from anywhere on the Line segment and returns it. - * - * @method Phaser.Line#random - * @param {Phaser.Point|object} [out] - A Phaser.Point, or any object with public x/y properties, that the values will be set in. - * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an object. - * @return {Phaser.Point} An object containing the random point in its `x` and `y` properties. - */ - random: function (out) { - - if (out === undefined) { out = new Phaser.Point(); } - - var t = Math.random(); - - out.x = this.start.x + t * (this.end.x - this.start.x); - out.y = this.start.y + t * (this.end.y - this.start.y); - - return out; - - }, - - /** - * Using Bresenham's line algorithm this will return an array of all coordinates on this line. - * The start and end points are rounded before this runs as the algorithm works on integers. - * - * @method Phaser.Line#coordinatesOnLine - * @param {number} [stepRate=1] - How many steps will we return? 1 = every coordinate on the line, 2 = every other coordinate, etc. - * @param {array} [results] - The array to store the results in. If not provided a new one will be generated. - * @return {array} An array of coordinates. - */ - coordinatesOnLine: function (stepRate, results) { - - if (stepRate === undefined) { stepRate = 1; } - if (results === undefined) { results = []; } - - var x1 = Math.round(this.start.x); - var y1 = Math.round(this.start.y); - var x2 = Math.round(this.end.x); - var y2 = Math.round(this.end.y); - - var dx = Math.abs(x2 - x1); - var dy = Math.abs(y2 - y1); - var sx = (x1 < x2) ? 1 : -1; - var sy = (y1 < y2) ? 1 : -1; - var err = dx - dy; - - results.push([x1, y1]); - - var i = 1; - - while (!((x1 == x2) && (y1 == y2))) - { - var e2 = err << 1; - - if (e2 > -dy) - { - err -= dy; - x1 += sx; - } - - if (e2 < dx) - { - err += dx; - y1 += sy; - } - - if (i % stepRate === 0) - { - results.push([x1, y1]); - } - - i++; - - } - - return results; - - }, - - /** - * Returns a new Line object with the same values for the start and end properties as this Line object. - * @method Phaser.Line#clone - * @param {Phaser.Line} output - Optional Line object. If given the values will be set into the object, otherwise a brand new Line object will be created and returned. - * @return {Phaser.Line} The cloned Line object. - */ - clone: function (output) { - - if (output === undefined || output === null) - { - output = new Phaser.Line(this.start.x, this.start.y, this.end.x, this.end.y); - } - else - { - output.setTo(this.start.x, this.start.y, this.end.x, this.end.y); - } - - return output; - - } - -}; - -/** -* @name Phaser.Line#length -* @property {number} length - Gets the length of the line segment. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "length", { - - get: function () { - return Math.sqrt((this.end.x - this.start.x) * (this.end.x - this.start.x) + (this.end.y - this.start.y) * (this.end.y - this.start.y)); - } - -}); - -/** -* @name Phaser.Line#angle -* @property {number} angle - Gets the angle of the line in radians. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "angle", { - - get: function () { - return Math.atan2(this.end.y - this.start.y, this.end.x - this.start.x); - } - -}); - -/** -* @name Phaser.Line#slope -* @property {number} slope - Gets the slope of the line (y/x). -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "slope", { - - get: function () { - return (this.end.y - this.start.y) / (this.end.x - this.start.x); - } - -}); - -/** -* @name Phaser.Line#perpSlope -* @property {number} perpSlope - Gets the perpendicular slope of the line (x/y). -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "perpSlope", { - - get: function () { - return -((this.end.x - this.start.x) / (this.end.y - this.start.y)); - } - -}); - -/** -* @name Phaser.Line#x -* @property {number} x - Gets the x coordinate of the top left of the bounds around this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "x", { - - get: function () { - return Math.min(this.start.x, this.end.x); - } - -}); - -/** -* @name Phaser.Line#y -* @property {number} y - Gets the y coordinate of the top left of the bounds around this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "y", { - - get: function () { - return Math.min(this.start.y, this.end.y); - } - -}); - -/** -* @name Phaser.Line#left -* @property {number} left - Gets the left-most point of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "left", { - - get: function () { - return Math.min(this.start.x, this.end.x); - } - -}); - -/** -* @name Phaser.Line#right -* @property {number} right - Gets the right-most point of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "right", { - - get: function () { - return Math.max(this.start.x, this.end.x); - } - -}); - -/** -* @name Phaser.Line#top -* @property {number} top - Gets the top-most point of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "top", { - - get: function () { - return Math.min(this.start.y, this.end.y); - } - -}); - -/** -* @name Phaser.Line#bottom -* @property {number} bottom - Gets the bottom-most point of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "bottom", { - - get: function () { - return Math.max(this.start.y, this.end.y); - } - -}); - -/** -* @name Phaser.Line#width -* @property {number} width - Gets the width of this bounds of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "width", { - - get: function () { - return Math.abs(this.start.x - this.end.x); - } - -}); - -/** -* @name Phaser.Line#height -* @property {number} height - Gets the height of this bounds of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "height", { - - get: function () { - return Math.abs(this.start.y - this.end.y); - } - -}); - -/** -* @name Phaser.Line#normalX -* @property {number} normalX - Gets the x component of the left-hand normal of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "normalX", { - - get: function () { - return Math.cos(this.angle - 1.5707963267948966); - } - -}); - -/** -* @name Phaser.Line#normalY -* @property {number} normalY - Gets the y component of the left-hand normal of this line. -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "normalY", { - - get: function () { - return Math.sin(this.angle - 1.5707963267948966); - } - -}); - -/** -* @name Phaser.Line#normalAngle -* @property {number} normalAngle - Gets the angle in radians of the normal of this line (line.angle - 90 degrees.) -* @readonly -*/ -Object.defineProperty(Phaser.Line.prototype, "normalAngle", { - - get: function () { - return Phaser.Math.wrap(this.angle - 1.5707963267948966, -Math.PI, Math.PI); - } - -}); - -/** -* Checks for intersection between two lines as defined by the given start and end points. -* If asSegment is true it will check for line segment intersection. If asSegment is false it will check for line intersection. -* Returns the intersection segment of AB and EF as a Point, or null if there is no intersection. -* Adapted from code by Keith Hair -* -* @method Phaser.Line.intersectsPoints -* @param {Phaser.Point} a - The start of the first Line to be checked. -* @param {Phaser.Point} b - The end of the first line to be checked. -* @param {Phaser.Point} e - The start of the second Line to be checked. -* @param {Phaser.Point} f - The end of the second line to be checked. -* @param {boolean} [asSegment=true] - If true it will check for segment intersection, otherwise full line intersection. -* @param {Phaser.Point|object} [result] - A Point object to store the result in, if not given a new one will be created. -* @return {Phaser.Point} The intersection segment of the two lines as a Point, or null if there is no intersection. -*/ -Phaser.Line.intersectsPoints = function (a, b, e, f, asSegment, result) { - - if (asSegment === undefined) { asSegment = true; } - if (result === undefined) { result = new Phaser.Point(); } - - var a1 = b.y - a.y; - var a2 = f.y - e.y; - var b1 = a.x - b.x; - var b2 = e.x - f.x; - var c1 = (b.x * a.y) - (a.x * b.y); - var c2 = (f.x * e.y) - (e.x * f.y); - var denom = (a1 * b2) - (a2 * b1); - - if (denom === 0) - { - return null; - } - - result.x = ((b1 * c2) - (b2 * c1)) / denom; - result.y = ((a2 * c1) - (a1 * c2)) / denom; - - if (asSegment) - { - var uc = ((f.y - e.y) * (b.x - a.x) - (f.x - e.x) * (b.y - a.y)); - var ua = (((f.x - e.x) * (a.y - e.y)) - (f.y - e.y) * (a.x - e.x)) / uc; - var ub = (((b.x - a.x) * (a.y - e.y)) - ((b.y - a.y) * (a.x - e.x))) / uc; - - if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) - { - return result; - } - else - { - return null; - } - } - - return result; - -}; - -/** -* Checks for intersection between two lines. -* If asSegment is true it will check for segment intersection. -* If asSegment is false it will check for line intersection. -* Returns the intersection segment of AB and EF as a Point, or null if there is no intersection. -* Adapted from code by Keith Hair -* -* @method Phaser.Line.intersects -* @param {Phaser.Line} a - The first Line to be checked. -* @param {Phaser.Line} b - The second Line to be checked. -* @param {boolean} [asSegment=true] - If true it will check for segment intersection, otherwise full line intersection. -* @param {Phaser.Point} [result] - A Point object to store the result in, if not given a new one will be created. -* @return {Phaser.Point} The intersection segment of the two lines as a Point, or null if there is no intersection. -*/ -Phaser.Line.intersects = function (a, b, asSegment, result) { - - return Phaser.Line.intersectsPoints(a.start, a.end, b.start, b.end, asSegment, result); - -}; - -/** -* Checks for intersection between the Line and a Rectangle shape, or a rectangle-like -* object, with public `x`, `y`, `right` and `bottom` properties, such as a Sprite or Body. -* -* An intersection is considered valid if: -* -* The line starts within, or ends within, the Rectangle. -* The line segment intersects one of the 4 rectangle edges. -* -* The for the purposes of this function rectangles are considered 'solid'. -* -* @method intersectsRectangle -* @param {Phaser.Line} line - The line to check for intersection with. -* @param {Phaser.Rectangle|object} rect - The rectangle, or rectangle-like object, to check for intersection with. -* @return {boolean} True if the line intersects with the rectangle edges, or starts or ends within the rectangle. -*/ -Phaser.Line.intersectsRectangle = function (line, rect) { - - // Quick bail out of the Line and Rect bounds don't intersect - if (!Phaser.Rectangle.intersects(line, rect)) - { - return false; - } - - var x1 = line.start.x; - var y1 = line.start.y; - - var x2 = line.end.x; - var y2 = line.end.y; - - var bx1 = rect.x; - var by1 = rect.y; - var bx2 = rect.right; - var by2 = rect.bottom; - - var t = 0; - - // If the start or end of the line is inside the rect then we assume - // collision, as rects are solid for our use-case. - - if ((x1 >= bx1 && x1 <= bx2 && y1 >= by1 && y1 <= by2) || - (x2 >= bx1 && x2 <= bx2 && y2 >= by1 && y2 <= by2)) - { - return true; - } - - if (x1 < bx1 && x2 >= bx1) - { - // Left edge - t = y1 + (y2 - y1) * (bx1 - x1) / (x2 - x1); - - if (t > by1 && t <= by2) - { - return true; - } - } - else if (x1 > bx2 && x2 <= bx2) - { - // Right edge - t = y1 + (y2 - y1) * (bx2 - x1) / (x2 - x1); - - if (t >= by1 && t <= by2) - { - return true; - } - } - - if (y1 < by1 && y2 >= by1) - { - // Top edge - t = x1 + (x2 - x1) * (by1 - y1) / (y2 - y1); - - if (t >= bx1 && t <= bx2) - { - return true; - } - } - else if (y1 > by2 && y2 <= by2) - { - // Bottom edge - t = x1 + (x2 - x1) * (by2 - y1) / (y2 - y1); - - if (t >= bx1 && t <= bx2) - { - return true; - } - } - - return false; - -}; - -/** -* Returns the reflected angle between two lines. -* This is the outgoing angle based on the angle of Line 1 and the normalAngle of Line 2. -* -* @method Phaser.Line.reflect -* @param {Phaser.Line} a - The base line. -* @param {Phaser.Line} b - The line to be reflected from the base line. -* @return {number} The reflected angle in radians. -*/ -Phaser.Line.reflect = function (a, b) { - - return 2 * b.normalAngle - 3.141592653589793 - a.angle; - -}; - -/** -* @author Mat Groves http://matgroves.com/ @Doormat23 -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Matrix is a 3x3 matrix mostly used for display transforms within the renderer. -* -* It is represented like so: -* -* | a | b | tx | -* | c | d | ty | -* | 0 | 0 | 1 | -* -* @class Phaser.Matrix -* @constructor -* @param {number} [a=1] - Horizontal scaling -* @param {number} [b=0] - Horizontal skewing -* @param {number} [c=0] - Vertical skewing -* @param {number} [d=1] - Vertical scaling -* @param {number} [tx=0] - Horizontal translation -* @param {number} [ty=0] - Vertical translation -*/ -Phaser.Matrix = function (a, b, c, d, tx, ty) { - - if (a === undefined || a === null) { a = 1; } - if (b === undefined || b === null) { b = 0; } - if (c === undefined || c === null) { c = 0; } - if (d === undefined || d === null) { d = 1; } - if (tx === undefined || tx === null) { tx = 0; } - if (ty === undefined || ty === null) { ty = 0; } - - /** - * @property {number} a - * @default 1 - */ - this.a = a; - - /** - * @property {number} b - * @default 0 - */ - this.b = b; - - /** - * @property {number} c - * @default 0 - */ - this.c = c; - - /** - * @property {number} d - * @default 1 - */ - this.d = d; - - /** - * @property {number} tx - * @default 0 - */ - this.tx = tx; - - /** - * @property {number} ty - * @default 0 - */ - this.ty = ty; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.MATRIX; - -}; - -Phaser.Matrix.prototype = { - - /** - * Sets the values of this Matrix to the values in the given array. - * - * The Array elements should be set as follows: - * - * a = array[0] - * b = array[1] - * c = array[3] - * d = array[4] - * tx = array[2] - * ty = array[5] - * - * @method Phaser.Matrix#fromArray - * @param {Array} array - The array to copy from. - * @return {Phaser.Matrix} This Matrix object. - */ - fromArray: function (array) { - - return this.setTo(array[0], array[1], array[3], array[4], array[2], array[5]); - - }, - - /** - * Sets the values of this Matrix to the given values. - * - * @method Phaser.Matrix#setTo - * @param {number} a - Horizontal scaling - * @param {number} b - Horizontal skewing - * @param {number} c - Vertical skewing - * @param {number} d - Vertical scaling - * @param {number} tx - Horizontal translation - * @param {number} ty - Vertical translation - * @return {Phaser.Matrix} This Matrix object. - */ - setTo: function (a, b, c, d, tx, ty) { - - this.a = a; - this.b = b; - this.c = c; - this.d = d; - this.tx = tx; - this.ty = ty; - - return this; - - }, - - /** - * Creates a new Matrix object based on the values of this Matrix. - * If you provide the output parameter the values of this Matrix will be copied over to it. - * If the output parameter is blank a new Matrix object will be created. - * - * @method Phaser.Matrix#clone - * @param {Phaser.Matrix} [output] - If provided the values of this Matrix will be copied to it, otherwise a new Matrix object is created. - * @return {Phaser.Matrix} A clone of this Matrix. - */ - clone: function (output) { - - if (output === undefined || output === null) - { - output = new Phaser.Matrix(this.a, this.b, this.c, this.d, this.tx, this.ty); - } - else - { - output.a = this.a; - output.b = this.b; - output.c = this.c; - output.d = this.d; - output.tx = this.tx; - output.ty = this.ty; - } - - return output; - - }, - - /** - * Copies the properties from this Matrix to the given Matrix. - * - * @method Phaser.Matrix#copyTo - * @param {Phaser.Matrix} matrix - The Matrix to copy from. - * @return {Phaser.Matrix} The destination Matrix object. - */ - copyTo: function (matrix) { - - matrix.copyFrom(this); - - return matrix; - - }, - - /** - * Copies the properties from the given Matrix into this Matrix. - * - * @method Phaser.Matrix#copyFrom - * @param {Phaser.Matrix} matrix - The Matrix to copy from. - * @return {Phaser.Matrix} This Matrix object. - */ - copyFrom: function (matrix) { - - this.a = matrix.a; - this.b = matrix.b; - this.c = matrix.c; - this.d = matrix.d; - this.tx = matrix.tx; - this.ty = matrix.ty; - - return this; - - }, - - /** - * Creates a Float32 Array with values populated from this Matrix object. - * - * @method Phaser.Matrix#toArray - * @param {boolean} [transpose=false] - Whether the values in the array are transposed or not. - * @param {PIXI.Float32Array} [array] - If provided the values will be set into this array, otherwise a new Float32Array is created. - * @return {PIXI.Float32Array} The newly created array which contains the matrix. - */ - toArray: function (transpose, array) { - - if (array === undefined) { array = new PIXI.Float32Array(9); } - - if (transpose) - { - array[0] = this.a; - array[1] = this.b; - array[2] = 0; - array[3] = this.c; - array[4] = this.d; - array[5] = 0; - array[6] = this.tx; - array[7] = this.ty; - array[8] = 1; - } - else - { - array[0] = this.a; - array[1] = this.c; - array[2] = this.tx; - array[3] = this.b; - array[4] = this.d; - array[5] = this.ty; - array[6] = 0; - array[7] = 0; - array[8] = 1; - } - - return array; - - }, - - /** - * Get a new position with the current transformation applied. - * - * Can be used to go from a childs coordinate space to the world coordinate space (e.g. rendering) - * - * @method Phaser.Matrix#apply - * @param {Phaser.Point} pos - The origin Point. - * @param {Phaser.Point} [newPos] - The point that the new position is assigned to. This can be same as input point. - * @return {Phaser.Point} The new point, transformed through this matrix. - */ - apply: function (pos, newPos) { - - if (newPos === undefined) { newPos = new Phaser.Point(); } - - newPos.x = this.a * pos.x + this.c * pos.y + this.tx; - newPos.y = this.b * pos.x + this.d * pos.y + this.ty; - - return newPos; - - }, - - /** - * Get a new position with the inverse of the current transformation applied. - * - * Can be used to go from the world coordinate space to a childs coordinate space. (e.g. input) - * - * @method Phaser.Matrix#applyInverse - * @param {Phaser.Point} pos - The origin Point. - * @param {Phaser.Point} [newPos] - The point that the new position is assigned to. This can be same as input point. - * @return {Phaser.Point} The new point, inverse transformed through this matrix. - */ - applyInverse: function (pos, newPos) { - - if (newPos === undefined) { newPos = new Phaser.Point(); } - - var id = 1 / (this.a * this.d + this.c * -this.b); - var x = pos.x; - var y = pos.y; - - newPos.x = this.d * id * x + -this.c * id * y + (this.ty * this.c - this.tx * this.d) * id; - newPos.y = this.a * id * y + -this.b * id * x + (-this.ty * this.a + this.tx * this.b) * id; - - return newPos; - - }, - - /** - * Translates the matrix on the x and y. - * This is the same as Matrix.tx += x. - * - * @method Phaser.Matrix#translate - * @param {number} x - The x value to translate on. - * @param {number} y - The y value to translate on. - * @return {Phaser.Matrix} This Matrix object. - */ - translate: function (x, y) { - - this.tx += x; - this.ty += y; - - return this; - - }, - - /** - * Applies a scale transformation to this matrix. - * - * @method Phaser.Matrix#scale - * @param {number} x - The amount to scale horizontally. - * @param {number} y - The amount to scale vertically. - * @return {Phaser.Matrix} This Matrix object. - */ - scale: function (x, y) { - - this.a *= x; - this.d *= y; - this.c *= x; - this.b *= y; - this.tx *= x; - this.ty *= y; - - return this; - - }, - - /** - * Applies a rotation transformation to this matrix. - * - * @method Phaser.Matrix#rotate - * @param {number} angle - The angle to rotate by, given in radians. - * @return {Phaser.Matrix} This Matrix object. - */ - rotate: function (angle) { - - var cos = Math.cos(angle); - var sin = Math.sin(angle); - - var a1 = this.a; - var c1 = this.c; - var tx1 = this.tx; - - this.a = a1 * cos-this.b * sin; - this.b = a1 * sin+this.b * cos; - this.c = c1 * cos-this.d * sin; - this.d = c1 * sin+this.d * cos; - this.tx = tx1 * cos - this.ty * sin; - this.ty = tx1 * sin + this.ty * cos; - - return this; - - }, - - /** - * Appends the given Matrix to this Matrix. - * - * @method Phaser.Matrix#append - * @param {Phaser.Matrix} matrix - The matrix to append to this one. - * @return {Phaser.Matrix} This Matrix object. - */ - append: function (matrix) { - - var a1 = this.a; - var b1 = this.b; - var c1 = this.c; - var d1 = this.d; - - this.a = matrix.a * a1 + matrix.b * c1; - this.b = matrix.a * b1 + matrix.b * d1; - this.c = matrix.c * a1 + matrix.d * c1; - this.d = matrix.c * b1 + matrix.d * d1; - - this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx; - this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty; - - return this; - - }, - - /** - * Resets this Matrix to an identity (default) matrix. - * - * @method Phaser.Matrix#identity - * @return {Phaser.Matrix} This Matrix object. - */ - identity: function () { - - return this.setTo(1, 0, 0, 1, 0, 0); - - } - -}; - -Phaser.identityMatrix = new Phaser.Matrix(); - -// Because PIXI uses its own type, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Matrix = Phaser.Matrix; -PIXI.identityMatrix = Phaser.identityMatrix; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Point object represents a location in a two-dimensional coordinate system, where x represents the horizontal axis and y represents the vertical axis. -* The following code creates a point at (0,0): -* `var myPoint = new Phaser.Point();` -* You can also use them as 2D Vectors and you'll find different vector related methods in this class. -* -* @class Phaser.Point -* @constructor -* @param {number} [x=0] - The horizontal position of this Point. -* @param {number} [y=0] - The vertical position of this Point. -*/ -Phaser.Point = function (x, y) { - - x = x || 0; - y = y || 0; - - /** - * @property {number} x - The x value of the point. - */ - this.x = x; - - /** - * @property {number} y - The y value of the point. - */ - this.y = y; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.POINT; - -}; - -Phaser.Point.prototype = { - - /** - * Copies the x and y properties from any given object to this Point. - * - * @method Phaser.Point#copyFrom - * @param {any} source - The object to copy from. - * @return {Phaser.Point} This Point object. - */ - copyFrom: function (source) { - - return this.setTo(source.x, source.y); - - }, - - /** - * Inverts the x and y values of this Point - * - * @method Phaser.Point#invert - * @return {Phaser.Point} This Point object. - */ - invert: function () { - - return this.setTo(this.y, this.x); - - }, - - /** - * Sets the `x` and `y` values of this Point object to the given values. - * If you omit the `y` value then the `x` value will be applied to both, for example: - * `Point.setTo(2)` is the same as `Point.setTo(2, 2)` - * - * @method Phaser.Point#setTo - * @param {number} x - The horizontal value of this point. - * @param {number} [y] - The vertical value of this point. If not given the x value will be used in its place. - * @return {Phaser.Point} This Point object. Useful for chaining method calls. - */ - setTo: function (x, y) { - - this.x = x || 0; - this.y = y || ( (y !== 0) ? this.x : 0 ); - - return this; - - }, - - /** - * Sets the `x` and `y` values of this Point object to the given values. - * If you omit the `y` value then the `x` value will be applied to both, for example: - * `Point.set(2)` is the same as `Point.set(2, 2)` - * - * @method Phaser.Point#set - * @param {number} x - The horizontal value of this point. - * @param {number} [y] - The vertical value of this point. If not given the x value will be used in its place. - * @return {Phaser.Point} This Point object. Useful for chaining method calls. - */ - set: function (x, y) { - - this.x = x || 0; - this.y = y || ( (y !== 0) ? this.x : 0 ); - - return this; - - }, - - /** - * Adds the given x and y values to this Point. - * - * @method Phaser.Point#add - * @param {number} x - The value to add to Point.x. - * @param {number} y - The value to add to Point.y. - * @return {Phaser.Point} This Point object. Useful for chaining method calls. - */ - add: function (x, y) { - - this.x += x; - this.y += y; - return this; - - }, - - /** - * Subtracts the given x and y values from this Point. - * - * @method Phaser.Point#subtract - * @param {number} x - The value to subtract from Point.x. - * @param {number} y - The value to subtract from Point.y. - * @return {Phaser.Point} This Point object. Useful for chaining method calls. - */ - subtract: function (x, y) { - - this.x -= x; - this.y -= y; - return this; - - }, - - /** - * Multiplies Point.x and Point.y by the given x and y values. Sometimes known as `Scale`. - * - * @method Phaser.Point#multiply - * @param {number} x - The value to multiply Point.x by. - * @param {number} y - The value to multiply Point.x by. - * @return {Phaser.Point} This Point object. Useful for chaining method calls. - */ - multiply: function (x, y) { - - this.x *= x; - this.y *= y; - return this; - - }, - - /** - * Divides Point.x and Point.y by the given x and y values. - * - * @method Phaser.Point#divide - * @param {number} x - The value to divide Point.x by. - * @param {number} y - The value to divide Point.x by. - * @return {Phaser.Point} This Point object. Useful for chaining method calls. - */ - divide: function (x, y) { - - this.x /= x; - this.y /= y; - return this; - - }, - - /** - * Clamps the x value of this Point to be between the given min and max. - * - * @method Phaser.Point#clampX - * @param {number} min - The minimum value to clamp this Point to. - * @param {number} max - The maximum value to clamp this Point to. - * @return {Phaser.Point} This Point object. - */ - clampX: function (min, max) { - - this.x = Phaser.Math.clamp(this.x, min, max); - return this; - - }, - - /** - * Clamps the y value of this Point to be between the given min and max - * - * @method Phaser.Point#clampY - * @param {number} min - The minimum value to clamp this Point to. - * @param {number} max - The maximum value to clamp this Point to. - * @return {Phaser.Point} This Point object. - */ - clampY: function (min, max) { - - this.y = Phaser.Math.clamp(this.y, min, max); - return this; - - }, - - /** - * Clamps this Point object values to be between the given min and max. - * - * @method Phaser.Point#clamp - * @param {number} min - The minimum value to clamp this Point to. - * @param {number} max - The maximum value to clamp this Point to. - * @return {Phaser.Point} This Point object. - */ - clamp: function (min, max) { - - this.x = Phaser.Math.clamp(this.x, min, max); - this.y = Phaser.Math.clamp(this.y, min, max); - return this; - - }, - - /** - * Creates a copy of the given Point. - * - * @method Phaser.Point#clone - * @param {Phaser.Point} [output] Optional Point object. If given the values will be set into this object, otherwise a brand new Point object will be created and returned. - * @return {Phaser.Point} The new Point object. - */ - clone: function (output) { - - if (output === undefined || output === null) - { - output = new Phaser.Point(this.x, this.y); - } - else - { - output.setTo(this.x, this.y); - } - - return output; - - }, - - /** - * Copies the x and y properties from this Point to any given object. - * - * @method Phaser.Point#copyTo - * @param {any} dest - The object to copy to. - * @return {object} The dest object. - */ - copyTo: function (dest) { - - dest.x = this.x; - dest.y = this.y; - - return dest; - - }, - - /** - * Returns the distance of this Point object to the given object (can be a Circle, Point or anything with x/y properties) - * - * @method Phaser.Point#distance - * @param {object} dest - The target object. Must have visible x and y properties that represent the center of the object. - * @param {boolean} [round] - Round the distance to the nearest integer (default false). - * @return {number} The distance between this Point object and the destination Point object. - */ - distance: function (dest, round) { - - return Phaser.Point.distance(this, dest, round); - - }, - - /** - * Determines whether the given objects x/y values are equal to this Point object. - * - * @method Phaser.Point#equals - * @param {Phaser.Point|any} a - The object to compare with this Point. - * @return {boolean} A value of true if the x and y points are equal, otherwise false. - */ - equals: function (a) { - - return (a.x === this.x && a.y === this.y); - - }, - - /** - * Returns the angle between this Point object and another object with public x and y properties. - * - * @method Phaser.Point#angle - * @param {Phaser.Point|any} a - The object to get the angle from this Point to. - * @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)? - * @return {number} The angle between the two objects. - */ - angle: function (a, asDegrees) { - - if (asDegrees === undefined) { asDegrees = false; } - - if (asDegrees) - { - return Phaser.Math.radToDeg(Math.atan2(a.y - this.y, a.x - this.x)); - } - else - { - return Math.atan2(a.y - this.y, a.x - this.x); - } - - }, - - /** - * Rotates this Point around the x/y coordinates given to the desired angle. - * - * @method Phaser.Point#rotate - * @param {number} x - The x coordinate of the anchor point. - * @param {number} y - The y coordinate of the anchor point. - * @param {number} angle - The angle in radians (unless asDegrees is true) to rotate the Point to. - * @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)? - * @param {number} [distance] - An optional distance constraint between the Point and the anchor. - * @return {Phaser.Point} The modified point object. - */ - rotate: function (x, y, angle, asDegrees, distance) { - - return Phaser.Point.rotate(this, x, y, angle, asDegrees, distance); - - }, - - /** - * Calculates the length of the Point object. - * - * @method Phaser.Point#getMagnitude - * @return {number} The length of the Point. - */ - getMagnitude: function () { - - return Math.sqrt((this.x * this.x) + (this.y * this.y)); - - }, - - /** - * Calculates the length squared of the Point object. - * - * @method Phaser.Point#getMagnitudeSq - * @return {number} The length ^ 2 of the Point. - */ - getMagnitudeSq: function () { - - return (this.x * this.x) + (this.y * this.y); - - }, - - /** - * Alters the length of the Point without changing the direction. - * - * @method Phaser.Point#setMagnitude - * @param {number} magnitude - The desired magnitude of the resulting Point. - * @return {Phaser.Point} This Point object. - */ - setMagnitude: function (magnitude) { - - return this.normalize().multiply(magnitude, magnitude); - - }, - - /** - * Alters the Point object so that its length is 1, but it retains the same direction. - * - * @method Phaser.Point#normalize - * @return {Phaser.Point} This Point object. - */ - normalize: function () { - - if (!this.isZero()) - { - var m = this.getMagnitude(); - this.x /= m; - this.y /= m; - } - - return this; - - }, - - /** - * Determine if this point is at 0,0. - * - * @method Phaser.Point#isZero - * @return {boolean} True if this Point is 0,0, otherwise false. - */ - isZero: function () { - - return (this.x === 0 && this.y === 0); - - }, - - /** - * The dot product of this and another Point object. - * - * @method Phaser.Point#dot - * @param {Phaser.Point} a - The Point object to get the dot product combined with this Point. - * @return {number} The result. - */ - dot: function (a) { - - return ((this.x * a.x) + (this.y * a.y)); - - }, - - /** - * The cross product of this and another Point object. - * - * @method Phaser.Point#cross - * @param {Phaser.Point} a - The Point object to get the cross product combined with this Point. - * @return {number} The result. - */ - cross: function (a) { - - return ((this.x * a.y) - (this.y * a.x)); - - }, - - /** - * Make this Point perpendicular (90 degrees rotation) - * - * @method Phaser.Point#perp - * @return {Phaser.Point} This Point object. - */ - perp: function () { - - return this.setTo(-this.y, this.x); - - }, - - /** - * Make this Point perpendicular (-90 degrees rotation) - * - * @method Phaser.Point#rperp - * @return {Phaser.Point} This Point object. - */ - rperp: function () { - - return this.setTo(this.y, -this.x); - - }, - - /** - * Right-hand normalize (make unit length) this Point. - * - * @method Phaser.Point#normalRightHand - * @return {Phaser.Point} This Point object. - */ - normalRightHand: function () { - - return this.setTo(this.y * -1, this.x); - - }, - - /** - * Math.floor() both the x and y properties of this Point. - * - * @method Phaser.Point#floor - * @return {Phaser.Point} This Point object. - */ - floor: function () { - - return this.setTo(Math.floor(this.x), Math.floor(this.y)); - - }, - - /** - * Math.ceil() both the x and y properties of this Point. - * - * @method Phaser.Point#ceil - * @return {Phaser.Point} This Point object. - */ - ceil: function () { - - return this.setTo(Math.ceil(this.x), Math.ceil(this.y)); - - }, - - /** - * Returns a string representation of this object. - * - * @method Phaser.Point#toString - * @return {string} A string representation of the instance. - */ - toString: function () { - - return '[{Point (x=' + this.x + ' y=' + this.y + ')}]'; - - } - -}; - -Phaser.Point.prototype.constructor = Phaser.Point; - -/** -* Adds the coordinates of two points together to create a new point. -* -* @method Phaser.Point.add -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.add = function (a, b, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - out.x = a.x + b.x; - out.y = a.y + b.y; - - return out; - -}; - -/** -* Subtracts the coordinates of two points to create a new point. -* -* @method Phaser.Point.subtract -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.subtract = function (a, b, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - out.x = a.x - b.x; - out.y = a.y - b.y; - - return out; - -}; - -/** -* Multiplies the coordinates of two points to create a new point. -* -* @method Phaser.Point.multiply -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.multiply = function (a, b, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - out.x = a.x * b.x; - out.y = a.y * b.y; - - return out; - -}; - -/** -* Divides the coordinates of two points to create a new point. -* -* @method Phaser.Point.divide -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.divide = function (a, b, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - out.x = a.x / b.x; - out.y = a.y / b.y; - - return out; - -}; - -/** -* Determines whether the two given Point objects are equal. They are considered equal if they have the same x and y values. -* -* @method Phaser.Point.equals -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @return {boolean} A value of true if the Points are equal, otherwise false. -*/ -Phaser.Point.equals = function (a, b) { - - return (a.x === b.x && a.y === b.y); - -}; - -/** -* Returns the angle between two Point objects. -* -* @method Phaser.Point.angle -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @return {number} The angle between the two Points. -*/ -Phaser.Point.angle = function (a, b) { - - // return Math.atan2(a.x * b.y - a.y * b.x, a.x * b.x + a.y * b.y); - return Math.atan2(a.y - b.y, a.x - b.x); - -}; - -/** -* Creates a negative Point. -* -* @method Phaser.Point.negative -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.negative = function (a, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - return out.setTo(-a.x, -a.y); - -}; - -/** -* Adds two 2D Points together and multiplies the result by the given scalar. -* -* @method Phaser.Point.multiplyAdd -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {number} s - The scaling value. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.multiplyAdd = function (a, b, s, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - return out.setTo(a.x + b.x * s, a.y + b.y * s); - -}; - -/** -* Interpolates the two given Points, based on the `f` value (between 0 and 1) and returns a new Point. -* -* @method Phaser.Point.interpolate -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {number} f - The level of interpolation between the two points. Indicates where the new point will be, along the line between pt1 and pt2. If f=1, pt1 is returned; if f=0, pt2 is returned. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.interpolate = function (a, b, f, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - return out.setTo(a.x + (b.x - a.x) * f, a.y + (b.y - a.y) * f); - -}; - -/** -* Return a perpendicular vector (90 degrees rotation) -* -* @method Phaser.Point.perp -* @param {Phaser.Point} a - The Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.perp = function (a, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - return out.setTo(-a.y, a.x); - -}; - -/** -* Return a perpendicular vector (-90 degrees rotation) -* -* @method Phaser.Point.rperp -* @param {Phaser.Point} a - The Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.rperp = function (a, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - return out.setTo(a.y, -a.x); - -}; - -/** -* Returns the euclidian distance of this Point object to the given object (can be a Circle, Point or anything with x/y properties). -* -* @method Phaser.Point.distance -* @param {object} a - The target object. Must have visible x and y properties that represent the center of the object. -* @param {object} b - The target object. Must have visible x and y properties that represent the center of the object. -* @param {boolean} [round=false] - Round the distance to the nearest integer. -* @return {number} The distance between this Point object and the destination Point object. -*/ -Phaser.Point.distance = function (a, b, round) { - - var distance = Phaser.Math.distance(a.x, a.y, b.x, b.y); - return round ? Math.round(distance) : distance; - -}; - -/** -* Project two Points onto another Point. -* -* @method Phaser.Point.project -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.project = function (a, b, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - var amt = a.dot(b) / b.getMagnitudeSq(); - - if (amt !== 0) - { - out.setTo(amt * b.x, amt * b.y); - } - - return out; - -}; - -/** -* Project two Points onto a Point of unit length. -* -* @method Phaser.Point.projectUnit -* @param {Phaser.Point} a - The first Point object. -* @param {Phaser.Point} b - The second Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.projectUnit = function (a, b, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - var amt = a.dot(b); - - if (amt !== 0) - { - out.setTo(amt * b.x, amt * b.y); - } - - return out; - -}; - -/** -* Right-hand normalize (make unit length) a Point. -* -* @method Phaser.Point.normalRightHand -* @param {Phaser.Point} a - The Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.normalRightHand = function (a, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - return out.setTo(a.y * -1, a.x); - -}; - -/** -* Normalize (make unit length) a Point. -* -* @method Phaser.Point.normalize -* @param {Phaser.Point} a - The Point object. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.normalize = function (a, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - var m = a.getMagnitude(); - - if (m !== 0) - { - out.setTo(a.x / m, a.y / m); - } - - return out; - -}; - -/** -* Rotates a Point object, or any object with exposed x/y properties, around the given coordinates by -* the angle specified. If the angle between the point and coordinates was 45 deg and the angle argument -* is 45 deg then the resulting angle will be 90 deg, as the angle argument is added to the current angle. -* -* The distance allows you to specify a distance constraint for the rotation between the point and the -* coordinates. If none is given the distance between the two is calculated and used. -* -* @method Phaser.Point.rotate -* @param {Phaser.Point} a - The Point object to rotate. -* @param {number} x - The x coordinate of the anchor point -* @param {number} y - The y coordinate of the anchor point -* @param {number} angle - The angle in radians (unless asDegrees is true) to rotate the Point by. -* @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)? -* @param {number} [distance] - An optional distance constraint between the Point and the anchor. -* @return {Phaser.Point} The modified point object. -*/ -Phaser.Point.rotate = function (a, x, y, angle, asDegrees, distance) { - - if (asDegrees) { angle = Phaser.Math.degToRad(angle); } - - if (distance === undefined) - { - a.subtract(x, y); - - var s = Math.sin(angle); - var c = Math.cos(angle); - - var tx = c * a.x - s * a.y; - var ty = s * a.x + c * a.y; - - a.x = tx + x; - a.y = ty + y; - } - else - { - var t = angle + Math.atan2(a.y - y, a.x - x); - a.x = x + distance * Math.cos(t); - a.y = y + distance * Math.sin(t); - } - - return a; - -}; - -/** -* Calculates centroid (or midpoint) from an array of points. If only one point is provided, that point is returned. -* -* @method Phaser.Point.centroid -* @param {Phaser.Point[]} points - The array of one or more points. -* @param {Phaser.Point} [out] - Optional Point to store the value in, if not supplied a new Point object will be created. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.centroid = function (points, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - if (Object.prototype.toString.call(points) !== '[object Array]') - { - throw new Error("Phaser.Point. Parameter 'points' must be an array"); - } - - var pointslength = points.length; - - if (pointslength < 1) - { - throw new Error("Phaser.Point. Parameter 'points' array must not be empty"); - } - - if (pointslength === 1) - { - out.copyFrom(points[0]); - return out; - } - - for (var i = 0; i < pointslength; i++) - { - Phaser.Point.add(out, points[i], out); - } - - out.divide(pointslength, pointslength); - - return out; - -}; - -/** -* Parses an object for x and/or y properties and returns a new Phaser.Point with matching values. -* If the object doesn't contain those properties a Point with x/y of zero will be returned. -* -* @method Phaser.Point.parse -* @static -* @param {object} obj - The object to parse. -* @param {string} [xProp='x'] - The property used to set the Point.x value. -* @param {string} [yProp='y'] - The property used to set the Point.y value. -* @return {Phaser.Point} The new Point object. -*/ -Phaser.Point.parse = function(obj, xProp, yProp) { - - xProp = xProp || 'x'; - yProp = yProp || 'y'; - - var point = new Phaser.Point(); - - if (obj[xProp]) - { - point.x = parseInt(obj[xProp], 10); - } - - if (obj[yProp]) - { - point.y = parseInt(obj[yProp], 10); - } - - return point; - -}; - -// Because PIXI uses its own Point, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Point = Phaser.Point; - -/** -* @author Richard Davey -* @author Adrien Brault -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a new Polygon. -* -* The points can be set from a variety of formats: -* -* - An array of Point objects: `[new Phaser.Point(x1, y1), ...]` -* - An array of objects with public x/y properties: `[obj1, obj2, ...]` -* - An array of paired numbers that represent point coordinates: `[x1,y1, x2,y2, ...]` -* - As separate Point arguments: `setTo(new Phaser.Point(x1, y1), ...)` -* - As separate objects with public x/y properties arguments: `setTo(obj1, obj2, ...)` -* - As separate arguments representing point coordinates: `setTo(x1,y1, x2,y2, ...)` -* -* @class Phaser.Polygon -* @constructor -* @param {Phaser.Point[]|number[]|...Phaser.Point|...number} points - The points to set. -*/ -Phaser.Polygon = function () { - - /** - * @property {number} area - The area of this Polygon. - */ - this.area = 0; - - /** - * @property {array} _points - An array of Points that make up this Polygon. - * @private - */ - this._points = []; - - if (arguments.length > 0) - { - this.setTo.apply(this, arguments); - } - - /** - * @property {boolean} closed - Is the Polygon closed or not? - */ - this.closed = true; - - /** - * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? - */ - this.flattened = false; - - /** - * @property {number} type - The base object type. - */ - this.type = Phaser.POLYGON; - -}; - -Phaser.Polygon.prototype = { - - /** - * Export the points as an array of flat numbers, following the sequence [ x,y, x,y, x,y ] - * - * @method Phaser.Polygon#toNumberArray - * @param {array} [output] - The array to append the points to. If not specified a new array will be created. - * @return {array} The flattened array. - */ - toNumberArray: function (output) { - - if (output === undefined) { output = []; } - - for (var i = 0; i < this._points.length; i++) - { - if (typeof this._points[i] === 'number') - { - output.push(this._points[i]); - output.push(this._points[i + 1]); - i++; - } - else - { - output.push(this._points[i].x); - output.push(this._points[i].y); - } - } - - return output; - - }, - - /** - * Flattens this Polygon so the points are a sequence of numbers. - * Any Point objects found are removed and replaced with two numbers. - * Also sets the Polygon.flattened property to `true`. - * - * @method Phaser.Polygon#flatten - * @return {Phaser.Polygon} This Polygon object - */ - flatten: function () { - - this._points = this.toNumberArray(); - - this.flattened = true; - - return this; - - }, - - /** - * Creates a copy of the given Polygon. - * This is a deep clone, the resulting copy contains new Phaser.Point objects - * - * @method Phaser.Polygon#clone - * @param {Phaser.Polygon} [output=(new Polygon)] - The polygon to update. If not specified a new polygon will be created. - * @return {Phaser.Polygon} The cloned (`output`) polygon object. - */ - clone: function (output) { - - var points = this._points.slice(); - - if (output === undefined || output === null) - { - output = new Phaser.Polygon(points); - } - else - { - output.setTo(points); - } - - return output; - - }, - - /** - * Checks whether the x and y coordinates are contained within this polygon. - * - * @method Phaser.Polygon#contains - * @param {number} x - The X value of the coordinate to test. - * @param {number} y - The Y value of the coordinate to test. - * @return {boolean} True if the coordinates are within this polygon, otherwise false. - */ - contains: function (x, y) { - - // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - - var inside = false; - - if (this.flattened) - { - for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) - { - var ix = this._points[i]; - var iy = this._points[i + 1]; - - var jx = this._points[j]; - var jy = this._points[j + 1]; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) - { - inside = !inside; - } - } - - } - else - { - for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) - { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) - { - inside = !inside; - } - } - } - - return inside; - - }, - - /** - * Sets this Polygon to the given points. - * - * The points can be set from a variety of formats: - * - * - An array of Point objects: `[new Phaser.Point(x1, y1), ...]` - * - An array of objects with public x/y properties: `[obj1, obj2, ...]` - * - An array of paired numbers that represent point coordinates: `[x1,y1, x2,y2, ...]` - * - An array of arrays with two elements representing x/y coordinates: `[[x1, y1], [x2, y2], ...]` - * - As separate Point arguments: `setTo(new Phaser.Point(x1, y1), ...)` - * - As separate objects with public x/y properties arguments: `setTo(obj1, obj2, ...)` - * - As separate arguments representing point coordinates: `setTo(x1,y1, x2,y2, ...)` - * - * `setTo` may also be called without any arguments to remove all points. - * - * @method Phaser.Polygon#setTo - * @param {Phaser.Point[]|number[]|...Phaser.Point|...number} points - The points to set. - * @return {Phaser.Polygon} This Polygon object - */ - setTo: function (points) { - - this.area = 0; - this._points = []; - - if (arguments.length > 0) - { - // If points isn't an array, use arguments as the array - if (!Array.isArray(points)) - { - points = Array.prototype.slice.call(arguments); - } - - var y0 = Number.MAX_VALUE; - - // Allows for mixed-type arguments - for (var i = 0, len = points.length; i < len; i++) - { - if (typeof points[i] === 'number') - { - var p = new PIXI.Point(points[i], points[i + 1]); - i++; - } - else if (Array.isArray(points[i])) - { - var p = new PIXI.Point(points[i][0], points[i][1]); - } - else - { - var p = new PIXI.Point(points[i].x, points[i].y); - } - - this._points.push(p); - - // Lowest boundary - if (p.y < y0) - { - y0 = p.y; - } - } - - this.calculateArea(y0); - } - - return this; - - }, - - /** - * Calcuates the area of the Polygon. This is available in the property Polygon.area - * - * @method Phaser.Polygon#calculateArea - * @private - * @param {number} y0 - The lowest boundary - * @return {number} The area of the Polygon. - */ - calculateArea: function (y0) { - - var p1; - var p2; - var avgHeight; - var width; - - for (var i = 0, len = this._points.length; i < len; i++) - { - p1 = this._points[i]; - - if (i === len - 1) - { - p2 = this._points[0]; - } - else - { - p2 = this._points[i + 1]; - } - - avgHeight = ((p1.y - y0) + (p2.y - y0)) / 2; - width = p1.x - p2.x; - this.area += avgHeight * width; - } - - return this.area; - - } - -}; - -Phaser.Polygon.prototype.constructor = Phaser.Polygon; - -/** -* Sets and modifies the points of this polygon. -* -* See {@link Phaser.Polygon#setTo setTo} for the different kinds of arrays formats that can be assigned. -* -* @name Phaser.Polygon#points -* @property {Phaser.Point[]} points - The array of vertex points. -* @deprecated Use `setTo`. -*/ -Object.defineProperty(Phaser.Polygon.prototype, 'points', { - - get: function() { - return this._points; - }, - - set: function(points) { - - if (points != null) - { - this.setTo(points); - } - else - { - // Clear the points - this.setTo(); - } - - } - -}); - -// Because PIXI uses its own type, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Polygon = Phaser.Polygon; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a new Rectangle object with the top-left corner specified by the x and y parameters and with the specified width and height parameters. -* If you call this function without parameters, a Rectangle with x, y, width, and height properties set to 0 is created. -* -* @class Phaser.Rectangle -* @constructor -* @param {number} x - The x coordinate of the top-left corner of the Rectangle. -* @param {number} y - The y coordinate of the top-left corner of the Rectangle. -* @param {number} width - The width of the Rectangle. Should always be either zero or a positive value. -* @param {number} height - The height of the Rectangle. Should always be either zero or a positive value. -*/ -Phaser.Rectangle = function (x, y, width, height) { - - x = x || 0; - y = y || 0; - width = width || 0; - height = height || 0; - - /** - * @property {number} x - The x coordinate of the top-left corner of the Rectangle. - */ - this.x = x; - - /** - * @property {number} y - The y coordinate of the top-left corner of the Rectangle. - */ - this.y = y; - - /** - * @property {number} width - The width of the Rectangle. This value should never be set to a negative. - */ - this.width = width; - - /** - * @property {number} height - The height of the Rectangle. This value should never be set to a negative. - */ - this.height = height; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.RECTANGLE; - -}; - -Phaser.Rectangle.prototype = { - - /** - * Adjusts the location of the Rectangle object, as determined by its top-left corner, by the specified amounts. - * @method Phaser.Rectangle#offset - * @param {number} dx - Moves the x value of the Rectangle object by this amount. - * @param {number} dy - Moves the y value of the Rectangle object by this amount. - * @return {Phaser.Rectangle} This Rectangle object. - */ - offset: function (dx, dy) { - - this.x += dx; - this.y += dy; - - return this; - - }, - - /** - * Adjusts the location of the Rectangle object using a Point object as a parameter. This method is similar to the Rectangle.offset() method, except that it takes a Point object as a parameter. - * @method Phaser.Rectangle#offsetPoint - * @param {Phaser.Point} point - A Point object to use to offset this Rectangle object. - * @return {Phaser.Rectangle} This Rectangle object. - */ - offsetPoint: function (point) { - - return this.offset(point.x, point.y); - - }, - - /** - * Sets the members of Rectangle to the specified values. - * @method Phaser.Rectangle#setTo - * @param {number} x - The x coordinate of the top-left corner of the Rectangle. - * @param {number} y - The y coordinate of the top-left corner of the Rectangle. - * @param {number} width - The width of the Rectangle. Should always be either zero or a positive value. - * @param {number} height - The height of the Rectangle. Should always be either zero or a positive value. - * @return {Phaser.Rectangle} This Rectangle object - */ - setTo: function (x, y, width, height) { - - this.x = x; - this.y = y; - this.width = width; - this.height = height; - - return this; - - }, - - /** - * Scales the width and height of this Rectangle by the given amounts. - * - * @method Phaser.Rectangle#scale - * @param {number} x - The amount to scale the width of the Rectangle by. A value of 0.5 would reduce by half, a value of 2 would double the width, etc. - * @param {number} [y] - The amount to scale the height of the Rectangle by. A value of 0.5 would reduce by half, a value of 2 would double the height, etc. - * @return {Phaser.Rectangle} This Rectangle object - */ - scale: function (x, y) { - - if (y === undefined) { y = x; } - - this.width *= x; - this.height *= y; - - return this; - - }, - - /** - * Centers this Rectangle so that the center coordinates match the given x and y values. - * - * @method Phaser.Rectangle#centerOn - * @param {number} x - The x coordinate to place the center of the Rectangle at. - * @param {number} y - The y coordinate to place the center of the Rectangle at. - * @return {Phaser.Rectangle} This Rectangle object - */ - centerOn: function (x, y) { - - this.centerX = x; - this.centerY = y; - - return this; - - }, - - /** - * Runs Math.floor() on both the x and y values of this Rectangle. - * @method Phaser.Rectangle#floor - */ - floor: function () { - - this.x = Math.floor(this.x); - this.y = Math.floor(this.y); - - }, - - /** - * Runs Math.floor() on the x, y, width and height values of this Rectangle. - * @method Phaser.Rectangle#floorAll - */ - floorAll: function () { - - this.x = Math.floor(this.x); - this.y = Math.floor(this.y); - this.width = Math.floor(this.width); - this.height = Math.floor(this.height); - - }, - - /** - * Runs Math.ceil() on both the x and y values of this Rectangle. - * @method Phaser.Rectangle#ceil - */ - ceil: function () { - - this.x = Math.ceil(this.x); - this.y = Math.ceil(this.y); - - }, - - /** - * Runs Math.ceil() on the x, y, width and height values of this Rectangle. - * @method Phaser.Rectangle#ceilAll - */ - ceilAll: function () { - - this.x = Math.ceil(this.x); - this.y = Math.ceil(this.y); - this.width = Math.ceil(this.width); - this.height = Math.ceil(this.height); - - }, - - /** - * Copies the x, y, width and height properties from any given object to this Rectangle. - * @method Phaser.Rectangle#copyFrom - * @param {any} source - The object to copy from. - * @return {Phaser.Rectangle} This Rectangle object. - */ - copyFrom: function (source) { - - return this.setTo(source.x, source.y, source.width, source.height); - - }, - - /** - * Copies the x, y, width and height properties from this Rectangle to any given object. - * @method Phaser.Rectangle#copyTo - * @param {any} source - The object to copy to. - * @return {object} This object. - */ - copyTo: function (dest) { - - dest.x = this.x; - dest.y = this.y; - dest.width = this.width; - dest.height = this.height; - - return dest; - - }, - - /** - * Increases the size of the Rectangle object by the specified amounts. The center point of the Rectangle object stays the same, and its size increases to the left and right by the dx value, and to the top and the bottom by the dy value. - * @method Phaser.Rectangle#inflate - * @param {number} dx - The amount to be added to the left side of the Rectangle. - * @param {number} dy - The amount to be added to the bottom side of the Rectangle. - * @return {Phaser.Rectangle} This Rectangle object. - */ - inflate: function (dx, dy) { - - return Phaser.Rectangle.inflate(this, dx, dy); - - }, - - /** - * The size of the Rectangle object, expressed as a Point object with the values of the width and height properties. - * @method Phaser.Rectangle#size - * @param {Phaser.Point} [output] - Optional Point object. If given the values will be set into the object, otherwise a brand new Point object will be created and returned. - * @return {Phaser.Point} The size of the Rectangle object. - */ - size: function (output) { - - return Phaser.Rectangle.size(this, output); - - }, - - /** - * Resize the Rectangle by providing a new width and height. - * The x and y positions remain unchanged. - * - * @method Phaser.Rectangle#resize - * @param {number} width - The width of the Rectangle. Should always be either zero or a positive value. - * @param {number} height - The height of the Rectangle. Should always be either zero or a positive value. - * @return {Phaser.Rectangle} This Rectangle object - */ - resize: function (width, height) { - - this.width = width; - this.height = height; - - return this; - - }, - - /** - * Returns a new Rectangle object with the same values for the x, y, width, and height properties as the original Rectangle object. - * @method Phaser.Rectangle#clone - * @param {Phaser.Rectangle} [output] - Optional Rectangle object. If given the values will be set into the object, otherwise a brand new Rectangle object will be created and returned. - * @return {Phaser.Rectangle} - */ - clone: function (output) { - - return Phaser.Rectangle.clone(this, output); - - }, - - /** - * Determines whether the specified coordinates are contained within the region defined by this Rectangle object. - * @method Phaser.Rectangle#contains - * @param {number} x - The x coordinate of the point to test. - * @param {number} y - The y coordinate of the point to test. - * @return {boolean} A value of true if the Rectangle object contains the specified point; otherwise false. - */ - contains: function (x, y) { - - return Phaser.Rectangle.contains(this, x, y); - - }, - - /** - * Determines whether the first Rectangle object is fully contained within the second Rectangle object. - * A Rectangle object is said to contain another if the second Rectangle object falls entirely within the boundaries of the first. - * @method Phaser.Rectangle#containsRect - * @param {Phaser.Rectangle} b - The second Rectangle object. - * @return {boolean} A value of true if the Rectangle object contains the specified point; otherwise false. - */ - containsRect: function (b) { - - return Phaser.Rectangle.containsRect(b, this); - - }, - - /** - * Determines whether the two Rectangles are equal. - * This method compares the x, y, width and height properties of each Rectangle. - * @method Phaser.Rectangle#equals - * @param {Phaser.Rectangle} b - The second Rectangle object. - * @return {boolean} A value of true if the two Rectangles have exactly the same values for the x, y, width and height properties; otherwise false. - */ - equals: function (b) { - - return Phaser.Rectangle.equals(this, b); - - }, - - /** - * If the Rectangle object specified in the toIntersect parameter intersects with this Rectangle object, returns the area of intersection as a Rectangle object. If the Rectangles do not intersect, this method returns an empty Rectangle object with its properties set to 0. - * @method Phaser.Rectangle#intersection - * @param {Phaser.Rectangle} b - The second Rectangle object. - * @param {Phaser.Rectangle} out - Optional Rectangle object. If given the intersection values will be set into this object, otherwise a brand new Rectangle object will be created and returned. - * @return {Phaser.Rectangle} A Rectangle object that equals the area of intersection. If the Rectangles do not intersect, this method returns an empty Rectangle object; that is, a Rectangle with its x, y, width, and height properties set to 0. - */ - intersection: function (b, out) { - - return Phaser.Rectangle.intersection(this, b, out); - - }, - - /** - * Determines whether this Rectangle and another given Rectangle intersect with each other. - * This method checks the x, y, width, and height properties of the two Rectangles. - * - * @method Phaser.Rectangle#intersects - * @param {Phaser.Rectangle} b - The second Rectangle object. - * @return {boolean} A value of true if the specified object intersects with this Rectangle object; otherwise false. - */ - intersects: function (b) { - - return Phaser.Rectangle.intersects(this, b); - - }, - - /** - * Determines whether the coordinates given intersects (overlaps) with this Rectangle. - * - * @method Phaser.Rectangle#intersectsRaw - * @param {number} left - The x coordinate of the left of the area. - * @param {number} right - The right coordinate of the area. - * @param {number} top - The y coordinate of the area. - * @param {number} bottom - The bottom coordinate of the area. - * @param {number} tolerance - A tolerance value to allow for an intersection test with padding, default to 0 - * @return {boolean} A value of true if the specified object intersects with the Rectangle; otherwise false. - */ - intersectsRaw: function (left, right, top, bottom, tolerance) { - - return Phaser.Rectangle.intersectsRaw(this, left, right, top, bottom, tolerance); - - }, - - /** - * Adds two Rectangles together to create a new Rectangle object, by filling in the horizontal and vertical space between the two Rectangles. - * @method Phaser.Rectangle#union - * @param {Phaser.Rectangle} b - The second Rectangle object. - * @param {Phaser.Rectangle} [out] - Optional Rectangle object. If given the new values will be set into this object, otherwise a brand new Rectangle object will be created and returned. - * @return {Phaser.Rectangle} A Rectangle object that is the union of the two Rectangles. - */ - union: function (b, out) { - - return Phaser.Rectangle.union(this, b, out); - - }, - - /** - * Returns a uniformly distributed random point from anywhere within this Rectangle. - * - * @method Phaser.Rectangle#random - * @param {Phaser.Point|object} [out] - A Phaser.Point, or any object with public x/y properties, that the values will be set in. - * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. - * @return {Phaser.Point} An object containing the random point in its `x` and `y` properties. - */ - random: function (out) { - - if (out === undefined) { out = new Phaser.Point(); } - - out.x = this.randomX; - out.y = this.randomY; - - return out; - - }, - - /** - * Returns a point based on the given position constant, which can be one of: - * - * `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, - * `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` - * and `Phaser.BOTTOM_RIGHT`. - * - * This method returns the same values as calling Rectangle.bottomLeft, etc, but those - * calls always create a new Point object, where-as this one allows you to use your own. - * - * @method Phaser.Rectangle#getPoint - * @param {integer} [position] - One of the Phaser position constants, such as `Phaser.TOP_RIGHT`. - * @param {Phaser.Point} [out] - A Phaser.Point that the values will be set in. - * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. - * @return {Phaser.Point} An object containing the point in its `x` and `y` properties. - */ - getPoint: function (position, out) { - - if (out === undefined) { out = new Phaser.Point(); } - - switch (position) - { - default: - case Phaser.TOP_LEFT: - return out.set(this.x, this.y); - - case Phaser.TOP_CENTER: - return out.set(this.centerX, this.y); - - case Phaser.TOP_RIGHT: - return out.set(this.right, this.y); - - case Phaser.LEFT_CENTER: - return out.set(this.x, this.centerY); - - case Phaser.CENTER: - return out.set(this.centerX, this.centerY); - - case Phaser.RIGHT_CENTER: - return out.set(this.right, this.centerY); - - case Phaser.BOTTOM_LEFT: - return out.set(this.x, this.bottom); - - case Phaser.BOTTOM_CENTER: - return out.set(this.centerX, this.bottom); - - case Phaser.BOTTOM_RIGHT: - return out.set(this.right, this.bottom); - } - - }, - - /** - * Returns a string representation of this object. - * @method Phaser.Rectangle#toString - * @return {string} A string representation of the instance. - */ - toString: function () { - - return "[{Rectangle (x=" + this.x + " y=" + this.y + " width=" + this.width + " height=" + this.height + " empty=" + this.empty + ")}]"; - - } - -}; - -/** -* @name Phaser.Rectangle#halfWidth -* @property {number} halfWidth - Half of the width of the Rectangle. -* @readonly -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "halfWidth", { - - get: function () { - return Math.round(this.width / 2); - } - -}); - -/** -* @name Phaser.Rectangle#halfHeight -* @property {number} halfHeight - Half of the height of the Rectangle. -* @readonly -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "halfHeight", { - - get: function () { - return Math.round(this.height / 2); - } - -}); - -/** -* The sum of the y and height properties. Changing the bottom property of a Rectangle object has no effect on the x, y and width properties, but does change the height property. -* @name Phaser.Rectangle#bottom -* @property {number} bottom - The sum of the y and height properties. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "bottom", { - - get: function () { - return this.y + this.height; - }, - - set: function (value) { - - if (value <= this.y) - { - this.height = 0; - } - else - { - this.height = value - this.y; - } - - } - -}); - -/** -* The location of the Rectangles bottom left corner as a Point object. -* @name Phaser.Rectangle#bottomLeft -* @property {Phaser.Point} bottomLeft - Gets or sets the location of the Rectangles bottom left corner as a Point object. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "bottomLeft", { - - get: function () { - return new Phaser.Point(this.x, this.bottom); - }, - - set: function (value) { - this.x = value.x; - this.bottom = value.y; - } - -}); - -/** -* The location of the Rectangles bottom right corner as a Point object. -* @name Phaser.Rectangle#bottomRight -* @property {Phaser.Point} bottomRight - Gets or sets the location of the Rectangles bottom right corner as a Point object. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "bottomRight", { - - get: function () { - return new Phaser.Point(this.right, this.bottom); - }, - - set: function (value) { - this.right = value.x; - this.bottom = value.y; - } - -}); - -/** -* The x coordinate of the left of the Rectangle. Changing the left property of a Rectangle object has no effect on the y and height properties. However it does affect the width property, whereas changing the x value does not affect the width property. -* @name Phaser.Rectangle#left -* @property {number} left - The x coordinate of the left of the Rectangle. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "left", { - - get: function () { - return this.x; - }, - - set: function (value) { - if (value >= this.right) { - this.width = 0; - } else { - this.width = this.right - value; - } - this.x = value; - } - -}); - -/** -* The sum of the x and width properties. Changing the right property of a Rectangle object has no effect on the x, y and height properties, however it does affect the width property. -* @name Phaser.Rectangle#right -* @property {number} right - The sum of the x and width properties. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "right", { - - get: function () { - return this.x + this.width; - }, - - set: function (value) { - if (value <= this.x) { - this.width = 0; - } else { - this.width = value - this.x; - } - } - -}); - -/** -* The volume of the Rectangle derived from width * height. -* @name Phaser.Rectangle#volume -* @property {number} volume - The volume of the Rectangle derived from width * height. -* @readonly -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "volume", { - - get: function () { - return this.width * this.height; - } - -}); - -/** -* The perimeter size of the Rectangle. This is the sum of all 4 sides. -* @name Phaser.Rectangle#perimeter -* @property {number} perimeter - The perimeter size of the Rectangle. This is the sum of all 4 sides. -* @readonly -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "perimeter", { - - get: function () { - return (this.width * 2) + (this.height * 2); - } - -}); - -/** -* The x coordinate of the center of the Rectangle. -* @name Phaser.Rectangle#centerX -* @property {number} centerX - The x coordinate of the center of the Rectangle. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "centerX", { - - get: function () { - return this.x + this.halfWidth; - }, - - set: function (value) { - this.x = value - this.halfWidth; - } - -}); - -/** -* The y coordinate of the center of the Rectangle. -* @name Phaser.Rectangle#centerY -* @property {number} centerY - The y coordinate of the center of the Rectangle. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "centerY", { - - get: function () { - return this.y + this.halfHeight; - }, - - set: function (value) { - this.y = value - this.halfHeight; - } - -}); - -/** -* A random value between the left and right values (inclusive) of the Rectangle. -* -* @name Phaser.Rectangle#randomX -* @property {number} randomX - A random value between the left and right values (inclusive) of the Rectangle. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "randomX", { - - get: function () { - - return this.x + (Math.random() * this.width); - - } - -}); - -/** -* A random value between the top and bottom values (inclusive) of the Rectangle. -* -* @name Phaser.Rectangle#randomY -* @property {number} randomY - A random value between the top and bottom values (inclusive) of the Rectangle. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "randomY", { - - get: function () { - - return this.y + (Math.random() * this.height); - - } - -}); - -/** -* The y coordinate of the top of the Rectangle. Changing the top property of a Rectangle object has no effect on the x and width properties. -* However it does affect the height property, whereas changing the y value does not affect the height property. -* @name Phaser.Rectangle#top -* @property {number} top - The y coordinate of the top of the Rectangle. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "top", { - - get: function () { - return this.y; - }, - - set: function (value) { - if (value >= this.bottom) { - this.height = 0; - this.y = value; - } else { - this.height = (this.bottom - value); - } - } - -}); - -/** -* The location of the Rectangles top left corner as a Point object. -* @name Phaser.Rectangle#topLeft -* @property {Phaser.Point} topLeft - The location of the Rectangles top left corner as a Point object. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "topLeft", { - - get: function () { - return new Phaser.Point(this.x, this.y); - }, - - set: function (value) { - this.x = value.x; - this.y = value.y; - } - -}); - -/** -* The location of the Rectangles top right corner as a Point object. -* @name Phaser.Rectangle#topRight -* @property {Phaser.Point} topRight - The location of the Rectangles top left corner as a Point object. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "topRight", { - - get: function () { - return new Phaser.Point(this.x + this.width, this.y); - }, - - set: function (value) { - this.right = value.x; - this.y = value.y; - } - -}); - -/** -* Determines whether or not this Rectangle object is empty. A Rectangle object is empty if its width or height is less than or equal to 0. -* If set to true then all of the Rectangle properties are set to 0. -* @name Phaser.Rectangle#empty -* @property {boolean} empty - Gets or sets the Rectangles empty state. -*/ -Object.defineProperty(Phaser.Rectangle.prototype, "empty", { - - get: function () { - return (!this.width || !this.height); - }, - - set: function (value) { - - if (value === true) - { - this.setTo(0, 0, 0, 0); - } - - } - -}); - -Phaser.Rectangle.prototype.constructor = Phaser.Rectangle; - -/** -* Increases the size of the Rectangle object by the specified amounts. The center point of the Rectangle object stays the same, and its size increases to the left and right by the dx value, and to the top and the bottom by the dy value. -* @method Phaser.Rectangle.inflate -* @param {Phaser.Rectangle} a - The Rectangle object. -* @param {number} dx - The amount to be added to the left side of the Rectangle. -* @param {number} dy - The amount to be added to the bottom side of the Rectangle. -* @return {Phaser.Rectangle} This Rectangle object. -*/ -Phaser.Rectangle.inflate = function (a, dx, dy) { - - a.x -= dx; - a.width += 2 * dx; - a.y -= dy; - a.height += 2 * dy; - - return a; - -}; - -/** -* Increases the size of the Rectangle object. This method is similar to the Rectangle.inflate() method except it takes a Point object as a parameter. -* @method Phaser.Rectangle.inflatePoint -* @param {Phaser.Rectangle} a - The Rectangle object. -* @param {Phaser.Point} point - The x property of this Point object is used to increase the horizontal dimension of the Rectangle object. The y property is used to increase the vertical dimension of the Rectangle object. -* @return {Phaser.Rectangle} The Rectangle object. -*/ -Phaser.Rectangle.inflatePoint = function (a, point) { - - return Phaser.Rectangle.inflate(a, point.x, point.y); - -}; - -/** -* The size of the Rectangle object, expressed as a Point object with the values of the width and height properties. -* @method Phaser.Rectangle.size -* @param {Phaser.Rectangle} a - The Rectangle object. -* @param {Phaser.Point} [output] - Optional Point object. If given the values will be set into the object, otherwise a brand new Point object will be created and returned. -* @return {Phaser.Point} The size of the Rectangle object -*/ -Phaser.Rectangle.size = function (a, output) { - - if (output === undefined || output === null) - { - output = new Phaser.Point(a.width, a.height); - } - else - { - output.setTo(a.width, a.height); - } - - return output; - -}; - -/** -* Returns a new Rectangle object with the same values for the x, y, width, and height properties as the original Rectangle object. -* @method Phaser.Rectangle.clone -* @param {Phaser.Rectangle} a - The Rectangle object. -* @param {Phaser.Rectangle} [output] - Optional Rectangle object. If given the values will be set into the object, otherwise a brand new Rectangle object will be created and returned. -* @return {Phaser.Rectangle} -*/ -Phaser.Rectangle.clone = function (a, output) { - - if (output === undefined || output === null) - { - output = new Phaser.Rectangle(a.x, a.y, a.width, a.height); - } - else - { - output.setTo(a.x, a.y, a.width, a.height); - } - - return output; - -}; - -/** -* Determines whether the specified coordinates are contained within the region defined by this Rectangle object. -* @method Phaser.Rectangle.contains -* @param {Phaser.Rectangle} a - The Rectangle object. -* @param {number} x - The x coordinate of the point to test. -* @param {number} y - The y coordinate of the point to test. -* @return {boolean} A value of true if the Rectangle object contains the specified point; otherwise false. -*/ -Phaser.Rectangle.contains = function (a, x, y) { - - if (a.width <= 0 || a.height <= 0) - { - return false; - } - - return (x >= a.x && x < a.right && y >= a.y && y < a.bottom); - -}; - -/** -* Determines whether the specified coordinates are contained within the region defined by the given raw values. -* @method Phaser.Rectangle.containsRaw -* @param {number} rx - The x coordinate of the top left of the area. -* @param {number} ry - The y coordinate of the top left of the area. -* @param {number} rw - The width of the area. -* @param {number} rh - The height of the area. -* @param {number} x - The x coordinate of the point to test. -* @param {number} y - The y coordinate of the point to test. -* @return {boolean} A value of true if the Rectangle object contains the specified point; otherwise false. -*/ -Phaser.Rectangle.containsRaw = function (rx, ry, rw, rh, x, y) { - - return (x >= rx && x < (rx + rw) && y >= ry && y < (ry + rh)); - -}; - -/** -* Determines whether the specified point is contained within the rectangular region defined by this Rectangle object. This method is similar to the Rectangle.contains() method, except that it takes a Point object as a parameter. -* @method Phaser.Rectangle.containsPoint -* @param {Phaser.Rectangle} a - The Rectangle object. -* @param {Phaser.Point} point - The point object being checked. Can be Point or any object with .x and .y values. -* @return {boolean} A value of true if the Rectangle object contains the specified point; otherwise false. -*/ -Phaser.Rectangle.containsPoint = function (a, point) { - - return Phaser.Rectangle.contains(a, point.x, point.y); - -}; - -/** -* Determines whether the first Rectangle object is fully contained within the second Rectangle object. -* A Rectangle object is said to contain another if the second Rectangle object falls entirely within the boundaries of the first. -* @method Phaser.Rectangle.containsRect -* @param {Phaser.Rectangle} a - The first Rectangle object. -* @param {Phaser.Rectangle} b - The second Rectangle object. -* @return {boolean} A value of true if the Rectangle object contains the specified point; otherwise false. -*/ -Phaser.Rectangle.containsRect = function (a, b) { - - // If the given rect has a larger volume than this one then it can never contain it - if (a.volume > b.volume) - { - return false; - } - - return (a.x >= b.x && a.y >= b.y && a.right < b.right && a.bottom < b.bottom); - -}; - -/** -* Determines whether the two Rectangles are equal. -* This method compares the x, y, width and height properties of each Rectangle. -* @method Phaser.Rectangle.equals -* @param {Phaser.Rectangle} a - The first Rectangle object. -* @param {Phaser.Rectangle} b - The second Rectangle object. -* @return {boolean} A value of true if the two Rectangles have exactly the same values for the x, y, width and height properties; otherwise false. -*/ -Phaser.Rectangle.equals = function (a, b) { - - return (a.x == b.x && a.y == b.y && a.width == b.width && a.height == b.height); - -}; - -/** -* Determines if the two objects (either Rectangles or Rectangle-like) have the same width and height values under strict equality. -* @method Phaser.Rectangle.sameDimensions -* @param {Rectangle-like} a - The first Rectangle object. -* @param {Rectangle-like} b - The second Rectangle object. -* @return {boolean} True if the object have equivalent values for the width and height properties. -*/ -Phaser.Rectangle.sameDimensions = function (a, b) { - - return (a.width === b.width && a.height === b.height); - -}; - -/** -* If the Rectangle object specified in the toIntersect parameter intersects with this Rectangle object, returns the area of intersection as a Rectangle object. If the Rectangles do not intersect, this method returns an empty Rectangle object with its properties set to 0. -* @method Phaser.Rectangle.intersection -* @param {Phaser.Rectangle} a - The first Rectangle object. -* @param {Phaser.Rectangle} b - The second Rectangle object. -* @param {Phaser.Rectangle} [output] - Optional Rectangle object. If given the intersection values will be set into this object, otherwise a brand new Rectangle object will be created and returned. -* @return {Phaser.Rectangle} A Rectangle object that equals the area of intersection. If the Rectangles do not intersect, this method returns an empty Rectangle object; that is, a Rectangle with its x, y, width, and height properties set to 0. -*/ -Phaser.Rectangle.intersection = function (a, b, output) { - - if (output === undefined) - { - output = new Phaser.Rectangle(); - } - - if (Phaser.Rectangle.intersects(a, b)) - { - output.x = Math.max(a.x, b.x); - output.y = Math.max(a.y, b.y); - output.width = Math.min(a.right, b.right) - output.x; - output.height = Math.min(a.bottom, b.bottom) - output.y; - } - - return output; - -}; - -/** -* Determines whether the two Rectangles intersect with each other. -* This method checks the x, y, width, and height properties of the Rectangles. -* @method Phaser.Rectangle.intersects -* @param {Phaser.Rectangle} a - The first Rectangle object. -* @param {Phaser.Rectangle} b - The second Rectangle object. -* @return {boolean} A value of true if the specified object intersects with this Rectangle object; otherwise false. -*/ -Phaser.Rectangle.intersects = function (a, b) { - - if (a.width <= 0 || a.height <= 0 || b.width <= 0 || b.height <= 0) - { - return false; - } - - return !(a.right < b.x || a.bottom < b.y || a.x > b.right || a.y > b.bottom); - -}; - -/** -* Determines whether the object specified intersects (overlaps) with the given values. -* @method Phaser.Rectangle.intersectsRaw -* @param {number} left - The x coordinate of the left of the area. -* @param {number} right - The right coordinate of the area. -* @param {number} top - The y coordinate of the area. -* @param {number} bottom - The bottom coordinate of the area. -* @param {number} tolerance - A tolerance value to allow for an intersection test with padding, default to 0 -* @return {boolean} A value of true if the specified object intersects with the Rectangle; otherwise false. -*/ -Phaser.Rectangle.intersectsRaw = function (a, left, right, top, bottom, tolerance) { - - if (tolerance === undefined) { tolerance = 0; } - - return !(left > a.right + tolerance || right < a.left - tolerance || top > a.bottom + tolerance || bottom < a.top - tolerance); - -}; - -/** -* Adds two Rectangles together to create a new Rectangle object, by filling in the horizontal and vertical space between the two Rectangles. -* @method Phaser.Rectangle.union -* @param {Phaser.Rectangle} a - The first Rectangle object. -* @param {Phaser.Rectangle} b - The second Rectangle object. -* @param {Phaser.Rectangle} [output] - Optional Rectangle object. If given the new values will be set into this object, otherwise a brand new Rectangle object will be created and returned. -* @return {Phaser.Rectangle} A Rectangle object that is the union of the two Rectangles. -*/ -Phaser.Rectangle.union = function (a, b, output) { - - if (output === undefined) - { - output = new Phaser.Rectangle(); - } - - return output.setTo(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.max(a.right, b.right) - Math.min(a.left, b.left), Math.max(a.bottom, b.bottom) - Math.min(a.top, b.top)); - -}; - -/** -* Calculates the Axis Aligned Bounding Box (or aabb) from an array of points. -* -* @method Phaser.Rectangle#aabb -* @param {Phaser.Point[]} points - The array of one or more points. -* @param {Phaser.Rectangle} [out] - Optional Rectangle to store the value in, if not supplied a new Rectangle object will be created. -* @return {Phaser.Rectangle} The new Rectangle object. -* @static -*/ -Phaser.Rectangle.aabb = function(points, out) { - - if (out === undefined) { - out = new Phaser.Rectangle(); - } - - var xMax = Number.NEGATIVE_INFINITY, - xMin = Number.POSITIVE_INFINITY, - yMax = Number.NEGATIVE_INFINITY, - yMin = Number.POSITIVE_INFINITY; - - points.forEach(function(point) { - if (point.x > xMax) { - xMax = point.x; - } - if (point.x < xMin) { - xMin = point.x; - } - - if (point.y > yMax) { - yMax = point.y; - } - if (point.y < yMin) { - yMin = point.y; - } - }); - - out.setTo(xMin, yMin, xMax - xMin, yMax - yMin); - - return out; -}; - -// Because PIXI uses its own Rectangle, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Rectangle = Phaser.Rectangle; -PIXI.EmptyRectangle = new Phaser.Rectangle(0, 0, 0, 0); - -/** -* @author Mat Groves http://matgroves.com/ -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Rounded Rectangle object is an area defined by its position and has nice rounded corners, -* as indicated by its top-left corner point (x, y) and by its width and its height. -* -* @class Phaser.RoundedRectangle -* @constructor -* @param {number} [x=0] - The x coordinate of the top-left corner of the Rectangle. -* @param {number} [y=0] - The y coordinate of the top-left corner of the Rectangle. -* @param {number} [width=0] - The width of the Rectangle. Should always be either zero or a positive value. -* @param {number} [height=0] - The height of the Rectangle. Should always be either zero or a positive value. -* @param {number} [radius=20] - Controls the radius of the rounded corners. -*/ -Phaser.RoundedRectangle = function(x, y, width, height, radius) -{ - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (width === undefined) { width = 0; } - if (height === undefined) { height = 0; } - if (radius === undefined) { radius = 20; } - - /** - * @property {number} x - The x coordinate of the top-left corner of the Rectangle. - */ - this.x = x; - - /** - * @property {number} y - The y coordinate of the top-left corner of the Rectangle. - */ - this.y = y; - - /** - * @property {number} width - The width of the Rectangle. This value should never be set to a negative. - */ - this.width = width; - - /** - * @property {number} height - The height of the Rectangle. This value should never be set to a negative. - */ - this.height = height; - - /** - * @property {number} radius - The radius of the rounded corners. - */ - this.radius = radius || 20; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.ROUNDEDRECTANGLE; -}; - -Phaser.RoundedRectangle.prototype = { - - /** - * Returns a new RoundedRectangle object with the same values for the x, y, width, height and - * radius properties as this RoundedRectangle object. - * - * @method Phaser.RoundedRectangle#clone - * @return {Phaser.RoundedRectangle} - */ - clone: function () { - - return new Phaser.RoundedRectangle(this.x, this.y, this.width, this.height, this.radius); - - }, - - /** - * Determines whether the specified coordinates are contained within the region defined by this Rounded Rectangle object. - * - * @method Phaser.RoundedRectangle#contains - * @param {number} x - The x coordinate of the point to test. - * @param {number} y - The y coordinate of the point to test. - * @return {boolean} A value of true if the RoundedRectangle Rectangle object contains the specified point; otherwise false. - */ - contains: function (x, y) { - - if (this.width <= 0 || this.height <= 0) - { - return false; - } - - var x1 = this.x; - - if (x >= x1 && x <= x1 + this.width) - { - var y1 = this.y; - - if (y >= y1 && y <= y1 + this.height) - { - return true; - } - } - - return false; - - } - -}; - -Phaser.RoundedRectangle.prototype.constructor = Phaser.RoundedRectangle; - -// Because PIXI uses its own type, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.RoundedRectangle = Phaser.RoundedRectangle; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Camera is your view into the game world. It has a position and size and renders only those objects within its field of view. -* The game automatically creates a single Stage sized camera on boot. Move the camera around the world with Phaser.Camera.x/y -* -* @class Phaser.Camera -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. -* @param {number} id - Not being used at the moment, will be when Phaser supports multiple camera -* @param {number} x - Position of the camera on the X axis -* @param {number} y - Position of the camera on the Y axis -* @param {number} width - The width of the view rectangle -* @param {number} height - The height of the view rectangle -*/ -Phaser.Camera = function (game, id, x, y, width, height) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.World} world - A reference to the game world. - */ - this.world = game.world; - - /** - * @property {number} id - Reserved for future multiple camera set-ups. - * @default - */ - this.id = 0; - - /** - * Camera view. - * The view into the world we wish to render (by default the game dimensions). - * The x/y values are in world coordinates, not screen coordinates, the width/height is how many pixels to render. - * Sprites outside of this view are not rendered if Sprite.autoCull is set to `true`. Otherwise they are always rendered. - * @property {Phaser.Rectangle} view - */ - this.view = new Phaser.Rectangle(x, y, width, height); - - /** - * The Camera is bound to this Rectangle and cannot move outside of it. By default it is enabled and set to the size of the World. - * The Rectangle can be located anywhere in the world and updated as often as you like. If you don't wish the Camera to be bound - * at all then set this to null. The values can be anything and are in World coordinates, with 0,0 being the top-left of the world. - * - * @property {Phaser.Rectangle} bounds - The Rectangle in which the Camera is bounded. Set to null to allow for movement anywhere. - */ - this.bounds = new Phaser.Rectangle(x, y, width, height); - - /** - * @property {Phaser.Rectangle} deadzone - Moving inside this Rectangle will not cause the camera to move. - */ - this.deadzone = null; - - /** - * @property {boolean} visible - Whether this camera is visible or not. - * @default - */ - this.visible = true; - - /** - * @property {boolean} roundPx - If a Camera has roundPx set to `true` it will call `view.floor` as part of its update loop, keeping its boundary to integer values. Set this to `false` to disable this from happening. - * @default - */ - this.roundPx = true; - - /** - * @property {boolean} atLimit - Whether this camera is flush with the World Bounds or not. - */ - this.atLimit = { x: false, y: false }; - - /** - * @property {Phaser.Sprite} target - If the camera is tracking a Sprite, this is a reference to it, otherwise null. - * @default - */ - this.target = null; - - /** - * @property {PIXI.DisplayObject} displayObject - The display object to which all game objects are added. Set by World.boot. - */ - this.displayObject = null; - - /** - * @property {Phaser.Point} scale - The scale of the display object to which all game objects are added. Set by World.boot. - */ - this.scale = null; - - /** - * @property {number} totalInView - The total number of Sprites with `autoCull` set to `true` that are visible by this Camera. - * @readonly - */ - this.totalInView = 0; - - /** - * The linear interpolation value to use when following a target. - * The default values of 1 means the camera will instantly snap to the target coordinates. - * A lower value, such as 0.1 means the camera will more slowly track the target, giving - * a smooth transition. You can set the horizontal and vertical values independently, and also - * adjust this value in real-time during your game. - * @property {Phaser.Point} lerp - * @default - */ - this.lerp = new Phaser.Point(1, 1); - - /** - * @property {Phaser.Signal} onShakeComplete - This signal is dispatched when the camera shake effect completes. - */ - this.onShakeComplete = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onFlashComplete - This signal is dispatched when the camera flash effect completes. - */ - this.onFlashComplete = new Phaser.Signal(); - - /** - * This signal is dispatched when the camera fade effect completes. - * When the fade effect completes you will be left with the screen black (or whatever - * color you faded to). In order to reset this call `Camera.resetFX`. This is called - * automatically when you change State. - * @property {Phaser.Signal} onFadeComplete - */ - this.onFadeComplete = new Phaser.Signal(); - - /** - * The Graphics object used to handle camera fx such as fade and flash. - * @property {Phaser.Graphics} fx - * @protected - */ - this.fx = null; - - /** - * @property {Phaser.Point} _targetPosition - Internal point used to calculate target position. - * @private - */ - this._targetPosition = new Phaser.Point(); - - /** - * @property {number} edge - Edge property. - * @private - * @default - */ - this._edge = 0; - - /** - * @property {Phaser.Point} position - Current position of the camera in world. - * @private - * @default - */ - this._position = new Phaser.Point(); - - /** - * @property {Object} _shake - The shake effect container. - * @private - */ - this._shake = { - intensity: 0, - duration: 0, - horizontal: false, - vertical: false, - shakeBounds: true, - x: 0, - y: 0 - }; - - /** - * @property {number} _fxDuration - FX duration timer. - * @private - */ - this._fxDuration = 0; - - /** - * @property {number} _fxType - The FX type running. - * @private - */ - this._fxType = 0; - -}; - -/** -* @constant -* @type {number} -*/ -Phaser.Camera.FOLLOW_LOCKON = 0; - -/** -* @constant -* @type {number} -*/ -Phaser.Camera.FOLLOW_PLATFORMER = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.Camera.FOLLOW_TOPDOWN = 2; - -/** -* @constant -* @type {number} -*/ -Phaser.Camera.FOLLOW_TOPDOWN_TIGHT = 3; - -/** -* @constant -* @type {number} -*/ -Phaser.Camera.SHAKE_BOTH = 4; - -/** -* @constant -* @type {number} -*/ -Phaser.Camera.SHAKE_HORIZONTAL = 5; - -/** -* @constant -* @type {number} -*/ -Phaser.Camera.SHAKE_VERTICAL = 6; - -/** -* @constant -* @type {boolean} -*/ -Phaser.Camera.ENABLE_FX = true; - -Phaser.Camera.prototype = { - - /** - * Called automatically by Phaser.World. - * - * @method Phaser.Camera#boot - * @private - */ - boot: function () { - - this.displayObject = this.game.world; - - this.scale = this.game.world.scale; - - this.game.camera = this; - - if (Phaser.Graphics && Phaser.Camera.ENABLE_FX) - { - this.fx = new Phaser.Graphics(this.game); - - this.game.stage.addChild(this.fx); - } - - }, - - /** - * Camera preUpdate. Sets the total view counter to zero. - * - * @method Phaser.Camera#preUpdate - */ - preUpdate: function () { - - this.totalInView = 0; - - }, - - /** - * Tell the camera which sprite to follow. - * - * You can set the follow type and a linear interpolation value. - * Use low lerp values (such as 0.1) to automatically smooth the camera motion. - * - * If you find you're getting a slight "jitter" effect when following a Sprite it's probably to do with sub-pixel rendering of the Sprite position. - * This can be disabled by setting `game.renderer.renderSession.roundPixels = true` to force full pixel rendering. - * - * @method Phaser.Camera#follow - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text} target - The object you want the camera to track. Set to null to not follow anything. - * @param {number} [style] - Leverage one of the existing "deadzone" presets. If you use a custom deadzone, ignore this parameter and manually specify the deadzone after calling follow(). - * @param {float} [lerpX=1] - A value between 0 and 1. This value specifies the amount of linear interpolation to use when horizontally tracking the target. The closer the value to 1, the faster the camera will track. - * @param {float} [lerpY=1] - A value between 0 and 1. This value specifies the amount of linear interpolation to use when vertically tracking the target. The closer the value to 1, the faster the camera will track. - */ - follow: function (target, style, lerpX, lerpY) { - - if (style === undefined) { style = Phaser.Camera.FOLLOW_LOCKON; } - if (lerpX === undefined) { lerpX = 1; } - if (lerpY === undefined) { lerpY = 1; } - - this.target = target; - this.lerp.set(lerpX, lerpY); - - var helper; - - switch (style) { - - case Phaser.Camera.FOLLOW_PLATFORMER: - var w = this.width / 8; - var h = this.height / 3; - this.deadzone = new Phaser.Rectangle((this.width - w) / 2, (this.height - h) / 2 - h * 0.25, w, h); - break; - - case Phaser.Camera.FOLLOW_TOPDOWN: - helper = Math.max(this.width, this.height) / 4; - this.deadzone = new Phaser.Rectangle((this.width - helper) / 2, (this.height - helper) / 2, helper, helper); - break; - - case Phaser.Camera.FOLLOW_TOPDOWN_TIGHT: - helper = Math.max(this.width, this.height) / 8; - this.deadzone = new Phaser.Rectangle((this.width - helper) / 2, (this.height - helper) / 2, helper, helper); - break; - - case Phaser.Camera.FOLLOW_LOCKON: - this.deadzone = null; - break; - - default: - this.deadzone = null; - break; - } - - }, - - /** - * Sets the Camera follow target to null, stopping it from following an object if it's doing so. - * - * @method Phaser.Camera#unfollow - */ - unfollow: function () { - - this.target = null; - - }, - - /** - * Move the camera focus on a display object instantly. - * @method Phaser.Camera#focusOn - * @param {any} displayObject - The display object to focus the camera on. Must have visible x/y properties. - */ - focusOn: function (displayObject) { - - this.setPosition(Math.round(displayObject.x - this.view.halfWidth), Math.round(displayObject.y - this.view.halfHeight)); - - }, - - /** - * Move the camera focus on a location instantly. - * @method Phaser.Camera#focusOnXY - * @param {number} x - X position. - * @param {number} y - Y position. - */ - focusOnXY: function (x, y) { - - this.setPosition(Math.round(x - this.view.halfWidth), Math.round(y - this.view.halfHeight)); - - }, - - /** - * This creates a camera shake effect. It works by applying a random amount of additional - * spacing on the x and y axis each frame. You can control the intensity and duration - * of the effect, and if it should effect both axis or just one. - * - * When the shake effect ends the signal Camera.onShakeComplete is dispatched. - * - * @method Phaser.Camera#shake - * @param {float} [intensity=0.05] - The intensity of the camera shake. Given as a percentage of the camera size representing the maximum distance that the camera can move while shaking. - * @param {number} [duration=500] - The duration of the shake effect in milliseconds. - * @param {boolean} [force=true] - If a camera shake effect is already running and force is true it will replace the previous effect, resetting the duration. - * @param {number} [direction=Phaser.Camera.SHAKE_BOTH] - The directions in which the camera can shake. Either Phaser.Camera.SHAKE_BOTH, Phaser.Camera.SHAKE_HORIZONTAL or Phaser.Camera.SHAKE_VERTICAL. - * @param {boolean} [shakeBounds=true] - Is the effect allowed to shake the camera beyond its bounds (if set?). - * @return {boolean} True if the shake effect was started, otherwise false. - */ - shake: function (intensity, duration, force, direction, shakeBounds) { - - if (intensity === undefined) { intensity = 0.05; } - if (duration === undefined) { duration = 500; } - if (force === undefined) { force = true; } - if (direction === undefined) { direction = Phaser.Camera.SHAKE_BOTH; } - if (shakeBounds === undefined) { shakeBounds = true; } - - if (!force && this._shake.duration > 0) - { - // Can't reset an already running shake - return false; - } - - this._shake.intensity = intensity; - this._shake.duration = duration; - this._shake.shakeBounds = shakeBounds; - - this._shake.x = 0; - this._shake.y = 0; - - this._shake.horizontal = (direction === Phaser.Camera.SHAKE_BOTH || direction === Phaser.Camera.SHAKE_HORIZONTAL); - this._shake.vertical = (direction === Phaser.Camera.SHAKE_BOTH || direction === Phaser.Camera.SHAKE_VERTICAL); - - return true; - - }, - - /** - * This creates a camera flash effect. It works by filling the game with the solid fill - * color specified, and then fading it away to alpha 0 over the duration given. - * - * You can use this for things such as hit feedback effects. - * - * When the effect ends the signal Camera.onFlashComplete is dispatched. - * - * @method Phaser.Camera#flash - * @param {numer} [color=0xffffff] - The color of the flash effect. I.e. 0xffffff for white, 0xff0000 for red, etc. - * @param {number} [duration=500] - The duration of the flash effect in milliseconds. - * @param {boolean} [force=false] - If a camera flash or fade effect is already running and force is true it will replace the previous effect, resetting the duration. - * @return {boolean} True if the effect was started, otherwise false. - */ - flash: function (color, duration, force) { - - if (color === undefined) { color = 0xffffff; } - if (duration === undefined) { duration = 500; } - if (force === undefined) { force = false; } - - if (!this.fx || (!force && this._fxDuration > 0)) - { - return false; - } - - this.fx.clear(); - - this.fx.beginFill(color); - this.fx.drawRect(0, 0, this.width, this.height); - this.fx.endFill(); - - this.fx.alpha = 1; - - this._fxDuration = duration; - this._fxType = 0; - - return true; - - }, - - /** - * This creates a camera fade effect. It works by filling the game with the - * color specified, over the duration given, ending with a solid fill. - * - * You can use this for things such as transitioning to a new scene. - * - * The game will be left 'filled' at the end of this effect, likely obscuring - * everything. In order to reset it you can call `Camera.resetFX` and it will clear the - * fade. Or you can call `Camera.flash` with the same color as the fade, and it will - * reverse the process, bringing the game back into view again. - * - * When the effect ends the signal Camera.onFadeComplete is dispatched. - * - * @method Phaser.Camera#fade - * @param {numer} [color=0x000000] - The color the game will fade to. I.e. 0x000000 for black, 0xff0000 for red, etc. - * @param {number} [duration=500] - The duration of the fade in milliseconds. - * @param {boolean} [force=false] - If a camera flash or fade effect is already running and force is true it will replace the previous effect, resetting the duration. - * @return {boolean} True if the effect was started, otherwise false. - */ - fade: function (color, duration, force) { - - if (color === undefined) { color = 0x000000; } - if (duration === undefined) { duration = 500; } - if (force === undefined) { force = false; } - - if (!this.fx || (!force && this._fxDuration > 0)) - { - return false; - } - - this.fx.clear(); - - this.fx.beginFill(color); - this.fx.drawRect(0, 0, this.width, this.height); - this.fx.endFill(); - - this.fx.alpha = 0; - - this._fxDuration = duration; - this._fxType = 1; - - return true; - - }, - - /** - * The camera update loop. This is called automatically by the core game loop. - * - * @method Phaser.Camera#update - * @protected - */ - update: function () { - - if (this._fxDuration > 0) - { - this.updateFX(); - } - - if (this._shake.duration > 0) - { - this.updateShake(); - } - - if (this.bounds) - { - this.checkBounds(); - } - - if (this.roundPx) - { - this.view.floor(); - this._shake.x = Math.floor(this._shake.x); - this._shake.y = Math.floor(this._shake.y); - } - - this.displayObject.position.x = -this.view.x; - this.displayObject.position.y = -this.view.y; - - }, - - /** - * Update the camera flash and fade effects. - * - * @method Phaser.Camera#updateFX - * @private - */ - updateFX: function () { - - if (this._fxType === 0) - { - // flash - this.fx.alpha -= this.game.time.elapsedMS / this._fxDuration; - - if (this.fx.alpha <= 0) - { - this._fxDuration = 0; - this.fx.alpha = 0; - this.onFlashComplete.dispatch(); - } - } - else - { - // fade - this.fx.alpha += this.game.time.elapsedMS / this._fxDuration; - - if (this.fx.alpha >= 1) - { - this._fxDuration = 0; - this.fx.alpha = 1; - this.onFadeComplete.dispatch(); - } - } - - }, - - /** - * Update the camera shake effect. - * - * @method Phaser.Camera#updateShake - * @private - */ - updateShake: function () { - - this._shake.duration -= this.game.time.elapsedMS; - - if (this._shake.duration <= 0) - { - this.onShakeComplete.dispatch(); - this._shake.x = 0; - this._shake.y = 0; - } - else - { - if (this._shake.horizontal) - { - this._shake.x = this.game.rnd.frac() * this._shake.intensity * this.view.width * 2 - this._shake.intensity * this.view.width; - } - - if (this._shake.vertical) - { - this._shake.y = this.game.rnd.frac() * this._shake.intensity * this.view.height * 2 - this._shake.intensity * this.view.height; - } - } - - }, - - /** - * Internal method that handles tracking a sprite. - * - * @method Phaser.Camera#updateTarget - * @private - */ - updateTarget: function () { - - this._targetPosition.x = this.view.x + this.target.worldPosition.x; - this._targetPosition.y = this.view.y + this.target.worldPosition.y; - - if (this.deadzone) - { - this._edge = this._targetPosition.x - this.view.x; - - if (this._edge < this.deadzone.left) - { - this.view.x = this.game.math.linear(this.view.x, this._targetPosition.x - this.deadzone.left, this.lerp.x); - } - else if (this._edge > this.deadzone.right) - { - this.view.x = this.game.math.linear(this.view.x, this._targetPosition.x - this.deadzone.right, this.lerp.x); - } - - this._edge = this._targetPosition.y - this.view.y; - - if (this._edge < this.deadzone.top) - { - this.view.y = this.game.math.linear(this.view.y, this._targetPosition.y - this.deadzone.top, this.lerp.y); - } - else if (this._edge > this.deadzone.bottom) - { - this.view.y = this.game.math.linear(this.view.y, this._targetPosition.y - this.deadzone.bottom, this.lerp.y); - } - } - else - { - this.view.x = this.game.math.linear(this.view.x, this._targetPosition.x - this.view.halfWidth, this.lerp.x); - this.view.y = this.game.math.linear(this.view.y, this._targetPosition.y - this.view.halfHeight, this.lerp.y); - } - - if (this.bounds) - { - this.checkBounds(); - } - - if (this.roundPx) - { - this.view.floor(); - } - - this.displayObject.position.x = -this.view.x; - this.displayObject.position.y = -this.view.y; - - }, - - /** - * Update the Camera bounds to match the game world. - * - * @method Phaser.Camera#setBoundsToWorld - */ - setBoundsToWorld: function () { - - if (this.bounds) - { - this.bounds.copyFrom(this.game.world.bounds); - } - - }, - - /** - * Method called to ensure the camera doesn't venture outside of the game world. - * Called automatically by Camera.update. - * - * @method Phaser.Camera#checkBounds - * @protected - */ - checkBounds: function () { - - this.atLimit.x = false; - this.atLimit.y = false; - - var vx = this.view.x + this._shake.x; - var vw = this.view.right + this._shake.x; - var vy = this.view.y + this._shake.y; - var vh = this.view.bottom + this._shake.y; - - // Make sure we didn't go outside the cameras bounds - if (vx <= this.bounds.x * this.scale.x) - { - this.atLimit.x = true; - this.view.x = this.bounds.x * this.scale.x; - - if (!this._shake.shakeBounds) - { - // The camera is up against the bounds, so reset the shake - this._shake.x = 0; - } - } - - if (vw >= this.bounds.right * this.scale.x) - { - this.atLimit.x = true; - this.view.x = (this.bounds.right * this.scale.x) - this.width; - - if (!this._shake.shakeBounds) - { - // The camera is up against the bounds, so reset the shake - this._shake.x = 0; - } - } - - if (vy <= this.bounds.top * this.scale.y) - { - this.atLimit.y = true; - this.view.y = this.bounds.top * this.scale.y; - - if (!this._shake.shakeBounds) - { - // The camera is up against the bounds, so reset the shake - this._shake.y = 0; - } - } - - if (vh >= this.bounds.bottom * this.scale.y) - { - this.atLimit.y = true; - this.view.y = (this.bounds.bottom * this.scale.y) - this.height; - - if (!this._shake.shakeBounds) - { - // The camera is up against the bounds, so reset the shake - this._shake.y = 0; - } - } - - }, - - /** - * A helper function to set both the X and Y properties of the camera at once - * without having to use game.camera.x and game.camera.y. - * - * @method Phaser.Camera#setPosition - * @param {number} x - X position. - * @param {number} y - Y position. - */ - setPosition: function (x, y) { - - this.view.x = x; - this.view.y = y; - - if (this.bounds) - { - this.checkBounds(); - } - - }, - - /** - * Sets the size of the view rectangle given the width and height in parameters. - * - * @method Phaser.Camera#setSize - * @param {number} width - The desired width. - * @param {number} height - The desired height. - */ - setSize: function (width, height) { - - this.view.width = width; - this.view.height = height; - - }, - - /** - * Resets the camera back to 0,0 and un-follows any object it may have been tracking. - * Also immediately resets any camera effects that may have been running such as - * shake, flash or fade. - * - * @method Phaser.Camera#reset - */ - reset: function () { - - this.target = null; - - this.view.x = 0; - this.view.y = 0; - - this._shake.duration = 0; - - this.resetFX(); - - }, - - /** - * Resets any active FX, such as a fade or flash and immediately clears it. - * Useful to calling after a fade in order to remove the fade from the Stage. - * - * @method Phaser.Camera#resetFX - */ - resetFX: function () { - - this.fx.clear(); - - this.fx.alpha = 0; - - this._fxDuration = 0; - - } - -}; - -Phaser.Camera.prototype.constructor = Phaser.Camera; - -/** -* The Cameras x coordinate. This value is automatically clamped if it falls outside of the World bounds. -* @name Phaser.Camera#x -* @property {number} x - Gets or sets the cameras x position. -*/ -Object.defineProperty(Phaser.Camera.prototype, "x", { - - get: function () { - - return this.view.x; - - }, - - set: function (value) { - - this.view.x = value; - - if (this.bounds) - { - this.checkBounds(); - } - } - -}); - -/** -* The Cameras y coordinate. This value is automatically clamped if it falls outside of the World bounds. -* @name Phaser.Camera#y -* @property {number} y - Gets or sets the cameras y position. -*/ -Object.defineProperty(Phaser.Camera.prototype, "y", { - - get: function () { - - return this.view.y; - - }, - - set: function (value) { - - this.view.y = value; - - if (this.bounds) - { - this.checkBounds(); - } - } - -}); - -/** -* The Cameras position. This value is automatically clamped if it falls outside of the World bounds. -* @name Phaser.Camera#position -* @property {Phaser.Point} position - Gets or sets the cameras xy position using Phaser.Point object. -*/ -Object.defineProperty(Phaser.Camera.prototype, "position", { - - get: function () { - - this._position.set(this.view.x, this.view.y); - - return this._position; - - }, - - set: function (value) { - - if (typeof value.x !== "undefined") { this.view.x = value.x; } - if (typeof value.y !== "undefined") { this.view.y = value.y; } - - if (this.bounds) - { - this.checkBounds(); - } - } - -}); - -/** -* The Cameras width. By default this is the same as the Game size and should not be adjusted for now. -* @name Phaser.Camera#width -* @property {number} width - Gets or sets the cameras width. -*/ -Object.defineProperty(Phaser.Camera.prototype, "width", { - - get: function () { - - return this.view.width; - - }, - - set: function (value) { - - this.view.width = value; - - } - -}); - -/** -* The Cameras height. By default this is the same as the Game size and should not be adjusted for now. -* @name Phaser.Camera#height -* @property {number} height - Gets or sets the cameras height. -*/ -Object.defineProperty(Phaser.Camera.prototype, "height", { - - get: function () { - - return this.view.height; - - }, - - set: function (value) { - - this.view.height = value; - - } - -}); - - -/** -* The Cameras shake intensity. -* @name Phaser.Camera#shakeIntensity -* @property {number} shakeIntensity - Gets or sets the cameras shake intensity. -*/ -Object.defineProperty(Phaser.Camera.prototype, "shakeIntensity", { - - get: function () { - - return this._shake.intensity; - - }, - - set: function (value) { - - this._shake.intensity = value; - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* This is a base State class which can be extended if you are creating your own game. -* It provides quick access to common functions such as the camera, cache, input, match, sound and more. -* -* @class Phaser.State -* @constructor -*/ -Phaser.State = function () { - - /** - * @property {Phaser.Game} game - This is a reference to the currently running Game. - */ - this.game = null; - - /** - * @property {string} key - The string based identifier given to the State when added into the State Manager. - */ - this.key = ''; - - /** - * @property {Phaser.GameObjectFactory} add - A reference to the GameObjectFactory which can be used to add new objects to the World. - */ - this.add = null; - - /** - * @property {Phaser.GameObjectCreator} make - A reference to the GameObjectCreator which can be used to make new objects. - */ - this.make = null; - - /** - * @property {Phaser.Camera} camera - A handy reference to World.camera. - */ - this.camera = null; - - /** - * @property {Phaser.Cache} cache - A reference to the game cache which contains any loaded or generated assets, such as images, sound and more. - */ - this.cache = null; - - /** - * @property {Phaser.Input} input - A reference to the Input Manager. - */ - this.input = null; - - /** - * @property {Phaser.Loader} load - A reference to the Loader, which you mostly use in the preload method of your state to load external assets. - */ - this.load = null; - - /** - * @property {Phaser.Math} math - A reference to Math class with lots of helpful functions. - */ - this.math = null; - - /** - * @property {Phaser.SoundManager} sound - A reference to the Sound Manager which can create, play and stop sounds, as well as adjust global volume. - */ - this.sound = null; - - /** - * @property {Phaser.ScaleManager} scale - A reference to the Scale Manager which controls the way the game scales on different displays. - */ - this.scale = null; - - /** - * @property {Phaser.Stage} stage - A reference to the Stage. - */ - this.stage = null; - - /** - * @property {Phaser.StateManager} stage - A reference to the State Manager, which controls state changes. - */ - this.state = null; - - /** - * @property {Phaser.Time} time - A reference to the game clock and timed events system. - */ - this.time = null; - - /** - * @property {Phaser.TweenManager} tweens - A reference to the tween manager. - */ - this.tweens = null; - - /** - * @property {Phaser.World} world - A reference to the game world. All objects live in the Game World and its size is not bound by the display resolution. - */ - this.world = null; - - /** - * @property {Phaser.Particles} particles - The Particle Manager. It is called during the core gameloop and updates any Particle Emitters it has created. - */ - this.particles = null; - - /** - * @property {Phaser.Physics} physics - A reference to the physics manager which looks after the different physics systems available within Phaser. - */ - this.physics = null; - - /** - * @property {Phaser.RandomDataGenerator} rnd - A reference to the seeded and repeatable random data generator. - */ - this.rnd = null; - -}; - -Phaser.State.prototype = { - - /** - * init is the very first function called when your State starts up. It's called before preload, create or anything else. - * If you need to route the game away to another State you could do so here, or if you need to prepare a set of variables - * or objects before the preloading starts. - * - * @method Phaser.State#init - */ - init: function () { - }, - - /** - * preload is called first. Normally you'd use this to load your game assets (or those needed for the current State) - * You shouldn't create any objects in this method that require assets that you're also loading in this method, as - * they won't yet be available. - * - * @method Phaser.State#preload - */ - preload: function () { - }, - - /** - * loadUpdate is called during the Loader process. This only happens if you've set one or more assets to load in the preload method. - * - * @method Phaser.State#loadUpdate - */ - loadUpdate: function () { - }, - - /** - * loadRender is called during the Loader process. This only happens if you've set one or more assets to load in the preload method. - * The difference between loadRender and render is that any objects you render in this method you must be sure their assets exist. - * - * @method Phaser.State#loadRender - */ - loadRender: function () { - }, - - /** - * create is called once preload has completed, this includes the loading of any assets from the Loader. - * If you don't have a preload method then create is the first method called in your State. - * - * @method Phaser.State#create - */ - create: function () { - }, - - /** - * The update method is left empty for your own use. - * It is called during the core game loop AFTER debug, physics, plugins and the Stage have had their preUpdate methods called. - * It is called BEFORE Stage, Tweens, Sounds, Input, Physics, Particles and Plugins have had their postUpdate methods called. - * - * @method Phaser.State#update - */ - update: function () { - }, - - /** - * The preRender method is called after all Game Objects have been updated, but before any rendering takes place. - * - * @method Phaser.State#preRender - */ - preRender: function () { - }, - - /** - * Nearly all display objects in Phaser render automatically, you don't need to tell them to render. - * However the render method is called AFTER the game renderer and plugins have rendered, so you're able to do any - * final post-processing style effects here. Note that this happens before plugins postRender takes place. - * - * @method Phaser.State#render - */ - render: function () { - }, - - /** - * If your game is set to Scalemode RESIZE then each time the browser resizes it will call this function, passing in the new width and height. - * - * @method Phaser.State#resize - */ - resize: function () { - }, - - /** - * This method will be called if the core game loop is paused. - * - * @method Phaser.State#paused - */ - paused: function () { - }, - - /** - * This method will be called when the core game loop resumes from a paused state. - * - * @method Phaser.State#resumed - */ - resumed: function () { - }, - - /** - * pauseUpdate is called while the game is paused instead of preUpdate, update and postUpdate. - * - * @method Phaser.State#pauseUpdate - */ - pauseUpdate: function () { - }, - - /** - * This method will be called when the State is shutdown (i.e. you switch to another state from this one). - * - * @method Phaser.State#shutdown - */ - shutdown: function () { - } - -}; - -Phaser.State.prototype.constructor = Phaser.State; - -/* jshint newcap: false */ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The State Manager is responsible for loading, setting up and switching game states. -* -* @class Phaser.StateManager -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {Phaser.State|Object} [pendingState=null] - A State object to seed the manager with. -*/ -Phaser.StateManager = function (game, pendingState) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {object} states - The object containing Phaser.States. - */ - this.states = {}; - - /** - * @property {Phaser.State} _pendingState - The state to be switched to in the next frame. - * @private - */ - this._pendingState = null; - - if (typeof pendingState !== 'undefined' && pendingState !== null) - { - this._pendingState = pendingState; - } - - /** - * @property {boolean} _clearWorld - Clear the world when we switch state? - * @private - */ - this._clearWorld = false; - - /** - * @property {boolean} _clearCache - Clear the cache when we switch state? - * @private - */ - this._clearCache = false; - - /** - * @property {boolean} _created - Flag that sets if the State has been created or not. - * @private - */ - this._created = false; - - /** - * @property {any[]} _args - Temporary container when you pass vars from one State to another. - * @private - */ - this._args = []; - - /** - * @property {string} current - The current active State object. - * @default - */ - this.current = ''; - - /** - * onStateChange is a Phaser.Signal that is dispatched whenever the game changes state. - * - * It is dispatched only when the new state is started, which isn't usually at the same time as StateManager.start - * is called because state swapping is done in sync with the game loop. It is dispatched *before* any of the new states - * methods (such as preload and create) are called, and *after* the previous states shutdown method has been run. - * - * The callback you specify is sent two parameters: the string based key of the new state, - * and the second parameter is the string based key of the old / previous state. - * - * @property {Phaser.Signal} onStateChange - */ - this.onStateChange = new Phaser.Signal(); - - /** - * @property {function} onInitCallback - This is called when the state is set as the active state. - * @default - */ - this.onInitCallback = null; - - /** - * @property {function} onPreloadCallback - This is called when the state starts to load assets. - * @default - */ - this.onPreloadCallback = null; - - /** - * @property {function} onCreateCallback - This is called when the state preload has finished and creation begins. - * @default - */ - this.onCreateCallback = null; - - /** - * @property {function} onUpdateCallback - This is called when the state is updated, every game loop. It doesn't happen during preload (@see onLoadUpdateCallback). - * @default - */ - this.onUpdateCallback = null; - - /** - * @property {function} onRenderCallback - This is called post-render. It doesn't happen during preload (see onLoadRenderCallback). - * @default - */ - this.onRenderCallback = null; - - /** - * @property {function} onResizeCallback - This is called if ScaleManager.scalemode is RESIZE and a resize event occurs. It's passed the new width and height. - * @default - */ - this.onResizeCallback = null; - - /** - * @property {function} onPreRenderCallback - This is called before the state is rendered and before the stage is cleared but after all game objects have had their final properties adjusted. - * @default - */ - this.onPreRenderCallback = null; - - /** - * @property {function} onLoadUpdateCallback - This is called when the State is updated during the preload phase. - * @default - */ - this.onLoadUpdateCallback = null; - - /** - * @property {function} onLoadRenderCallback - This is called when the State is rendered during the preload phase. - * @default - */ - this.onLoadRenderCallback = null; - - /** - * @property {function} onPausedCallback - This is called when the game is paused. - * @default - */ - this.onPausedCallback = null; - - /** - * @property {function} onResumedCallback - This is called when the game is resumed from a paused state. - * @default - */ - this.onResumedCallback = null; - - /** - * @property {function} onPauseUpdateCallback - This is called every frame while the game is paused. - * @default - */ - this.onPauseUpdateCallback = null; - - /** - * @property {function} onShutDownCallback - This is called when the state is shut down (i.e. swapped to another state). - * @default - */ - this.onShutDownCallback = null; - -}; - -Phaser.StateManager.prototype = { - - /** - * The Boot handler is called by Phaser.Game when it first starts up. - * @method Phaser.StateManager#boot - * @private - */ - boot: function () { - - this.game.onPause.add(this.pause, this); - this.game.onResume.add(this.resume, this); - - if (this._pendingState !== null && typeof this._pendingState !== 'string') - { - this.add('default', this._pendingState, true); - } - - }, - - /** - * Adds a new State into the StateManager. You must give each State a unique key by which you'll identify it. - * The State can be either a Phaser.State object (or an object that extends it), a plain JavaScript object or a function. - * If a function is given a new state object will be created by calling it. - * - * @method Phaser.StateManager#add - * @param {string} key - A unique key you use to reference this state, i.e. "MainMenu", "Level1". - * @param {Phaser.State|object|function} state - The state you want to switch to. - * @param {boolean} [autoStart=false] - If true the State will be started immediately after adding it. - */ - add: function (key, state, autoStart) { - - if (autoStart === undefined) { autoStart = false; } - - var newState; - - if (state instanceof Phaser.State) - { - newState = state; - } - else if (typeof state === 'object') - { - newState = state; - newState.game = this.game; - } - else if (typeof state === 'function') - { - newState = new state(this.game); - } - - this.states[key] = newState; - - if (autoStart) - { - if (this.game.isBooted) - { - this.start(key); - } - else - { - this._pendingState = key; - } - } - - return newState; - - }, - - /** - * Delete the given state. - * @method Phaser.StateManager#remove - * @param {string} key - A unique key you use to reference this state, i.e. "MainMenu", "Level1". - */ - remove: function (key) { - - if (this.current === key) - { - this.callbackContext = null; - - this.onInitCallback = null; - this.onShutDownCallback = null; - - this.onPreloadCallback = null; - this.onLoadRenderCallback = null; - this.onLoadUpdateCallback = null; - this.onCreateCallback = null; - this.onUpdateCallback = null; - this.onPreRenderCallback = null; - this.onRenderCallback = null; - this.onResizeCallback = null; - this.onPausedCallback = null; - this.onResumedCallback = null; - this.onPauseUpdateCallback = null; - } - - delete this.states[key]; - - }, - - /** - * Start the given State. If a State is already running then State.shutDown will be called (if it exists) before switching to the new State. - * - * @method Phaser.StateManager#start - * @param {string} key - The key of the state you want to start. - * @param {boolean} [clearWorld=true] - Clear everything in the world? This clears the World display list fully (but not the Stage, so if you've added your own objects to the Stage they will need managing directly) - * @param {boolean} [clearCache=false] - Clear the Game.Cache? This purges out all loaded assets. The default is false and you must have clearWorld=true if you want to clearCache as well. - * @param {...*} parameter - Additional parameters that will be passed to the State.init function (if it has one). - */ - start: function (key, clearWorld, clearCache) { - - if (clearWorld === undefined) { clearWorld = true; } - if (clearCache === undefined) { clearCache = false; } - - if (this.checkState(key)) - { - // Place the state in the queue. It will be started the next time the game loop begins. - this._pendingState = key; - this._clearWorld = clearWorld; - this._clearCache = clearCache; - - if (arguments.length > 3) - { - this._args = Array.prototype.splice.call(arguments, 3); - } - } - - }, - - /** - * Restarts the current State. State.shutDown will be called (if it exists) before the State is restarted. - * - * @method Phaser.StateManager#restart - * @param {boolean} [clearWorld=true] - Clear everything in the world? This clears the World display list fully (but not the Stage, so if you've added your own objects to the Stage they will need managing directly) - * @param {boolean} [clearCache=false] - Clear the Game.Cache? This purges out all loaded assets. The default is false and you must have clearWorld=true if you want to clearCache as well. - * @param {...*} parameter - Additional parameters that will be passed to the State.init function if it has one. - */ - restart: function (clearWorld, clearCache) { - - if (clearWorld === undefined) { clearWorld = true; } - if (clearCache === undefined) { clearCache = false; } - - // Place the state in the queue. It will be started the next time the game loop starts. - this._pendingState = this.current; - this._clearWorld = clearWorld; - this._clearCache = clearCache; - - if (arguments.length > 2) - { - this._args = Array.prototype.slice.call(arguments, 2); - } - - }, - - /** - * Used by onInit and onShutdown when those functions don't exist on the state - * @method Phaser.StateManager#dummy - * @private - */ - dummy: function () { - }, - - /** - * preUpdate is called right at the start of the game loop. It is responsible for changing to a new state that was requested previously. - * - * @method Phaser.StateManager#preUpdate - */ - preUpdate: function () { - - if (this._pendingState && this.game.isBooted) - { - var previousStateKey = this.current; - - // Already got a state running? - this.clearCurrentState(); - - this.setCurrentState(this._pendingState); - - this.onStateChange.dispatch(this.current, previousStateKey); - - if (this.current !== this._pendingState) - { - return; - } - else - { - this._pendingState = null; - } - - // If StateManager.start has been called from the init of a State that ALSO has a preload, then - // onPreloadCallback will be set, but must be ignored - if (this.onPreloadCallback) - { - this.game.load.reset(true); - this.onPreloadCallback.call(this.callbackContext, this.game); - - // Is the loader empty? - if (this.game.load.totalQueuedFiles() === 0 && this.game.load.totalQueuedPacks() === 0) - { - this.loadComplete(); - } - else - { - // Start the loader going as we have something in the queue - this.game.load.start(); - } - } - else - { - // No init? Then there was nothing to load either - this.loadComplete(); - } - } - - }, - - /** - * This method clears the current State, calling its shutdown callback. The process also removes any active tweens, - * resets the camera, resets input, clears physics, removes timers and if set clears the world and cache too. - * - * @method Phaser.StateManager#clearCurrentState - */ - clearCurrentState: function () { - - if (this.current) - { - if (this.onShutDownCallback) - { - this.onShutDownCallback.call(this.callbackContext, this.game); - } - - this.game.tweens.removeAll(); - - this.game.camera.reset(); - - this.game.input.reset(true); - - this.game.physics.clear(); - - this.game.time.removeAll(); - - this.game.scale.reset(this._clearWorld); - - if (this.game.debug) - { - this.game.debug.reset(); - } - - if (this._clearWorld) - { - this.game.world.shutdown(); - - if (this._clearCache) - { - this.game.cache.destroy(); - } - } - } - - }, - - /** - * Checks if a given phaser state is valid. A State is considered valid if it has at least one of the core functions: preload, create, update or render. - * - * @method Phaser.StateManager#checkState - * @param {string} key - The key of the state you want to check. - * @return {boolean} true if the State has the required functions, otherwise false. - */ - checkState: function (key) { - - if (this.states[key]) - { - if (this.states[key]['preload'] || this.states[key]['create'] || this.states[key]['update'] || this.states[key]['render']) - { - return true; - } - else - { - console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"); - return false; - } - } - else - { - console.warn("Phaser.StateManager - No state found with the key: " + key); - return false; - } - - }, - - /** - * Links game properties to the State given by the key. - * - * @method Phaser.StateManager#link - * @param {string} key - State key. - * @protected - */ - link: function (key) { - - this.states[key].game = this.game; - this.states[key].add = this.game.add; - this.states[key].make = this.game.make; - this.states[key].camera = this.game.camera; - this.states[key].cache = this.game.cache; - this.states[key].input = this.game.input; - this.states[key].load = this.game.load; - this.states[key].math = this.game.math; - this.states[key].sound = this.game.sound; - this.states[key].scale = this.game.scale; - this.states[key].state = this; - this.states[key].stage = this.game.stage; - this.states[key].time = this.game.time; - this.states[key].tweens = this.game.tweens; - this.states[key].world = this.game.world; - this.states[key].particles = this.game.particles; - this.states[key].rnd = this.game.rnd; - this.states[key].physics = this.game.physics; - this.states[key].key = key; - - }, - - /** - * Nulls all State level Phaser properties, including a reference to Game. - * - * @method Phaser.StateManager#unlink - * @param {string} key - State key. - * @protected - */ - unlink: function (key) { - - if (this.states[key]) - { - this.states[key].game = null; - this.states[key].add = null; - this.states[key].make = null; - this.states[key].camera = null; - this.states[key].cache = null; - this.states[key].input = null; - this.states[key].load = null; - this.states[key].math = null; - this.states[key].sound = null; - this.states[key].scale = null; - this.states[key].state = null; - this.states[key].stage = null; - this.states[key].time = null; - this.states[key].tweens = null; - this.states[key].world = null; - this.states[key].particles = null; - this.states[key].rnd = null; - this.states[key].physics = null; - } - - }, - - /** - * Sets the current State. Should not be called directly (use StateManager.start) - * - * @method Phaser.StateManager#setCurrentState - * @param {string} key - State key. - * @private - */ - setCurrentState: function (key) { - - this.callbackContext = this.states[key]; - - this.link(key); - - // Used when the state is set as being the current active state - this.onInitCallback = this.states[key]['init'] || this.dummy; - - this.onPreloadCallback = this.states[key]['preload'] || null; - this.onLoadRenderCallback = this.states[key]['loadRender'] || null; - this.onLoadUpdateCallback = this.states[key]['loadUpdate'] || null; - this.onCreateCallback = this.states[key]['create'] || null; - this.onUpdateCallback = this.states[key]['update'] || null; - this.onPreRenderCallback = this.states[key]['preRender'] || null; - this.onRenderCallback = this.states[key]['render'] || null; - this.onResizeCallback = this.states[key]['resize'] || null; - this.onPausedCallback = this.states[key]['paused'] || null; - this.onResumedCallback = this.states[key]['resumed'] || null; - this.onPauseUpdateCallback = this.states[key]['pauseUpdate'] || null; - - // Used when the state is no longer the current active state - this.onShutDownCallback = this.states[key]['shutdown'] || this.dummy; - - // Reset the physics system, but not on the first state start - if (this.current !== '') - { - this.game.physics.reset(); - } - - this.current = key; - this._created = false; - - // At this point key and pendingState should equal each other - this.onInitCallback.apply(this.callbackContext, this._args); - - // If they no longer do then the init callback hit StateManager.start - if (key === this._pendingState) - { - this._args = []; - } - - this.game._kickstart = true; - - }, - - /** - * Gets the current State. - * - * @method Phaser.StateManager#getCurrentState - * @return {Phaser.State} - * @public - */ - getCurrentState: function() { - return this.states[this.current]; - }, - - /** - * @method Phaser.StateManager#loadComplete - * @protected - */ - loadComplete: function () { - - // Make sure to do load-update one last time before state is set to _created - if (this._created === false && this.onLoadUpdateCallback) - { - this.onLoadUpdateCallback.call(this.callbackContext, this.game); - } - - if (this._created === false && this.onCreateCallback) - { - this._created = true; - this.onCreateCallback.call(this.callbackContext, this.game); - } - else - { - this._created = true; - } - - }, - - /** - * @method Phaser.StateManager#pause - * @protected - */ - pause: function () { - - if (this._created && this.onPausedCallback) - { - this.onPausedCallback.call(this.callbackContext, this.game); - } - - }, - - /** - * @method Phaser.StateManager#resume - * @protected - */ - resume: function () { - - if (this._created && this.onResumedCallback) - { - this.onResumedCallback.call(this.callbackContext, this.game); - } - - }, - - /** - * @method Phaser.StateManager#update - * @protected - */ - update: function () { - - if (this._created) - { - if (this.onUpdateCallback) - { - this.onUpdateCallback.call(this.callbackContext, this.game); - } - } - else - { - if (this.onLoadUpdateCallback) - { - this.onLoadUpdateCallback.call(this.callbackContext, this.game); - } - } - - }, - - /** - * @method Phaser.StateManager#pauseUpdate - * @protected - */ - pauseUpdate: function () { - - if (this._created) - { - if (this.onPauseUpdateCallback) - { - this.onPauseUpdateCallback.call(this.callbackContext, this.game); - } - } - else - { - if (this.onLoadUpdateCallback) - { - this.onLoadUpdateCallback.call(this.callbackContext, this.game); - } - } - - }, - - /** - * @method Phaser.StateManager#preRender - * @protected - * @param {number} elapsedTime - The time elapsed since the last update. - */ - preRender: function (elapsedTime) { - - if (this._created && this.onPreRenderCallback) - { - this.onPreRenderCallback.call(this.callbackContext, this.game, elapsedTime); - } - - }, - - /** - * @method Phaser.StateManager#resize - * @protected - */ - resize: function (width, height) { - - if (this.onResizeCallback) - { - this.onResizeCallback.call(this.callbackContext, width, height); - } - - }, - - /** - * @method Phaser.StateManager#render - * @protected - */ - render: function () { - - if (this._created) - { - if (this.onRenderCallback) - { - if (this.game.renderType === Phaser.CANVAS) - { - this.game.context.save(); - this.game.context.setTransform(1, 0, 0, 1, 0, 0); - this.onRenderCallback.call(this.callbackContext, this.game); - this.game.context.restore(); - } - else - { - this.onRenderCallback.call(this.callbackContext, this.game); - } - } - } - else - { - if (this.onLoadRenderCallback) - { - this.onLoadRenderCallback.call(this.callbackContext, this.game); - } - } - - }, - - /** - * Removes all StateManager callback references to the State object, nulls the game reference and clears the States object. - * You don't recover from this without rebuilding the Phaser instance again. - * @method Phaser.StateManager#destroy - */ - destroy: function () { - - this._clearWorld = true; - this._clearCache = true; - - this.clearCurrentState(); - - this.callbackContext = null; - - this.onInitCallback = null; - this.onShutDownCallback = null; - - this.onPreloadCallback = null; - this.onLoadRenderCallback = null; - this.onLoadUpdateCallback = null; - this.onCreateCallback = null; - this.onUpdateCallback = null; - this.onRenderCallback = null; - this.onPausedCallback = null; - this.onResumedCallback = null; - this.onPauseUpdateCallback = null; - - this.game = null; - this.states = {}; - this._pendingState = null; - this.current = ''; - - } - -}; - -Phaser.StateManager.prototype.constructor = Phaser.StateManager; - -/** -* @name Phaser.StateManager#created -* @property {boolean} created - True if the current state has had its `create` method run (if it has one, if not this is true by default). -* @readOnly -*/ -Object.defineProperty(Phaser.StateManager.prototype, "created", { - - get: function () { - - return this._created; - - } - -}); - -/** -* "It's like nailing jelly to a kitten" - Gary Penn -*/ - -/** -* @author Miller Medeiros http://millermedeiros.github.com/js-signals/ -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Signals are what Phaser uses to handle events and event dispatching. -* You can listen for a Signal by binding a callback / function to it. -* This is done by using either `Signal.add` or `Signal.addOnce`. -* -* For example you can listen for a touch or click event from the Input Manager -* by using its `onDown` Signal: -* -* `game.input.onDown.add(function() { ... });` -* -* Rather than inline your function, you can pass a reference: -* -* `game.input.onDown.add(clicked, this);` -* `function clicked () { ... }` -* -* In this case the second argument (`this`) is the context in which your function should be called. -* -* Now every time the InputManager dispatches the `onDown` signal (or event), your function -* will be called. -* -* Very often a Signal will send arguments to your function. -* This is specific to the Signal itself. -* If you're unsure then check the documentation, or failing that simply do: -* -* `Signal.add(function() { console.log(arguments); })` -* -* and it will log all of the arguments your function received from the Signal. -* -* Sprites have lots of default signals you can listen to in their Events class, such as: -* -* `sprite.events.onKilled` -* -* Which is called automatically whenever the Sprite is killed. -* There are lots of other events, see the Events component for a list. -* -* As well as listening to pre-defined Signals you can also create your own: -* -* `var mySignal = new Phaser.Signal();` -* -* This creates a new Signal. You can bind a callback to it: -* -* `mySignal.add(myCallback, this);` -* -* and then finally when ready you can dispatch the Signal: -* -* `mySignal.dispatch(your arguments);` -* -* And your callback will be invoked. See the dispatch method for more details. -* -* @class Phaser.Signal -* @constructor -*/ -Phaser.Signal = function () {}; - -Phaser.Signal.prototype = { - - /** - * @property {?Array.} _bindings - Internal variable. - * @private - */ - _bindings: null, - - /** - * @property {any} _prevParams - Internal variable. - * @private - */ - _prevParams: null, - - /** - * Memorize the previously dispatched event? - * - * If an event has been memorized it is automatically dispatched when a new listener is added with {@link #add} or {@link #addOnce}. - * Use {@link #forget} to clear any currently memorized event. - * - * @property {boolean} memorize - */ - memorize: false, - - /** - * @property {boolean} _shouldPropagate - * @private - */ - _shouldPropagate: true, - - /** - * Is the Signal active? Only active signals will broadcast dispatched events. - * - * Setting this property during a dispatch will only affect the next dispatch. To stop the propagation of a signal from a listener use {@link #halt}. - * - * @property {boolean} active - * @default - */ - active: true, - - /** - * @property {function} _boundDispatch - The bound dispatch function, if any. - * @private - */ - _boundDispatch: false, - - /** - * @method Phaser.Signal#validateListener - * @param {function} listener - Signal handler function. - * @param {string} fnName - Function name. - * @private - */ - validateListener: function (listener, fnName) { - - if (typeof listener !== 'function') - { - throw new Error('Phaser.Signal: listener is a required param of {fn}() and should be a Function.'.replace('{fn}', fnName)); - } - - }, - - /** - * @method Phaser.Signal#_registerListener - * @private - * @param {function} listener - Signal handler function. - * @param {boolean} isOnce - Should the listener only be called once? - * @param {object} [listenerContext] - The context under which the listener is invoked. - * @param {number} [priority] - The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added. (default = 0). - * @return {Phaser.SignalBinding} An Object representing the binding between the Signal and listener. - */ - _registerListener: function (listener, isOnce, listenerContext, priority, args) { - - var prevIndex = this._indexOfListener(listener, listenerContext); - var binding; - - if (prevIndex !== -1) - { - binding = this._bindings[prevIndex]; - - if (binding.isOnce() !== isOnce) - { - throw new Error('You cannot add' + (isOnce ? '' : 'Once') + '() then add' + (!isOnce ? '' : 'Once') + '() the same listener without removing the relationship first.'); - } - } - else - { - binding = new Phaser.SignalBinding(this, listener, isOnce, listenerContext, priority, args); - this._addBinding(binding); - } - - if (this.memorize && this._prevParams) - { - binding.execute(this._prevParams); - } - - return binding; - - }, - - /** - * @method Phaser.Signal#_addBinding - * @private - * @param {Phaser.SignalBinding} binding - An Object representing the binding between the Signal and listener. - */ - _addBinding: function (binding) { - - if (!this._bindings) - { - this._bindings = []; - } - - // Simplified insertion sort - var n = this._bindings.length; - - do { - n--; - } - while (this._bindings[n] && binding._priority <= this._bindings[n]._priority); - - this._bindings.splice(n + 1, 0, binding); - - }, - - /** - * @method Phaser.Signal#_indexOfListener - * @private - * @param {function} listener - Signal handler function. - * @param {object} [context=null] - Signal handler function. - * @return {number} The index of the listener within the private bindings array. - */ - _indexOfListener: function (listener, context) { - - if (!this._bindings) - { - return -1; - } - - if (context === undefined) { context = null; } - - var n = this._bindings.length; - var cur; - - while (n--) - { - cur = this._bindings[n]; - - if (cur._listener === listener && cur.context === context) - { - return n; - } - } - - return -1; - - }, - - /** - * Check if a specific listener is attached. - * - * @method Phaser.Signal#has - * @param {function} listener - Signal handler function. - * @param {object} [context] - Context on which listener will be executed (object that should represent the `this` variable inside listener function). - * @return {boolean} If Signal has the specified listener. - */ - has: function (listener, context) { - - return this._indexOfListener(listener, context) !== -1; - - }, - - /** - * Add an event listener for this signal. - * - * An event listener is a callback with a related context and priority. - * - * You can optionally provide extra arguments which will be passed to the callback after any internal parameters. - * - * For example: `Phaser.Key.onDown` when dispatched will send the Phaser.Key object that caused the signal as the first parameter. - * Any arguments you've specified after `priority` will be sent as well: - * - * `fireButton.onDown.add(shoot, this, 0, 'lazer', 100);` - * - * When onDown dispatches it will call the `shoot` callback passing it: `Phaser.Key, 'lazer', 100`. - * - * Where the first parameter is the one that Key.onDown dispatches internally and 'lazer', - * and the value 100 were the custom arguments given in the call to 'add'. - * - * @method Phaser.Signal#add - * @param {function} listener - The function to call when this Signal is dispatched. - * @param {object} [listenerContext] - The context under which the listener will be executed (i.e. the object that should represent the `this` variable). - * @param {number} [priority] - The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added (default = 0) - * @param {...any} [args=(none)] - Additional arguments to pass to the callback (listener) function. They will be appended after any arguments usually dispatched. - * @return {Phaser.SignalBinding} An Object representing the binding between the Signal and listener. - */ - add: function (listener, listenerContext, priority) { - - this.validateListener(listener, 'add'); - - var args = []; - - if (arguments.length > 3) - { - for (var i = 3; i < arguments.length; i++) - { - args.push(arguments[i]); - } - } - - return this._registerListener(listener, false, listenerContext, priority, args); - - }, - - /** - * Add a one-time listener - the listener is automatically removed after the first execution. - * - * If there is as {@link Phaser.Signal#memorize memorized} event then it will be dispatched and - * the listener will be removed immediately. - * - * @method Phaser.Signal#addOnce - * @param {function} listener - The function to call when this Signal is dispatched. - * @param {object} [listenerContext] - The context under which the listener will be executed (i.e. the object that should represent the `this` variable). - * @param {number} [priority] - The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added (default = 0) - * @param {...any} [args=(none)] - Additional arguments to pass to the callback (listener) function. They will be appended after any arguments usually dispatched. - * @return {Phaser.SignalBinding} An Object representing the binding between the Signal and listener. - */ - addOnce: function (listener, listenerContext, priority) { - - this.validateListener(listener, 'addOnce'); - - var args = []; - - if (arguments.length > 3) - { - for (var i = 3; i < arguments.length; i++) - { - args.push(arguments[i]); - } - } - - return this._registerListener(listener, true, listenerContext, priority, args); - - }, - - /** - * Remove a single event listener. - * - * @method Phaser.Signal#remove - * @param {function} listener - Handler function that should be removed. - * @param {object} [context=null] - Execution context (since you can add the same handler multiple times if executing in a different context). - * @return {function} Listener handler function. - */ - remove: function (listener, context) { - - this.validateListener(listener, 'remove'); - - var i = this._indexOfListener(listener, context); - - if (i !== -1) - { - this._bindings[i]._destroy(); //no reason to a Phaser.SignalBinding exist if it isn't attached to a signal - this._bindings.splice(i, 1); - } - - return listener; - - }, - - /** - * Remove all event listeners. - * - * @method Phaser.Signal#removeAll - * @param {object} [context=null] - If specified only listeners for the given context will be removed. - */ - removeAll: function (context) { - - if (context === undefined) { context = null; } - - if (!this._bindings) - { - return; - } - - var n = this._bindings.length; - - while (n--) - { - if (context) - { - if (this._bindings[n].context === context) - { - this._bindings[n]._destroy(); - this._bindings.splice(n, 1); - } - } - else - { - this._bindings[n]._destroy(); - } - } - - if (!context) - { - this._bindings.length = 0; - } - - }, - - /** - * Gets the total number of listeners attached to this Signal. - * - * @method Phaser.Signal#getNumListeners - * @return {integer} Number of listeners attached to the Signal. - */ - getNumListeners: function () { - - return this._bindings ? this._bindings.length : 0; - - }, - - /** - * Stop propagation of the event, blocking the dispatch to next listener on the queue. - * - * This should be called only during event dispatch as calling it before/after dispatch won't affect another broadcast. - * See {@link #active} to enable/disable the signal entirely. - * - * @method Phaser.Signal#halt - */ - halt: function () { - - this._shouldPropagate = false; - - }, - - /** - * Dispatch / broadcast the event to all listeners. - * - * To create an instance-bound dispatch for this Signal, use {@link #boundDispatch}. - * - * @method Phaser.Signal#dispatch - * @param {any} [params] - Parameters that should be passed to each handler. - */ - dispatch: function () { - - if (!this.active || !this._bindings) - { - return; - } - - var paramsArr = Array.prototype.slice.call(arguments); - var n = this._bindings.length; - var bindings; - - if (this.memorize) - { - this._prevParams = paramsArr; - } - - if (!n) - { - // Should come after memorize - return; - } - - bindings = this._bindings.slice(); //clone array in case add/remove items during dispatch - this._shouldPropagate = true; //in case `halt` was called before dispatch or during the previous dispatch. - - //execute all callbacks until end of the list or until a callback returns `false` or stops propagation - //reverse loop since listeners with higher priority will be added at the end of the list - do { - n--; - } - while (bindings[n] && this._shouldPropagate && bindings[n].execute(paramsArr) !== false); - - }, - - /** - * Forget the currently {@link Phaser.Signal#memorize memorized} event, if any. - * - * @method Phaser.Signal#forget - */ - forget: function() { - - if (this._prevParams) - { - this._prevParams = null; - } - - }, - - /** - * Dispose the signal - no more events can be dispatched. - * - * This removes all event listeners and clears references to external objects. - * Calling methods on a disposed objects results in undefined behavior. - * - * @method Phaser.Signal#dispose - */ - dispose: function () { - - this.removeAll(); - - this._bindings = null; - if (this._prevParams) - { - this._prevParams = null; - } - - }, - - /** - * A string representation of the object. - * - * @method Phaser.Signal#toString - * @return {string} String representation of the object. - */ - toString: function () { - - return '[Phaser.Signal active:'+ this.active +' numListeners:'+ this.getNumListeners() +']'; - - } - -}; - -/** -* Create a `dispatch` function that maintains a binding to the original Signal context. -* -* Use the resulting value if the dispatch function needs to be passed somewhere -* or called independently of the Signal object. -* -* @memberof Phaser.Signal -* @property {function} boundDispatch -*/ -Object.defineProperty(Phaser.Signal.prototype, "boundDispatch", { - - get: function () { - var _this = this; - return this._boundDispatch || (this._boundDispatch = function () { - return _this.dispatch.apply(_this, arguments); - }); - } - -}); - -Phaser.Signal.prototype.constructor = Phaser.Signal; - -/** -* @author Miller Medeiros http://millermedeiros.github.com/js-signals/ -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Object that represents a binding between a Signal and a listener function. -* This is an internal constructor and shouldn't be created directly. -* Inspired by Joa Ebert AS3 SignalBinding and Robert Penner's Slot classes. -* -* @class Phaser.SignalBinding -* @constructor -* @param {Phaser.Signal} signal - Reference to Signal object that listener is currently bound to. -* @param {function} listener - Handler function bound to the signal. -* @param {boolean} isOnce - If binding should be executed just once. -* @param {object} [listenerContext=null] - Context on which listener will be executed (object that should represent the `this` variable inside listener function). -* @param {number} [priority] - The priority level of the event listener. (default = 0). -* @param {...any} [args=(none)] - Additional arguments to pass to the callback (listener) function. They will be appended after any arguments usually dispatched. -*/ -Phaser.SignalBinding = function (signal, listener, isOnce, listenerContext, priority, args) { - - /** - * @property {Phaser.Game} _listener - Handler function bound to the signal. - * @private - */ - this._listener = listener; - - if (isOnce) - { - this._isOnce = true; - } - - if (listenerContext != null) /* not null/undefined */ - { - this.context = listenerContext; - } - - /** - * @property {Phaser.Signal} _signal - Reference to Signal object that listener is currently bound to. - * @private - */ - this._signal = signal; - - if (priority) - { - this._priority = priority; - } - - if (args && args.length) - { - this._args = args; - } - -}; - -Phaser.SignalBinding.prototype = { - - /** - * @property {?object} context - Context on which listener will be executed (object that should represent the `this` variable inside listener function). - */ - context: null, - - /** - * @property {boolean} _isOnce - If binding should be executed just once. - * @private - */ - _isOnce: false, - - /** - * @property {number} _priority - Listener priority. - * @private - */ - _priority: 0, - - /** - * @property {array} _args - Listener arguments. - * @private - */ - _args: null, - - /** - * @property {number} callCount - The number of times the handler function has been called. - */ - callCount: 0, - - /** - * If binding is active and should be executed. - * @property {boolean} active - * @default - */ - active: true, - - /** - * Default parameters passed to listener during `Signal.dispatch` and `SignalBinding.execute` (curried parameters). - * @property {array|null} params - * @default - */ - params: null, - - /** - * Call listener passing arbitrary parameters. - * If binding was added using `Signal.addOnce()` it will be automatically removed from signal dispatch queue, this method is used internally for the signal dispatch. - * @method Phaser.SignalBinding#execute - * @param {any[]} [paramsArr] - Array of parameters that should be passed to the listener. - * @return {any} Value returned by the listener. - */ - execute: function(paramsArr) { - - var handlerReturn, params; - - if (this.active && !!this._listener) - { - params = this.params ? this.params.concat(paramsArr) : paramsArr; - - if (this._args) - { - params = params.concat(this._args); - } - - handlerReturn = this._listener.apply(this.context, params); - - this.callCount++; - - if (this._isOnce) - { - this.detach(); - } - } - - return handlerReturn; - - }, - - /** - * Detach binding from signal. - * alias to: @see mySignal.remove(myBinding.getListener()); - * @method Phaser.SignalBinding#detach - * @return {function|null} Handler function bound to the signal or `null` if binding was previously detached. - */ - detach: function () { - return this.isBound() ? this._signal.remove(this._listener, this.context) : null; - }, - - /** - * @method Phaser.SignalBinding#isBound - * @return {boolean} True if binding is still bound to the signal and has a listener. - */ - isBound: function () { - return (!!this._signal && !!this._listener); - }, - - /** - * @method Phaser.SignalBinding#isOnce - * @return {boolean} If SignalBinding will only be executed once. - */ - isOnce: function () { - return this._isOnce; - }, - - /** - * @method Phaser.SignalBinding#getListener - * @return {function} Handler function bound to the signal. - */ - getListener: function () { - return this._listener; - }, - - /** - * @method Phaser.SignalBinding#getSignal - * @return {Phaser.Signal} Signal that listener is currently bound to. - */ - getSignal: function () { - return this._signal; - }, - - /** - * Delete instance properties - * @method Phaser.SignalBinding#_destroy - * @private - */ - _destroy: function () { - delete this._signal; - delete this._listener; - delete this.context; - }, - - /** - * @method Phaser.SignalBinding#toString - * @return {string} String representation of the object. - */ - toString: function () { - return '[Phaser.SignalBinding isOnce:' + this._isOnce +', isBound:'+ this.isBound() +', active:' + this.active + ']'; - } - -}; - -Phaser.SignalBinding.prototype.constructor = Phaser.SignalBinding; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* This is a base Filter class to use for any Phaser filter development. -* -* The vast majority of filters (including all of those that ship with Phaser) use fragment shaders, and -* therefore only work in WebGL and are not supported by Canvas at all. -* -* @class Phaser.Filter -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {object} uniforms - Uniform mappings object -* @param {Array|string} fragmentSrc - The fragment shader code. Either an array, one element per line of code, or a string. -*/ -Phaser.Filter = function (game, uniforms, fragmentSrc) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {number} type - The const type of this object, either Phaser.WEBGL_FILTER or Phaser.CANVAS_FILTER. - * @default - */ - this.type = Phaser.WEBGL_FILTER; - - /** - * An array of passes - some filters contain a few steps this array simply stores the steps in a linear fashion. - * For example the blur filter has two passes blurX and blurY. - * @property {array} passes - An array of filter objects. - * @private - */ - this.passes = [this]; - - /** - * @property {array} shaders - Array an array of shaders. - * @private - */ - this.shaders = []; - - /** - * @property {boolean} dirty - Internal PIXI var. - * @default - */ - this.dirty = true; - - /** - * @property {number} padding - Internal PIXI var. - * @default - */ - this.padding = 0; - - /** - * @property {Phaser.Point} prevPoint - The previous position of the pointer (we don't update the uniform if the same) - */ - this.prevPoint = new Phaser.Point(); - - /* - * The supported types are: 1f, 1fv, 1i, 2f, 2fv, 2i, 2iv, 3f, 3fv, 3i, 3iv, 4f, 4fv, 4i, 4iv, mat2, mat3, mat4 and sampler2D. - */ - - var d = new Date(); - - /** - * @property {object} uniforms - Default uniform mappings. Compatible with ShaderToy and GLSLSandbox. - */ - this.uniforms = { - - resolution: { type: '2f', value: { x: 256, y: 256 }}, - time: { type: '1f', value: 0 }, - mouse: { type: '2f', value: { x: 0.0, y: 0.0 } }, - date: { type: '4fv', value: [ d.getFullYear(), d.getMonth(), d.getDate(), d.getHours() *60 * 60 + d.getMinutes() * 60 + d.getSeconds() ] }, - sampleRate: { type: '1f', value: 44100.0 }, - iChannel0: { type: 'sampler2D', value: null, textureData: { repeat: true } }, - iChannel1: { type: 'sampler2D', value: null, textureData: { repeat: true } }, - iChannel2: { type: 'sampler2D', value: null, textureData: { repeat: true } }, - iChannel3: { type: 'sampler2D', value: null, textureData: { repeat: true } } - - }; - - // Copy over/replace any passed in the constructor - if (uniforms) - { - for (var key in uniforms) - { - this.uniforms[key] = uniforms[key]; - } - } - - /** - * @property {array|string} fragmentSrc - The fragment shader code. - */ - this.fragmentSrc = fragmentSrc || ''; - -}; - -Phaser.Filter.prototype = { - - /** - * Should be over-ridden. - * @method Phaser.Filter#init - */ - init: function () { - // This should be over-ridden. Will receive a variable number of arguments. - }, - - /** - * Set the resolution uniforms on the filter. - * @method Phaser.Filter#setResolution - * @param {number} width - The width of the display. - * @param {number} height - The height of the display. - */ - setResolution: function (width, height) { - - this.uniforms.resolution.value.x = width; - this.uniforms.resolution.value.y = height; - - }, - - /** - * Updates the filter. - * @method Phaser.Filter#update - * @param {Phaser.Pointer} [pointer] - A Pointer object to use for the filter. The coordinates are mapped to the mouse uniform. - */ - update: function (pointer) { - - if (typeof pointer !== 'undefined') - { - var x = pointer.x / this.game.width; - var y = 1 - pointer.y / this.game.height; - - if (x !== this.prevPoint.x || y !== this.prevPoint.y) - { - this.uniforms.mouse.value.x = x.toFixed(2); - this.uniforms.mouse.value.y = y.toFixed(2); - this.prevPoint.set(x, y); - } - } - - this.uniforms.time.value = this.game.time.totalElapsedSeconds(); - - }, - - /** - * Creates a new Phaser.Image object using a blank texture and assigns - * this Filter to it. The image is then added to the world. - * - * If you don't provide width and height values then Filter.width and Filter.height are used. - * - * If you do provide width and height values then this filter will be resized to match those - * values. - * - * @method Phaser.Filter#addToWorld - * @param {number} [x=0] - The x coordinate to place the Image at. - * @param {number} [y=0] - The y coordinate to place the Image at. - * @param {number} [width] - The width of the Image. If not specified (or null) it will use Filter.width. If specified Filter.width will be set to this value. - * @param {number} [height] - The height of the Image. If not specified (or null) it will use Filter.height. If specified Filter.height will be set to this value. - * @param {number} [anchorX=0] - Set the x anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @param {number} [anchorY=0] - Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @return {Phaser.Image} The newly added Image object. - */ - addToWorld: function (x, y, width, height, anchorX, anchorY) { - - if (anchorX === undefined) { anchorX = 0; } - if (anchorY === undefined) { anchorY = 0; } - - if (width !== undefined && width !== null) - { - this.width = width; - } - else - { - width = this.width; - } - - if (height !== undefined && height !== null) - { - this.height = height; - } - else - { - height = this.height; - } - - var image = this.game.add.image(x, y, '__default'); - - image.width = width; - image.height = height; - - image.anchor.set(anchorX, anchorY); - - image.filters = [ this ]; - - return image; - - }, - - /** - * Clear down this Filter and null out references - * @method Phaser.Filter#destroy - */ - destroy: function () { - - this.game = null; - - } - -}; - -Phaser.Filter.prototype.constructor = Phaser.Filter; - -/** -* @name Phaser.Filter#width -* @property {number} width - The width (resolution uniform) -*/ -Object.defineProperty(Phaser.Filter.prototype, 'width', { - - get: function() { - return this.uniforms.resolution.value.x; - }, - - set: function(value) { - this.uniforms.resolution.value.x = value; - } - -}); - -/** -* @name Phaser.Filter#height -* @property {number} height - The height (resolution uniform) -*/ -Object.defineProperty(Phaser.Filter.prototype, 'height', { - - get: function() { - return this.uniforms.resolution.value.y; - }, - - set: function(value) { - this.uniforms.resolution.value.y = value; - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* This is a base Plugin template to use for any Phaser plugin development. -* -* @class Phaser.Plugin -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {any} parent - The object that owns this plugin, usually Phaser.PluginManager. -*/ -Phaser.Plugin = function (game, parent) { - - if (parent === undefined) { parent = null; } - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {any} parent - The parent of this plugin. If added to the PluginManager the parent will be set to that, otherwise it will be null. - */ - this.parent = parent; - - /** - * @property {boolean} active - A Plugin with active=true has its preUpdate and update methods called by the parent, otherwise they are skipped. - * @default - */ - this.active = false; - - /** - * @property {boolean} visible - A Plugin with visible=true has its render and postRender methods called by the parent, otherwise they are skipped. - * @default - */ - this.visible = false; - - /** - * @property {boolean} hasPreUpdate - A flag to indicate if this plugin has a preUpdate method. - * @default - */ - this.hasPreUpdate = false; - - /** - * @property {boolean} hasUpdate - A flag to indicate if this plugin has an update method. - * @default - */ - this.hasUpdate = false; - - /** - * @property {boolean} hasPostUpdate - A flag to indicate if this plugin has a postUpdate method. - * @default - */ - this.hasPostUpdate = false; - - /** - * @property {boolean} hasRender - A flag to indicate if this plugin has a render method. - * @default - */ - this.hasRender = false; - - /** - * @property {boolean} hasPostRender - A flag to indicate if this plugin has a postRender method. - * @default - */ - this.hasPostRender = false; - -}; - -Phaser.Plugin.prototype = { - - /** - * Pre-update is called at the very start of the update cycle, before any other subsystems have been updated (including Physics). - * It is only called if active is set to true. - * @method Phaser.Plugin#preUpdate - */ - preUpdate: function () { - }, - - /** - * Update is called after all the core subsystems (Input, Tweens, Sound, etc) and the State have updated, but before the render. - * It is only called if active is set to true. - * @method Phaser.Plugin#update - */ - update: function () { - }, - - /** - * Render is called right after the Game Renderer completes, but before the State.render. - * It is only called if visible is set to true. - * @method Phaser.Plugin#render - */ - render: function () { - }, - - /** - * Post-render is called after the Game Renderer and State.render have run. - * It is only called if visible is set to true. - * @method Phaser.Plugin#postRender - */ - postRender: function () { - }, - - /** - * Clear down this Plugin and null out references - * @method Phaser.Plugin#destroy - */ - destroy: function () { - - this.game = null; - this.parent = null; - this.active = false; - this.visible = false; - - } - -}; - -Phaser.Plugin.prototype.constructor = Phaser.Plugin; - -/* jshint newcap: false */ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Plugin Manager is responsible for the loading, running and unloading of Phaser Plugins. -* -* @class Phaser.PluginManager -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.PluginManager = function(game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {Phaser.Plugin[]} plugins - An array of all the plugins being managed by this PluginManager. - */ - this.plugins = []; - - /** - * @property {number} _len - Internal cache var. - * @private - */ - this._len = 0; - - /** - * @property {number} _i - Internal cache var. - * @private - */ - this._i = 0; - -}; - -Phaser.PluginManager.prototype = { - - /** - * Add a new Plugin into the PluginManager. - * The Plugin must have 2 properties: game and parent. Plugin.game is set to the game reference the PluginManager uses, and parent is set to the PluginManager. - * - * @method Phaser.PluginManager#add - * @param {object|Phaser.Plugin} plugin - The Plugin to add into the PluginManager. This can be a function or an existing object. - * @param {...*} parameter - Additional arguments that will be passed to the Plugin.init method. - * @return {Phaser.Plugin} The Plugin that was added to the manager. - */ - add: function (plugin) { - - var args = Array.prototype.slice.call(arguments, 1); - var result = false; - - // Prototype? - if (typeof plugin === 'function') - { - plugin = new plugin(this.game, this); - } - else - { - plugin.game = this.game; - plugin.parent = this; - } - - // Check for methods now to avoid having to do this every loop - if (typeof plugin['preUpdate'] === 'function') - { - plugin.hasPreUpdate = true; - result = true; - } - - if (typeof plugin['update'] === 'function') - { - plugin.hasUpdate = true; - result = true; - } - - if (typeof plugin['postUpdate'] === 'function') - { - plugin.hasPostUpdate = true; - result = true; - } - - if (typeof plugin['render'] === 'function') - { - plugin.hasRender = true; - result = true; - } - - if (typeof plugin['postRender'] === 'function') - { - plugin.hasPostRender = true; - result = true; - } - - // The plugin must have at least one of the above functions to be added to the PluginManager. - if (result) - { - if (plugin.hasPreUpdate || plugin.hasUpdate || plugin.hasPostUpdate) - { - plugin.active = true; - } - - if (plugin.hasRender || plugin.hasPostRender) - { - plugin.visible = true; - } - - this._len = this.plugins.push(plugin); - - // Allows plugins to run potentially destructive code outside of the constructor, and only if being added to the PluginManager - if (typeof plugin['init'] === 'function') - { - plugin.init.apply(plugin, args); - } - - return plugin; - } - else - { - return null; - } - }, - - /** - * Remove a Plugin from the PluginManager. It calls Plugin.destroy on the plugin before removing it from the manager. - * - * @method Phaser.PluginManager#remove - * @param {Phaser.Plugin} plugin - The plugin to be removed. - * @param {boolean} [destroy=true] - Call destroy on the plugin that is removed? - */ - remove: function (plugin, destroy) { - - if (destroy === undefined) { destroy = true; } - - this._i = this._len; - - while (this._i--) - { - if (this.plugins[this._i] === plugin) - { - if (destroy) - { - plugin.destroy(); - } - - this.plugins.splice(this._i, 1); - this._len--; - return; - } - } - - }, - - /** - * Remove all Plugins from the PluginManager. It calls Plugin.destroy on every plugin before removing it from the manager. - * - * @method Phaser.PluginManager#removeAll - */ - removeAll: function() { - - this._i = this._len; - - while (this._i--) - { - this.plugins[this._i].destroy(); - } - - this.plugins.length = 0; - this._len = 0; - - }, - - /** - * Pre-update is called at the very start of the update cycle, before any other subsystems have been updated (including Physics). - * It only calls plugins who have active=true. - * - * @method Phaser.PluginManager#preUpdate - */ - preUpdate: function () { - - this._i = this._len; - - while (this._i--) - { - if (this.plugins[this._i].active && this.plugins[this._i].hasPreUpdate) - { - this.plugins[this._i].preUpdate(); - } - } - - }, - - /** - * Update is called after all the core subsystems (Input, Tweens, Sound, etc) and the State have updated, but before the render. - * It only calls plugins who have active=true. - * - * @method Phaser.PluginManager#update - */ - update: function () { - - this._i = this._len; - - while (this._i--) - { - if (this.plugins[this._i].active && this.plugins[this._i].hasUpdate) - { - this.plugins[this._i].update(); - } - } - - }, - - /** - * PostUpdate is the last thing to be called before the world render. - * In particular, it is called after the world postUpdate, which means the camera has been adjusted. - * It only calls plugins who have active=true. - * - * @method Phaser.PluginManager#postUpdate - */ - postUpdate: function () { - - this._i = this._len; - - while (this._i--) - { - if (this.plugins[this._i].active && this.plugins[this._i].hasPostUpdate) - { - this.plugins[this._i].postUpdate(); - } - } - - }, - - /** - * Render is called right after the Game Renderer completes, but before the State.render. - * It only calls plugins who have visible=true. - * - * @method Phaser.PluginManager#render - */ - render: function () { - - this._i = this._len; - - while (this._i--) - { - if (this.plugins[this._i].visible && this.plugins[this._i].hasRender) - { - this.plugins[this._i].render(); - } - } - - }, - - /** - * Post-render is called after the Game Renderer and State.render have run. - * It only calls plugins who have visible=true. - * - * @method Phaser.PluginManager#postRender - */ - postRender: function () { - - this._i = this._len; - - while (this._i--) - { - if (this.plugins[this._i].visible && this.plugins[this._i].hasPostRender) - { - this.plugins[this._i].postRender(); - } - } - - }, - - /** - * Clear down this PluginManager, calls destroy on every plugin and nulls out references. - * - * @method Phaser.PluginManager#destroy - */ - destroy: function () { - - this.removeAll(); - - this.game = null; - - } - -}; - -Phaser.PluginManager.prototype.constructor = Phaser.PluginManager; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Stage controls root level display objects upon which everything is displayed. -* It also handles browser visibility handling and the pausing due to loss of focus. -* -* @class Phaser.Stage -* @extends PIXI.DisplayObjectContainer -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. - */ -Phaser.Stage = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - PIXI.DisplayObjectContainer.call(this); - - /** - * @property {string} name - The name of this object. - * @default - */ - this.name = '_stage_root'; - - /** - * By default if the browser tab loses focus the game will pause. - * You can stop that behavior by setting this property to true. - * Note that the browser can still elect to pause your game if it wishes to do so, - * for example swapping to another browser tab. This will cause the RAF callback to halt, - * effectively pausing your game, even though no in-game pause event is triggered if you enable this property. - * @property {boolean} disableVisibilityChange - * @default - */ - this.disableVisibilityChange = false; - - /** - * @property {boolean} exists - If exists is true the Stage and all children are updated, otherwise it is skipped. - * @default - */ - this.exists = true; - - /** - * @property {PIXI.Matrix} worldTransform - Current transform of the object based on world (parent) factors - * @private - * @readOnly - */ - this.worldTransform = new PIXI.Matrix(); - - /** - * @property {Phaser.Stage} stage - The stage reference (the Stage is its own stage) - * @private - * @readOnly - */ - this.stage = this; - - /** - * @property {number} currentRenderOrderID - Reset each frame, keeps a count of the total number of objects updated. - */ - this.currentRenderOrderID = 0; - - /** - * @property {string} hiddenVar - The page visibility API event name. - * @private - */ - this._hiddenVar = 'hidden'; - - /** - * @property {function} _onChange - The blur/focus event handler. - * @private - */ - this._onChange = null; - - /** - * @property {number} _bgColor - Stage background color object. Populated by setBackgroundColor. - * @private - */ - this._bgColor = { r: 0, g: 0, b: 0, a: 0, color: 0, rgba: '#000000' }; - - if (!this.game.transparent) - { - // transparent = 0,0,0,0 - otherwise r,g,b,1 - this._bgColor.a = 1; - } - - if (game.config) - { - this.parseConfig(game.config); - } - -}; - -Phaser.Stage.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -Phaser.Stage.prototype.constructor = Phaser.Stage; - -/** -* Parses a Game configuration object. -* -* @method Phaser.Stage#parseConfig -* @protected -* @param {object} config -The configuration object to parse. -*/ -Phaser.Stage.prototype.parseConfig = function (config) { - - if (config['disableVisibilityChange']) - { - this.disableVisibilityChange = config['disableVisibilityChange']; - } - - if (config['backgroundColor']) - { - this.setBackgroundColor(config['backgroundColor']); - } - -}; - -/** -* Initialises the stage and adds the event listeners. -* @method Phaser.Stage#boot -* @private -*/ -Phaser.Stage.prototype.boot = function () { - - Phaser.DOM.getOffset(this.game.canvas, this.offset); - - Phaser.Canvas.setUserSelect(this.game.canvas, 'none'); - Phaser.Canvas.setTouchAction(this.game.canvas, 'none'); - - this.checkVisibility(); - -}; - -/** -* This is called automatically after the plugins preUpdate and before the State.update. -* Most objects have preUpdate methods and it's where initial movement and positioning is done. -* -* @method Phaser.Stage#preUpdate -*/ -Phaser.Stage.prototype.preUpdate = function () { - - this.currentRenderOrderID = 0; - - // This can't loop in reverse, we need the renderOrderID to be in sequence - for (var i = 0; i < this.children.length; i++) - { - this.children[i].preUpdate(); - } - -}; - -/** -* This is called automatically after the State.update, but before particles or plugins update. -* -* @method Phaser.Stage#update -*/ -Phaser.Stage.prototype.update = function () { - - // Goes in reverse, because it's highly likely the child will destroy itself in `update` - var i = this.children.length; - - while (i--) - { - this.children[i].update(); - } - -}; - -/** -* This is called automatically before the renderer runs and after the plugins have updated. -* In postUpdate this is where all the final physics calculations and object positioning happens. -* The objects are processed in the order of the display list. -* -* @method Phaser.Stage#postUpdate -*/ -Phaser.Stage.prototype.postUpdate = function () { - - // Apply the camera shake, fade, bounds, etc - this.game.camera.update(); - - // Camera target first? - if (this.game.camera.target) - { - this.game.camera.target.postUpdate(); - - this.updateTransform(); - - this.game.camera.updateTarget(); - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].postUpdate(); - } - - this.updateTransform(); - -}; - -/** -* Updates the transforms for all objects on the display list. -* This overrides the Pixi default as we don't need the interactionManager, but do need the game property check. -* -* @method Phaser.Stage#updateTransform -*/ -Phaser.Stage.prototype.updateTransform = function () { - - this.worldAlpha = 1; - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } - -}; - -/** -* Starts a page visibility event listener running, or window.onpagehide/onpageshow if not supported by the browser. -* Also listens for window.onblur and window.onfocus. -* -* @method Phaser.Stage#checkVisibility -*/ -Phaser.Stage.prototype.checkVisibility = function () { - - if (document.webkitHidden !== undefined) - { - this._hiddenVar = 'webkitvisibilitychange'; - } - else if (document.mozHidden !== undefined) - { - this._hiddenVar = 'mozvisibilitychange'; - } - else if (document.msHidden !== undefined) - { - this._hiddenVar = 'msvisibilitychange'; - } - else if (document.hidden !== undefined) - { - this._hiddenVar = 'visibilitychange'; - } - else - { - this._hiddenVar = null; - } - - var _this = this; - - this._onChange = function (event) { - return _this.visibilityChange(event); - }; - - // Does browser support it? If not (like in IE9 or old Android) we need to fall back to blur/focus - if (this._hiddenVar) - { - document.addEventListener(this._hiddenVar, this._onChange, false); - } - - window.onblur = this._onChange; - window.onfocus = this._onChange; - - window.onpagehide = this._onChange; - window.onpageshow = this._onChange; - - if (this.game.device.cocoonJSApp) - { - CocoonJS.App.onSuspended.addEventListener(function () { - Phaser.Stage.prototype.visibilityChange.call(_this, { type: "pause" }); - }); - - CocoonJS.App.onActivated.addEventListener(function () { - Phaser.Stage.prototype.visibilityChange.call(_this, { type: "resume" }); - }); - } - -}; - -/** -* This method is called when the document visibility is changed. -* -* @method Phaser.Stage#visibilityChange -* @param {Event} event - Its type will be used to decide whether the game should be paused or not. -*/ -Phaser.Stage.prototype.visibilityChange = function (event) { - - if (event.type === 'pagehide' || event.type === 'blur' || event.type === 'pageshow' || event.type === 'focus') - { - if (event.type === 'pagehide' || event.type === 'blur') - { - this.game.focusLoss(event); - } - else if (event.type === 'pageshow' || event.type === 'focus') - { - this.game.focusGain(event); - } - - return; - } - - if (this.disableVisibilityChange) - { - return; - } - - if (document.hidden || document.mozHidden || document.msHidden || document.webkitHidden || event.type === "pause") - { - this.game.gamePaused(event); - } - else - { - this.game.gameResumed(event); - } - -}; - -/** -* Sets the background color for the Stage. -* -* The color can be given as a hex string (`'#RRGGBB'`), a CSS color string (`'rgb(r,g,b)'`), or a numeric value (`0xRRGGBB`). -* -* An alpha channel is _not_ supported and will be ignored. -* -* If you've set your game to be transparent then calls to setBackgroundColor are ignored. -* -* @method Phaser.Stage#setBackgroundColor -* @param {number|string} color - The color of the background. -*/ -Phaser.Stage.prototype.setBackgroundColor = function (color) { - - if (this.game.transparent) { return; } - - Phaser.Color.valueToColor(color, this._bgColor); - Phaser.Color.updateColor(this._bgColor); - - // For gl.clearColor (canvas uses _bgColor.rgba) - this._bgColor.r /= 255; - this._bgColor.g /= 255; - this._bgColor.b /= 255; - this._bgColor.a = 1; - -}; - -/** -* Destroys the Stage and removes event listeners. -* -* @method Phaser.Stage#destroy -*/ -Phaser.Stage.prototype.destroy = function () { - - if (this._hiddenVar) - { - document.removeEventListener(this._hiddenVar, this._onChange, false); - } - - window.onpagehide = null; - window.onpageshow = null; - - window.onblur = null; - window.onfocus = null; - -}; - -/** -* @name Phaser.Stage#backgroundColor -* @property {number|string} backgroundColor - Gets and sets the background color of the stage. The color can be given as a number: 0xff0000 or a hex string: '#ff0000' -*/ -Object.defineProperty(Phaser.Stage.prototype, "backgroundColor", { - - get: function () { - - return this._bgColor.color; - - }, - - set: function (color) { - - this.setBackgroundColor(color); - - } - -}); - -/** -* Enable or disable texture smoothing for all objects on this Stage. Only works for bitmap/image textures. Smoothing is enabled by default. -* -* @name Phaser.Stage#smoothed -* @property {boolean} smoothed - Set to true to smooth all sprites rendered on this Stage, or false to disable smoothing (great for pixel art) -*/ -Object.defineProperty(Phaser.Stage.prototype, "smoothed", { - - get: function () { - - return PIXI.scaleModes.DEFAULT === PIXI.scaleModes.LINEAR; - - }, - - set: function (value) { - - if (value) - { - PIXI.scaleModes.DEFAULT = PIXI.scaleModes.LINEAR; - } - else - { - PIXI.scaleModes.DEFAULT = PIXI.scaleModes.NEAREST; - } - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Group is a container for {@link DisplayObject display objects} including {@link Phaser.Sprite Sprites} and {@link Phaser.Image Images}. -* -* Groups form the logical tree structure of the display/scene graph where local transformations are applied to children. -* For instance, all children are also moved/rotated/scaled when the group is moved/rotated/scaled. -* -* In addition, Groups provides support for fast pooling and object recycling. -* -* Groups are also display objects and can be nested as children within other Groups. -* -* @class Phaser.Group -* @extends PIXI.DisplayObjectContainer -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {DisplayObject|null} [parent=(game world)] - The parent Group (or other {@link DisplayObject}) that this group will be added to. -* If undefined/unspecified the Group will be added to the {@link Phaser.Game#world Game World}; if null the Group will not be added to any parent. -* @param {string} [name='group'] - A name for this group. Not used internally but useful for debugging. -* @param {boolean} [addToStage=false] - If true this group will be added directly to the Game.Stage instead of Game.World. -* @param {boolean} [enableBody=false] - If true all Sprites created with {@link #create} or {@link #createMulitple} will have a physics body created on them. Change the body type with {@link #physicsBodyType}. -* @param {integer} [physicsBodyType=0] - The physics body type to use when physics bodies are automatically added. See {@link #physicsBodyType} for values. -*/ -Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBodyType) { - - if (addToStage === undefined) { addToStage = false; } - if (enableBody === undefined) { enableBody = false; } - if (physicsBodyType === undefined) { physicsBodyType = Phaser.Physics.ARCADE; } - - /** - * A reference to the currently running Game. - * @property {Phaser.Game} game - * @protected - */ - this.game = game; - - if (parent === undefined) - { - parent = game.world; - } - - /** - * A name for this group. Not used internally but useful for debugging. - * @property {string} name - */ - this.name = name || 'group'; - - /** - * The z-depth value of this object within its parent container/Group - the World is a Group as well. - * This value must be unique for each child in a Group. - * @property {integer} z - * @readOnly - */ - this.z = 0; - - PIXI.DisplayObjectContainer.call(this); - - if (addToStage) - { - this.game.stage.addChild(this); - this.z = this.game.stage.children.length; - } - else - { - if (parent) - { - parent.addChild(this); - this.z = parent.children.length; - } - } - - /** - * Internal Phaser Type value. - * @property {integer} type - * @protected - */ - this.type = Phaser.GROUP; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.GROUP; - - /** - * The alive property is useful for Groups that are children of other Groups and need to be included/excluded in checks like forEachAlive. - * @property {boolean} alive - * @default - */ - this.alive = true; - - /** - * If exists is true the group is updated, otherwise it is skipped. - * @property {boolean} exists - * @default - */ - this.exists = true; - - /** - * A group with `ignoreDestroy` set to `true` ignores all calls to its `destroy` method. - * @property {boolean} ignoreDestroy - * @default - */ - this.ignoreDestroy = false; - - /** - * A Group is that has `pendingDestroy` set to `true` is flagged to have its destroy method - * called on the next logic update. - * You can set it directly to flag the Group to be destroyed on its next update. - * - * This is extremely useful if you wish to destroy a Group from within one of its own callbacks - * or a callback of one of its children. - * - * @property {boolean} pendingDestroy - */ - this.pendingDestroy = false; - - /** - * The type of objects that will be created when using {@link #create} or {@link #createMultiple}. - * - * Any object may be used but it should extend either Sprite or Image and accept the same constructor arguments: - * when a new object is created it is passed the following parameters to its constructor: `(game, x, y, key, frame)`. - * - * @property {object} classType - * @default {@link Phaser.Sprite} - */ - this.classType = Phaser.Sprite; - - /** - * The current display object that the group cursor is pointing to, if any. (Can be set manually.) - * - * The cursor is a way to iterate through the children in a Group using {@link #next} and {@link #previous}. - * @property {?DisplayObject} cursor - */ - this.cursor = null; - - /** - * A Group with `inputEnableChildren` set to `true` will automatically call `inputEnabled = true` - * on any children _added_ to, or _created by_, this Group. - * - * If there are children already in the Group at the time you set this property, they are not changed. - * - * @property {boolean} inputEnableChildren - * @default - */ - this.inputEnableChildren = false; - - /** - * This Signal is dispatched whenever a child of this Group emits an onInputDown signal as a result - * of having been interacted with by a Pointer. You can bind functions to this Signal instead of to - * every child Sprite. - * - * This Signal is sent 2 arguments: A reference to the Sprite that triggered the signal, and - * a reference to the Pointer that caused it. - * - * @property {Phaser.Signal} onChildInputDown - */ - this.onChildInputDown = new Phaser.Signal(); - - /** - * This Signal is dispatched whenever a child of this Group emits an onInputUp signal as a result - * of having been interacted with by a Pointer. You can bind functions to this Signal instead of to - * every child Sprite. - * - * This Signal is sent 3 arguments: A reference to the Sprite that triggered the signal, - * a reference to the Pointer that caused it, and a boolean value `isOver` that tells you if the Pointer - * is still over the Sprite or not. - * - * @property {Phaser.Signal} onChildInputUp - */ - this.onChildInputUp = new Phaser.Signal(); - - /** - * This Signal is dispatched whenever a child of this Group emits an onInputOver signal as a result - * of having been interacted with by a Pointer. You can bind functions to this Signal instead of to - * every child Sprite. - * - * This Signal is sent 2 arguments: A reference to the Sprite that triggered the signal, and - * a reference to the Pointer that caused it. - * - * @property {Phaser.Signal} onChildInputOver - */ - this.onChildInputOver = new Phaser.Signal(); - - /** - * This Signal is dispatched whenever a child of this Group emits an onInputOut signal as a result - * of having been interacted with by a Pointer. You can bind functions to this Signal instead of to - * every child Sprite. - * - * This Signal is sent 2 arguments: A reference to the Sprite that triggered the signal, and - * a reference to the Pointer that caused it. - * - * @property {Phaser.Signal} onChildInputOut - */ - this.onChildInputOut = new Phaser.Signal(); - - /** - * If true all Sprites created by, or added to this group, will have a physics body enabled on them. - * - * If there are children already in the Group at the time you set this property, they are not changed. - * - * The default body type is controlled with {@link #physicsBodyType}. - * @property {boolean} enableBody - */ - this.enableBody = enableBody; - - /** - * If true when a physics body is created (via {@link #enableBody}) it will create a physics debug object as well. - * - * This only works for P2 bodies. - * @property {boolean} enableBodyDebug - * @default - */ - this.enableBodyDebug = false; - - /** - * If {@link #enableBody} is true this is the type of physics body that is created on new Sprites. - * - * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2JS}, {@link Phaser.Physics.NINJA}, etc. - * @property {integer} physicsBodyType - */ - this.physicsBodyType = physicsBodyType; - - /** - * If this Group contains Arcade Physics Sprites you can set a custom sort direction via this property. - * - * It should be set to one of the Phaser.Physics.Arcade sort direction constants: - * - * Phaser.Physics.Arcade.SORT_NONE - * Phaser.Physics.Arcade.LEFT_RIGHT - * Phaser.Physics.Arcade.RIGHT_LEFT - * Phaser.Physics.Arcade.TOP_BOTTOM - * Phaser.Physics.Arcade.BOTTOM_TOP - * - * If set to `null` the Group will use whatever Phaser.Physics.Arcade.sortDirection is set to. This is the default behavior. - * - * @property {integer} physicsSortDirection - * @default - */ - this.physicsSortDirection = null; - - /** - * This signal is dispatched when the group is destroyed. - * @property {Phaser.Signal} onDestroy - */ - this.onDestroy = new Phaser.Signal(); - - /** - * @property {integer} cursorIndex - The current index of the Group cursor. Advance it with Group.next. - * @readOnly - */ - this.cursorIndex = 0; - - /** - * A Group that is fixed to the camera uses its x/y coordinates as offsets from the top left of the camera. These are stored in Group.cameraOffset. - * - * Note that the cameraOffset values are in addition to any parent in the display list. - * So if this Group was in a Group that has x: 200, then this will be added to the cameraOffset.x - * - * @property {boolean} fixedToCamera - */ - this.fixedToCamera = false; - - /** - * If this object is {@link #fixedToCamera} then this stores the x/y position offset relative to the top-left of the camera view. - * If the parent of this Group is also `fixedToCamera` then the offset here is in addition to that and should typically be disabled. - * @property {Phaser.Point} cameraOffset - */ - this.cameraOffset = new Phaser.Point(); - - /** - * The hash array is an array belonging to this Group into which you can add any of its children via Group.addToHash and Group.removeFromHash. - * - * Only children of this Group can be added to and removed from the hash. - * - * This hash is used automatically by Phaser Arcade Physics in order to perform non z-index based destructive sorting. - * However if you don't use Arcade Physics, or this isn't a physics enabled Group, then you can use the hash to perform your own - * sorting and filtering of Group children without touching their z-index (and therefore display draw order) - * - * @property {array} hash - */ - this.hash = []; - - /** - * The property on which children are sorted. - * @property {string} _sortProperty - * @private - */ - this._sortProperty = 'z'; - -}; - -Phaser.Group.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -Phaser.Group.prototype.constructor = Phaser.Group; - -/** -* A returnType value, as specified in {@link #iterate} eg. -* @constant -* @type {integer} -*/ -Phaser.Group.RETURN_NONE = 0; - -/** -* A returnType value, as specified in {@link #iterate} eg. -* @constant -* @type {integer} -*/ -Phaser.Group.RETURN_TOTAL = 1; - -/** -* A returnType value, as specified in {@link #iterate} eg. -* @constant -* @type {integer} -*/ -Phaser.Group.RETURN_CHILD = 2; - -/** -* A sort ordering value, as specified in {@link #sort} eg. -* @constant -* @type {integer} -*/ -Phaser.Group.SORT_ASCENDING = -1; - -/** -* A sort ordering value, as specified in {@link #sort} eg. -* @constant -* @type {integer} -*/ -Phaser.Group.SORT_DESCENDING = 1; - -/** -* Adds an existing object as the top child in this group. -* -* The child is automatically added to the top of the group, and is displayed above every previous child. -* -* Or if the _optional_ index is specified, the child is added at the location specified by the index value, -* this allows you to control child ordering. -* -* If the child was already in this Group, it is simply returned, and nothing else happens to it. -* -* If `Group.enableBody` is set, then a physics body will be created on the object, so long as one does not already exist. -* -* If `Group.inputEnableChildren` is set, then an Input Handler will be created on the object, so long as one does not already exist. -* -* Use {@link #addAt} to control where a child is added. Use {@link #create} to create and add a new child. -* -* @method Phaser.Group#add -* @param {DisplayObject} child - The display object to add as a child. -* @param {boolean} [silent=false] - If true the child will not dispatch the `onAddedToGroup` event. -* @param {integer} [index] - The index within the group to insert the child to. Where 0 is the bottom of the Group. -* @return {DisplayObject} The child that was added to the group. -*/ -Phaser.Group.prototype.add = function (child, silent, index) { - - if (silent === undefined) { silent = false; } - - if (child.parent === this) - { - return child; - } - - if (child.body && child.parent && child.parent.hash) - { - child.parent.removeFromHash(child); - } - - if (index === undefined) - { - child.z = this.children.length; - - this.addChild(child); - } - else - { - this.addChildAt(child, index); - - this.updateZ(); - } - - if (this.enableBody && child.hasOwnProperty('body') && child.body === null) - { - this.game.physics.enable(child, this.physicsBodyType); - } - else if (child.body) - { - this.addToHash(child); - } - - if (this.inputEnableChildren && !child.inputEnabled) - { - child.inputEnabled = true; - } - - if (!silent && child.events) - { - child.events.onAddedToGroup$dispatch(child, this); - } - - if (this.cursor === null) - { - this.cursor = child; - } - - return child; - -}; - -/** -* Adds an existing object to this group. -* -* The child is added to the group at the location specified by the index value, this allows you to control child ordering. -* -* If `Group.enableBody` is set, then a physics body will be created on the object, so long as one does not already exist. -* -* If `Group.inputEnableChildren` is set, then an Input Handler will be created on the object, so long as one does not already exist. -* -* @method Phaser.Group#addAt -* @param {DisplayObject} child - The display object to add as a child. -* @param {integer} [index=0] - The index within the group to insert the child to. -* @param {boolean} [silent=false] - If true the child will not dispatch the `onAddedToGroup` event. -* @return {DisplayObject} The child that was added to the group. -*/ -Phaser.Group.prototype.addAt = function (child, index, silent) { - - this.add(child, silent, index); - -}; - -/** -* Adds a child of this Group into the hash array. -* This call will return false if the child is not a child of this Group, or is already in the hash. -* -* @method Phaser.Group#addToHash -* @param {DisplayObject} child - The display object to add to this Groups hash. Must be a member of this Group already and not present in the hash. -* @return {boolean} True if the child was successfully added to the hash, otherwise false. -*/ -Phaser.Group.prototype.addToHash = function (child) { - - if (child.parent === this) - { - var index = this.hash.indexOf(child); - - if (index === -1) - { - this.hash.push(child); - return true; - } - } - - return false; - -}; - -/** -* Removes a child of this Group from the hash array. -* This call will return false if the child is not in the hash. -* -* @method Phaser.Group#removeFromHash -* @param {DisplayObject} child - The display object to remove from this Groups hash. Must be a member of this Group and in the hash. -* @return {boolean} True if the child was successfully removed from the hash, otherwise false. -*/ -Phaser.Group.prototype.removeFromHash = function (child) { - - if (child) - { - var index = this.hash.indexOf(child); - - if (index !== -1) - { - this.hash.splice(index, 1); - return true; - } - } - - return false; - -}; - -/** -* Adds an array of existing Display Objects to this Group. -* -* The Display Objects are automatically added to the top of this Group, and will render on-top of everything already in this Group. -* -* As well as an array you can also pass another Group as the first argument. In this case all of the children from that -* Group will be removed from it and added into this Group. -* -* If `Group.enableBody` is set, then a physics body will be created on the objects, so long as one does not already exist. -* -* If `Group.inputEnableChildren` is set, then an Input Handler will be created on the objects, so long as one does not already exist. -* -* @method Phaser.Group#addMultiple -* @param {DisplayObject[]|Phaser.Group} children - An array of display objects or a Phaser.Group. If a Group is given then *all* children will be moved from it. -* @param {boolean} [silent=false] - If true the children will not dispatch the `onAddedToGroup` event. -* @return {DisplayObject[]|Phaser.Group} The array of children or Group of children that were added to this Group. -*/ -Phaser.Group.prototype.addMultiple = function (children, silent) { - - if (children instanceof Phaser.Group) - { - children.moveAll(this, silent); - } - else if (Array.isArray(children)) - { - for (var i = 0; i < children.length; i++) - { - this.add(children[i], silent); - } - } - - return children; - -}; - -/** -* Returns the child found at the given index within this group. -* -* @method Phaser.Group#getAt -* @param {integer} index - The index to return the child from. -* @return {DisplayObject|integer} The child that was found at the given index, or -1 for an invalid index. -*/ -Phaser.Group.prototype.getAt = function (index) { - - if (index < 0 || index >= this.children.length) - { - return -1; - } - else - { - return this.getChildAt(index); - } - -}; - -/** -* Creates a new Phaser.Sprite object and adds it to the top of this group. -* -* Use {@link #classType} to change the type of object created. -* -* The child is automatically added to the top of the group, and is displayed above every previous child. -* -* Or if the _optional_ index is specified, the child is added at the location specified by the index value, -* this allows you to control child ordering. -* -* If `Group.enableBody` is set, then a physics body will be created on the object, so long as one does not already exist. -* -* If `Group.inputEnableChildren` is set, then an Input Handler will be created on the object, so long as one does not already exist. -* -* @method Phaser.Group#create -* @param {number} x - The x coordinate to display the newly created Sprite at. The value is in relation to the group.x point. -* @param {number} y - The y coordinate to display the newly created Sprite at. The value is in relation to the group.y point. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. -* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @param {boolean} [exists=true] - The default exists state of the Sprite. -* @param {integer} [index] - The index within the group to insert the child to. Where 0 is the bottom of the Group. -* @return {DisplayObject} The child that was created: will be a {@link Phaser.Sprite} unless {@link #classType} has been changed. -*/ -Phaser.Group.prototype.create = function (x, y, key, frame, exists, index) { - - if (exists === undefined) { exists = true; } - - var child = new this.classType(this.game, x, y, key, frame); - - child.exists = exists; - child.visible = exists; - child.alive = exists; - - return this.add(child, false, index); - -}; - -/** -* Creates multiple Phaser.Sprite objects and adds them to the top of this Group. -* -* This method is useful if you need to quickly generate a pool of sprites, such as bullets. -* -* Use {@link #classType} to change the type of object created. -* -* You can provide an array as the `key` and / or `frame` arguments. When you do this -* it will create `quantity` Sprites for every key (and frame) in the arrays. -* -* For example: -* -* `createMultiple(25, ['ball', 'carrot'])` -* -* In the above code there are 2 keys (ball and carrot) which means that 50 sprites will be -* created in total, 25 of each. You can also have the `frame` as an array: -* -* `createMultiple(5, 'bricks', [0, 1, 2, 3])` -* -* In the above there is one key (bricks), which is a sprite sheet. The frames array tells -* this method to use frames 0, 1, 2 and 3. So in total it will create 20 sprites, because -* the quantity was set to 5, so that is 5 brick sprites of frame 0, 5 brick sprites with -* frame 1, and so on. -* -* If you set both the key and frame arguments to be arrays then understand it will create -* a total quantity of sprites equal to the size of both arrays times each other. I.e.: -* -* `createMultiple(20, ['diamonds', 'balls'], [0, 1, 2])` -* -* The above will create 20 'diamonds' of frame 0, 20 with frame 1 and 20 with frame 2. -* It will then create 20 'balls' of frame 0, 20 with frame 1 and 20 with frame 2. -* In total it will have created 120 sprites. -* -* By default the Sprites will have their `exists` property set to `false`, and they will be -* positioned at 0x0, relative to the `Group.x / y` values. -* -* If `Group.enableBody` is set, then a physics body will be created on the objects, so long as one does not already exist. -* -* If `Group.inputEnableChildren` is set, then an Input Handler will be created on the objects, so long as one does not already exist. -* -* @method Phaser.Group#createMultiple -* @param {integer} quantity - The number of Sprites to create. -* @param {string|array} key - The Cache key of the image that the Sprites will use. Or an Array of keys. See the description for details on how the quantity applies when arrays are used. -* @param {integer|string|array} [frame=0] - If the Sprite image contains multiple frames you can specify which one to use here. Or an Array of frames. See the description for details on how the quantity applies when arrays are used. -* @param {boolean} [exists=false] - The default exists state of the Sprite. -* @return {array} An array containing all of the Sprites that were created. -*/ -Phaser.Group.prototype.createMultiple = function (quantity, key, frame, exists) { - - if (frame === undefined) { frame = 0; } - if (exists === undefined) { exists = false; } - - if (!Array.isArray(key)) - { - key = [ key ]; - } - - if (!Array.isArray(frame)) - { - frame = [ frame ]; - } - - var _this = this; - var children = []; - - key.forEach(function(singleKey) { - - frame.forEach(function(singleFrame) { - - for (var i = 0; i < quantity; i++) - { - children.push(_this.create(0, 0, singleKey, singleFrame, exists)); - } - - }); - - }); - - return children; - -}; - -/** -* Internal method that re-applies all of the children's Z values. -* -* This must be called whenever children ordering is altered so that their `z` indices are correctly updated. -* -* @method Phaser.Group#updateZ -* @protected -*/ -Phaser.Group.prototype.updateZ = function () { - - var i = this.children.length; - - while (i--) - { - this.children[i].z = i; - } - -}; - -/** -* This method iterates through all children in the Group (regardless if they are visible or exist) -* and then changes their position so they are arranged in a Grid formation. Children must have -* the `alignTo` method in order to be positioned by this call. All default Phaser Game Objects have -* this. -* -* The grid dimensions are determined by the first four arguments. The `rows` and `columns` arguments -* relate to the width and height of the grid respectively. -* -* For example if the Group had 100 children in it: -* -* `Group.align(10, 10, 32, 32)` -* -* This will align all of the children into a grid formation of 10x10, using 32 pixels per -* grid cell. If you want a wider grid, you could do: -* -* `Group.align(25, 4, 32, 32)` -* -* This will align the children into a grid of 25x4, again using 32 pixels per grid cell. -* -* You can choose to set _either_ the `rows` or `columns` value to -1. Doing so tells the method -* to keep on aligning children until there are no children left. For example if this Group had -* 48 children in it, the following: -* -* `Group.align(-1, 8, 32, 32)` -* -* ... will align the children so that there are 8 columns vertically (the second argument), -* and each row will contain 6 sprites, except the last one, which will contain 5 (totaling 48) -* -* You can also do: -* -* `Group.align(10, -1, 32, 32)` -* -* In this case it will create a grid 10 wide, and as tall as it needs to be in order to fit -* all of the children in. -* -* The `position` property allows you to control where in each grid cell the child is positioned. -* This is a constant and can be one of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, -* `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, -* `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. -* -* The final argument; `offset` lets you start the alignment from a specific child index. -* -* @method Phaser.Group#align -* @param {integer} rows - The number of rows, or width, of the grid. Set to -1 for a dynamic width. -* @param {integer} columns - The number of columns, or height, of the grid. Set to -1 for a dynamic height. -* @param {integer} cellWidth - The width of each grid cell, in pixels. -* @param {integer} cellHeight - The height of each grid cell, in pixels. -* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. -* @param {integer} [offset=0] - Optional index to start the alignment from. Defaults to zero, the first child in the Group, but can be set to any valid child index value. -*/ -Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, position, offset) { - - if (position === undefined) { position = Phaser.TOP_LEFT; } - if (offset === undefined) { offset = 0; } - - if (this.children.length === 0 || offset > this.children.length || (rows === -1 && columns === -1)) - { - return; - } - - var r = new Phaser.Rectangle(0, 0, cellWidth, cellHeight); - var w = (rows * cellWidth); - var h = (columns * cellHeight); - - for (var i = offset; i < this.children.length; i++) - { - var child = this.children[i]; - - if (child['alignIn']) - { - child.alignIn(r, position); - } - else - { - continue; - } - - if (rows === -1) - { - // We keep laying them out horizontally until we've done them all - r.y += cellHeight; - - if (r.y === h) - { - r.x += cellWidth; - r.y = 0; - } - } - else if (columns === -1) - { - // We keep laying them out vertically until we've done them all - r.x += cellWidth; - - if (r.x === w) - { - r.x = 0; - r.y += cellHeight; - } - } - else - { - // We keep laying them out until we hit the column limit - r.x += cellWidth; - - if (r.x === w) - { - r.x = 0; - r.y += cellHeight; - - if (r.y === h) - { - // We've hit the column limit, so return, even if there are children left - return; - } - } - } - } - -}; - -/** -* Sets the group cursor to the first child in the group. -* -* If the optional index parameter is given it sets the cursor to the object at that index instead. -* -* @method Phaser.Group#resetCursor -* @param {integer} [index=0] - Set the cursor to point to a specific index. -* @return {any} The child the cursor now points to. -*/ -Phaser.Group.prototype.resetCursor = function (index) { - - if (index === undefined) { index = 0; } - - if (index > this.children.length - 1) - { - index = 0; - } - - if (this.cursor) - { - this.cursorIndex = index; - this.cursor = this.children[this.cursorIndex]; - return this.cursor; - } - -}; - -/** -* Advances the group cursor to the next (higher) object in the group. -* -* If the cursor is at the end of the group (top child) it is moved the start of the group (bottom child). -* -* @method Phaser.Group#next -* @return {any} The child the cursor now points to. -*/ -Phaser.Group.prototype.next = function () { - - if (this.cursor) - { - // Wrap the cursor? - if (this.cursorIndex >= this.children.length - 1) - { - this.cursorIndex = 0; - } - else - { - this.cursorIndex++; - } - - this.cursor = this.children[this.cursorIndex]; - - return this.cursor; - } - -}; - -/** -* Moves the group cursor to the previous (lower) child in the group. -* -* If the cursor is at the start of the group (bottom child) it is moved to the end (top child). -* -* @method Phaser.Group#previous -* @return {any} The child the cursor now points to. -*/ -Phaser.Group.prototype.previous = function () { - - if (this.cursor) - { - // Wrap the cursor? - if (this.cursorIndex === 0) - { - this.cursorIndex = this.children.length - 1; - } - else - { - this.cursorIndex--; - } - - this.cursor = this.children[this.cursorIndex]; - - return this.cursor; - } - -}; - -/** -* Swaps the position of two children in this group. -* -* Both children must be in this group, a child cannot be swapped with itself, and unparented children cannot be swapped. -* -* @method Phaser.Group#swap -* @param {any} child1 - The first child to swap. -* @param {any} child2 - The second child to swap. -*/ -Phaser.Group.prototype.swap = function (child1, child2) { - - this.swapChildren(child1, child2); - this.updateZ(); - -}; - -/** -* Brings the given child to the top of this group so it renders above all other children. -* -* @method Phaser.Group#bringToTop -* @param {any} child - The child to bring to the top of this group. -* @return {any} The child that was moved. -*/ -Phaser.Group.prototype.bringToTop = function (child) { - - if (child.parent === this && this.getIndex(child) < this.children.length) - { - this.remove(child, false, true); - this.add(child, true); - } - - return child; - -}; - -/** -* Sends the given child to the bottom of this group so it renders below all other children. -* -* @method Phaser.Group#sendToBack -* @param {any} child - The child to send to the bottom of this group. -* @return {any} The child that was moved. -*/ -Phaser.Group.prototype.sendToBack = function (child) { - - if (child.parent === this && this.getIndex(child) > 0) - { - this.remove(child, false, true); - this.addAt(child, 0, true); - } - - return child; - -}; - -/** -* Moves the given child up one place in this group unless it's already at the top. -* -* @method Phaser.Group#moveUp -* @param {any} child - The child to move up in the group. -* @return {any} The child that was moved. -*/ -Phaser.Group.prototype.moveUp = function (child) { - - if (child.parent === this && this.getIndex(child) < this.children.length - 1) - { - var a = this.getIndex(child); - var b = this.getAt(a + 1); - - if (b) - { - this.swap(child, b); - } - } - - return child; - -}; - -/** -* Moves the given child down one place in this group unless it's already at the bottom. -* -* @method Phaser.Group#moveDown -* @param {any} child - The child to move down in the group. -* @return {any} The child that was moved. -*/ -Phaser.Group.prototype.moveDown = function (child) { - - if (child.parent === this && this.getIndex(child) > 0) - { - var a = this.getIndex(child); - var b = this.getAt(a - 1); - - if (b) - { - this.swap(child, b); - } - } - - return child; - -}; - -/** -* Positions the child found at the given index within this group to the given x and y coordinates. -* -* @method Phaser.Group#xy -* @param {integer} index - The index of the child in the group to set the position of. -* @param {number} x - The new x position of the child. -* @param {number} y - The new y position of the child. -*/ -Phaser.Group.prototype.xy = function (index, x, y) { - - if (index < 0 || index > this.children.length) - { - return -1; - } - else - { - this.getChildAt(index).x = x; - this.getChildAt(index).y = y; - } - -}; - -/** -* Reverses all children in this group. -* -* This operation applies only to immediate children and does not propagate to subgroups. -* -* @method Phaser.Group#reverse -*/ -Phaser.Group.prototype.reverse = function () { - - this.children.reverse(); - this.updateZ(); - -}; - -/** -* Get the index position of the given child in this group, which should match the child's `z` property. -* -* @method Phaser.Group#getIndex -* @param {any} child - The child to get the index for. -* @return {integer} The index of the child or -1 if it's not a member of this group. -*/ -Phaser.Group.prototype.getIndex = function (child) { - - return this.children.indexOf(child); - -}; - -/** -* Searches the Group for the first instance of a child with the `name` -* property matching the given argument. Should more than one child have -* the same name only the first instance is returned. -* -* @method Phaser.Group#getByName -* @param {string} name - The name to search for. -* @return {any} The first child with a matching name, or null if none were found. -*/ -Phaser.Group.prototype.getByName = function (name) { - - for (var i = 0; i < this.children.length; i++) - { - if (this.children[i].name === name) - { - return this.children[i]; - } - } - - return null; - -}; - -/** -* Replaces a child of this Group with the given newChild. The newChild cannot be a member of this Group. -* -* If `Group.enableBody` is set, then a physics body will be created on the object, so long as one does not already exist. -* -* If `Group.inputEnableChildren` is set, then an Input Handler will be created on the object, so long as one does not already exist. -* -* @method Phaser.Group#replace -* @param {any} oldChild - The child in this group that will be replaced. -* @param {any} newChild - The child to be inserted into this group. -* @return {any} Returns the oldChild that was replaced within this group. -*/ -Phaser.Group.prototype.replace = function (oldChild, newChild) { - - var index = this.getIndex(oldChild); - - if (index !== -1) - { - if (newChild.parent) - { - if (newChild.parent instanceof Phaser.Group) - { - newChild.parent.remove(newChild); - } - else - { - newChild.parent.removeChild(newChild); - } - } - - this.remove(oldChild); - - this.addAt(newChild, index); - - return oldChild; - } - -}; - -/** -* Checks if the child has the given property. -* -* Will scan up to 4 levels deep only. -* -* @method Phaser.Group#hasProperty -* @param {any} child - The child to check for the existence of the property on. -* @param {string[]} key - An array of strings that make up the property. -* @return {boolean} True if the child has the property, otherwise false. -*/ -Phaser.Group.prototype.hasProperty = function (child, key) { - - var len = key.length; - - if (len === 1 && key[0] in child) - { - return true; - } - else if (len === 2 && key[0] in child && key[1] in child[key[0]]) - { - return true; - } - else if (len === 3 && key[0] in child && key[1] in child[key[0]] && key[2] in child[key[0]][key[1]]) - { - return true; - } - else if (len === 4 && key[0] in child && key[1] in child[key[0]] && key[2] in child[key[0]][key[1]] && key[3] in child[key[0]][key[1]][key[2]]) - { - return true; - } - - return false; - -}; - -/** -* Sets a property to the given value on the child. The operation parameter controls how the value is set. -* -* The operations are: -* - 0: set the existing value to the given value; if force is `true` a new property will be created if needed -* - 1: will add the given value to the value already present. -* - 2: will subtract the given value from the value already present. -* - 3: will multiply the value already present by the given value. -* - 4: will divide the value already present by the given value. -* -* @method Phaser.Group#setProperty -* @param {any} child - The child to set the property value on. -* @param {array} key - An array of strings that make up the property that will be set. -* @param {any} value - The value that will be set. -* @param {integer} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. -* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. -* @return {boolean} True if the property was set, false if not. -*/ -Phaser.Group.prototype.setProperty = function (child, key, value, operation, force) { - - if (force === undefined) { force = false; } - - operation = operation || 0; - - // As ugly as this approach looks, and although it's limited to a depth of only 4, it's much faster than a for loop or object iteration. - - // 0 = Equals - // 1 = Add - // 2 = Subtract - // 3 = Multiply - // 4 = Divide - - // We can't force a property in and the child doesn't have it, so abort. - // Equally we can't add, subtract, multiply or divide a property value if it doesn't exist, so abort in those cases too. - if (!this.hasProperty(child, key) && (!force || operation > 0)) - { - return false; - } - - var len = key.length; - - if (len === 1) - { - if (operation === 0) { child[key[0]] = value; } - else if (operation == 1) { child[key[0]] += value; } - else if (operation == 2) { child[key[0]] -= value; } - else if (operation == 3) { child[key[0]] *= value; } - else if (operation == 4) { child[key[0]] /= value; } - } - else if (len === 2) - { - if (operation === 0) { child[key[0]][key[1]] = value; } - else if (operation == 1) { child[key[0]][key[1]] += value; } - else if (operation == 2) { child[key[0]][key[1]] -= value; } - else if (operation == 3) { child[key[0]][key[1]] *= value; } - else if (operation == 4) { child[key[0]][key[1]] /= value; } - } - else if (len === 3) - { - if (operation === 0) { child[key[0]][key[1]][key[2]] = value; } - else if (operation == 1) { child[key[0]][key[1]][key[2]] += value; } - else if (operation == 2) { child[key[0]][key[1]][key[2]] -= value; } - else if (operation == 3) { child[key[0]][key[1]][key[2]] *= value; } - else if (operation == 4) { child[key[0]][key[1]][key[2]] /= value; } - } - else if (len === 4) - { - if (operation === 0) { child[key[0]][key[1]][key[2]][key[3]] = value; } - else if (operation == 1) { child[key[0]][key[1]][key[2]][key[3]] += value; } - else if (operation == 2) { child[key[0]][key[1]][key[2]][key[3]] -= value; } - else if (operation == 3) { child[key[0]][key[1]][key[2]][key[3]] *= value; } - else if (operation == 4) { child[key[0]][key[1]][key[2]][key[3]] /= value; } - } - - return true; - -}; - -/** -* Checks a property for the given value on the child. -* -* @method Phaser.Group#checkProperty -* @param {any} child - The child to check the property value on. -* @param {array} key - An array of strings that make up the property that will be set. -* @param {any} value - The value that will be checked. -* @param {boolean} [force=false] - If `force` is true then the property will be checked on the child regardless if it already exists or not. If true and the property doesn't exist, false will be returned. -* @return {boolean} True if the property was was equal to value, false if not. -*/ -Phaser.Group.prototype.checkProperty = function (child, key, value, force) { - - if (force === undefined) { force = false; } - - // We can't force a property in and the child doesn't have it, so abort. - if (!Phaser.Utils.getProperty(child, key) && force) - { - return false; - } - - if (Phaser.Utils.getProperty(child, key) !== value) - { - return false; - } - - return true; - -}; - -/** -* Quickly set a property on a single child of this group to a new value. -* -* The operation parameter controls how the new value is assigned to the property, from simple replacement to addition and multiplication. -* -* @method Phaser.Group#set -* @param {Phaser.Sprite} child - The child to set the property on. -* @param {string} key - The property, as a string, to be set. For example: 'body.velocity.x' -* @param {any} value - The value that will be set. -* @param {boolean} [checkAlive=false] - If set then the child will only be updated if alive=true. -* @param {boolean} [checkVisible=false] - If set then the child will only be updated if visible=true. -* @param {integer} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. -* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. -* @return {boolean} True if the property was set, false if not. -*/ -Phaser.Group.prototype.set = function (child, key, value, checkAlive, checkVisible, operation, force) { - - if (force === undefined) { force = false; } - - key = key.split('.'); - - if (checkAlive === undefined) { checkAlive = false; } - if (checkVisible === undefined) { checkVisible = false; } - - if ((checkAlive === false || (checkAlive && child.alive)) && (checkVisible === false || (checkVisible && child.visible))) - { - return this.setProperty(child, key, value, operation, force); - } - -}; - -/** -* Quickly set the same property across all children of this group to a new value. -* -* This call doesn't descend down children, so if you have a Group inside of this group, the property will be set on the group but not its children. -* If you need that ability please see `Group.setAllChildren`. -* -* The operation parameter controls how the new value is assigned to the property, from simple replacement to addition and multiplication. -* -* @method Phaser.Group#setAll -* @param {string} key - The property, as a string, to be set. For example: 'body.velocity.x' -* @param {any} value - The value that will be set. -* @param {boolean} [checkAlive=false] - If set then only children with alive=true will be updated. This includes any Groups that are children. -* @param {boolean} [checkVisible=false] - If set then only children with visible=true will be updated. This includes any Groups that are children. -* @param {integer} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. -* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. -*/ -Phaser.Group.prototype.setAll = function (key, value, checkAlive, checkVisible, operation, force) { - - if (checkAlive === undefined) { checkAlive = false; } - if (checkVisible === undefined) { checkVisible = false; } - if (force === undefined) { force = false; } - - key = key.split('.'); - operation = operation || 0; - - for (var i = 0; i < this.children.length; i++) - { - if ((!checkAlive || (checkAlive && this.children[i].alive)) && (!checkVisible || (checkVisible && this.children[i].visible))) - { - this.setProperty(this.children[i], key, value, operation, force); - } - } - -}; - -/** -* Quickly set the same property across all children of this group, and any child Groups, to a new value. -* -* If this group contains other Groups then the same property is set across their children as well, iterating down until it reaches the bottom. -* Unlike with `setAll` the property is NOT set on child Groups itself. -* -* The operation parameter controls how the new value is assigned to the property, from simple replacement to addition and multiplication. -* -* @method Phaser.Group#setAllChildren -* @param {string} key - The property, as a string, to be set. For example: 'body.velocity.x' -* @param {any} value - The value that will be set. -* @param {boolean} [checkAlive=false] - If set then only children with alive=true will be updated. This includes any Groups that are children. -* @param {boolean} [checkVisible=false] - If set then only children with visible=true will be updated. This includes any Groups that are children. -* @param {integer} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. -* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. -*/ -Phaser.Group.prototype.setAllChildren = function (key, value, checkAlive, checkVisible, operation, force) { - - if (checkAlive === undefined) { checkAlive = false; } - if (checkVisible === undefined) { checkVisible = false; } - if (force === undefined) { force = false; } - - operation = operation || 0; - - for (var i = 0; i < this.children.length; i++) - { - if ((!checkAlive || (checkAlive && this.children[i].alive)) && (!checkVisible || (checkVisible && this.children[i].visible))) - { - if (this.children[i] instanceof Phaser.Group) - { - this.children[i].setAllChildren(key, value, checkAlive, checkVisible, operation, force); - } - else - { - this.setProperty(this.children[i], key.split('.'), value, operation, force); - } - } - } - -}; - -/** -* Quickly check that the same property across all children of this group is equal to the given value. -* -* This call doesn't descend down children, so if you have a Group inside of this group, the property will be checked on the group but not its children. -* -* @method Phaser.Group#checkAll -* @param {string} key - The property, as a string, to be set. For example: 'body.velocity.x' -* @param {any} value - The value that will be checked. -* @param {boolean} [checkAlive=false] - If set then only children with alive=true will be checked. This includes any Groups that are children. -* @param {boolean} [checkVisible=false] - If set then only children with visible=true will be checked. This includes any Groups that are children. -* @param {boolean} [force=false] - If `force` is true then the property will be checked on the child regardless if it already exists or not. If true and the property doesn't exist, false will be returned. -*/ -Phaser.Group.prototype.checkAll = function (key, value, checkAlive, checkVisible, force) { - - if (checkAlive === undefined) { checkAlive = false; } - if (checkVisible === undefined) { checkVisible = false; } - if (force === undefined) { force = false; } - - for (var i = 0; i < this.children.length; i++) - { - if ((!checkAlive || (checkAlive && this.children[i].alive)) && (!checkVisible || (checkVisible && this.children[i].visible))) - { - if (!this.checkProperty(this.children[i], key, value, force)) - { - return false; - } - } - } - - return true; - -}; - -/** -* Adds the amount to the given property on all children in this group. -* -* `Group.addAll('x', 10)` will add 10 to the child.x value for each child. -* -* @method Phaser.Group#addAll -* @param {string} property - The property to increment, for example 'body.velocity.x' or 'angle'. -* @param {number} amount - The amount to increment the property by. If child.x = 10 then addAll('x', 40) would make child.x = 50. -* @param {boolean} checkAlive - If true the property will only be changed if the child is alive. -* @param {boolean} checkVisible - If true the property will only be changed if the child is visible. -*/ -Phaser.Group.prototype.addAll = function (property, amount, checkAlive, checkVisible) { - - this.setAll(property, amount, checkAlive, checkVisible, 1); - -}; - -/** -* Subtracts the amount from the given property on all children in this group. -* -* `Group.subAll('x', 10)` will minus 10 from the child.x value for each child. -* -* @method Phaser.Group#subAll -* @param {string} property - The property to decrement, for example 'body.velocity.x' or 'angle'. -* @param {number} amount - The amount to subtract from the property. If child.x = 50 then subAll('x', 40) would make child.x = 10. -* @param {boolean} checkAlive - If true the property will only be changed if the child is alive. -* @param {boolean} checkVisible - If true the property will only be changed if the child is visible. -*/ -Phaser.Group.prototype.subAll = function (property, amount, checkAlive, checkVisible) { - - this.setAll(property, amount, checkAlive, checkVisible, 2); - -}; - -/** -* Multiplies the given property by the amount on all children in this group. -* -* `Group.multiplyAll('x', 2)` will x2 the child.x value for each child. -* -* @method Phaser.Group#multiplyAll -* @param {string} property - The property to multiply, for example 'body.velocity.x' or 'angle'. -* @param {number} amount - The amount to multiply the property by. If child.x = 10 then multiplyAll('x', 2) would make child.x = 20. -* @param {boolean} checkAlive - If true the property will only be changed if the child is alive. -* @param {boolean} checkVisible - If true the property will only be changed if the child is visible. -*/ -Phaser.Group.prototype.multiplyAll = function (property, amount, checkAlive, checkVisible) { - - this.setAll(property, amount, checkAlive, checkVisible, 3); - -}; - -/** -* Divides the given property by the amount on all children in this group. -* -* `Group.divideAll('x', 2)` will half the child.x value for each child. -* -* @method Phaser.Group#divideAll -* @param {string} property - The property to divide, for example 'body.velocity.x' or 'angle'. -* @param {number} amount - The amount to divide the property by. If child.x = 100 then divideAll('x', 2) would make child.x = 50. -* @param {boolean} checkAlive - If true the property will only be changed if the child is alive. -* @param {boolean} checkVisible - If true the property will only be changed if the child is visible. -*/ -Phaser.Group.prototype.divideAll = function (property, amount, checkAlive, checkVisible) { - - this.setAll(property, amount, checkAlive, checkVisible, 4); - -}; - -/** -* Calls a function, specified by name, on all children in the group who exist (or do not exist). -* -* After the existsValue parameter you can add as many parameters as you like, which will all be passed to the child callback. -* -* @method Phaser.Group#callAllExists -* @param {string} callback - Name of the function on the children to call. -* @param {boolean} existsValue - Only children with exists=existsValue will be called. -* @param {...any} parameter - Additional parameters that will be passed to the callback. -*/ -Phaser.Group.prototype.callAllExists = function (callback, existsValue) { - - var args; - - if (arguments.length > 2) - { - args = []; - - for (var i = 2; i < arguments.length; i++) - { - args.push(arguments[i]); - } - } - - for (var i = 0; i < this.children.length; i++) - { - if (this.children[i].exists === existsValue && this.children[i][callback]) - { - this.children[i][callback].apply(this.children[i], args); - } - } - -}; - -/** -* Returns a reference to a function that exists on a child of the group based on the given callback array. -* -* @method Phaser.Group#callbackFromArray -* @param {object} child - The object to inspect. -* @param {array} callback - The array of function names. -* @param {integer} length - The size of the array (pre-calculated in callAll). -* @protected -*/ -Phaser.Group.prototype.callbackFromArray = function (child, callback, length) { - - // Kinda looks like a Christmas tree - - if (length == 1) - { - if (child[callback[0]]) - { - return child[callback[0]]; - } - } - else if (length == 2) - { - if (child[callback[0]][callback[1]]) - { - return child[callback[0]][callback[1]]; - } - } - else if (length == 3) - { - if (child[callback[0]][callback[1]][callback[2]]) - { - return child[callback[0]][callback[1]][callback[2]]; - } - } - else if (length == 4) - { - if (child[callback[0]][callback[1]][callback[2]][callback[3]]) - { - return child[callback[0]][callback[1]][callback[2]][callback[3]]; - } - } - else - { - if (child[callback]) - { - return child[callback]; - } - } - - return false; - -}; - -/** -* Calls a function, specified by name, on all on children. -* -* The function is called for all children regardless if they are dead or alive (see callAllExists for different options). -* After the method parameter and context you can add as many extra parameters as you like, which will all be passed to the child. -* -* @method Phaser.Group#callAll -* @param {string} method - Name of the function on the child to call. Deep property lookup is supported. -* @param {string} [context=null] - A string containing the context under which the method will be executed. Set to null to default to the child. -* @param {...any} args - Additional parameters that will be passed to the method. -*/ -Phaser.Group.prototype.callAll = function (method, context) { - - if (method === undefined) - { - return; - } - - // Extract the method into an array - method = method.split('.'); - - var methodLength = method.length; - - if (context === undefined || context === null || context === '') - { - context = null; - } - else - { - // Extract the context into an array - if (typeof context === 'string') - { - context = context.split('.'); - var contextLength = context.length; - } - } - - var args; - - if (arguments.length > 2) - { - args = []; - - for (var i = 2; i < arguments.length; i++) - { - args.push(arguments[i]); - } - } - - var callback = null; - var callbackContext = null; - - for (var i = 0; i < this.children.length; i++) - { - callback = this.callbackFromArray(this.children[i], method, methodLength); - - if (context && callback) - { - callbackContext = this.callbackFromArray(this.children[i], context, contextLength); - - if (callback) - { - callback.apply(callbackContext, args); - } - } - else if (callback) - { - callback.apply(this.children[i], args); - } - } - -}; - -/** -* The core preUpdate - as called by World. -* @method Phaser.Group#preUpdate -* @protected -*/ -Phaser.Group.prototype.preUpdate = function () { - - if (this.pendingDestroy) - { - this.destroy(); - return false; - } - - if (!this.exists || !this.parent.exists) - { - this.renderOrderID = -1; - return false; - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].preUpdate(); - } - - return true; - -}; - -/** -* The core update - as called by World. -* @method Phaser.Group#update -* @protected -*/ -Phaser.Group.prototype.update = function () { - - // Goes in reverse, because it's highly likely the child will destroy itself in `update` - var i = this.children.length; - - while (i--) - { - this.children[i].update(); - } - -}; - -/** -* The core postUpdate - as called by World. -* @method Phaser.Group#postUpdate -* @protected -*/ -Phaser.Group.prototype.postUpdate = function () { - - // Fixed to Camera? - if (this.fixedToCamera) - { - this.x = this.game.camera.view.x + this.cameraOffset.x; - this.y = this.game.camera.view.y + this.cameraOffset.y; - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].postUpdate(); - } - -}; - -/** -* Find children matching a certain predicate. -* -* For example: -* -* var healthyList = Group.filter(function(child, index, children) { -* return child.health > 10 ? true : false; -* }, true); -* healthyList.callAll('attack'); -* -* Note: Currently this will skip any children which are Groups themselves. -* -* @method Phaser.Group#filter -* @param {function} predicate - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, the index as the second, and the entire child array as the third -* @param {boolean} [checkExists=false] - If true, only existing can be selected; otherwise all children can be selected and will be passed to the predicate. -* @return {Phaser.ArraySet} Returns an array list containing all the children that the predicate returned true for -*/ -Phaser.Group.prototype.filter = function (predicate, checkExists) { - - var index = -1; - var length = this.children.length; - var results = []; - - while (++index < length) - { - var child = this.children[index]; - - if (!checkExists || (checkExists && child.exists)) - { - if (predicate(child, index, this.children)) - { - results.push(child); - } - } - } - - return new Phaser.ArraySet(results); - -}; - -/** -* Call a function on each child in this group. -* -* Additional arguments for the callback can be specified after the `checkExists` parameter. For example, -* -* Group.forEach(awardBonusGold, this, true, 100, 500) -* -* would invoke `awardBonusGold` function with the parameters `(child, 100, 500)`. -* -* Note: This check will skip any children which are Groups themselves. -* -* @method Phaser.Group#forEach -* @param {function} callback - The function that will be called for each applicable child. The child will be passed as the first argument. -* @param {object} callbackContext - The context in which the function should be called (usually 'this'). -* @param {boolean} [checkExists=false] - If set only children matching for which `exists` is true will be passed to the callback, otherwise all children will be passed. -* @param {...any} [args=(none)] - Additional arguments to pass to the callback function, after the child item. -*/ -Phaser.Group.prototype.forEach = function (callback, callbackContext, checkExists) { - - if (checkExists === undefined) { checkExists = false; } - - if (arguments.length <= 3) - { - for (var i = 0; i < this.children.length; i++) - { - if (!checkExists || (checkExists && this.children[i].exists)) - { - callback.call(callbackContext, this.children[i]); - } - } - } - else - { - // Assigning to arguments properties causes Extreme Deoptimization in Chrome, FF, and IE. - // Using an array and pushing each element (not a slice!) is _significantly_ faster. - var args = [null]; - - for (var i = 3; i < arguments.length; i++) - { - args.push(arguments[i]); - } - - for (var i = 0; i < this.children.length; i++) - { - if (!checkExists || (checkExists && this.children[i].exists)) - { - args[0] = this.children[i]; - callback.apply(callbackContext, args); - } - } - } - -}; - -/** -* Call a function on each existing child in this group. -* -* See {@link Phaser.Group#forEach forEach} for details. -* -* @method Phaser.Group#forEachExists -* @param {function} callback - The function that will be called for each applicable child. The child will be passed as the first argument. -* @param {object} callbackContext - The context in which the function should be called (usually 'this'). -* @param {...any} [args=(none)] - Additional arguments to pass to the callback function, after the child item. -*/ -Phaser.Group.prototype.forEachExists = function (callback, callbackContext) { - - var args; - - if (arguments.length > 2) - { - args = [null]; - - for (var i = 2; i < arguments.length; i++) - { - args.push(arguments[i]); - } - } - - this.iterate('exists', true, Phaser.Group.RETURN_TOTAL, callback, callbackContext, args); - -}; - -/** -* Call a function on each alive child in this group. -* -* See {@link Phaser.Group#forEach forEach} for details. -* -* @method Phaser.Group#forEachAlive -* @param {function} callback - The function that will be called for each applicable child. The child will be passed as the first argument. -* @param {object} callbackContext - The context in which the function should be called (usually 'this'). -* @param {...any} [args=(none)] - Additional arguments to pass to the callback function, after the child item. -*/ -Phaser.Group.prototype.forEachAlive = function (callback, callbackContext) { - - var args; - - if (arguments.length > 2) - { - args = [null]; - - for (var i = 2; i < arguments.length; i++) - { - args.push(arguments[i]); - } - } - - this.iterate('alive', true, Phaser.Group.RETURN_TOTAL, callback, callbackContext, args); - -}; - -/** -* Call a function on each dead child in this group. -* -* See {@link Phaser.Group#forEach forEach} for details. -* -* @method Phaser.Group#forEachDead -* @param {function} callback - The function that will be called for each applicable child. The child will be passed as the first argument. -* @param {object} callbackContext - The context in which the function should be called (usually 'this'). -* @param {...any} [args=(none)] - Additional arguments to pass to the callback function, after the child item. -*/ -Phaser.Group.prototype.forEachDead = function (callback, callbackContext) { - - var args; - - if (arguments.length > 2) - { - args = [null]; - - for (var i = 2; i < arguments.length; i++) - { - args.push(arguments[i]); - } - } - - this.iterate('alive', false, Phaser.Group.RETURN_TOTAL, callback, callbackContext, args); - -}; - -/** -* Sort the children in the group according to a particular key and ordering. -* -* Call this function to sort the group according to a particular key value and order. -* -* For example to depth sort Sprites for Zelda-style game you might call `group.sort('y', Phaser.Group.SORT_ASCENDING)` at the bottom of your `State.update()`. -* -* Internally this uses a standard JavaScript Array sort, so everything that applies there also applies here, including -* alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN for more details. -* -* @method Phaser.Group#sort -* @param {string} [key='z'] - The name of the property to sort on. Defaults to the objects z-depth value. -* @param {integer} [order=Phaser.Group.SORT_ASCENDING] - Order ascending ({@link Phaser.Group.SORT_ASCENDING SORT_ASCENDING}) or descending ({@link Phaser.Group.SORT_DESCENDING SORT_DESCENDING}). -*/ -Phaser.Group.prototype.sort = function (key, order) { - - if (this.children.length < 2) - { - // Nothing to swap - return; - } - - if (key === undefined) { key = 'z'; } - if (order === undefined) { order = Phaser.Group.SORT_ASCENDING; } - - this._sortProperty = key; - - if (order === Phaser.Group.SORT_ASCENDING) - { - this.children.sort(this.ascendingSortHandler.bind(this)); - } - else - { - this.children.sort(this.descendingSortHandler.bind(this)); - } - - this.updateZ(); - -}; - -/** -* Sort the children in the group according to custom sort function. -* -* The `sortHandler` is provided the two parameters: the two children involved in the comparison (a and b). -* It should return -1 if `a > b`, 1 if `a < b` or 0 if `a === b`. -* -* @method Phaser.Group#customSort -* @param {function} sortHandler - The custom sort function. -* @param {object} [context=undefined] - The context in which the sortHandler is called. -*/ -Phaser.Group.prototype.customSort = function (sortHandler, context) { - - if (this.children.length < 2) - { - // Nothing to swap - return; - } - - this.children.sort(sortHandler.bind(context)); - - this.updateZ(); - -}; - -/** -* An internal helper function for the sort process. -* -* @method Phaser.Group#ascendingSortHandler -* @protected -* @param {object} a - The first object being sorted. -* @param {object} b - The second object being sorted. -*/ -Phaser.Group.prototype.ascendingSortHandler = function (a, b) { - - if (a[this._sortProperty] < b[this._sortProperty]) - { - return -1; - } - else if (a[this._sortProperty] > b[this._sortProperty]) - { - return 1; - } - else - { - if (a.z < b.z) - { - return -1; - } - else - { - return 1; - } - } - -}; - -/** -* An internal helper function for the sort process. -* -* @method Phaser.Group#descendingSortHandler -* @protected -* @param {object} a - The first object being sorted. -* @param {object} b - The second object being sorted. -*/ -Phaser.Group.prototype.descendingSortHandler = function (a, b) { - - if (a[this._sortProperty] < b[this._sortProperty]) - { - return 1; - } - else if (a[this._sortProperty] > b[this._sortProperty]) - { - return -1; - } - else - { - return 0; - } - -}; - -/** -* Iterates over the children of the group performing one of several actions for matched children. -* -* A child is considered a match when it has a property, named `key`, whose value is equal to `value` -* according to a strict equality comparison. -* -* The result depends on the `returnType`: -* -* - {@link Phaser.Group.RETURN_TOTAL RETURN_TOTAL}: -* The callback, if any, is applied to all matching children. The number of matched children is returned. -* - {@link Phaser.Group.RETURN_NONE RETURN_NONE}: -* The callback, if any, is applied to all matching children. No value is returned. -* - {@link Phaser.Group.RETURN_CHILD RETURN_CHILD}: -* The callback, if any, is applied to the *first* matching child and the *first* matched child is returned. -* If there is no matching child then null is returned. -* -* If `args` is specified it must be an array. The matched child will be assigned to the first -* element and the entire array will be applied to the callback function. -* -* @method Phaser.Group#iterate -* @param {string} key - The child property to check, i.e. 'exists', 'alive', 'health' -* @param {any} value - A child matches if `child[key] === value` is true. -* @param {integer} returnType - How to iterate the children and what to return. -* @param {function} [callback=null] - Optional function that will be called on each matching child. The matched child is supplied as the first argument. -* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). -* @param {any[]} [args=(none)] - The arguments supplied to to the callback; the first array index (argument) will be replaced with the matched child. -* @return {any} Returns either an integer (for RETURN_TOTAL), the first matched child (for RETURN_CHILD), or null. -*/ -Phaser.Group.prototype.iterate = function (key, value, returnType, callback, callbackContext, args) { - - if (returnType === Phaser.Group.RETURN_TOTAL && this.children.length === 0) - { - return 0; - } - - var total = 0; - - for (var i = 0; i < this.children.length; i++) - { - if (this.children[i][key] === value) - { - total++; - - if (callback) - { - if (args) - { - args[0] = this.children[i]; - callback.apply(callbackContext, args); - } - else - { - callback.call(callbackContext, this.children[i]); - } - } - - if (returnType === Phaser.Group.RETURN_CHILD) - { - return this.children[i]; - } - } - } - - if (returnType === Phaser.Group.RETURN_TOTAL) - { - return total; - } - - // RETURN_CHILD or RETURN_NONE - return null; - -}; - -/** -* Get the first display object that exists, or doesn't exist. -* -* You can use the optional argument `createIfNull` to create a new Game Object if none matching your exists argument were found in this Group. -* -* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. -* -* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child -* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. -* -* @method Phaser.Group#getFirstExists -* @param {boolean} [exists=true] - If true, find the first existing child; otherwise find the first non-existing child. -* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. -* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. -* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. -* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @return {DisplayObject} The first child, or `null` if none found and `createIfNull` was false. -*/ -Phaser.Group.prototype.getFirstExists = function (exists, createIfNull, x, y, key, frame) { - - if (createIfNull === undefined) { createIfNull = false; } - - if (typeof exists !== 'boolean') - { - exists = true; - } - - var child = this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); - - return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); - -}; - -/** -* Get the first child that is alive (`child.alive === true`). -* -* This is handy for choosing a squad leader, etc. -* -* You can use the optional argument `createIfNull` to create a new Game Object if no alive ones were found in this Group. -* -* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. -* -* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child -* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. -* -* @method Phaser.Group#getFirstAlive -* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. -* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. -* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. -* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @return {DisplayObject} The alive dead child, or `null` if none found and `createIfNull` was false. -*/ -Phaser.Group.prototype.getFirstAlive = function (createIfNull, x, y, key, frame) { - - if (createIfNull === undefined) { createIfNull = false; } - - var child = this.iterate('alive', true, Phaser.Group.RETURN_CHILD); - - return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); - -}; - -/** -* Get the first child that is dead (`child.alive === false`). -* -* This is handy for checking if everything has been wiped out and adding to the pool as needed. -* -* You can use the optional argument `createIfNull` to create a new Game Object if no dead ones were found in this Group. -* -* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. -* -* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child -* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. -* -* @method Phaser.Group#getFirstDead -* @param {boolean} [createIfNull=false] - If `true` and no dead children are found a new one is created. -* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. -* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. -* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @return {DisplayObject} The first dead child, or `null` if none found and `createIfNull` was false. -*/ -Phaser.Group.prototype.getFirstDead = function (createIfNull, x, y, key, frame) { - - if (createIfNull === undefined) { createIfNull = false; } - - var child = this.iterate('alive', false, Phaser.Group.RETURN_CHILD); - - return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); - -}; - -/** -* Takes a child and if the `x` and `y` arguments are given it calls `child.reset(x, y)` on it. -* -* If the `key` and optionally the `frame` arguments are given, it calls `child.loadTexture(key, frame)` on it. -* -* The two operations are separate. For example if you just wish to load a new texture then pass `null` as the x and y values. -* -* @method Phaser.Group#resetChild -* @param {DisplayObject} child - The child to reset and/or load the texture on. -* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. -* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. -* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @return {DisplayObject} The child that was reset: usually a {@link Phaser.Sprite}. -*/ -Phaser.Group.prototype.resetChild = function (child, x, y, key, frame) { - - if (child === null) - { - return null; - } - - if (x === undefined) { x = null; } - if (y === undefined) { y = null; } - - if (x !== null && y !== null) - { - child.reset(x, y); - } - - if (key !== undefined) - { - child.loadTexture(key, frame); - } - - return child; - -}; - -/** -* Return the child at the top of this group. -* -* The top child is the child displayed (rendered) above every other child. -* -* @method Phaser.Group#getTop -* @return {any} The child at the top of the Group. -*/ -Phaser.Group.prototype.getTop = function () { - - if (this.children.length > 0) - { - return this.children[this.children.length - 1]; - } - -}; - -/** -* Returns the child at the bottom of this group. -* -* The bottom child the child being displayed (rendered) below every other child. -* -* @method Phaser.Group#getBottom -* @return {any} The child at the bottom of the Group. -*/ -Phaser.Group.prototype.getBottom = function () { - - if (this.children.length > 0) - { - return this.children[0]; - } - -}; - -/** -* Get the closest child to given Object, with optional callback to filter children. -* -* This can be a Sprite, Group, Image or any object with public x and y properties. -* -* 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. -* -* You can use the optional `callback` argument to apply your own filter to the distance checks. -* If the child is closer then the previous child, it will be sent to `callback` as the first argument, -* with the distance as the second. The callback should return `true` if it passes your -* filtering criteria, otherwise it should return `false`. -* -* @method Phaser.Group#getClosestTo -* @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. -* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). -* @return {any} The child closest to given object, or `null` if no child was found. -*/ -Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { - - var distance = Number.MAX_VALUE; - var tempDistance = 0; - var result = null; - - for (var i = 0; i < this.children.length; i++) - { - var child = this.children[i]; - - if (child.exists) - { - tempDistance = Math.abs(Phaser.Point.distance(object, child)); - - if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) - { - distance = tempDistance; - result = child; - } - } - } - - return result; - -}; - -/** -* Get the child furthest away from the given Object, with optional callback to filter children. -* -* This can be a Sprite, Group, Image or any object with public x and y properties. -* -* 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. -* -* You can use the optional `callback` argument to apply your own filter to the distance checks. -* If the child is closer then the previous child, it will be sent to `callback` as the first argument, -* with the distance as the second. The callback should return `true` if it passes your -* filtering criteria, otherwise it should return `false`. -* -* @method Phaser.Group#getFurthestFrom -* @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. -* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). -* @return {any} The child furthest from the given object, or `null` if no child was found. -*/ -Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { - - var distance = 0; - var tempDistance = 0; - var result = null; - - for (var i = 0; i < this.children.length; i++) - { - var child = this.children[i]; - - if (child.exists) - { - tempDistance = Math.abs(Phaser.Point.distance(object, child)); - - if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) - { - distance = tempDistance; - result = child; - } - } - } - - return result; - -}; - -/** -* Get the number of living children in this group. -* -* @method Phaser.Group#countLiving -* @return {integer} The number of children flagged as alive. -*/ -Phaser.Group.prototype.countLiving = function () { - - return this.iterate('alive', true, Phaser.Group.RETURN_TOTAL); - -}; - -/** -* Get the number of dead children in this group. -* -* @method Phaser.Group#countDead -* @return {integer} The number of children flagged as dead. -*/ -Phaser.Group.prototype.countDead = function () { - - return this.iterate('alive', false, Phaser.Group.RETURN_TOTAL); - -}; - -/** -* Returns a random child from the group. -* -* @method Phaser.Group#getRandom -* @param {integer} [startIndex=0] - Offset from the front of the front of the group (lowest child). -* @param {integer} [length=(to top)] - Restriction on the number of values you want to randomly select from. -* @return {any} A random child of this Group. -*/ -Phaser.Group.prototype.getRandom = function (startIndex, length) { - - if (this.children.length === 0) - { - return null; - } - - startIndex = startIndex || 0; - length = length || this.children.length; - - return Phaser.ArrayUtils.getRandomItem(this.children, startIndex, length); - -}; - -/** -* Removes the given child from this group. -* -* This will dispatch an `onRemovedFromGroup` event from the child (if it has one), and optionally destroy the child. -* -* If the group cursor was referring to the removed child it is updated to refer to the next child. -* -* @method Phaser.Group#remove -* @param {any} child - The child to remove. -* @param {boolean} [destroy=false] - If true `destroy` will be invoked on the removed child. -* @param {boolean} [silent=false] - If true the the child will not dispatch the `onRemovedFromGroup` event. -* @return {boolean} true if the child was removed from this group, otherwise false. -*/ -Phaser.Group.prototype.remove = function (child, destroy, silent) { - - if (destroy === undefined) { destroy = false; } - if (silent === undefined) { silent = false; } - - if (this.children.length === 0 || this.children.indexOf(child) === -1) - { - return false; - } - - if (!silent && child.events && !child.destroyPhase) - { - child.events.onRemovedFromGroup$dispatch(child, this); - } - - var removed = this.removeChild(child); - - this.removeFromHash(child); - - this.updateZ(); - - if (this.cursor === child) - { - this.next(); - } - - if (destroy && removed) - { - removed.destroy(true); - } - - return true; - -}; - -/** -* Moves all children from this Group to the Group given. -* -* @method Phaser.Group#moveAll -* @param {Phaser.Group} group - The new Group to which the children will be moved to. -* @param {boolean} [silent=false] - If true the children will not dispatch the `onAddedToGroup` event for the new Group. -* @return {Phaser.Group} The Group to which all the children were moved. -*/ -Phaser.Group.prototype.moveAll = function (group, silent) { - - if (silent === undefined) { silent = false; } - - if (this.children.length > 0 && group instanceof Phaser.Group) - { - do - { - group.add(this.children[0], silent); - } - while (this.children.length > 0); - - this.hash = []; - - this.cursor = null; - } - - return group; - -}; - -/** -* Removes all children from this Group, but does not remove the group from its parent. -* -* The children can be optionally destroyed as they are removed. -* -* You can also optionally also destroy the BaseTexture the Child is using. Be careful if you've -* more than one Game Object sharing the same BaseTexture. -* -* @method Phaser.Group#removeAll -* @param {boolean} [destroy=false] - If true `destroy` will be invoked on each removed child. -* @param {boolean} [silent=false] - If true the children will not dispatch their `onRemovedFromGroup` events. -* @param {boolean} [destroyTexture=false] - If true, and if the `destroy` argument is also true, the BaseTexture belonging to the Child is also destroyed. Note that if another Game Object is sharing the same BaseTexture it will invalidate it. -*/ -Phaser.Group.prototype.removeAll = function (destroy, silent, destroyTexture) { - - if (destroy === undefined) { destroy = false; } - if (silent === undefined) { silent = false; } - if (destroyTexture === undefined) { destroyTexture = false; } - - if (this.children.length === 0) - { - return; - } - - do - { - if (!silent && this.children[0].events) - { - this.children[0].events.onRemovedFromGroup$dispatch(this.children[0], this); - } - - var removed = this.removeChild(this.children[0]); - - this.removeFromHash(removed); - - if (destroy && removed) - { - removed.destroy(true, destroyTexture); - } - } - while (this.children.length > 0); - - this.hash = []; - - this.cursor = null; - -}; - -/** -* Removes all children from this group whose index falls beteen the given startIndex and endIndex values. -* -* @method Phaser.Group#removeBetween -* @param {integer} startIndex - The index to start removing children from. -* @param {integer} [endIndex] - The index to stop removing children at. Must be higher than startIndex. If undefined this method will remove all children between startIndex and the end of the group. -* @param {boolean} [destroy=false] - If true `destroy` will be invoked on each removed child. -* @param {boolean} [silent=false] - If true the children will not dispatch their `onRemovedFromGroup` events. -*/ -Phaser.Group.prototype.removeBetween = function (startIndex, endIndex, destroy, silent) { - - if (endIndex === undefined) { endIndex = this.children.length - 1; } - if (destroy === undefined) { destroy = false; } - if (silent === undefined) { silent = false; } - - if (this.children.length === 0) - { - return; - } - - if (startIndex > endIndex || startIndex < 0 || endIndex > this.children.length) - { - return false; - } - - var i = endIndex; - - while (i >= startIndex) - { - if (!silent && this.children[i].events) - { - this.children[i].events.onRemovedFromGroup$dispatch(this.children[i], this); - } - - var removed = this.removeChild(this.children[i]); - - this.removeFromHash(removed); - - if (destroy && removed) - { - removed.destroy(true); - } - - if (this.cursor === this.children[i]) - { - this.cursor = null; - } - - i--; - } - - this.updateZ(); - -}; - -/** -* Destroys this group. -* -* Removes all children, then removes this group from its parent and nulls references. -* -* @method Phaser.Group#destroy -* @param {boolean} [destroyChildren=true] - If true `destroy` will be invoked on each removed child. -* @param {boolean} [soft=false] - A 'soft destroy' (set to true) doesn't remove this group from its parent or null the game reference. Set to false and it does. -*/ -Phaser.Group.prototype.destroy = function (destroyChildren, soft) { - - if (this.game === null || this.ignoreDestroy) { return; } - - if (destroyChildren === undefined) { destroyChildren = true; } - if (soft === undefined) { soft = false; } - - this.onDestroy.dispatch(this, destroyChildren, soft); - - this.removeAll(destroyChildren); - - this.cursor = null; - this.filters = null; - this.pendingDestroy = false; - - if (!soft) - { - if (this.parent) - { - this.parent.removeChild(this); - } - - this.game = null; - this.exists = false; - } - -}; - -/** -* Total number of existing children in the group. -* -* @name Phaser.Group#total -* @property {integer} total -* @readonly -*/ -Object.defineProperty(Phaser.Group.prototype, "total", { - - get: function () { - - return this.iterate('exists', true, Phaser.Group.RETURN_TOTAL); - - } - -}); - -/** -* Total number of children in this group, regardless of exists/alive status. -* -* @name Phaser.Group#length -* @property {integer} length -* @readonly -*/ -Object.defineProperty(Phaser.Group.prototype, "length", { - - get: function () { - - return this.children.length; - - } - -}); - -/** -* The angle of rotation of the group container, in degrees. -* -* This adjusts the group itself by modifying its local rotation transform. -* -* This has no impact on the rotation/angle properties of the children, but it will update their worldTransform -* and on-screen orientation and position. -* -* @name Phaser.Group#angle -* @property {number} angle -*/ -Object.defineProperty(Phaser.Group.prototype, "angle", { - - get: function() { - return Phaser.Math.radToDeg(this.rotation); - }, - - set: function(value) { - this.rotation = Phaser.Math.degToRad(value); - } - -}); - -/** -* The center x coordinate of this Group. -* -* It is derived by calling `getBounds`, calculating the Groups dimensions based on its -* visible children. -* -* Note that no ancestors are factored into the result, meaning that if this Group is -* nested within another Group, with heavy transforms on it, the result of this property -* is likely to be incorrect. It is safe to get and set this property if the Group is a -* top-level descendant of Phaser.World, or untransformed parents. -* -* @name Phaser.Group#centerX -* @property {number} centerX -*/ -Object.defineProperty(Phaser.Group.prototype, "centerX", { - - get: function () { - - return this.getBounds().centerX; - - }, - - set: function (value) { - - var r = this.getBounds(); - var offset = this.x - r.x; - - this.x = (value + offset) - r.halfWidth; - - } - -}); - -/** -* The center y coordinate of this Group. -* -* It is derived by calling `getBounds`, calculating the Groups dimensions based on its -* visible children. -* -* Note that no ancestors are factored into the result, meaning that if this Group is -* nested within another Group, with heavy transforms on it, the result of this property -* is likely to be incorrect. It is safe to get and set this property if the Group is a -* top-level descendant of Phaser.World, or untransformed parents. -* -* @name Phaser.Group#centerY -* @property {number} centerY -*/ -Object.defineProperty(Phaser.Group.prototype, "centerY", { - - get: function () { - - return this.getBounds().centerY; - - }, - - set: function (value) { - - var r = this.getBounds(); - var offset = this.y - r.y; - - this.y = (value + offset) - r.halfHeight; - - } - -}); - -/** -* The left coordinate of this Group. -* -* It is derived by calling `getBounds`, calculating the Groups dimensions based on its -* visible children. -* -* Note that no ancestors are factored into the result, meaning that if this Group is -* nested within another Group, with heavy transforms on it, the result of this property -* is likely to be incorrect. It is safe to get and set this property if the Group is a -* top-level descendant of Phaser.World, or untransformed parents. -* -* @name Phaser.Group#left -* @property {number} left -*/ -Object.defineProperty(Phaser.Group.prototype, "left", { - - get: function () { - - return this.getBounds().left; - - }, - - set: function (value) { - - var r = this.getBounds(); - var offset = this.x - r.x; - - this.x = value + offset; - - } - -}); - -/** -* The right coordinate of this Group. -* -* It is derived by calling `getBounds`, calculating the Groups dimensions based on its -* visible children. -* -* Note that no ancestors are factored into the result, meaning that if this Group is -* nested within another Group, with heavy transforms on it, the result of this property -* is likely to be incorrect. It is safe to get and set this property if the Group is a -* top-level descendant of Phaser.World, or untransformed parents. -* -* @name Phaser.Group#right -* @property {number} right -*/ -Object.defineProperty(Phaser.Group.prototype, "right", { - - get: function () { - - return this.getBounds().right; - - }, - - set: function (value) { - - var r = this.getBounds(); - var offset = this.x - r.x; - - this.x = (value + offset) - r.width; - - } - -}); - -/** -* The top coordinate of this Group. -* -* It is derived by calling `getBounds`, calculating the Groups dimensions based on its -* visible children. -* -* Note that no ancestors are factored into the result, meaning that if this Group is -* nested within another Group, with heavy transforms on it, the result of this property -* is likely to be incorrect. It is safe to get and set this property if the Group is a -* top-level descendant of Phaser.World, or untransformed parents. -* -* @name Phaser.Group#top -* @property {number} top -*/ -Object.defineProperty(Phaser.Group.prototype, "top", { - - get: function () { - - return this.getBounds().top; - - }, - - set: function (value) { - - var r = this.getBounds(); - var offset = this.y - r.y; - - this.y = (value + offset); - - } - -}); - -/** -* The bottom coordinate of this Group. -* -* It is derived by calling `getBounds`, calculating the Groups dimensions based on its -* visible children. -* -* Note that no ancestors are factored into the result, meaning that if this Group is -* nested within another Group, with heavy transforms on it, the result of this property -* is likely to be incorrect. It is safe to get and set this property if the Group is a -* top-level descendant of Phaser.World, or untransformed parents. -* -* @name Phaser.Group#bottom -* @property {number} bottom -*/ -Object.defineProperty(Phaser.Group.prototype, "bottom", { - - get: function () { - - return this.getBounds().bottom; - - }, - - set: function (value) { - - var r = this.getBounds(); - var offset = this.y - r.y; - - this.y = (value + offset) - r.height; - - } - -}); - -/** -* Aligns this Group within another Game Object, or Rectangle, known as the -* 'container', to one of 9 possible positions. -* -* The container must be a Game Object, or Phaser.Rectangle object. This can include properties -* such as `World.bounds` or `Camera.view`, for aligning Groups within the world -* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, -* TileSprites or Buttons. -* -* Please note that aligning a Group to another Game Object does **not** make it a child of -* the container. It simply modifies its position coordinates so it aligns with it. -* -* The position constants you can use are: -* -* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, -* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, -* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. -* -* Groups are placed in such a way that their _bounds_ align with the -* container, taking into consideration rotation and scale of its children. -* This allows you to neatly align Groups, irrespective of their position value. -* -* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final -* aligned position of the Group. For example: -* -* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` -* -* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. -* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. -* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive -* one expands it. -* -* @method Phaser.Group#alignIn -* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. -* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. -* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. -* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. -* @return {Phaser.Group} This Group. -*/ - -// This function is set at the bottom of src/gameobjects/components/Bounds.js - -/** -* Aligns this Group to the side of another Game Object, or Rectangle, known as the -* 'parent', in one of 11 possible positions. -* -* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties -* such as `World.bounds` or `Camera.view`, for aligning Groups within the world -* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, -* TileSprites or Buttons. -* -* Please note that aligning a Group to another Game Object does **not** make it a child of -* the parent. It simply modifies its position coordinates so it aligns with it. -* -* The position constants you can use are: -* -* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, -* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, -* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` -* and `Phaser.BOTTOM_RIGHT`. -* -* Groups are placed in such a way that their _bounds_ align with the -* parent, taking into consideration rotation and scale of the children. -* This allows you to neatly align Groups, irrespective of their position value. -* -* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final -* aligned position of the Group. For example: -* -* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` -* -* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. -* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. -* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive -* one expands it. -* -* @method Phaser.Group#alignTo -* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. -* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. -* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. -* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. -* @return {Phaser.Group} This Group. -*/ - -// This function is set at the bottom of src/gameobjects/components/Bounds.js - -/** -* A display object is any object that can be rendered in the Phaser/pixi.js scene graph. -* -* This includes {@link Phaser.Group} (groups are display objects!), -* {@link Phaser.Sprite}, {@link Phaser.Button}, {@link Phaser.Text} -* as well as {@link PIXI.DisplayObject} and all derived types. -* -* @typedef {object} DisplayObject -*/ -// Documentation stub for linking. - -/** -* The x coordinate of the group container. -* -* You can adjust the group container itself by modifying its coordinates. -* This will have no impact on the x/y coordinates of its children, but it will update their worldTransform and on-screen position. -* @name Phaser.Group#x -* @property {number} x -*/ - -/** -* The y coordinate of the group container. -* -* You can adjust the group container itself by modifying its coordinates. -* This will have no impact on the x/y coordinates of its children, but it will update their worldTransform and on-screen position. -* @name Phaser.Group#y -* @property {number} y -*/ - -/** -* The angle of rotation of the group container, in radians. -* -* This will adjust the group container itself by modifying its rotation. -* This will have no impact on the rotation value of its children, but it will update their worldTransform and on-screen position. -* @name Phaser.Group#rotation -* @property {number} rotation -*/ - -/** -* The visible state of the group. Non-visible Groups and all of their children are not rendered. -* -* @name Phaser.Group#visible -* @property {boolean} visible -*/ - -/** -* The alpha value of the group container. -* -* @name Phaser.Group#alpha -* @property {number} alpha -*/ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* "This world is but a canvas to our imagination." - Henry David Thoreau -* -* A game has only one world. The world is an abstract place in which all game objects live. It is not bound -* by stage limits and can be any size. You look into the world via cameras. All game objects live within -* the world at world-based coordinates. By default a world is created the same size as your Stage. -* -* @class Phaser.World -* @extends Phaser.Group -* @constructor -* @param {Phaser.Game} game - Reference to the current game instance. -*/ -Phaser.World = function (game) { - - Phaser.Group.call(this, game, null, '__world', false); - - /** - * The World has no fixed size, but it does have a bounds outside of which objects are no longer considered as being "in world" and you should use this to clean-up the display list and purge dead objects. - * By default we set the Bounds to be from 0,0 to Game.width,Game.height. I.e. it will match the size given to the game constructor with 0,0 representing the top-left of the display. - * However 0,0 is actually the center of the world, and if you rotate or scale the world all of that will happen from 0,0. - * So if you want to make a game in which the world itself will rotate you should adjust the bounds so that 0,0 is the center point, i.e. set them to -1000,-1000,2000,2000 for a 2000x2000 sized world centered around 0,0. - * @property {Phaser.Rectangle} bounds - Bound of this world that objects can not escape from. - */ - this.bounds = new Phaser.Rectangle(0, 0, game.width, game.height); - - /** - * @property {Phaser.Camera} camera - Camera instance. - */ - this.camera = null; - - /** - * @property {boolean} _definedSize - True if the World has been given a specifically defined size (i.e. from a Tilemap or direct in code) or false if it's just matched to the Game dimensions. - * @readonly - */ - this._definedSize = false; - - /** - * @property {number} width - The defined width of the World. Sometimes the bounds needs to grow larger than this (if you resize the game) but this retains the original requested dimension. - */ - this._width = game.width; - - /** - * @property {number} height - The defined height of the World. Sometimes the bounds needs to grow larger than this (if you resize the game) but this retains the original requested dimension. - */ - this._height = game.height; - - this.game.state.onStateChange.add(this.stateChange, this); - -}; - -Phaser.World.prototype = Object.create(Phaser.Group.prototype); -Phaser.World.prototype.constructor = Phaser.World; - -/** -* Initialises the game world. -* -* @method Phaser.World#boot -* @protected -*/ -Phaser.World.prototype.boot = function () { - - this.camera = new Phaser.Camera(this.game, 0, 0, 0, this.game.width, this.game.height); - - this.game.stage.addChild(this); - - this.camera.boot(); - -}; - -/** -* Called whenever the State changes or resets. -* -* It resets the world.x and world.y coordinates back to zero, -* then resets the Camera. -* -* @method Phaser.World#stateChange -* @protected -*/ -Phaser.World.prototype.stateChange = function () { - - this.x = 0; - this.y = 0; - - this.camera.reset(); - -}; - -/** -* Updates the size of this world and sets World.x/y to the given values -* The Camera bounds and Physics bounds (if set) are also updated to match the new World bounds. -* -* @method Phaser.World#setBounds -* @param {number} x - Top left most corner of the world. -* @param {number} y - Top left most corner of the world. -* @param {number} width - New width of the game world in pixels. -* @param {number} height - New height of the game world in pixels. -*/ -Phaser.World.prototype.setBounds = function (x, y, width, height) { - - this._definedSize = true; - this._width = width; - this._height = height; - - this.bounds.setTo(x, y, width, height); - - this.x = x; - this.y = y; - - if (this.camera.bounds) - { - // The Camera can never be smaller than the game size - this.camera.bounds.setTo(x, y, Math.max(width, this.game.width), Math.max(height, this.game.height)); - } - - this.game.physics.setBoundsToWorld(); - -}; - -/** -* Updates the size of this world. Note that this doesn't modify the world x/y coordinates, just the width and height. -* -* @method Phaser.World#resize -* @param {number} width - New width of the game world in pixels. -* @param {number} height - New height of the game world in pixels. -*/ -Phaser.World.prototype.resize = function (width, height) { - - // Don't ever scale the World bounds lower than the original requested dimensions if it's a defined world size - - if (this._definedSize) - { - if (width < this._width) - { - width = this._width; - } - - if (height < this._height) - { - height = this._height; - } - } - - this.bounds.width = width; - this.bounds.height = height; - - this.game.camera.setBoundsToWorld(); - - this.game.physics.setBoundsToWorld(); - -}; - -/** -* Destroyer of worlds. -* -* @method Phaser.World#shutdown -*/ -Phaser.World.prototype.shutdown = function () { - - // World is a Group, so run a soft destruction on this and all children. - this.destroy(true, true); - -}; - -/** -* This will take the given game object and check if its x/y coordinates fall outside of the world bounds. -* If they do it will reposition the object to the opposite side of the world, creating a wrap-around effect. -* If sprite has a P2 body then the body (sprite.body) should be passed as first parameter to the function. -* -* Please understand there are limitations to this method. For example if you have scaled the World -* then objects won't always be re-positioned correctly, and you'll need to employ your own wrapping function. -* -* @method Phaser.World#wrap -* @param {Phaser.Sprite|Phaser.Image|Phaser.TileSprite|Phaser.Text} sprite - The object you wish to wrap around the world bounds. -* @param {number} [padding=0] - Extra padding added equally to the sprite.x and y coordinates before checking if within the world bounds. Ignored if useBounds is true. -* @param {boolean} [useBounds=false] - If useBounds is false wrap checks the object.x/y coordinates. If true it does a more accurate bounds check, which is more expensive. -* @param {boolean} [horizontal=true] - If horizontal is false, wrap will not wrap the object.x coordinates horizontally. -* @param {boolean} [vertical=true] - If vertical is false, wrap will not wrap the object.y coordinates vertically. -*/ -Phaser.World.prototype.wrap = function (sprite, padding, useBounds, horizontal, vertical) { - - if (padding === undefined) { padding = 0; } - if (useBounds === undefined) { useBounds = false; } - if (horizontal === undefined) { horizontal = true; } - if (vertical === undefined) { vertical = true; } - - if (!useBounds) - { - if (horizontal && sprite.x + padding < this.bounds.x) - { - sprite.x = this.bounds.right + padding; - } - else if (horizontal && sprite.x - padding > this.bounds.right) - { - sprite.x = this.bounds.left - padding; - } - - if (vertical && sprite.y + padding < this.bounds.top) - { - sprite.y = this.bounds.bottom + padding; - } - else if (vertical && sprite.y - padding > this.bounds.bottom) - { - sprite.y = this.bounds.top - padding; - } - } - else - { - sprite.getBounds(); - - if (horizontal) - { - if ((sprite.x + sprite._currentBounds.width) < this.bounds.x) - { - sprite.x = this.bounds.right; - } - else if (sprite.x > this.bounds.right) - { - sprite.x = this.bounds.left; - } - } - - if (vertical) - { - if ((sprite.y + sprite._currentBounds.height) < this.bounds.top) - { - sprite.y = this.bounds.bottom; - } - else if (sprite.y > this.bounds.bottom) - { - sprite.y = this.bounds.top; - } - } - } - -}; - -/** -* @name Phaser.World#width -* @property {number} width - Gets or sets the current width of the game world. The world can never be smaller than the game (canvas) dimensions. -*/ -Object.defineProperty(Phaser.World.prototype, "width", { - - get: function () { - return this.bounds.width; - }, - - set: function (value) { - - if (value < this.game.width) - { - value = this.game.width; - } - - this.bounds.width = value; - this._width = value; - this._definedSize = true; - - } - -}); - -/** -* @name Phaser.World#height -* @property {number} height - Gets or sets the current height of the game world. The world can never be smaller than the game (canvas) dimensions. -*/ -Object.defineProperty(Phaser.World.prototype, "height", { - - get: function () { - return this.bounds.height; - }, - - set: function (value) { - - if (value < this.game.height) - { - value = this.game.height; - } - - this.bounds.height = value; - this._height = value; - this._definedSize = true; - - } - -}); - -/** -* @name Phaser.World#centerX -* @property {number} centerX - Gets the X position corresponding to the center point of the world. -* @readonly -*/ -Object.defineProperty(Phaser.World.prototype, "centerX", { - - get: function () { - return this.bounds.halfWidth + this.bounds.x; - } - -}); - -/** -* @name Phaser.World#centerY -* @property {number} centerY - Gets the Y position corresponding to the center point of the world. -* @readonly -*/ -Object.defineProperty(Phaser.World.prototype, "centerY", { - - get: function () { - return this.bounds.halfHeight + this.bounds.y; - } - -}); - -/** -* @name Phaser.World#randomX -* @property {number} randomX - Gets a random integer which is lesser than or equal to the current width of the game world. -* @readonly -*/ -Object.defineProperty(Phaser.World.prototype, "randomX", { - - get: function () { - - if (this.bounds.x < 0) - { - return this.game.rnd.between(this.bounds.x, (this.bounds.width - Math.abs(this.bounds.x))); - } - else - { - return this.game.rnd.between(this.bounds.x, this.bounds.width); - } - - } - -}); - -/** -* @name Phaser.World#randomY -* @property {number} randomY - Gets a random integer which is lesser than or equal to the current height of the game world. -* @readonly -*/ -Object.defineProperty(Phaser.World.prototype, "randomY", { - - get: function () { - - if (this.bounds.y < 0) - { - return this.game.rnd.between(this.bounds.y, (this.bounds.height - Math.abs(this.bounds.y))); - } - else - { - return this.game.rnd.between(this.bounds.y, this.bounds.height); - } - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* This is where the magic happens. The Game object is the heart of your game, -* providing quick access to common functions and handling the boot process. -* -* "Hell, there are no rules here - we're trying to accomplish something." -* Thomas A. Edison -* -* @class Phaser.Game -* @constructor -* @param {number|string} [width=800] - The width of your game in game pixels. If given as a string the value must be between 0 and 100 and will be used as the percentage width of the parent container, or the browser window if no parent is given. -* @param {number|string} [height=600] - The height of your game in game pixels. If given as a string the value must be between 0 and 100 and will be used as the percentage height of the parent container, or the browser window if no parent is given. -* @param {number} [renderer=Phaser.AUTO] - Which renderer to use: Phaser.AUTO will auto-detect, Phaser.WEBGL, Phaser.CANVAS or Phaser.HEADLESS (no rendering at all). -* @param {string|HTMLElement} [parent=''] - The DOM element into which this games canvas will be injected. Either a DOM ID (string) or the element itself. -* @param {object} [state=null] - The default state object. A object consisting of Phaser.State functions (preload, create, update, render) or null. -* @param {boolean} [transparent=false] - Use a transparent canvas background or not. -* @param {boolean} [antialias=true] - Draw all image textures anti-aliased or not. The default is for smooth textures, but disable if your game features pixel art. -* @param {object} [physicsConfig=null] - A physics configuration object to pass to the Physics world on creation. -*/ -Phaser.Game = function (width, height, renderer, parent, state, transparent, antialias, physicsConfig) { - - /** - * @property {number} id - Phaser Game ID (for when Pixi supports multiple instances). - * @readonly - */ - this.id = Phaser.GAMES.push(this) - 1; - - /** - * @property {object} config - The Phaser.Game configuration object. - */ - this.config = null; - - /** - * @property {object} physicsConfig - The Phaser.Physics.World configuration object. - */ - this.physicsConfig = physicsConfig; - - /** - * @property {string|HTMLElement} parent - The Games DOM parent. - * @default - */ - this.parent = ''; - - /** - * The current Game Width in pixels. - * - * _Do not modify this property directly:_ use {@link Phaser.ScaleManager#setGameSize} - eg. `game.scale.setGameSize(width, height)` - instead. - * - * @property {integer} width - * @readonly - * @default - */ - this.width = 800; - - /** - * The current Game Height in pixels. - * - * _Do not modify this property directly:_ use {@link Phaser.ScaleManager#setGameSize} - eg. `game.scale.setGameSize(width, height)` - instead. - * - * @property {integer} height - * @readonly - * @default - */ - this.height = 600; - - /** - * The resolution of your game. This value is read only, but can be changed at start time it via a game configuration object. - * - * @property {integer} resolution - * @readonly - * @default - */ - this.resolution = 1; - - /** - * @property {integer} _width - Private internal var. - * @private - */ - this._width = 800; - - /** - * @property {integer} _height - Private internal var. - * @private - */ - this._height = 600; - - /** - * @property {boolean} transparent - Use a transparent canvas background or not. - * @default - */ - this.transparent = false; - - /** - * @property {boolean} antialias - Anti-alias graphics. By default scaled images are smoothed in Canvas and WebGL, set anti-alias to false to disable this globally. - * @default - */ - this.antialias = true; - - /** - * @property {boolean} preserveDrawingBuffer - The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. - * @default - */ - this.preserveDrawingBuffer = false; - - /** - * Clear the Canvas each frame before rendering the display list. - * You can set this to `false` to gain some performance if your game always contains a background that completely fills the display. - * @property {boolean} clearBeforeRender - * @default - */ - this.clearBeforeRender = true; - - /** - * @property {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The Pixi Renderer. - * @protected - */ - this.renderer = null; - - /** - * @property {number} renderType - The Renderer this game will use. Either Phaser.AUTO, Phaser.CANVAS, Phaser.WEBGL, or Phaser.HEADLESS. - * @readonly - */ - this.renderType = Phaser.AUTO; - - /** - * @property {Phaser.StateManager} state - The StateManager. - */ - this.state = null; - - /** - * @property {boolean} isBooted - Whether the game engine is booted, aka available. - * @readonly - */ - this.isBooted = false; - - /** - * @property {boolean} isRunning - Is game running or paused? - * @readonly - */ - this.isRunning = false; - - /** - * @property {Phaser.RequestAnimationFrame} raf - Automatically handles the core game loop via requestAnimationFrame or setTimeout - * @protected - */ - this.raf = null; - - /** - * @property {Phaser.GameObjectFactory} add - Reference to the Phaser.GameObjectFactory. - */ - this.add = null; - - /** - * @property {Phaser.GameObjectCreator} make - Reference to the GameObject Creator. - */ - this.make = null; - - /** - * @property {Phaser.Cache} cache - Reference to the assets cache. - */ - this.cache = null; - - /** - * @property {Phaser.Input} input - Reference to the input manager - */ - this.input = null; - - /** - * @property {Phaser.Loader} load - Reference to the assets loader. - */ - this.load = null; - - /** - * @property {Phaser.Math} math - Reference to the math helper. - */ - this.math = null; - - /** - * @property {Phaser.Net} net - Reference to the network class. - */ - this.net = null; - - /** - * @property {Phaser.ScaleManager} scale - The game scale manager. - */ - this.scale = null; - - /** - * @property {Phaser.SoundManager} sound - Reference to the sound manager. - */ - this.sound = null; - - /** - * @property {Phaser.Stage} stage - Reference to the stage. - */ - this.stage = null; - - /** - * @property {Phaser.Time} time - Reference to the core game clock. - */ - this.time = null; - - /** - * @property {Phaser.TweenManager} tweens - Reference to the tween manager. - */ - this.tweens = null; - - /** - * @property {Phaser.World} world - Reference to the world. - */ - this.world = null; - - /** - * @property {Phaser.Physics} physics - Reference to the physics manager. - */ - this.physics = null; - - /** - * @property {Phaser.PluginManager} plugins - Reference to the plugin manager. - */ - this.plugins = null; - - /** - * @property {Phaser.RandomDataGenerator} rnd - Instance of repeatable random data generator helper. - */ - this.rnd = null; - - /** - * @property {Phaser.Device} device - Contains device information and capabilities. - */ - this.device = Phaser.Device; - - /** - * @property {Phaser.Camera} camera - A handy reference to world.camera. - */ - this.camera = null; - - /** - * @property {HTMLCanvasElement} canvas - A handy reference to renderer.view, the canvas that the game is being rendered in to. - */ - this.canvas = null; - - /** - * @property {CanvasRenderingContext2D} context - A handy reference to renderer.context (only set for CANVAS games, not WebGL) - */ - this.context = null; - - /** - * @property {Phaser.Utils.Debug} debug - A set of useful debug utilities. - */ - this.debug = null; - - /** - * @property {Phaser.Particles} particles - The Particle Manager. - */ - this.particles = null; - - /** - * @property {Phaser.Create} create - The Asset Generator. - */ - this.create = null; - - /** - * If `false` Phaser will automatically render the display list every update. If `true` the render loop will be skipped. - * You can toggle this value at run-time to gain exact control over when Phaser renders. This can be useful in certain types of game or application. - * Please note that if you don't render the display list then none of the game object transforms will be updated, so use this value carefully. - * @property {boolean} lockRender - * @default - */ - this.lockRender = false; - - /** - * @property {boolean} stepping - Enable core loop stepping with Game.enableStep(). - * @default - * @readonly - */ - this.stepping = false; - - /** - * @property {boolean} pendingStep - An internal property used by enableStep, but also useful to query from your own game objects. - * @default - * @readonly - */ - this.pendingStep = false; - - /** - * @property {number} stepCount - When stepping is enabled this contains the current step cycle. - * @default - * @readonly - */ - this.stepCount = 0; - - /** - * @property {Phaser.Signal} onPause - This event is fired when the game pauses. - */ - this.onPause = null; - - /** - * @property {Phaser.Signal} onResume - This event is fired when the game resumes from a paused state. - */ - this.onResume = null; - - /** - * @property {Phaser.Signal} onBlur - This event is fired when the game no longer has focus (typically on page hide). - */ - this.onBlur = null; - - /** - * @property {Phaser.Signal} onFocus - This event is fired when the game has focus (typically on page show). - */ - this.onFocus = null; - - /** - * @property {boolean} _paused - Is game paused? - * @private - */ - this._paused = false; - - /** - * @property {boolean} _codePaused - Was the game paused via code or a visibility change? - * @private - */ - this._codePaused = false; - - /** - * The ID of the current/last logic update applied this render frame, starting from 0. - * The first update is `currentUpdateID === 0` and the last update is `currentUpdateID === updatesThisFrame.` - * @property {integer} currentUpdateID - * @protected - */ - this.currentUpdateID = 0; - - /** - * Number of logic updates expected to occur this render frame; will be 1 unless there are catch-ups required (and allowed). - * @property {integer} updatesThisFrame - * @protected - */ - this.updatesThisFrame = 1; - - /** - * @property {number} _deltaTime - Accumulate elapsed time until a logic update is due. - * @private - */ - this._deltaTime = 0; - - /** - * @property {number} _lastCount - Remember how many 'catch-up' iterations were used on the logicUpdate last frame. - * @private - */ - this._lastCount = 0; - - /** - * @property {number} _spiraling - If the 'catch-up' iterations are spiraling out of control, this counter is incremented. - * @private - */ - this._spiraling = 0; - - /** - * @property {boolean} _kickstart - Force a logic update + render by default (always set on Boot and State swap) - * @private - */ - this._kickstart = true; - - /** - * If the game is struggling to maintain the desired FPS, this signal will be dispatched. - * The desired/chosen FPS should probably be closer to the {@link Phaser.Time#suggestedFps} value. - * @property {Phaser.Signal} fpsProblemNotifier - * @public - */ - this.fpsProblemNotifier = new Phaser.Signal(); - - /** - * @property {boolean} forceSingleUpdate - Should the game loop force a logic update, regardless of the delta timer? Set to true if you know you need this. You can toggle it on the fly. - */ - this.forceSingleUpdate = true; - - /** - * @property {number} _nextNotification - The soonest game.time.time value that the next fpsProblemNotifier can be dispatched. - * @private - */ - this._nextFpsNotification = 0; - - // Parse the configuration object (if any) - if (arguments.length === 1 && typeof arguments[0] === 'object') - { - this.parseConfig(arguments[0]); - } - else - { - this.config = { enableDebug: true }; - - if (typeof width !== 'undefined') - { - this._width = width; - } - - if (typeof height !== 'undefined') - { - this._height = height; - } - - if (typeof renderer !== 'undefined') - { - this.renderType = renderer; - } - - if (typeof parent !== 'undefined') - { - this.parent = parent; - } - - if (typeof transparent !== 'undefined') - { - this.transparent = transparent; - } - - if (typeof antialias !== 'undefined') - { - this.antialias = antialias; - } - - this.rnd = new Phaser.RandomDataGenerator([(Date.now() * Math.random()).toString()]); - - this.state = new Phaser.StateManager(this, state); - } - - this.device.whenReady(this.boot, this); - - return this; - -}; - -Phaser.Game.prototype = { - - /** - * Parses a Game configuration object. - * - * @method Phaser.Game#parseConfig - * @protected - */ - parseConfig: function (config) { - - this.config = config; - - if (config['enableDebug'] === undefined) - { - this.config.enableDebug = true; - } - - if (config['width']) - { - this._width = config['width']; - } - - if (config['height']) - { - this._height = config['height']; - } - - if (config['renderer']) - { - this.renderType = config['renderer']; - } - - if (config['parent']) - { - this.parent = config['parent']; - } - - if (config['transparent'] !== undefined) - { - this.transparent = config['transparent']; - } - - if (config['antialias'] !== undefined) - { - this.antialias = config['antialias']; - } - - if (config['resolution']) - { - this.resolution = config['resolution']; - } - - if (config['preserveDrawingBuffer'] !== undefined) - { - this.preserveDrawingBuffer = config['preserveDrawingBuffer']; - } - - if (config['physicsConfig']) - { - this.physicsConfig = config['physicsConfig']; - } - - var seed = [(Date.now() * Math.random()).toString()]; - - if (config['seed']) - { - seed = config['seed']; - } - - this.rnd = new Phaser.RandomDataGenerator(seed); - - var state = null; - - if (config['state']) - { - state = config['state']; - } - - this.state = new Phaser.StateManager(this, state); - - }, - - /** - * Initialize engine sub modules and start the game. - * - * @method Phaser.Game#boot - * @protected - */ - boot: function () { - - if (this.isBooted) - { - return; - } - - this.onPause = new Phaser.Signal(); - this.onResume = new Phaser.Signal(); - this.onBlur = new Phaser.Signal(); - this.onFocus = new Phaser.Signal(); - - this.isBooted = true; - - PIXI.game = this; - - this.math = Phaser.Math; - - this.scale = new Phaser.ScaleManager(this, this._width, this._height); - this.stage = new Phaser.Stage(this); - - this.setUpRenderer(); - - this.world = new Phaser.World(this); - this.add = new Phaser.GameObjectFactory(this); - this.make = new Phaser.GameObjectCreator(this); - this.cache = new Phaser.Cache(this); - this.load = new Phaser.Loader(this); - this.time = new Phaser.Time(this); - this.tweens = new Phaser.TweenManager(this); - this.input = new Phaser.Input(this); - this.sound = new Phaser.SoundManager(this); - this.physics = new Phaser.Physics(this, this.physicsConfig); - this.particles = new Phaser.Particles(this); - this.create = new Phaser.Create(this); - this.plugins = new Phaser.PluginManager(this); - this.net = new Phaser.Net(this); - - this.time.boot(); - this.stage.boot(); - this.world.boot(); - this.scale.boot(); - this.input.boot(); - this.sound.boot(); - this.state.boot(); - - if (this.config['enableDebug']) - { - this.debug = new Phaser.Utils.Debug(this); - this.debug.boot(); - } - else - { - this.debug = { preUpdate: function () {}, update: function () {}, reset: function () {} }; - } - - this.showDebugHeader(); - - this.isRunning = true; - - if (this.config && this.config['forceSetTimeOut']) - { - this.raf = new Phaser.RequestAnimationFrame(this, this.config['forceSetTimeOut']); - } - else - { - this.raf = new Phaser.RequestAnimationFrame(this, false); - } - - this._kickstart = true; - - if (window['focus']) - { - if (!window['PhaserGlobal'] || (window['PhaserGlobal'] && !window['PhaserGlobal'].stopFocus)) - { - window.focus(); - } - } - - this.raf.start(); - - }, - - /** - * Displays a Phaser version debug header in the console. - * - * @method Phaser.Game#showDebugHeader - * @protected - */ - showDebugHeader: function () { - - if (window['PhaserGlobal'] && window['PhaserGlobal'].hideBanner) - { - return; - } - - var v = Phaser.VERSION; - var r = 'Canvas'; - var a = 'HTML Audio'; - var c = 1; - - if (this.renderType === Phaser.WEBGL) - { - r = 'WebGL'; - c++; - } - else if (this.renderType == Phaser.HEADLESS) - { - r = 'Headless'; - } - - if (this.device.webAudio) - { - a = 'WebAudio'; - c++; - } - - if (this.device.chrome) - { - var args = [ - '%c %c %c Phaser v' + v + ' | Pixi.js | ' + r + ' | ' + a + ' %c %c ' + '%c http://phaser.io %c\u2665%c\u2665%c\u2665', - 'background: #fb8cb3', - 'background: #d44a52', - 'color: #ffffff; background: #871905;', - 'background: #d44a52', - 'background: #fb8cb3', - 'background: #ffffff' - ]; - - for (var i = 0; i < 3; i++) - { - if (i < c) - { - args.push('color: #ff2424; background: #fff'); - } - else - { - args.push('color: #959595; background: #fff'); - } - } - - console.log.apply(console, args); - } - else if (window['console']) - { - console.log('Phaser v' + v + ' | Pixi.js ' + PIXI.VERSION + ' | ' + r + ' | ' + a + ' | http://phaser.io'); - } - - }, - - /** - * Checks if the device is capable of using the requested renderer and sets it up or an alternative if not. - * - * @method Phaser.Game#setUpRenderer - * @protected - */ - setUpRenderer: function () { - - if (this.config['canvas']) - { - this.canvas = this.config['canvas']; - } - else - { - this.canvas = Phaser.Canvas.create(this, this.width, this.height, this.config['canvasID'], true); - } - - if (this.config['canvasStyle']) - { - this.canvas.style = this.config['canvasStyle']; - } - else - { - this.canvas.style['-webkit-full-screen'] = 'width: 100%; height: 100%'; - } - - if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && !this.device.webGL)) - { - if (this.device.canvas) - { - // They requested Canvas and their browser supports it - this.renderType = Phaser.CANVAS; - - this.renderer = new PIXI.CanvasRenderer(this); - - this.context = this.renderer.context; - } - else - { - throw new Error('Phaser.Game - Cannot create Canvas or WebGL context, aborting.'); - } - } - else - { - // They requested WebGL and their browser supports it - this.renderType = Phaser.WEBGL; - - this.renderer = new PIXI.WebGLRenderer(this); - - this.context = null; - - this.canvas.addEventListener('webglcontextlost', this.contextLost.bind(this), false); - this.canvas.addEventListener('webglcontextrestored', this.contextRestored.bind(this), false); - } - - if (this.device.cocoonJS) - { - this.canvas.screencanvas = (this.renderType === Phaser.CANVAS) ? true : false; - } - - if (this.renderType !== Phaser.HEADLESS) - { - this.stage.smoothed = this.antialias; - - Phaser.Canvas.addToDOM(this.canvas, this.parent, false); - Phaser.Canvas.setTouchAction(this.canvas); - } - - }, - - /** - * Handles WebGL context loss. - * - * @method Phaser.Game#contextLost - * @private - * @param {Event} event - The webglcontextlost event. - */ - contextLost: function (event) { - - event.preventDefault(); - - this.renderer.contextLost = true; - - }, - - /** - * Handles WebGL context restoration. - * - * @method Phaser.Game#contextRestored - * @private - */ - contextRestored: function () { - - this.renderer.initContext(); - - this.cache.clearGLTextures(); - - this.renderer.contextLost = false; - - }, - - /** - * The core game loop. - * - * @method Phaser.Game#update - * @protected - * @param {number} time - The current time as provided by RequestAnimationFrame. - */ - update: function (time) { - - this.time.update(time); - - if (this._kickstart) - { - this.updateLogic(this.time.desiredFpsMult); - - // call the game render update exactly once every frame - this.updateRender(this.time.slowMotion * this.time.desiredFps); - - this._kickstart = false; - - return; - } - - // if the logic time is spiraling upwards, skip a frame entirely - if (this._spiraling > 1 && !this.forceSingleUpdate) - { - // cause an event to warn the program that this CPU can't keep up with the current desiredFps rate - if (this.time.time > this._nextFpsNotification) - { - // only permit one fps notification per 10 seconds - this._nextFpsNotification = this.time.time + 10000; - - // dispatch the notification signal - this.fpsProblemNotifier.dispatch(); - } - - // reset the _deltaTime accumulator which will cause all pending dropped frames to be permanently skipped - this._deltaTime = 0; - this._spiraling = 0; - - // call the game render update exactly once every frame - this.updateRender(this.time.slowMotion * this.time.desiredFps); - } - else - { - // step size taking into account the slow motion speed - var slowStep = this.time.slowMotion * 1000.0 / this.time.desiredFps; - - // accumulate time until the slowStep threshold is met or exceeded... up to a limit of 3 catch-up frames at slowStep intervals - this._deltaTime += Math.max(Math.min(slowStep * 3, this.time.elapsed), 0); - - // call the game update logic multiple times if necessary to "catch up" with dropped frames - // unless forceSingleUpdate is true - var count = 0; - - this.updatesThisFrame = Math.floor(this._deltaTime / slowStep); - - if (this.forceSingleUpdate) - { - this.updatesThisFrame = Math.min(1, this.updatesThisFrame); - } - - while (this._deltaTime >= slowStep) - { - this._deltaTime -= slowStep; - this.currentUpdateID = count; - - this.updateLogic(this.time.desiredFpsMult); - - count++; - - if (this.forceSingleUpdate && count === 1) - { - break; - } - else - { - this.time.refresh(); - } - } - - // detect spiraling (if the catch-up loop isn't fast enough, the number of iterations will increase constantly) - if (count > this._lastCount) - { - this._spiraling++; - } - else if (count < this._lastCount) - { - // looks like it caught up successfully, reset the spiral alert counter - this._spiraling = 0; - } - - this._lastCount = count; - - // call the game render update exactly once every frame unless we're playing catch-up from a spiral condition - this.updateRender(this._deltaTime / slowStep); - } - - }, - - /** - * Updates all logic subsystems in Phaser. Called automatically by Game.update. - * - * @method Phaser.Game#updateLogic - * @protected - * @param {number} timeStep - The current timeStep value as determined by Game.update. - */ - updateLogic: function (timeStep) { - - if (!this._paused && !this.pendingStep) - { - if (this.stepping) - { - this.pendingStep = true; - } - - this.scale.preUpdate(); - this.debug.preUpdate(); - this.camera.preUpdate(); - this.physics.preUpdate(); - this.state.preUpdate(timeStep); - this.plugins.preUpdate(timeStep); - this.stage.preUpdate(); - - this.state.update(); - this.stage.update(); - this.tweens.update(); - this.sound.update(); - this.input.update(); - this.physics.update(); - this.particles.update(); - this.plugins.update(); - - this.stage.postUpdate(); - this.plugins.postUpdate(); - } - else - { - // Scaling and device orientation changes are still reflected when paused. - this.scale.pauseUpdate(); - this.state.pauseUpdate(); - this.debug.preUpdate(); - } - - this.stage.updateTransform(); - - }, - - /** - * Runs the Render cycle. - * It starts by calling State.preRender. In here you can do any last minute adjustments of display objects as required. - * It then calls the renderer, which renders the entire display list, starting from the Stage object and working down. - * It then calls plugin.render on any loaded plugins, in the order in which they were enabled. - * After this State.render is called. Any rendering that happens here will take place on-top of the display list. - * Finally plugin.postRender is called on any loaded plugins, in the order in which they were enabled. - * This method is called automatically by Game.update, you don't need to call it directly. - * Should you wish to have fine-grained control over when Phaser renders then use the `Game.lockRender` boolean. - * Phaser will only render when this boolean is `false`. - * - * @method Phaser.Game#updateRender - * @protected - * @param {number} elapsedTime - The time elapsed since the last update. - */ - updateRender: function (elapsedTime) { - - if (this.lockRender) - { - return; - } - - this.state.preRender(elapsedTime); - - if (this.renderType !== Phaser.HEADLESS) - { - this.renderer.render(this.stage); - - this.plugins.render(elapsedTime); - - this.state.render(elapsedTime); - } - - this.plugins.postRender(elapsedTime); - - }, - - /** - * Enable core game loop stepping. When enabled you must call game.step() directly (perhaps via a DOM button?) - * Calling step will advance the game loop by one frame. This is extremely useful for hard to track down errors! - * - * @method Phaser.Game#enableStep - */ - enableStep: function () { - - this.stepping = true; - this.pendingStep = false; - this.stepCount = 0; - - }, - - /** - * Disables core game loop stepping. - * - * @method Phaser.Game#disableStep - */ - disableStep: function () { - - this.stepping = false; - this.pendingStep = false; - - }, - - /** - * When stepping is enabled you must call this function directly (perhaps via a DOM button?) to advance the game loop by one frame. - * This is extremely useful to hard to track down errors! Use the internal stepCount property to monitor progress. - * - * @method Phaser.Game#step - */ - step: function () { - - this.pendingStep = false; - this.stepCount++; - - }, - - /** - * Nukes the entire game from orbit. - * - * Calls destroy on Game.state, Game.sound, Game.scale, Game.stage, Game.input, Game.physics and Game.plugins. - * - * Then sets all of those local handlers to null, destroys the renderer, removes the canvas from the DOM - * and resets the PIXI default renderer. - * - * @method Phaser.Game#destroy - */ - destroy: function () { - - this.raf.stop(); - - this.state.destroy(); - this.sound.destroy(); - this.scale.destroy(); - this.stage.destroy(); - this.input.destroy(); - this.physics.destroy(); - this.plugins.destroy(); - - this.state = null; - this.sound = null; - this.scale = null; - this.stage = null; - this.input = null; - this.physics = null; - this.plugins = null; - - this.cache = null; - this.load = null; - this.time = null; - this.world = null; - - this.isBooted = false; - - this.renderer.destroy(false); - - Phaser.Canvas.removeFromDOM(this.canvas); - - PIXI.defaultRenderer = null; - - Phaser.GAMES[this.id] = null; - - }, - - /** - * Called by the Stage visibility handler. - * - * @method Phaser.Game#gamePaused - * @param {object} event - The DOM event that caused the game to pause, if any. - * @protected - */ - gamePaused: function (event) { - - // If the game is already paused it was done via game code, so don't re-pause it - if (!this._paused) - { - this._paused = true; - - this.time.gamePaused(); - - if (this.sound.muteOnPause) - { - this.sound.setMute(); - } - - this.onPause.dispatch(event); - - // Avoids Cordova iOS crash event: https://github.com/photonstorm/phaser/issues/1800 - if (this.device.cordova && this.device.iOS) - { - this.lockRender = true; - } - } - - }, - - /** - * Called by the Stage visibility handler. - * - * @method Phaser.Game#gameResumed - * @param {object} event - The DOM event that caused the game to pause, if any. - * @protected - */ - gameResumed: function (event) { - - // Game is paused, but wasn't paused via code, so resume it - if (this._paused && !this._codePaused) - { - this._paused = false; - - this.time.gameResumed(); - - this.input.reset(); - - if (this.sound.muteOnPause) - { - this.sound.unsetMute(); - } - - this.onResume.dispatch(event); - - // Avoids Cordova iOS crash event: https://github.com/photonstorm/phaser/issues/1800 - if (this.device.cordova && this.device.iOS) - { - this.lockRender = false; - } - } - - }, - - /** - * Called by the Stage visibility handler. - * - * @method Phaser.Game#focusLoss - * @param {object} event - The DOM event that caused the game to pause, if any. - * @protected - */ - focusLoss: function (event) { - - this.onBlur.dispatch(event); - - if (!this.stage.disableVisibilityChange) - { - this.gamePaused(event); - } - - }, - - /** - * Called by the Stage visibility handler. - * - * @method Phaser.Game#focusGain - * @param {object} event - The DOM event that caused the game to pause, if any. - * @protected - */ - focusGain: function (event) { - - this.onFocus.dispatch(event); - - if (!this.stage.disableVisibilityChange) - { - this.gameResumed(event); - } - - } - -}; - -Phaser.Game.prototype.constructor = Phaser.Game; - -/** -* The paused state of the Game. A paused game doesn't update any of its subsystems. -* When a game is paused the onPause event is dispatched. When it is resumed the onResume event is dispatched. -* @name Phaser.Game#paused -* @property {boolean} paused - Gets and sets the paused state of the Game. -*/ -Object.defineProperty(Phaser.Game.prototype, "paused", { - - get: function () { - return this._paused; - }, - - set: function (value) { - - if (value === true) - { - if (this._paused === false) - { - this._paused = true; - this.sound.setMute(); - this.time.gamePaused(); - this.onPause.dispatch(this); - } - this._codePaused = true; - } - else - { - if (this._paused) - { - this._paused = false; - this.input.reset(); - this.sound.unsetMute(); - this.time.gameResumed(); - this.onResume.dispatch(this); - } - this._codePaused = false; - } - - } - -}); - -/** - * - * "Deleted code is debugged code." - Jeff Sickel - * - * ヽ(〃^▽^〃)ノ - * -*/ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser.Input is the Input Manager for all types of Input across Phaser, including mouse, keyboard, touch and MSPointer. -* The Input manager is updated automatically by the core game loop. -* -* @class Phaser.Input -* @constructor -* @param {Phaser.Game} game - Current game instance. -*/ -Phaser.Input = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {HTMLCanvasElement} hitCanvas - The canvas to which single pixels are drawn in order to perform pixel-perfect hit detection. - * @default - */ - this.hitCanvas = null; - - /** - * @property {CanvasRenderingContext2D} hitContext - The context of the pixel perfect hit canvas. - * @default - */ - this.hitContext = null; - - /** - * An array of callbacks that will be fired every time the activePointer receives a move event from the DOM. - * To add a callback to this array please use `Input.addMoveCallback`. - * @property {array} moveCallbacks - * @protected - */ - this.moveCallbacks = []; - - /** - * @property {function} customCandidateHandler - See Input.setInteractiveCandidateHandler. - * @private - */ - this.customCandidateHandler = null; - - /** - * @property {object} customCandidateHandlerContext - See Input.setInteractiveCandidateHandler. - * @private - */ - this.customCandidateHandlerContext = null; - - /** - * @property {number} pollRate - How often should the input pointers be checked for updates? A value of 0 means every single frame (60fps); a value of 1 means every other frame (30fps) and so on. - * @default - */ - this.pollRate = 0; - - /** - * When enabled, input (eg. Keyboard, Mouse, Touch) will be processed - as long as the individual sources are enabled themselves. - * - * When not enabled, _all_ input sources are ignored. To disable just one type of input; for example, the Mouse, use `input.mouse.enabled = false`. - * @property {boolean} enabled - * @default - */ - this.enabled = true; - - /** - * @property {number} multiInputOverride - Controls the expected behavior when using a mouse and touch together on a multi-input device. - * @default - */ - this.multiInputOverride = Phaser.Input.MOUSE_TOUCH_COMBINE; - - /** - * @property {Phaser.Point} position - A point object representing the current position of the Pointer. - * @default - */ - this.position = null; - - /** - * @property {Phaser.Point} speed - A point object representing the speed of the Pointer. Only really useful in single Pointer games; otherwise see the Pointer objects directly. - */ - this.speed = null; - - /** - * A Circle object centered on the x/y screen coordinates of the Input. - * Default size of 44px (Apples recommended "finger tip" size) but can be changed to anything. - * @property {Phaser.Circle} circle - */ - this.circle = null; - - /** - * @property {Phaser.Point} scale - The scale by which all input coordinates are multiplied; calculated by the ScaleManager. In an un-scaled game the values will be x = 1 and y = 1. - */ - this.scale = null; - - /** - * @property {integer} maxPointers - The maximum number of Pointers allowed to be active at any one time. A value of -1 is only limited by the total number of pointers. For lots of games it's useful to set this to 1. - * @default -1 (Limited by total pointers.) - */ - this.maxPointers = -1; - - /** - * @property {number} tapRate - The number of milliseconds that the Pointer has to be pressed down and then released to be considered a tap or click. - * @default - */ - this.tapRate = 200; - - /** - * @property {number} doubleTapRate - The number of milliseconds between taps of the same Pointer for it to be considered a double tap / click. - * @default - */ - this.doubleTapRate = 300; - - /** - * @property {number} holdRate - The number of milliseconds that the Pointer has to be pressed down for it to fire a onHold event. - * @default - */ - this.holdRate = 2000; - - /** - * @property {number} justPressedRate - The number of milliseconds below which the Pointer is considered justPressed. - * @default - */ - this.justPressedRate = 200; - - /** - * @property {number} justReleasedRate - The number of milliseconds below which the Pointer is considered justReleased . - * @default - */ - this.justReleasedRate = 200; - - /** - * Sets if the Pointer objects should record a history of x/y coordinates they have passed through. - * The history is cleared each time the Pointer is pressed down. - * The history is updated at the rate specified in Input.pollRate - * @property {boolean} recordPointerHistory - * @default - */ - this.recordPointerHistory = false; - - /** - * @property {number} recordRate - The rate in milliseconds at which the Pointer objects should update their tracking history. - * @default - */ - this.recordRate = 100; - - /** - * The total number of entries that can be recorded into the Pointer objects tracking history. - * If the Pointer is tracking one event every 100ms; then a trackLimit of 100 would store the last 10 seconds worth of history. - * @property {number} recordLimit - * @default - */ - this.recordLimit = 100; - - /** - * @property {Phaser.Pointer} pointer1 - A Pointer object. - */ - this.pointer1 = null; - - /** - * @property {Phaser.Pointer} pointer2 - A Pointer object. - */ - this.pointer2 = null; - - /** - * @property {Phaser.Pointer} pointer3 - A Pointer object. - */ - this.pointer3 = null; - - /** - * @property {Phaser.Pointer} pointer4 - A Pointer object. - */ - this.pointer4 = null; - - /** - * @property {Phaser.Pointer} pointer5 - A Pointer object. - */ - this.pointer5 = null; - - /** - * @property {Phaser.Pointer} pointer6 - A Pointer object. - */ - this.pointer6 = null; - - /** - * @property {Phaser.Pointer} pointer7 - A Pointer object. - */ - this.pointer7 = null; - - /** - * @property {Phaser.Pointer} pointer8 - A Pointer object. - */ - this.pointer8 = null; - - /** - * @property {Phaser.Pointer} pointer9 - A Pointer object. - */ - this.pointer9 = null; - - /** - * @property {Phaser.Pointer} pointer10 - A Pointer object. - */ - this.pointer10 = null; - - /** - * An array of non-mouse pointers that have been added to the game. - * The properties `pointer1..N` are aliases for `pointers[0..N-1]`. - * @property {Phaser.Pointer[]} pointers - * @public - * @readonly - */ - this.pointers = []; - - /** - * The most recently active Pointer object. - * - * When you've limited max pointers to 1 this will accurately be either the first finger touched or mouse. - * - * @property {Phaser.Pointer} activePointer - */ - this.activePointer = null; - - /** - * The mouse has its own unique Phaser.Pointer object which you can use if making a desktop specific game. - * - * @property {Pointer} mousePointer - */ - this.mousePointer = null; - - /** - * The Mouse Input manager. - * - * You should not usually access this manager directly, but instead use Input.mousePointer or Input.activePointer - * which normalizes all the input values for you, regardless of browser. - * - * @property {Phaser.Mouse} mouse - */ - this.mouse = null; - - /** - * The Keyboard Input manager. - * - * @property {Phaser.Keyboard} keyboard - */ - this.keyboard = null; - - /** - * The Touch Input manager. - * - * You should not usually access this manager directly, but instead use Input.activePointer - * which normalizes all the input values for you, regardless of browser. - * - * @property {Phaser.Touch} touch - */ - this.touch = null; - - /** - * The MSPointer Input manager. - * - * You should not usually access this manager directly, but instead use Input.activePointer - * which normalizes all the input values for you, regardless of browser. - * - * @property {Phaser.MSPointer} mspointer - */ - this.mspointer = null; - - /** - * The Gamepad Input manager. - * - * @property {Phaser.Gamepad} gamepad - */ - this.gamepad = null; - - /** - * If the Input Manager has been reset locked then all calls made to InputManager.reset, - * such as from a State change, are ignored. - * @property {boolean} resetLocked - * @default - */ - this.resetLocked = false; - - /** - * A Signal that is dispatched each time a pointer is pressed down. - * @property {Phaser.Signal} onDown - */ - this.onDown = null; - - /** - * A Signal that is dispatched each time a pointer is released. - * @property {Phaser.Signal} onUp - */ - this.onUp = null; - - /** - * A Signal that is dispatched each time a pointer is tapped. - * @property {Phaser.Signal} onTap - */ - this.onTap = null; - - /** - * A Signal that is dispatched each time a pointer is held down. - * @property {Phaser.Signal} onHold - */ - this.onHold = null; - - /** - * You can tell all Pointers to ignore any Game Object with a `priorityID` lower than this value. - * This is useful when stacking UI layers. Set to zero to disable. - * @property {number} minPriorityID - * @default - */ - this.minPriorityID = 0; - - /** - * A list of interactive objects. The InputHandler components add and remove themselves from this list. - * @property {Phaser.ArraySet} interactiveItems - */ - this.interactiveItems = new Phaser.ArraySet(); - - /** - * @property {Phaser.Point} _localPoint - Internal cache var. - * @private - */ - this._localPoint = new Phaser.Point(); - - /** - * @property {number} _pollCounter - Internal var holding the current poll counter. - * @private - */ - this._pollCounter = 0; - - /** - * @property {Phaser.Point} _oldPosition - A point object representing the previous position of the Pointer. - * @private - */ - this._oldPosition = null; - - /** - * @property {number} _x - x coordinate of the most recent Pointer event - * @private - */ - this._x = 0; - - /** - * @property {number} _y - Y coordinate of the most recent Pointer event - * @private - */ - this._y = 0; - -}; - -/** -* @constant -* @type {number} -*/ -Phaser.Input.MOUSE_OVERRIDES_TOUCH = 0; - -/** -* @constant -* @type {number} -*/ -Phaser.Input.TOUCH_OVERRIDES_MOUSE = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.Input.MOUSE_TOUCH_COMBINE = 2; - -/** -* The maximum number of pointers that can be added. This excludes the mouse pointer. -* @constant -* @type {integer} -*/ -Phaser.Input.MAX_POINTERS = 10; - -Phaser.Input.prototype = { - - /** - * Starts the Input Manager running. - * - * @method Phaser.Input#boot - * @protected - */ - boot: function () { - - this.mousePointer = new Phaser.Pointer(this.game, 0, Phaser.PointerMode.CURSOR); - this.addPointer(); - this.addPointer(); - - this.mouse = new Phaser.Mouse(this.game); - this.touch = new Phaser.Touch(this.game); - this.mspointer = new Phaser.MSPointer(this.game); - - if (Phaser.Keyboard) - { - this.keyboard = new Phaser.Keyboard(this.game); - } - - if (Phaser.Gamepad) - { - this.gamepad = new Phaser.Gamepad(this.game); - } - - this.onDown = new Phaser.Signal(); - this.onUp = new Phaser.Signal(); - this.onTap = new Phaser.Signal(); - this.onHold = new Phaser.Signal(); - - this.scale = new Phaser.Point(1, 1); - this.speed = new Phaser.Point(); - this.position = new Phaser.Point(); - this._oldPosition = new Phaser.Point(); - - this.circle = new Phaser.Circle(0, 0, 44); - - this.activePointer = this.mousePointer; - - this.hitCanvas = PIXI.CanvasPool.create(this, 1, 1); - this.hitContext = this.hitCanvas.getContext('2d'); - - this.mouse.start(); - this.touch.start(); - this.mspointer.start(); - this.mousePointer.active = true; - - if (this.keyboard) - { - this.keyboard.start(); - } - - var _this = this; - - this._onClickTrampoline = function (event) { - _this.onClickTrampoline(event); - }; - - this.game.canvas.addEventListener('click', this._onClickTrampoline, false); - - }, - - /** - * Stops all of the Input Managers from running. - * - * @method Phaser.Input#destroy - */ - destroy: function () { - - this.mouse.stop(); - this.touch.stop(); - this.mspointer.stop(); - - if (this.keyboard) - { - this.keyboard.stop(); - } - - if (this.gamepad) - { - this.gamepad.stop(); - } - - this.moveCallbacks = []; - - PIXI.CanvasPool.remove(this); - - this.game.canvas.removeEventListener('click', this._onClickTrampoline); - - }, - - /** - * Adds a callback that is fired every time `Pointer.processInteractiveObjects` is called. - * The purpose of `processInteractiveObjects` is to work out which Game Object the Pointer is going to - * interact with. It works by polling all of the valid game objects, and then slowly discounting those - * that don't meet the criteria (i.e. they aren't under the Pointer, are disabled, invisible, etc). - * - * Eventually a short-list of 'candidates' is created. These are all of the Game Objects which are valid - * for input and overlap with the Pointer. If you need fine-grained control over which of the items is - * selected then you can use this callback to do so. - * - * The callback will be sent 3 parameters: - * - * 1) A reference to the Phaser.Pointer object that is processing the Items. - * 2) An array containing all potential interactive candidates. This is an array of `InputHandler` objects, not Sprites. - * 3) The current 'favorite' candidate, based on its priorityID and position in the display list. - * - * Your callback MUST return one of the candidates sent to it. - * - * @method Phaser.Input#setInteractiveCandidateHandler - * @param {function} callback - The callback that will be called each time `Pointer.processInteractiveObjects` is called. Set to `null` to disable. - * @param {object} context - The context in which the callback will be called. - */ - setInteractiveCandidateHandler: function (callback, context) { - - this.customCandidateHandler = callback; - this.customCandidateHandlerContext = context; - - }, - - /** - * Adds a callback that is fired every time the activePointer receives a DOM move event such as a mousemove or touchmove. - * - * The callback will be sent 4 parameters: - * - * A reference to the Phaser.Pointer object that moved, - * The x position of the pointer, - * The y position, - * A boolean indicating if the movement was the result of a 'click' event (such as a mouse click or touch down). - * - * It will be called every time the activePointer moves, which in a multi-touch game can be a lot of times, so this is best - * to only use if you've limited input to a single pointer (i.e. mouse or touch). - * - * The callback is added to the Phaser.Input.moveCallbacks array and should be removed with Phaser.Input.deleteMoveCallback. - * - * @method Phaser.Input#addMoveCallback - * @param {function} callback - The callback that will be called each time the activePointer receives a DOM move event. - * @param {object} context - The context in which the callback will be called. - */ - addMoveCallback: function (callback, context) { - - this.moveCallbacks.push({ callback: callback, context: context }); - - }, - - /** - * Removes the callback from the Phaser.Input.moveCallbacks array. - * - * @method Phaser.Input#deleteMoveCallback - * @param {function} callback - The callback to be removed. - * @param {object} context - The context in which the callback exists. - */ - deleteMoveCallback: function (callback, context) { - - var i = this.moveCallbacks.length; - - while (i--) - { - if (this.moveCallbacks[i].callback === callback && this.moveCallbacks[i].context === context) - { - this.moveCallbacks.splice(i, 1); - return; - } - } - - }, - - /** - * Add a new Pointer object to the Input Manager. - * By default Input creates 3 pointer objects: `mousePointer` (not include in part of general pointer pool), `pointer1` and `pointer2`. - * This method adds an additional pointer, up to a maximum of Phaser.Input.MAX_POINTERS (default of 10). - * - * @method Phaser.Input#addPointer - * @return {Phaser.Pointer|null} The new Pointer object that was created; null if a new pointer could not be added. - */ - addPointer: function () { - - if (this.pointers.length >= Phaser.Input.MAX_POINTERS) - { - console.warn("Phaser.Input.addPointer: Maximum limit of " + Phaser.Input.MAX_POINTERS + " pointers reached."); - return null; - } - - var id = this.pointers.length + 1; - var pointer = new Phaser.Pointer(this.game, id, Phaser.PointerMode.TOUCH); - - this.pointers.push(pointer); - this['pointer' + id] = pointer; - - return pointer; - - }, - - /** - * Updates the Input Manager. Called by the core Game loop. - * - * @method Phaser.Input#update - * @protected - */ - update: function () { - - if (this.keyboard) - { - this.keyboard.update(); - } - - if (this.pollRate > 0 && this._pollCounter < this.pollRate) - { - this._pollCounter++; - return; - } - - this.speed.x = this.position.x - this._oldPosition.x; - this.speed.y = this.position.y - this._oldPosition.y; - - this._oldPosition.copyFrom(this.position); - this.mousePointer.update(); - - if (this.gamepad && this.gamepad.active) - { - this.gamepad.update(); - } - - for (var i = 0; i < this.pointers.length; i++) - { - this.pointers[i].update(); - } - - this._pollCounter = 0; - - }, - - /** - * Reset all of the Pointers and Input states. - * - * The optional `hard` parameter will reset any events or callbacks that may be bound. - * Input.reset is called automatically during a State change or if a game loses focus / visibility. - * To control control the reset manually set {@link Phaser.InputManager.resetLocked} to `true`. - * - * @method Phaser.Input#reset - * @public - * @param {boolean} [hard=false] - A soft reset won't reset any events or callbacks that are bound. A hard reset will. - */ - reset: function (hard) { - - if (!this.game.isBooted || this.resetLocked) - { - return; - } - - if (hard === undefined) { hard = false; } - - this.mousePointer.reset(); - - if (this.keyboard) - { - this.keyboard.reset(hard); - } - - if (this.gamepad) - { - this.gamepad.reset(); - } - - for (var i = 0; i < this.pointers.length; i++) - { - this.pointers[i].reset(); - } - - if (this.game.canvas.style.cursor !== 'none') - { - this.game.canvas.style.cursor = 'inherit'; - } - - if (hard) - { - this.onDown.dispose(); - this.onUp.dispose(); - this.onTap.dispose(); - this.onHold.dispose(); - this.onDown = new Phaser.Signal(); - this.onUp = new Phaser.Signal(); - this.onTap = new Phaser.Signal(); - this.onHold = new Phaser.Signal(); - this.moveCallbacks = []; - } - - this._pollCounter = 0; - - }, - - /** - * Resets the speed and old position properties. - * - * @method Phaser.Input#resetSpeed - * @param {number} x - Sets the oldPosition.x value. - * @param {number} y - Sets the oldPosition.y value. - */ - resetSpeed: function (x, y) { - - this._oldPosition.setTo(x, y); - this.speed.setTo(0, 0); - - }, - - /** - * Find the first free Pointer object and start it, passing in the event data. - * This is called automatically by Phaser.Touch and Phaser.MSPointer. - * - * @method Phaser.Input#startPointer - * @protected - * @param {any} event - The event data from the Touch event. - * @return {Phaser.Pointer} The Pointer object that was started or null if no Pointer object is available. - */ - startPointer: function (event) { - - if (this.maxPointers >= 0 && this.countActivePointers(this.maxPointers) >= this.maxPointers) - { - return null; - } - - if (!this.pointer1.active) - { - return this.pointer1.start(event); - } - - if (!this.pointer2.active) - { - return this.pointer2.start(event); - } - - for (var i = 2; i < this.pointers.length; i++) - { - var pointer = this.pointers[i]; - - if (!pointer.active) - { - return pointer.start(event); - } - } - - return null; - - }, - - /** - * Updates the matching Pointer object, passing in the event data. - * This is called automatically and should not normally need to be invoked. - * - * @method Phaser.Input#updatePointer - * @protected - * @param {any} event - The event data from the Touch event. - * @return {Phaser.Pointer} The Pointer object that was updated; null if no pointer was updated. - */ - updatePointer: function (event) { - - if (this.pointer1.active && this.pointer1.identifier === event.identifier) - { - return this.pointer1.move(event); - } - - if (this.pointer2.active && this.pointer2.identifier === event.identifier) - { - return this.pointer2.move(event); - } - - for (var i = 2; i < this.pointers.length; i++) - { - var pointer = this.pointers[i]; - - if (pointer.active && pointer.identifier === event.identifier) - { - return pointer.move(event); - } - } - - return null; - - }, - - /** - * Stops the matching Pointer object, passing in the event data. - * - * @method Phaser.Input#stopPointer - * @protected - * @param {any} event - The event data from the Touch event. - * @return {Phaser.Pointer} The Pointer object that was stopped or null if no Pointer object is available. - */ - stopPointer: function (event) { - - if (this.pointer1.active && this.pointer1.identifier === event.identifier) - { - return this.pointer1.stop(event); - } - - if (this.pointer2.active && this.pointer2.identifier === event.identifier) - { - return this.pointer2.stop(event); - } - - for (var i = 2; i < this.pointers.length; i++) - { - var pointer = this.pointers[i]; - - if (pointer.active && pointer.identifier === event.identifier) - { - return pointer.stop(event); - } - } - - return null; - - }, - - /** - * Returns the total number of active pointers, not exceeding the specified limit - * - * @name Phaser.Input#countActivePointers - * @private - * @property {integer} [limit=(max pointers)] - Stop counting after this. - * @return {integer} The number of active pointers, or limit - whichever is less. - */ - countActivePointers: function (limit) { - - if (limit === undefined) { limit = this.pointers.length; } - - var count = limit; - - for (var i = 0; i < this.pointers.length && count > 0; i++) - { - var pointer = this.pointers[i]; - - if (pointer.active) - { - count--; - } - } - - return (limit - count); - - }, - - /** - * Get the first Pointer with the given active state. - * - * @method Phaser.Input#getPointer - * @param {boolean} [isActive=false] - The state the Pointer should be in - active or inactive? - * @return {Phaser.Pointer} A Pointer object or null if no Pointer object matches the requested state. - */ - getPointer: function (isActive) { - - if (isActive === undefined) { isActive = false; } - - for (var i = 0; i < this.pointers.length; i++) - { - var pointer = this.pointers[i]; - - if (pointer.active === isActive) - { - return pointer; - } - } - - return null; - - }, - - /** - * Get the Pointer object whos `identifier` property matches the given identifier value. - * - * The identifier property is not set until the Pointer has been used at least once, as its populated by the DOM event. - * Also it can change every time you press the pointer down, and is not fixed once set. - * Note: Not all browsers set the identifier property and it's not part of the W3C spec, so you may need getPointerFromId instead. - * - * @method Phaser.Input#getPointerFromIdentifier - * @param {number} identifier - The Pointer.identifier value to search for. - * @return {Phaser.Pointer} A Pointer object or null if no Pointer object matches the requested identifier. - */ - getPointerFromIdentifier: function (identifier) { - - for (var i = 0; i < this.pointers.length; i++) - { - var pointer = this.pointers[i]; - - if (pointer.identifier === identifier) - { - return pointer; - } - } - - return null; - - }, - - /** - * Get the Pointer object whos `pointerId` property matches the given value. - * - * The pointerId property is not set until the Pointer has been used at least once, as its populated by the DOM event. - * Also it can change every time you press the pointer down if the browser recycles it. - * - * @method Phaser.Input#getPointerFromId - * @param {number} pointerId - The `pointerId` (not 'id') value to search for. - * @return {Phaser.Pointer} A Pointer object or null if no Pointer object matches the requested identifier. - */ - getPointerFromId: function (pointerId) { - - for (var i = 0; i < this.pointers.length; i++) - { - var pointer = this.pointers[i]; - - if (pointer.pointerId === pointerId) - { - return pointer; - } - } - - return null; - - }, - - /** - * This will return the local coordinates of the specified displayObject based on the given Pointer. - * - * @method Phaser.Input#getLocalPosition - * @param {Phaser.Sprite|Phaser.Image} displayObject - The DisplayObject to get the local coordinates for. - * @param {Phaser.Pointer} pointer - The Pointer to use in the check against the displayObject. - * @return {Phaser.Point} A point containing the coordinates of the Pointer position relative to the DisplayObject. - */ - getLocalPosition: function (displayObject, pointer, output) { - - if (output === undefined) { output = new Phaser.Point(); } - - var wt = displayObject.worldTransform; - var id = 1 / (wt.a * wt.d + wt.c * -wt.b); - - return output.setTo( - wt.d * id * pointer.x + -wt.c * id * pointer.y + (wt.ty * wt.c - wt.tx * wt.d) * id, - wt.a * id * pointer.y + -wt.b * id * pointer.x + (-wt.ty * wt.a + wt.tx * wt.b) * id - ); - - }, - - /** - * Tests if the pointer hits the given object. - * - * @method Phaser.Input#hitTest - * @param {DisplayObject} displayObject - The displayObject to test for a hit. - * @param {Phaser.Pointer} pointer - The pointer to use for the test. - * @param {Phaser.Point} localPoint - The local translated point. - */ - hitTest: function (displayObject, pointer, localPoint) { - - if (!displayObject.worldVisible) - { - return false; - } - - this.getLocalPosition(displayObject, pointer, this._localPoint); - - localPoint.copyFrom(this._localPoint); - - if (displayObject.hitArea && displayObject.hitArea.contains) - { - return (displayObject.hitArea.contains(this._localPoint.x, this._localPoint.y)); - } - else if (displayObject instanceof Phaser.TileSprite) - { - var width = displayObject.width; - var height = displayObject.height; - var x1 = -width * displayObject.anchor.x; - - if (this._localPoint.x >= x1 && this._localPoint.x < x1 + width) - { - var y1 = -height * displayObject.anchor.y; - - if (this._localPoint.y >= y1 && this._localPoint.y < y1 + height) - { - return true; - } - } - } - else if (displayObject instanceof PIXI.Sprite) - { - var width = displayObject.texture.frame.width; - var height = displayObject.texture.frame.height; - var x1 = -width * displayObject.anchor.x; - - if (this._localPoint.x >= x1 && this._localPoint.x < x1 + width) - { - var y1 = -height * displayObject.anchor.y; - - if (this._localPoint.y >= y1 && this._localPoint.y < y1 + height) - { - return true; - } - } - } - else if (displayObject instanceof Phaser.Graphics) - { - for (var i = 0; i < displayObject.graphicsData.length; i++) - { - var data = displayObject.graphicsData[i]; - - if (!data.fill) - { - continue; - } - - // Only deal with fills.. - if (data.shape && data.shape.contains(this._localPoint.x, this._localPoint.y)) - { - return true; - } - } - } - - // Didn't hit the parent, does it have any children? - - for (var i = 0; i < displayObject.children.length; i++) - { - if (this.hitTest(displayObject.children[i], pointer, localPoint)) - { - return true; - } - } - - return false; - }, - - /** - * Used for click trampolines. See {@link Phaser.Pointer.addClickTrampoline}. - * - * @method Phaser.Input#onClickTrampoline - * @private - */ - onClickTrampoline: function () { - - // It might not always be the active pointer, but this does work on - // Desktop browsers (read: IE) with Mouse or MSPointer input. - this.activePointer.processClickTrampolines(); - - } - -}; - -Phaser.Input.prototype.constructor = Phaser.Input; - -/** -* The X coordinate of the most recently active pointer. -* This value takes game scaling into account automatically. See Pointer.screenX/clientX for source values. -* @name Phaser.Input#x -* @property {number} x -*/ -Object.defineProperty(Phaser.Input.prototype, "x", { - - get: function () { - return this._x; - }, - - set: function (value) { - this._x = Math.floor(value); - } - -}); - -/** -* The Y coordinate of the most recently active pointer. -* This value takes game scaling into account automatically. See Pointer.screenY/clientY for source values. -* @name Phaser.Input#y -* @property {number} y -*/ -Object.defineProperty(Phaser.Input.prototype, "y", { - - get: function () { - return this._y; - }, - - set: function (value) { - this._y = Math.floor(value); - } - -}); - -/** -* True if the Input is currently poll rate locked. -* @name Phaser.Input#pollLocked -* @property {boolean} pollLocked -* @readonly -*/ -Object.defineProperty(Phaser.Input.prototype, "pollLocked", { - - get: function () { - return (this.pollRate > 0 && this._pollCounter < this.pollRate); - } - -}); - -/** -* The total number of inactive Pointers. -* @name Phaser.Input#totalInactivePointers -* @property {number} totalInactivePointers -* @readonly -*/ -Object.defineProperty(Phaser.Input.prototype, "totalInactivePointers", { - - get: function () { - return this.pointers.length - this.countActivePointers(); - } - -}); - -/** -* The total number of active Pointers, not counting the mouse pointer. -* @name Phaser.Input#totalActivePointers -* @property {integers} totalActivePointers -* @readonly -*/ -Object.defineProperty(Phaser.Input.prototype, "totalActivePointers", { - - get: function () { - return this.countActivePointers(); - } - -}); - -/** -* The world X coordinate of the most recently active pointer. -* @name Phaser.Input#worldX -* @property {number} worldX - The world X coordinate of the most recently active pointer. -* @readonly -*/ -Object.defineProperty(Phaser.Input.prototype, "worldX", { - - get: function () { - return this.game.camera.view.x + this.x; - } - -}); - -/** -* The world Y coordinate of the most recently active pointer. -* @name Phaser.Input#worldY -* @property {number} worldY - The world Y coordinate of the most recently active pointer. -* @readonly -*/ -Object.defineProperty(Phaser.Input.prototype, "worldY", { - - get: function () { - return this.game.camera.view.y + this.y; - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Mouse class is responsible for handling all aspects of mouse interaction with the browser. -* -* It captures and processes mouse events that happen on the game canvas object. -* It also adds a single `mouseup` listener to `window` which is used to capture the mouse being released -* when not over the game. -* -* You should not normally access this class directly, but instead use a Phaser.Pointer object -* which normalises all game input for you, including accurate button handling. -* -* @class Phaser.Mouse -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Mouse = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {Phaser.Input} input - A reference to the Phaser Input Manager. - * @protected - */ - this.input = game.input; - - /** - * @property {object} callbackContext - The context under which callbacks are called. - */ - this.callbackContext = this.game; - - /** - * @property {function} mouseDownCallback - A callback that can be fired when the mouse is pressed down. - */ - this.mouseDownCallback = null; - - /** - * @property {function} mouseUpCallback - A callback that can be fired when the mouse is released from a pressed down state. - */ - this.mouseUpCallback = null; - - /** - * @property {function} mouseOutCallback - A callback that can be fired when the mouse is no longer over the game canvas. - */ - this.mouseOutCallback = null; - - /** - * @property {function} mouseOverCallback - A callback that can be fired when the mouse enters the game canvas (usually after a mouseout). - */ - this.mouseOverCallback = null; - - /** - * @property {function} mouseWheelCallback - A callback that can be fired when the mousewheel is used. - */ - this.mouseWheelCallback = null; - - /** - * @property {boolean} capture - If true the DOM mouse events will have event.preventDefault applied to them, if false they will propagate fully. - */ - this.capture = false; - - /** - * This property was removed in Phaser 2.4 and should no longer be used. - * Instead please see the Pointer button properties such as `Pointer.leftButton`, `Pointer.rightButton` and so on. - * Or Pointer.button holds the DOM event button value if you require that. - * @property {number} button - * @default - */ - this.button = -1; - - /** - * The direction of the _last_ mousewheel usage 1 for up -1 for down. - * @property {number} wheelDelta - */ - this.wheelDelta = 0; - - /** - * Mouse input will only be processed if enabled. - * @property {boolean} enabled - * @default - */ - this.enabled = true; - - /** - * @property {boolean} locked - If the mouse has been Pointer Locked successfully this will be set to true. - * @default - */ - this.locked = false; - - /** - * @property {boolean} stopOnGameOut - If true Pointer.stop will be called if the mouse leaves the game canvas. - * @default - */ - this.stopOnGameOut = false; - - /** - * @property {Phaser.Signal} pointerLock - This event is dispatched when the browser enters or leaves pointer lock state. - * @default - */ - this.pointerLock = new Phaser.Signal(); - - /** - * The browser mouse DOM event. Will be null if no mouse event has ever been received. - * Access this property only inside a Mouse event handler and do not keep references to it. - * @property {MouseEvent|null} event - * @default - */ - this.event = null; - - /** - * @property {function} _onMouseDown - Internal event handler reference. - * @private - */ - this._onMouseDown = null; - - /** - * @property {function} _onMouseMove - Internal event handler reference. - * @private - */ - this._onMouseMove = null; - - /** - * @property {function} _onMouseUp - Internal event handler reference. - * @private - */ - this._onMouseUp = null; - - /** - * @property {function} _onMouseOut - Internal event handler reference. - * @private - */ - this._onMouseOut = null; - - /** - * @property {function} _onMouseOver - Internal event handler reference. - * @private - */ - this._onMouseOver = null; - - /** - * @property {function} _onMouseWheel - Internal event handler reference. - * @private - */ - this._onMouseWheel = null; - - /** - * Wheel proxy event object, if required. Shared for all wheel events for this mouse. - * @property {Phaser.Mouse~WheelEventProxy} _wheelEvent - * @private - */ - this._wheelEvent = null; - -}; - -/** -* @constant -* @type {number} -*/ -Phaser.Mouse.NO_BUTTON = -1; - -/** -* @constant -* @type {number} -*/ -Phaser.Mouse.LEFT_BUTTON = 0; - -/** -* @constant -* @type {number} -*/ -Phaser.Mouse.MIDDLE_BUTTON = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.Mouse.RIGHT_BUTTON = 2; - -/** -* @constant -* @type {number} -*/ -Phaser.Mouse.BACK_BUTTON = 3; - -/** -* @constant -* @type {number} -*/ -Phaser.Mouse.FORWARD_BUTTON = 4; - -/** - * @constant - * @type {number} - */ -Phaser.Mouse.WHEEL_UP = 1; - -/** - * @constant - * @type {number} - */ -Phaser.Mouse.WHEEL_DOWN = -1; - -Phaser.Mouse.prototype = { - - /** - * Starts the event listeners running. - * @method Phaser.Mouse#start - */ - start: function () { - - if (this.game.device.android && this.game.device.chrome === false) - { - // Android stock browser fires mouse events even if you preventDefault on the touchStart, so ... - return; - } - - if (this._onMouseDown !== null) - { - // Avoid setting multiple listeners - return; - } - - var _this = this; - - this._onMouseDown = function (event) { - return _this.onMouseDown(event); - }; - - this._onMouseMove = function (event) { - return _this.onMouseMove(event); - }; - - this._onMouseUp = function (event) { - return _this.onMouseUp(event); - }; - - this._onMouseUpGlobal = function (event) { - return _this.onMouseUpGlobal(event); - }; - - this._onMouseOutGlobal = function (event) { - return _this.onMouseOutGlobal(event); - }; - - this._onMouseOut = function (event) { - return _this.onMouseOut(event); - }; - - this._onMouseOver = function (event) { - return _this.onMouseOver(event); - }; - - this._onMouseWheel = function (event) { - return _this.onMouseWheel(event); - }; - - var canvas = this.game.canvas; - - canvas.addEventListener('mousedown', this._onMouseDown, true); - canvas.addEventListener('mousemove', this._onMouseMove, true); - canvas.addEventListener('mouseup', this._onMouseUp, true); - - if (!this.game.device.cocoonJS) - { - window.addEventListener('mouseup', this._onMouseUpGlobal, true); - window.addEventListener('mouseout', this._onMouseOutGlobal, true); - canvas.addEventListener('mouseover', this._onMouseOver, true); - canvas.addEventListener('mouseout', this._onMouseOut, true); - } - - var wheelEvent = this.game.device.wheelEvent; - - if (wheelEvent) - { - canvas.addEventListener(wheelEvent, this._onMouseWheel, true); - - if (wheelEvent === 'mousewheel') - { - this._wheelEvent = new WheelEventProxy(-1/40, 1); - } - else if (wheelEvent === 'DOMMouseScroll') - { - this._wheelEvent = new WheelEventProxy(1, 1); - } - } - - }, - - /** - * The internal method that handles the mouse down event from the browser. - * @method Phaser.Mouse#onMouseDown - * @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event. - */ - onMouseDown: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (this.mouseDownCallback) - { - this.mouseDownCallback.call(this.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - event['identifier'] = 0; - - this.input.mousePointer.start(event); - - }, - - /** - * The internal method that handles the mouse move event from the browser. - * @method Phaser.Mouse#onMouseMove - * @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event. - */ - onMouseMove: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (this.mouseMoveCallback) - { - this.mouseMoveCallback.call(this.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - event['identifier'] = 0; - - this.input.mousePointer.move(event); - - }, - - /** - * The internal method that handles the mouse up event from the browser. - * @method Phaser.Mouse#onMouseUp - * @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event. - */ - onMouseUp: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (this.mouseUpCallback) - { - this.mouseUpCallback.call(this.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - event['identifier'] = 0; - - this.input.mousePointer.stop(event); - - }, - - /** - * The internal method that handles the mouse up event from the window. - * - * @method Phaser.Mouse#onMouseUpGlobal - * @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event. - */ - onMouseUpGlobal: function (event) { - - if (!this.input.mousePointer.withinGame) - { - if (this.mouseUpCallback) - { - this.mouseUpCallback.call(this.callbackContext, event); - } - - event['identifier'] = 0; - - this.input.mousePointer.stop(event); - } - - }, - - /** - * The internal method that handles the mouse out event from the window. - * - * @method Phaser.Mouse#onMouseOutGlobal - * @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event. - */ - onMouseOutGlobal: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - this.input.mousePointer.withinGame = false; - - if (!this.input.enabled || !this.enabled) - { - return; - } - - // If we get a mouseout event from the window then basically - // something serious has gone down, usually along the lines of - // the browser opening a context-menu or similar. - // On OS X Chrome especially this is bad news, as it blocks - // us then getting a mouseup event, so we need to force that through. - // - // No matter what, we must cancel the left and right buttons - - this.input.mousePointer.stop(event); - this.input.mousePointer.leftButton.stop(event); - this.input.mousePointer.rightButton.stop(event); - - }, - - /** - * The internal method that handles the mouse out event from the browser. - * - * @method Phaser.Mouse#onMouseOut - * @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event. - */ - onMouseOut: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - this.input.mousePointer.withinGame = false; - - if (this.mouseOutCallback) - { - this.mouseOutCallback.call(this.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - if (this.stopOnGameOut) - { - event['identifier'] = 0; - - this.input.mousePointer.stop(event); - } - - }, - - /** - * The internal method that handles the mouse over event from the browser. - * - * @method Phaser.Mouse#onMouseOver - * @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event. - */ - onMouseOver: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - this.input.mousePointer.withinGame = true; - - if (this.mouseOverCallback) - { - this.mouseOverCallback.call(this.callbackContext, event); - } - - }, - - /** - * The internal method that handles the mouse wheel event from the browser. - * - * @method Phaser.Mouse#onMouseWheel - * @param {MouseEvent} event - The native event from the browser. - */ - onMouseWheel: function (event) { - - if (this._wheelEvent) { - event = this._wheelEvent.bindEvent(event); - } - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - // reverse detail for firefox - this.wheelDelta = Phaser.Math.clamp(-event.deltaY, -1, 1); - - if (this.mouseWheelCallback) - { - this.mouseWheelCallback.call(this.callbackContext, event); - } - - }, - - /** - * If the browser supports it you can request that the pointer be locked to the browser window. - * This is classically known as 'FPS controls', where the pointer can't leave the browser until the user presses an exit key. - * If the browser successfully enters a locked state the event Phaser.Mouse.pointerLock will be dispatched and the first parameter will be 'true'. - * @method Phaser.Mouse#requestPointerLock - */ - requestPointerLock: function () { - - if (this.game.device.pointerLock) - { - var element = this.game.canvas; - - element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock; - - element.requestPointerLock(); - - var _this = this; - - this._pointerLockChange = function (event) { - return _this.pointerLockChange(event); - }; - - document.addEventListener('pointerlockchange', this._pointerLockChange, true); - document.addEventListener('mozpointerlockchange', this._pointerLockChange, true); - document.addEventListener('webkitpointerlockchange', this._pointerLockChange, true); - } - - }, - - /** - * Internal pointerLockChange handler. - * - * @method Phaser.Mouse#pointerLockChange - * @param {Event} event - The native event from the browser. This gets stored in Mouse.event. - */ - pointerLockChange: function (event) { - - var element = this.game.canvas; - - if (document.pointerLockElement === element || document.mozPointerLockElement === element || document.webkitPointerLockElement === element) - { - // Pointer was successfully locked - this.locked = true; - this.pointerLock.dispatch(true, event); - } - else - { - // Pointer was unlocked - this.locked = false; - this.pointerLock.dispatch(false, event); - } - - }, - - /** - * Internal release pointer lock handler. - * @method Phaser.Mouse#releasePointerLock - */ - releasePointerLock: function () { - - document.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock; - - document.exitPointerLock(); - - document.removeEventListener('pointerlockchange', this._pointerLockChange, true); - document.removeEventListener('mozpointerlockchange', this._pointerLockChange, true); - document.removeEventListener('webkitpointerlockchange', this._pointerLockChange, true); - - }, - - /** - * Stop the event listeners. - * @method Phaser.Mouse#stop - */ - stop: function () { - - var canvas = this.game.canvas; - - canvas.removeEventListener('mousedown', this._onMouseDown, true); - canvas.removeEventListener('mousemove', this._onMouseMove, true); - canvas.removeEventListener('mouseup', this._onMouseUp, true); - canvas.removeEventListener('mouseover', this._onMouseOver, true); - canvas.removeEventListener('mouseout', this._onMouseOut, true); - - var wheelEvent = this.game.device.wheelEvent; - - if (wheelEvent) - { - canvas.removeEventListener(wheelEvent, this._onMouseWheel, true); - } - - window.removeEventListener('mouseup', this._onMouseUpGlobal, true); - window.removeEventListener('mouseout', this._onMouseOutGlobal, true); - - document.removeEventListener('pointerlockchange', this._pointerLockChange, true); - document.removeEventListener('mozpointerlockchange', this._pointerLockChange, true); - document.removeEventListener('webkitpointerlockchange', this._pointerLockChange, true); - - } - -}; - -Phaser.Mouse.prototype.constructor = Phaser.Mouse; - -/* jshint latedef:nofunc */ -/** -* A purely internal event support class to proxy 'wheelscroll' and 'DOMMouseWheel' -* events to 'wheel'-like events. -* -* See https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel for choosing a scale and delta mode. -* -* @method Phaser.Mouse#WheelEventProxy -* @private -* @param {number} scaleFactor - Scale factor as applied to wheelDelta/wheelDeltaX or details. -* @param {integer} deltaMode - The reported delta mode. -*/ -function WheelEventProxy (scaleFactor, deltaMode) { - - /** - * @property {number} _scaleFactor - Scale factor as applied to wheelDelta/wheelDeltaX or details. - * @private - */ - this._scaleFactor = scaleFactor; - - /** - * @property {number} _deltaMode - The reported delta mode. - * @private - */ - this._deltaMode = deltaMode; - - /** - * @property {any} originalEvent - The original event _currently_ being proxied; the getters will follow suit. - * @private - */ - this.originalEvent = null; - -} - -WheelEventProxy.prototype = {}; -WheelEventProxy.prototype.constructor = WheelEventProxy; - -WheelEventProxy.prototype.bindEvent = function (event) { - - // Generate stubs automatically - if (!WheelEventProxy._stubsGenerated && event) - { - var makeBinder = function (name) { - - return function () { - var v = this.originalEvent[name]; - return typeof v !== 'function' ? v : v.bind(this.originalEvent); - }; - - }; - - for (var prop in event) - { - if (!(prop in WheelEventProxy.prototype)) - { - Object.defineProperty(WheelEventProxy.prototype, prop, { - get: makeBinder(prop) - }); - } - } - WheelEventProxy._stubsGenerated = true; - } - - this.originalEvent = event; - return this; - -}; - -Object.defineProperties(WheelEventProxy.prototype, { - "type": { value: "wheel" }, - "deltaMode": { get: function () { return this._deltaMode; } }, - "deltaY": { - get: function () { - return (this._scaleFactor * (this.originalEvent.wheelDelta || this.originalEvent.detail)) || 0; - } - }, - "deltaX": { - get: function () { - return (this._scaleFactor * this.originalEvent.wheelDeltaX) || 0; - } - }, - "deltaZ": { value: 0 } -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The MSPointer class handles Microsoft touch interactions with the game and the resulting Pointer objects. -* -* It will work only in Internet Explorer 10+ and Windows Store or Windows Phone 8 apps using JavaScript. -* http://msdn.microsoft.com/en-us/library/ie/hh673557(v=vs.85).aspx -* -* You should not normally access this class directly, but instead use a Phaser.Pointer object which -* normalises all game input for you including accurate button handling. -* -* Please note that at the current time of writing Phaser does not yet support chorded button interactions: -* http://www.w3.org/TR/pointerevents/#chorded-button-interactions -* -* @class Phaser.MSPointer -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.MSPointer = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {Phaser.Input} input - A reference to the Phaser Input Manager. - * @protected - */ - this.input = game.input; - - /** - * @property {object} callbackContext - The context under which callbacks are called (defaults to game). - */ - this.callbackContext = this.game; - - /** - * @property {function} pointerDownCallback - A callback that can be fired on a MSPointerDown event. - */ - this.pointerDownCallback = null; - - /** - * @property {function} pointerMoveCallback - A callback that can be fired on a MSPointerMove event. - */ - this.pointerMoveCallback = null; - - /** - * @property {function} pointerUpCallback - A callback that can be fired on a MSPointerUp event. - */ - this.pointerUpCallback = null; - - /** - * @property {boolean} capture - If true the Pointer events will have event.preventDefault applied to them, if false they will propagate fully. - */ - this.capture = true; - - /** - * This property was removed in Phaser 2.4 and should no longer be used. - * Instead please see the Pointer button properties such as `Pointer.leftButton`, `Pointer.rightButton` and so on. - * Or Pointer.button holds the DOM event button value if you require that. - * @property {number} button - */ - this.button = -1; - - /** - * The browser MSPointer DOM event. Will be null if no event has ever been received. - * Access this property only inside a Pointer event handler and do not keep references to it. - * @property {MSPointerEvent|null} event - * @default - */ - this.event = null; - - /** - * MSPointer input will only be processed if enabled. - * @property {boolean} enabled - * @default - */ - this.enabled = true; - - /** - * @property {function} _onMSPointerDown - Internal function to handle MSPointer events. - * @private - */ - this._onMSPointerDown = null; - - /** - * @property {function} _onMSPointerMove - Internal function to handle MSPointer events. - * @private - */ - this._onMSPointerMove = null; - - /** - * @property {function} _onMSPointerUp - Internal function to handle MSPointer events. - * @private - */ - this._onMSPointerUp = null; - - /** - * @property {function} _onMSPointerUpGlobal - Internal function to handle MSPointer events. - * @private - */ - this._onMSPointerUpGlobal = null; - - /** - * @property {function} _onMSPointerOut - Internal function to handle MSPointer events. - * @private - */ - this._onMSPointerOut = null; - - /** - * @property {function} _onMSPointerOver - Internal function to handle MSPointer events. - * @private - */ - this._onMSPointerOver = null; - -}; - -Phaser.MSPointer.prototype = { - - /** - * Starts the event listeners running. - * @method Phaser.MSPointer#start - */ - start: function () { - - if (this._onMSPointerDown !== null) - { - // Avoid setting multiple listeners - return; - } - - var _this = this; - - if (this.game.device.mspointer) - { - this._onMSPointerDown = function (event) { - return _this.onPointerDown(event); - }; - - this._onMSPointerMove = function (event) { - return _this.onPointerMove(event); - }; - - this._onMSPointerUp = function (event) { - return _this.onPointerUp(event); - }; - - this._onMSPointerUpGlobal = function (event) { - return _this.onPointerUpGlobal(event); - }; - - this._onMSPointerOut = function (event) { - return _this.onPointerOut(event); - }; - - this._onMSPointerOver = function (event) { - return _this.onPointerOver(event); - }; - - var canvas = this.game.canvas; - - canvas.addEventListener('MSPointerDown', this._onMSPointerDown, false); - canvas.addEventListener('MSPointerMove', this._onMSPointerMove, false); - canvas.addEventListener('MSPointerUp', this._onMSPointerUp, false); - - // IE11+ uses non-prefix events - canvas.addEventListener('pointerdown', this._onMSPointerDown, false); - canvas.addEventListener('pointermove', this._onMSPointerMove, false); - canvas.addEventListener('pointerup', this._onMSPointerUp, false); - - canvas.style['-ms-content-zooming'] = 'none'; - canvas.style['-ms-touch-action'] = 'none'; - - if (!this.game.device.cocoonJS) - { - window.addEventListener('MSPointerUp', this._onMSPointerUpGlobal, true); - canvas.addEventListener('MSPointerOver', this._onMSPointerOver, true); - canvas.addEventListener('MSPointerOut', this._onMSPointerOut, true); - - // IE11+ uses non-prefix events - window.addEventListener('pointerup', this._onMSPointerUpGlobal, true); - canvas.addEventListener('pointerover', this._onMSPointerOver, true); - canvas.addEventListener('pointerout', this._onMSPointerOut, true); - } - } - - }, - - /** - * The function that handles the PointerDown event. - * - * @method Phaser.MSPointer#onPointerDown - * @param {PointerEvent} event - The native DOM event. - */ - onPointerDown: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (this.pointerDownCallback) - { - this.pointerDownCallback.call(this.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - event.identifier = event.pointerId; - - if (event.pointerType === 'mouse' || event.pointerType === 0x00000004) - { - this.input.mousePointer.start(event); - } - else - { - this.input.startPointer(event); - } - - }, - - /** - * The function that handles the PointerMove event. - * @method Phaser.MSPointer#onPointerMove - * @param {PointerEvent} event - The native DOM event. - */ - onPointerMove: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (this.pointerMoveCallback) - { - this.pointerMoveCallback.call(this.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - event.identifier = event.pointerId; - - if (event.pointerType === 'mouse' || event.pointerType === 0x00000004) - { - this.input.mousePointer.move(event); - } - else - { - this.input.updatePointer(event); - } - - }, - - /** - * The function that handles the PointerUp event. - * @method Phaser.MSPointer#onPointerUp - * @param {PointerEvent} event - The native DOM event. - */ - onPointerUp: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (this.pointerUpCallback) - { - this.pointerUpCallback.call(this.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - event.identifier = event.pointerId; - - if (event.pointerType === 'mouse' || event.pointerType === 0x00000004) - { - this.input.mousePointer.stop(event); - } - else - { - this.input.stopPointer(event); - } - - }, - - /** - * The internal method that handles the mouse up event from the window. - * - * @method Phaser.MSPointer#onPointerUpGlobal - * @param {PointerEvent} event - The native event from the browser. This gets stored in MSPointer.event. - */ - onPointerUpGlobal: function (event) { - - if ((event.pointerType === 'mouse' || event.pointerType === 0x00000004) && !this.input.mousePointer.withinGame) - { - this.onPointerUp(event); - } - else - { - var pointer = this.input.getPointerFromIdentifier(event.identifier); - - if (pointer && pointer.withinGame) - { - this.onPointerUp(event); - } - } - - }, - - /** - * The internal method that handles the pointer out event from the browser. - * - * @method Phaser.MSPointer#onPointerOut - * @param {PointerEvent} event - The native event from the browser. This gets stored in MSPointer.event. - */ - onPointerOut: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (event.pointerType === 'mouse' || event.pointerType === 0x00000004) - { - this.input.mousePointer.withinGame = false; - } - else - { - var pointer = this.input.getPointerFromIdentifier(event.identifier); - - if (pointer) - { - pointer.withinGame = false; - } - } - - if (this.input.mouse.mouseOutCallback) - { - this.input.mouse.mouseOutCallback.call(this.input.mouse.callbackContext, event); - } - - if (!this.input.enabled || !this.enabled) - { - return; - } - - if (this.input.mouse.stopOnGameOut) - { - event['identifier'] = 0; - - if (pointer) - { - pointer.stop(event); - } - else - { - this.input.mousePointer.stop(event); - } - } - - }, - - /** - * The internal method that handles the pointer out event from the browser. - * - * @method Phaser.MSPointer#onPointerOut - * @param {PointerEvent} event - The native event from the browser. This gets stored in MSPointer.event. - */ - onPointerOver: function (event) { - - this.event = event; - - if (this.capture) - { - event.preventDefault(); - } - - if (event.pointerType === 'mouse' || event.pointerType === 0x00000004) - { - this.input.mousePointer.withinGame = true; - } - else - { - var pointer = this.input.getPointerFromIdentifier(event.identifier); - - if (pointer) - { - pointer.withinGame = true; - } - } - - if (this.input.mouse.mouseOverCallback) - { - this.input.mouse.mouseOverCallback.call(this.input.mouse.callbackContext, event); - } - - }, - - /** - * Stop the event listeners. - * @method Phaser.MSPointer#stop - */ - stop: function () { - - var canvas = this.game.canvas; - - canvas.removeEventListener('MSPointerDown', this._onMSPointerDown, false); - canvas.removeEventListener('MSPointerMove', this._onMSPointerMove, false); - canvas.removeEventListener('MSPointerUp', this._onMSPointerUp, false); - - // IE11+ uses non-prefix events - canvas.removeEventListener('pointerdown', this._onMSPointerDown, false); - canvas.removeEventListener('pointermove', this._onMSPointerMove, false); - canvas.removeEventListener('pointerup', this._onMSPointerUp, false); - - window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal, true); - canvas.removeEventListener('MSPointerOver', this._onMSPointerOver, true); - canvas.removeEventListener('MSPointerOut', this._onMSPointerOut, true); - - // IE11+ uses non-prefix events - window.removeEventListener('pointerup', this._onMSPointerUpGlobal, true); - canvas.removeEventListener('pointerover', this._onMSPointerOver, true); - canvas.removeEventListener('pointerout', this._onMSPointerOut, true); - - } - -}; - -Phaser.MSPointer.prototype.constructor = Phaser.MSPointer; - -/** -* @author Richard Davey -* @author @karlmacklin -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* DeviceButtons belong to both `Phaser.Pointer` and `Phaser.SinglePad` (Gamepad) instances. -* -* For Pointers they represent the various buttons that can exist on mice and pens, such as the left button, right button, -* middle button and advanced buttons like back and forward. -* -* Access them via `Pointer.leftbutton`, `Pointer.rightButton` and so on. -* -* On Gamepads they represent all buttons on the pad: from shoulder buttons to action buttons. -* -* At the time of writing this there are device limitations you should be aware of: -* -* - On Windows, if you install a mouse driver, and its utility software allows you to customize button actions -* (e.g., IntelliPoint and SetPoint), the middle (wheel) button, the 4th button, and the 5th button might not be set, -* even when they are pressed. -* - On Linux (GTK), the 4th button and the 5th button are not supported. -* - On Mac OS X 10.5 there is no platform API for implementing any advanced buttons. -* -* @class Phaser.DeviceButton -* @constructor -* @param {Phaser.Pointer|Phaser.SinglePad} parent - A reference to the parent of this button. Either a Pointer or a Gamepad. -* @param {number} buttonCode - The button code this DeviceButton is responsible for. -*/ -Phaser.DeviceButton = function (parent, buttonCode) { - - /** - * @property {Phaser.Pointer|Phaser.SinglePad} parent - A reference to the Pointer or Gamepad that owns this button. - */ - this.parent = parent; - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = parent.game; - - /** - * @property {object} event - The DOM event that caused the change in button state. - * @default - */ - this.event = null; - - /** - * @property {boolean} isDown - The "down" state of the button. - * @default - */ - this.isDown = false; - - /** - * @property {boolean} isUp - The "up" state of the button. - * @default - */ - this.isUp = true; - - /** - * @property {number} timeDown - The timestamp when the button was last pressed down. - * @default - */ - this.timeDown = 0; - - /** - * @property {number} timeUp - The timestamp when the button was last released. - * @default - */ - this.timeUp = 0; - - /** - * Gamepad only. - * If a button is held down this holds down the number of times the button has 'repeated'. - * @property {number} repeats - * @default - */ - this.repeats = 0; - - /** - * True if the alt key was held down when this button was last pressed or released. - * Not supported on Gamepads. - * @property {boolean} altKey - * @default - */ - this.altKey = false; - - /** - * True if the shift key was held down when this button was last pressed or released. - * Not supported on Gamepads. - * @property {boolean} shiftKey - * @default - */ - this.shiftKey = false; - - /** - * True if the control key was held down when this button was last pressed or released. - * Not supported on Gamepads. - * @property {boolean} ctrlKey - * @default - */ - this.ctrlKey = false; - - /** - * @property {number} value - Button value. Mainly useful for checking analog buttons (like shoulder triggers) on Gamepads. - * @default - */ - this.value = 0; - - /** - * @property {number} buttonCode - The buttoncode of this button if a Gamepad, or the DOM button event value if a Pointer. - */ - this.buttonCode = buttonCode; - - /** - * This Signal is dispatched every time this DeviceButton is pressed down. - * It is only dispatched once (until the button is released again). - * When dispatched it sends 2 arguments: A reference to this DeviceButton and the value of the button. - * @property {Phaser.Signal} onDown - */ - this.onDown = new Phaser.Signal(); - - /** - * This Signal is dispatched every time this DeviceButton is released from a down state. - * It is only dispatched once (until the button is pressed again). - * When dispatched it sends 2 arguments: A reference to this DeviceButton and the value of the button. - * @property {Phaser.Signal} onUp - */ - this.onUp = new Phaser.Signal(); - - /** - * Gamepad only. - * This Signal is dispatched every time this DeviceButton changes floating value (between, but not exactly, 0 and 1). - * When dispatched it sends 2 arguments: A reference to this DeviceButton and the value of the button. - * @property {Phaser.Signal} onFloat - */ - this.onFloat = new Phaser.Signal(); - -}; - -Phaser.DeviceButton.prototype = { - - /** - * Called automatically by Phaser.Pointer and Phaser.SinglePad. - * Handles the button down state. - * - * @method Phaser.DeviceButton#start - * @protected - * @param {object} [event] - The DOM event that triggered the button change. - * @param {number} [value] - The button value. Only get for Gamepads. - */ - start: function (event, value) { - - if (this.isDown) - { - return; - } - - this.isDown = true; - this.isUp = false; - this.timeDown = this.game.time.time; - this.repeats = 0; - - this.event = event; - this.value = value; - - if (event) - { - this.altKey = event.altKey; - this.shiftKey = event.shiftKey; - this.ctrlKey = event.ctrlKey; - } - - this.onDown.dispatch(this, value); - - }, - - /** - * Called automatically by Phaser.Pointer and Phaser.SinglePad. - * Handles the button up state. - * - * @method Phaser.DeviceButton#stop - * @protected - * @param {object} [event] - The DOM event that triggered the button change. - * @param {number} [value] - The button value. Only get for Gamepads. - */ - stop: function (event, value) { - - if (this.isUp) - { - return; - } - - this.isDown = false; - this.isUp = true; - this.timeUp = this.game.time.time; - - this.event = event; - this.value = value; - - if (event) - { - this.altKey = event.altKey; - this.shiftKey = event.shiftKey; - this.ctrlKey = event.ctrlKey; - } - - this.onUp.dispatch(this, value); - - }, - - /** - * Called automatically by Phaser.SinglePad. - * - * @method Phaser.DeviceButton#padFloat - * @protected - * @param {number} value - Button value - */ - padFloat: function (value) { - - this.value = value; - - this.onFloat.dispatch(this, value); - - }, - - /** - * Returns the "just pressed" state of this button. - * Just pressed is considered true if the button was pressed down within the duration given (default 250ms). - * - * @method Phaser.DeviceButton#justPressed - * @param {number} [duration=250] - The duration in ms below which the button is considered as being just pressed. - * @return {boolean} True if the button is just pressed otherwise false. - */ - justPressed: function (duration) { - - duration = duration || 250; - - return (this.isDown && (this.timeDown + duration) > this.game.time.time); - - }, - - /** - * Returns the "just released" state of this button. - * Just released is considered as being true if the button was released within the duration given (default 250ms). - * - * @method Phaser.DeviceButton#justReleased - * @param {number} [duration=250] - The duration in ms below which the button is considered as being just released. - * @return {boolean} True if the button is just released otherwise false. - */ - justReleased: function (duration) { - - duration = duration || 250; - - return (this.isUp && (this.timeUp + duration) > this.game.time.time); - - }, - - /** - * Resets this DeviceButton, changing it to an isUp state and resetting the duration and repeats counters. - * - * @method Phaser.DeviceButton#reset - */ - reset: function () { - - this.isDown = false; - this.isUp = true; - - this.timeDown = this.game.time.time; - this.repeats = 0; - - this.altKey = false; - this.shiftKey = false; - this.ctrlKey = false; - - }, - - /** - * Destroys this DeviceButton, this disposes of the onDown, onUp and onFloat signals - * and clears the parent and game references. - * - * @method Phaser.DeviceButton#destroy - */ - destroy: function () { - - this.onDown.dispose(); - this.onUp.dispose(); - this.onFloat.dispose(); - - this.parent = null; - this.game = null; - - } - -}; - -Phaser.DeviceButton.prototype.constructor = Phaser.DeviceButton; - -/** -* How long the button has been held down for in milliseconds. -* If not currently down it returns -1. -* -* @name Phaser.DeviceButton#duration -* @property {number} duration -* @readonly -*/ -Object.defineProperty(Phaser.DeviceButton.prototype, "duration", { - - get: function () { - - if (this.isUp) - { - return -1; - } - - return this.game.time.time - this.timeDown; - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Pointer object is used by the Mouse, Touch and MSPoint managers and represents a single finger on the touch screen. -* -* @class Phaser.Pointer -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} id - The ID of the Pointer object within the game. Each game can have up to 10 active pointers. -* @param {Phaser.PointerMode} pointerMode=(CURSOR|CONTACT) - The operational mode of this pointer, eg. CURSOR or TOUCH. -*/ -Phaser.Pointer = function (game, id, pointerMode) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {number} id - The ID of the Pointer object within the game. Each game can have up to 10 active pointers. - */ - this.id = id; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.POINTER; - - /** - * @property {boolean} exists - A Pointer object that exists is allowed to be checked for physics collisions and overlaps. - * @default - */ - this.exists = true; - - /** - * @property {number} identifier - The identifier property of the Pointer as set by the DOM event when this Pointer is started. - * @default - */ - this.identifier = 0; - - /** - * @property {number} pointerId - The pointerId property of the Pointer as set by the DOM event when this Pointer is started. The browser can and will recycle this value. - * @default - */ - this.pointerId = null; - - /** - * @property {Phaser.PointerMode} pointerMode - The operational mode of this pointer. - */ - this.pointerMode = pointerMode || (Phaser.PointerMode.CURSOR | Phaser.PointerMode.CONTACT); - - /** - * @property {any} target - The target property of the Pointer as set by the DOM event when this Pointer is started. - * @default - */ - this.target = null; - - /** - * The button property of the most recent DOM event when this Pointer is started. - * You should not rely on this value for accurate button detection, instead use the Pointer properties - * `leftButton`, `rightButton`, `middleButton` and so on. - * @property {any} button - * @default - */ - this.button = null; - - /** - * If this Pointer is a Mouse or Pen / Stylus then you can access its left button directly through this property. - * - * The DeviceButton has its own properties such as `isDown`, `duration` and methods like `justReleased` for more fine-grained - * button control. - * - * @property {Phaser.DeviceButton} leftButton - * @default - */ - this.leftButton = new Phaser.DeviceButton(this, Phaser.Pointer.LEFT_BUTTON); - - /** - * If this Pointer is a Mouse or Pen / Stylus then you can access its middle button directly through this property. - * - * The DeviceButton has its own properties such as `isDown`, `duration` and methods like `justReleased` for more fine-grained - * button control. - * - * Please see the DeviceButton docs for details on browser button limitations. - * - * @property {Phaser.DeviceButton} middleButton - * @default - */ - this.middleButton = new Phaser.DeviceButton(this, Phaser.Pointer.MIDDLE_BUTTON); - - /** - * If this Pointer is a Mouse or Pen / Stylus then you can access its right button directly through this property. - * - * The DeviceButton has its own properties such as `isDown`, `duration` and methods like `justReleased` for more fine-grained - * button control. - * - * Please see the DeviceButton docs for details on browser button limitations. - * - * @property {Phaser.DeviceButton} rightButton - * @default - */ - this.rightButton = new Phaser.DeviceButton(this, Phaser.Pointer.RIGHT_BUTTON); - - /** - * If this Pointer is a Mouse or Pen / Stylus then you can access its X1 (back) button directly through this property. - * - * The DeviceButton has its own properties such as `isDown`, `duration` and methods like `justReleased` for more fine-grained - * button control. - * - * Please see the DeviceButton docs for details on browser button limitations. - * - * @property {Phaser.DeviceButton} backButton - * @default - */ - this.backButton = new Phaser.DeviceButton(this, Phaser.Pointer.BACK_BUTTON); - - /** - * If this Pointer is a Mouse or Pen / Stylus then you can access its X2 (forward) button directly through this property. - * - * The DeviceButton has its own properties such as `isDown`, `duration` and methods like `justReleased` for more fine-grained - * button control. - * - * Please see the DeviceButton docs for details on browser button limitations. - * - * @property {Phaser.DeviceButton} forwardButton - * @default - */ - this.forwardButton = new Phaser.DeviceButton(this, Phaser.Pointer.FORWARD_BUTTON); - - /** - * If this Pointer is a Pen / Stylus then you can access its eraser button directly through this property. - * - * The DeviceButton has its own properties such as `isDown`, `duration` and methods like `justReleased` for more fine-grained - * button control. - * - * Please see the DeviceButton docs for details on browser button limitations. - * - * @property {Phaser.DeviceButton} eraserButton - * @default - */ - this.eraserButton = new Phaser.DeviceButton(this, Phaser.Pointer.ERASER_BUTTON); - - /** - * @property {boolean} _holdSent - Local private variable to store the status of dispatching a hold event. - * @private - * @default - */ - this._holdSent = false; - - /** - * @property {array} _history - Local private variable storing the short-term history of pointer movements. - * @private - */ - this._history = []; - - /** - * @property {number} _nextDrop - Local private variable storing the time at which the next history drop should occur. - * @private - */ - this._nextDrop = 0; - - /** - * @property {boolean} _stateReset - Monitor events outside of a state reset loop. - * @private - */ - this._stateReset = false; - - /** - * @property {boolean} withinGame - true if the Pointer is over the game canvas, otherwise false. - */ - this.withinGame = false; - - /** - * @property {number} clientX - The horizontal coordinate of the Pointer within the application's client area at which the event occurred (as opposed to the coordinates within the page). - */ - this.clientX = -1; - - /** - * @property {number} clientY - The vertical coordinate of the Pointer within the application's client area at which the event occurred (as opposed to the coordinates within the page). - */ - this.clientY = -1; - - /** - * @property {number} pageX - The horizontal coordinate of the Pointer relative to whole document. - */ - this.pageX = -1; - - /** - * @property {number} pageY - The vertical coordinate of the Pointer relative to whole document. - */ - this.pageY = -1; - - /** - * @property {number} screenX - The horizontal coordinate of the Pointer relative to the screen. - */ - this.screenX = -1; - - /** - * @property {number} screenY - The vertical coordinate of the Pointer relative to the screen. - */ - this.screenY = -1; - - /** - * @property {number} rawMovementX - The horizontal raw relative movement of the Pointer in pixels since last event. - * @default - */ - this.rawMovementX = 0; - - /** - * @property {number} rawMovementY - The vertical raw relative movement of the Pointer in pixels since last event. - * @default - */ - this.rawMovementY = 0; - - /** - * @property {number} movementX - The horizontal processed relative movement of the Pointer in pixels since last event. - * @default - */ - this.movementX = 0; - - /** - * @property {number} movementY - The vertical processed relative movement of the Pointer in pixels since last event. - * @default - */ - this.movementY = 0; - - /** - * @property {number} x - The horizontal coordinate of the Pointer. This value is automatically scaled based on the game scale. - * @default - */ - this.x = -1; - - /** - * @property {number} y - The vertical coordinate of the Pointer. This value is automatically scaled based on the game scale. - * @default - */ - this.y = -1; - - /** - * @property {boolean} isMouse - If the Pointer is a mouse or pen / stylus this is true, otherwise false. - */ - this.isMouse = (id === 0); - - /** - * If the Pointer is touching the touchscreen, or *any* mouse or pen button is held down, isDown is set to true. - * If you need to check a specific mouse or pen button then use the button properties, i.e. Pointer.rightButton.isDown. - * @property {boolean} isDown - * @default - */ - this.isDown = false; - - /** - * If the Pointer is not touching the touchscreen, or *all* mouse or pen buttons are up, isUp is set to true. - * If you need to check a specific mouse or pen button then use the button properties, i.e. Pointer.rightButton.isUp. - * @property {boolean} isUp - * @default - */ - this.isUp = true; - - /** - * @property {number} timeDown - A timestamp representing when the Pointer first touched the touchscreen. - * @default - */ - this.timeDown = 0; - - /** - * @property {number} timeUp - A timestamp representing when the Pointer left the touchscreen. - * @default - */ - this.timeUp = 0; - - /** - * @property {number} previousTapTime - A timestamp representing when the Pointer was last tapped or clicked. - * @default - */ - this.previousTapTime = 0; - - /** - * @property {number} totalTouches - The total number of times this Pointer has been touched to the touchscreen. - * @default - */ - this.totalTouches = 0; - - /** - * @property {number} msSinceLastClick - The number of milliseconds since the last click or touch event. - * @default - */ - this.msSinceLastClick = Number.MAX_VALUE; - - /** - * @property {any} targetObject - The Game Object this Pointer is currently over / touching / dragging. - * @default - */ - this.targetObject = null; - - /** - * This array is erased and re-populated every time this Pointer is updated. It contains references to all - * of the Game Objects that were considered as being valid for processing by this Pointer, this frame. To be - * valid they must have suitable a `priorityID`, be Input enabled, visible and actually have the Pointer over - * them. You can check the contents of this array in events such as `onInputDown`, but beware it is reset - * every frame. - * @property {array} interactiveCandidates - * @default - */ - this.interactiveCandidates = []; - - /** - * @property {boolean} active - An active pointer is one that is currently pressed down on the display. A Mouse is always active. - * @default - */ - this.active = false; - - /** - * @property {boolean} dirty - A dirty pointer needs to re-poll any interactive objects it may have been over, regardless if it has moved or not. - * @default - */ - this.dirty = false; - - /** - * @property {Phaser.Point} position - A Phaser.Point object containing the current x/y values of the pointer on the display. - */ - this.position = new Phaser.Point(); - - /** - * @property {Phaser.Point} positionDown - A Phaser.Point object containing the x/y values of the pointer when it was last in a down state on the display. - */ - this.positionDown = new Phaser.Point(); - - /** - * @property {Phaser.Point} positionUp - A Phaser.Point object containing the x/y values of the pointer when it was last released. - */ - this.positionUp = new Phaser.Point(); - - /** - * A Phaser.Circle that is centered on the x/y coordinates of this pointer, useful for hit detection. - * The Circle size is 44px (Apples recommended "finger tip" size). - * @property {Phaser.Circle} circle - */ - this.circle = new Phaser.Circle(0, 0, 44); - - /** - * Click trampolines associated with this pointer. See `addClickTrampoline`. - * @property {object[]|null} _clickTrampolines - * @private - */ - this._clickTrampolines = null; - - /** - * When the Pointer has click trampolines the last target object is stored here - * so it can be used to check for validity of the trampoline in a post-Up/'stop'. - * @property {object} _trampolineTargetObject - * @private - */ - this._trampolineTargetObject = null; - -}; - -/** -* No buttons at all. -* @constant -* @type {number} -*/ -Phaser.Pointer.NO_BUTTON = 0; - -/** -* The Left Mouse button, or in PointerEvent devices a Touch contact or Pen contact. -* @constant -* @type {number} -*/ -Phaser.Pointer.LEFT_BUTTON = 1; - -/** -* The Right Mouse button, or in PointerEvent devices a Pen contact with a barrel button. -* @constant -* @type {number} -*/ -Phaser.Pointer.RIGHT_BUTTON = 2; - -/** -* The Middle Mouse button. -* @constant -* @type {number} -*/ -Phaser.Pointer.MIDDLE_BUTTON = 4; - -/** -* The X1 button. This is typically the mouse Back button, but is often reconfigured. -* On Linux (GTK) this is unsupported. On Windows if advanced pointer software (such as IntelliPoint) is installed this doesn't register. -* @constant -* @type {number} -*/ -Phaser.Pointer.BACK_BUTTON = 8; - -/** -* The X2 button. This is typically the mouse Forward button, but is often reconfigured. -* On Linux (GTK) this is unsupported. On Windows if advanced pointer software (such as IntelliPoint) is installed this doesn't register. -* @constant -* @type {number} -*/ -Phaser.Pointer.FORWARD_BUTTON = 16; - -/** -* The Eraser pen button on PointerEvent supported devices only. -* @constant -* @type {number} -*/ -Phaser.Pointer.ERASER_BUTTON = 32; - -Phaser.Pointer.prototype = { - - /** - * Resets the states of all the button booleans. - * - * @method Phaser.Pointer#resetButtons - * @protected - */ - resetButtons: function () { - - this.isDown = false; - this.isUp = true; - - if (this.isMouse) - { - this.leftButton.reset(); - this.middleButton.reset(); - this.rightButton.reset(); - this.backButton.reset(); - this.forwardButton.reset(); - this.eraserButton.reset(); - } - - }, - - /** - * Called by updateButtons. - * - * @method Phaser.Pointer#processButtonsDown - * @private - * @param {integer} buttons - The DOM event.buttons property. - * @param {MouseEvent} event - The DOM event. - */ - processButtonsDown: function (buttons, event) { - - // Note: These are bitwise checks, not booleans - - if (Phaser.Pointer.LEFT_BUTTON & buttons) - { - this.leftButton.start(event); - } - - if (Phaser.Pointer.RIGHT_BUTTON & buttons) - { - this.rightButton.start(event); - } - - if (Phaser.Pointer.MIDDLE_BUTTON & buttons) - { - this.middleButton.start(event); - } - - if (Phaser.Pointer.BACK_BUTTON & buttons) - { - this.backButton.start(event); - } - - if (Phaser.Pointer.FORWARD_BUTTON & buttons) - { - this.forwardButton.start(event); - } - - if (Phaser.Pointer.ERASER_BUTTON & buttons) - { - this.eraserButton.start(event); - } - - }, - - /** - * Called by updateButtons. - * - * @method Phaser.Pointer#processButtonsUp - * @private - * @param {integer} buttons - The DOM event.buttons property. - * @param {MouseEvent} event - The DOM event. - */ - processButtonsUp: function (button, event) { - - // Note: These are bitwise checks, not booleans - - if (button === Phaser.Mouse.LEFT_BUTTON) - { - this.leftButton.stop(event); - } - - if (button === Phaser.Mouse.RIGHT_BUTTON) - { - this.rightButton.stop(event); - } - - if (button === Phaser.Mouse.MIDDLE_BUTTON) - { - this.middleButton.stop(event); - } - - if (button === Phaser.Mouse.BACK_BUTTON) - { - this.backButton.stop(event); - } - - if (button === Phaser.Mouse.FORWARD_BUTTON) - { - this.forwardButton.stop(event); - } - - if (button === 5) - { - this.eraserButton.stop(event); - } - - }, - - /** - * Called when the event.buttons property changes from zero. - * Contains a button bitmask. - * - * @method Phaser.Pointer#updateButtons - * @protected - * @param {MouseEvent} event - The DOM event. - */ - updateButtons: function (event) { - - this.button = event.button; - - var down = (event.type.toLowerCase().substr(-4) === 'down'); - - if (event.buttons !== undefined) - { - if (down) - { - this.processButtonsDown(event.buttons, event); - } - else - { - this.processButtonsUp(event.button, event); - } - } - else - { - // No buttons property (like Safari on OSX when using a trackpad) - if (down) - { - this.leftButton.start(event); - } - else - { - this.leftButton.stop(event); - this.rightButton.stop(event); - } - } - - // On OS X (and other devices with trackpads) you have to press CTRL + the pad - // to initiate a right-click event, so we'll check for that here ONLY if - // event.buttons = 1 (i.e. they only have a 1 button mouse or trackpad) - - if (event.buttons === 1 && event.ctrlKey && this.leftButton.isDown) - { - this.leftButton.stop(event); - this.rightButton.start(event); - } - - this.isUp = true; - this.isDown = false; - - if (this.leftButton.isDown || this.rightButton.isDown || this.middleButton.isDown || this.backButton.isDown || this.forwardButton.isDown || this.eraserButton.isDown) - { - this.isUp = false; - this.isDown = true; - } - - }, - - /** - * Called when the Pointer is pressed onto the touchscreen. - * @method Phaser.Pointer#start - * @param {any} event - The DOM event from the browser. - */ - start: function (event) { - - var input = this.game.input; - - if (event['pointerId']) - { - this.pointerId = event.pointerId; - } - - this.identifier = event.identifier; - this.target = event.target; - - if (this.isMouse) - { - this.updateButtons(event); - } - else - { - this.isDown = true; - this.isUp = false; - } - - this.active = true; - this.withinGame = true; - this.dirty = false; - - this._history = []; - this._clickTrampolines = null; - this._trampolineTargetObject = null; - - // Work out how long it has been since the last click - this.msSinceLastClick = this.game.time.time - this.timeDown; - this.timeDown = this.game.time.time; - this._holdSent = false; - - // This sets the x/y and other local values - this.move(event, true); - - // x and y are the old values here? - this.positionDown.setTo(this.x, this.y); - - if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) - { - input.x = this.x; - input.y = this.y; - input.position.setTo(this.x, this.y); - input.onDown.dispatch(this, event); - input.resetSpeed(this.x, this.y); - } - - this._stateReset = false; - - this.totalTouches++; - - if (this.targetObject !== null) - { - this.targetObject._touchedHandler(this); - } - - return this; - - }, - - /** - * Called by the Input Manager. - * @method Phaser.Pointer#update - */ - update: function () { - - var input = this.game.input; - - if (this.active) - { - // Force a check? - if (this.dirty) - { - if (input.interactiveItems.total > 0) - { - this.processInteractiveObjects(false); - } - - this.dirty = false; - } - - if (this._holdSent === false && this.duration >= input.holdRate) - { - if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) - { - input.onHold.dispatch(this); - } - - this._holdSent = true; - } - - // Update the droppings history - if (input.recordPointerHistory && this.game.time.time >= this._nextDrop) - { - this._nextDrop = this.game.time.time + input.recordRate; - - this._history.push({ - x: this.position.x, - y: this.position.y - }); - - if (this._history.length > input.recordLimit) - { - this._history.shift(); - } - } - } - - }, - - /** - * Called when the Pointer is moved. - * - * @method Phaser.Pointer#move - * @param {MouseEvent|PointerEvent|TouchEvent} event - The event passed up from the input handler. - * @param {boolean} [fromClick=false] - Was this called from the click event? - */ - move: function (event, fromClick) { - - var input = this.game.input; - - if (input.pollLocked) - { - return; - } - - if (fromClick === undefined) { fromClick = false; } - - if (event.button !== undefined) - { - this.button = event.button; - } - - if (fromClick && this.isMouse) - { - this.updateButtons(event); - } - - this.clientX = event.clientX; - this.clientY = event.clientY; - - this.pageX = event.pageX; - this.pageY = event.pageY; - - this.screenX = event.screenX; - this.screenY = event.screenY; - - if (this.isMouse && input.mouse.locked && !fromClick) - { - this.rawMovementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0; - this.rawMovementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0; - - this.movementX += this.rawMovementX; - this.movementY += this.rawMovementY; - } - - this.x = (this.pageX - this.game.scale.offset.x) * input.scale.x; - this.y = (this.pageY - this.game.scale.offset.y) * input.scale.y; - - this.position.setTo(this.x, this.y); - this.circle.x = this.x; - this.circle.y = this.y; - - if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) - { - input.activePointer = this; - input.x = this.x; - input.y = this.y; - input.position.setTo(input.x, input.y); - input.circle.x = input.x; - input.circle.y = input.y; - } - - this.withinGame = this.game.scale.bounds.contains(this.pageX, this.pageY); - - // If the game is paused we don't process any target objects or callbacks - if (this.game.paused) - { - return this; - } - - var i = input.moveCallbacks.length; - - while (i--) - { - input.moveCallbacks[i].callback.call(input.moveCallbacks[i].context, this, this.x, this.y, fromClick); - } - - // Easy out if we're dragging something and it still exists - if (this.targetObject !== null && this.targetObject.isDragged === true) - { - if (this.targetObject.update(this) === false) - { - this.targetObject = null; - } - } - else if (input.interactiveItems.total > 0) - { - this.processInteractiveObjects(fromClick); - } - - return this; - - }, - - /** - * Process all interactive objects to find out which ones were updated in the recent Pointer move. - * - * @method Phaser.Pointer#processInteractiveObjects - * @protected - * @param {boolean} [fromClick=false] - Was this called from the click event? - * @return {boolean} True if this method processes an object (i.e. a Sprite becomes the Pointers currentTarget), otherwise false. - */ - processInteractiveObjects: function (fromClick) { - - // Work out which object is on the top - var highestRenderOrderID = 0; - var highestInputPriorityID = -1; - var candidateTarget = null; - - // First pass gets all objects that the pointer is over that DON'T use pixelPerfect checks and get the highest ID - // We know they'll be valid for input detection but not which is the top just yet - - var currentNode = this.game.input.interactiveItems.first; - - this.interactiveCandidates = []; - - while (currentNode) - { - // Reset checked status - currentNode.checked = false; - - if (currentNode.validForInput(highestInputPriorityID, highestRenderOrderID, false)) - { - // Flag it as checked so we don't re-scan it on the next phase - currentNode.checked = true; - - if ((fromClick && currentNode.checkPointerDown(this, true)) || - (!fromClick && currentNode.checkPointerOver(this, true))) - { - highestRenderOrderID = currentNode.sprite.renderOrderID; - highestInputPriorityID = currentNode.priorityID; - candidateTarget = currentNode; - this.interactiveCandidates.push(currentNode); - } - } - - currentNode = this.game.input.interactiveItems.next; - } - - // Then in the second sweep we process ONLY the pixel perfect ones that are checked and who have a higher ID - // because if their ID is lower anyway then we can just automatically discount them - // (A node that was previously checked did not request a pixel-perfect check.) - - currentNode = this.game.input.interactiveItems.first; - - while (currentNode) - { - if (!currentNode.checked && - currentNode.validForInput(highestInputPriorityID, highestRenderOrderID, true)) - { - if ((fromClick && currentNode.checkPointerDown(this, false)) || - (!fromClick && currentNode.checkPointerOver(this, false))) - { - highestRenderOrderID = currentNode.sprite.renderOrderID; - highestInputPriorityID = currentNode.priorityID; - candidateTarget = currentNode; - this.interactiveCandidates.push(currentNode); - } - } - - currentNode = this.game.input.interactiveItems.next; - } - - if (this.game.input.customCandidateHandler) - { - candidateTarget = this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext, this, this.interactiveCandidates, candidateTarget); - } - - this.swapTarget(candidateTarget, false); - - return (this.targetObject !== null); - - }, - - /** - * This will change the `Pointer.targetObject` object to be the one provided. - * - * This allows you to have fine-grained control over which object the Pointer is targeting. - * - * Note that even if you set a new Target here, it is still able to be replaced by any other valid - * target during the next Pointer update. - * - * @method Phaser.Pointer#swapTarget - * @param {Phaser.InputHandler} newTarget - The new target for this Pointer. Note this is an `InputHandler`, so don't pass a Sprite, instead pass `sprite.input` to it. - * @param {boolean} [silent=false] - If true the new target AND the old one will NOT dispatch their `onInputOver` or `onInputOut` events. - */ - swapTarget: function (newTarget, silent) { - - if (silent === undefined) { silent = false; } - - // Now we know the top-most item (if any) we can process it - if (newTarget === null) - { - // The pointer isn't currently over anything, check if we've got a lingering previous target - if (this.targetObject) - { - this.targetObject._pointerOutHandler(this, silent); - this.targetObject = null; - } - } - else - { - if (this.targetObject === null) - { - // And now set the new one - this.targetObject = newTarget; - newTarget._pointerOverHandler(this, silent); - } - else - { - // We've got a target from the last update - if (this.targetObject === newTarget) - { - // Same target as before, so update it - if (newTarget.update(this) === false) - { - this.targetObject = null; - } - } - else - { - // The target has changed, so tell the old one we've left it - this.targetObject._pointerOutHandler(this, silent); - - // And now set the new one - this.targetObject = newTarget; - this.targetObject._pointerOverHandler(this, silent); - } - } - } - - }, - - /** - * Called when the Pointer leaves the target area. - * - * @method Phaser.Pointer#leave - * @param {MouseEvent|PointerEvent|TouchEvent} event - The event passed up from the input handler. - */ - leave: function (event) { - - this.withinGame = false; - this.move(event, false); - - }, - - /** - * Called when the Pointer leaves the touchscreen. - * - * @method Phaser.Pointer#stop - * @param {MouseEvent|PointerEvent|TouchEvent} event - The event passed up from the input handler. - */ - stop: function (event) { - - var input = this.game.input; - - if (this._stateReset && this.withinGame) - { - event.preventDefault(); - return; - } - - this.timeUp = this.game.time.time; - - if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) - { - input.onUp.dispatch(this, event); - - // Was it a tap? - if (this.duration >= 0 && this.duration <= input.tapRate) - { - // Was it a double-tap? - if (this.timeUp - this.previousTapTime < input.doubleTapRate) - { - // Yes, let's dispatch the signal then with the 2nd parameter set to true - input.onTap.dispatch(this, true); - } - else - { - // Wasn't a double-tap, so dispatch a single tap signal - input.onTap.dispatch(this, false); - } - - this.previousTapTime = this.timeUp; - } - } - - if (this.isMouse) - { - this.updateButtons(event); - } - else - { - this.isDown = false; - this.isUp = true; - } - - // Mouse is always active - if (this.id > 0) - { - this.active = false; - } - - this.withinGame = this.game.scale.bounds.contains(event.pageX, event.pageY); - this.pointerId = null; - this.identifier = null; - - this.positionUp.setTo(this.x, this.y); - - if (this.isMouse === false) - { - input.currentPointers--; - } - - input.interactiveItems.callAll('_releasedHandler', this); - - if (this._clickTrampolines) - { - this._trampolineTargetObject = this.targetObject; - } - - this.targetObject = null; - - return this; - - }, - - /** - * The Pointer is considered justPressed if the time it was pressed onto the touchscreen or clicked is less than justPressedRate. - * Note that calling justPressed doesn't reset the pressed status of the Pointer, it will return `true` for as long as the duration is valid. - * If you wish to check if the Pointer was pressed down just once then see the Sprite.events.onInputDown event. - * @method Phaser.Pointer#justPressed - * @param {number} [duration] - The time to check against. If none given it will use InputManager.justPressedRate. - * @return {boolean} true if the Pointer was pressed down within the duration given. - */ - justPressed: function (duration) { - - duration = duration || this.game.input.justPressedRate; - - return (this.isDown === true && (this.timeDown + duration) > this.game.time.time); - - }, - - /** - * The Pointer is considered justReleased if the time it left the touchscreen is less than justReleasedRate. - * Note that calling justReleased doesn't reset the pressed status of the Pointer, it will return `true` for as long as the duration is valid. - * If you wish to check if the Pointer was released just once then see the Sprite.events.onInputUp event. - * @method Phaser.Pointer#justReleased - * @param {number} [duration] - The time to check against. If none given it will use InputManager.justReleasedRate. - * @return {boolean} true if the Pointer was released within the duration given. - */ - justReleased: function (duration) { - - duration = duration || this.game.input.justReleasedRate; - - return (this.isUp && (this.timeUp + duration) > this.game.time.time); - - }, - - /** - * Add a click trampoline to this pointer. - * - * A click trampoline is a callback that is run on the DOM 'click' event; this is primarily - * needed with certain browsers (ie. IE11) which restrict some actions like requestFullscreen - * to the DOM 'click' event and rejects it for 'pointer*' and 'mouse*' events. - * - * This is used internally by the ScaleManager; click trampoline usage is uncommon. - * Click trampolines can only be added to pointers that are currently down. - * - * @method Phaser.Pointer#addClickTrampoline - * @protected - * @param {string} name - The name of the trampoline; must be unique among active trampolines in this pointer. - * @param {function} callback - Callback to run/trampoline. - * @param {object} callbackContext - Context of the callback. - * @param {object[]|null} callbackArgs - Additional callback args, if any. Supplied as an array. - */ - addClickTrampoline: function (name, callback, callbackContext, callbackArgs) { - - if (!this.isDown) - { - return; - } - - var trampolines = (this._clickTrampolines = this._clickTrampolines || []); - - for (var i = 0; i < trampolines.length; i++) - { - if (trampolines[i].name === name) - { - trampolines.splice(i, 1); - break; - } - } - - trampolines.push({ - name: name, - targetObject: this.targetObject, - callback: callback, - callbackContext: callbackContext, - callbackArgs: callbackArgs - }); - - }, - - /** - * Fire all click trampolines for which the pointers are still referring to the registered object. - * @method Phaser.Pointer#processClickTrampolines - * @private - */ - processClickTrampolines: function () { - - var trampolines = this._clickTrampolines; - - if (!trampolines) - { - return; - } - - for (var i = 0; i < trampolines.length; i++) - { - var trampoline = trampolines[i]; - - if (trampoline.targetObject === this._trampolineTargetObject) - { - trampoline.callback.apply(trampoline.callbackContext, trampoline.callbackArgs); - } - } - - this._clickTrampolines = null; - this._trampolineTargetObject = null; - - }, - - /** - * Resets the Pointer properties. Called by InputManager.reset when you perform a State change. - * @method Phaser.Pointer#reset - */ - reset: function () { - - if (this.isMouse === false) - { - this.active = false; - } - - this.pointerId = null; - this.identifier = null; - this.dirty = false; - this.totalTouches = 0; - this._holdSent = false; - this._history.length = 0; - this._stateReset = true; - - this.resetButtons(); - - if (this.targetObject) - { - this.targetObject._releasedHandler(this); - } - - this.targetObject = null; - - }, - - /** - * Resets the movementX and movementY properties. Use in your update handler after retrieving the values. - * @method Phaser.Pointer#resetMovement - */ - resetMovement: function() { - - this.movementX = 0; - this.movementY = 0; - - } - -}; - -Phaser.Pointer.prototype.constructor = Phaser.Pointer; - -/** -* How long the Pointer has been depressed on the touchscreen or *any* of the mouse buttons have been held down. -* If not currently down it returns -1. -* If you need to test a specific mouse or pen button then access the buttons directly, i.e. `Pointer.rightButton.duration`. -* -* @name Phaser.Pointer#duration -* @property {number} duration -* @readonly -*/ -Object.defineProperty(Phaser.Pointer.prototype, "duration", { - - get: function () { - - if (this.isUp) - { - return -1; - } - - return this.game.time.time - this.timeDown; - - } - -}); - -/** -* Gets the X value of this Pointer in world coordinates based on the world camera. -* @name Phaser.Pointer#worldX -* @property {number} worldX - The X value of this Pointer in world coordinates based on the world camera. -* @readonly -*/ -Object.defineProperty(Phaser.Pointer.prototype, "worldX", { - - get: function () { - - return this.game.world.camera.x + this.x; - - } - -}); - -/** -* Gets the Y value of this Pointer in world coordinates based on the world camera. -* @name Phaser.Pointer#worldY -* @property {number} worldY - The Y value of this Pointer in world coordinates based on the world camera. -* @readonly -*/ -Object.defineProperty(Phaser.Pointer.prototype, "worldY", { - - get: function () { - - return this.game.world.camera.y + this.y; - - } - -}); - -/** -* Enumeration categorizing operational modes of pointers. -* -* PointerType values represent valid bitmasks. -* For example, a value representing both Mouse and Touch devices -* can be expressed as `PointerMode.CURSOR | PointerMode.CONTACT`. -* -* Values may be added for future mode categorizations. -* @class Phaser.PointerMode -*/ -Phaser.PointerMode = { - - /** - * A 'CURSOR' is a pointer with a *passive cursor* such as a mouse, touchpad, watcom stylus, or even TV-control arrow-pad. - * - * It has the property that a cursor is passively moved without activating the input. - * This currently corresponds with {@link Phaser.Pointer#isMouse} property. - * @constant - */ - CURSOR: 1 << 0, - - /** - * A 'CONTACT' pointer has an *active cursor* that only tracks movement when actived; notably this is a touch-style input. - * @constant - */ - CONTACT: 1 << 1 - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser.Touch handles touch events with your game. Note: Android 2.x only supports 1 touch event at once, no multi-touch. -* -* You should not normally access this class directly, but instead use a Phaser.Pointer object which normalises all game input for you. -* -* @class Phaser.Touch -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Touch = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * Touch events will only be processed if enabled. - * @property {boolean} enabled - * @default - */ - this.enabled = true; - - /** - * An array of callbacks that will be fired every time a native touch start or touch end event is received from the browser. - * This is used internally to handle audio and video unlocking on mobile devices. - * To add a callback to this array please use `Touch.addTouchLockCallback`. - * @property {array} touchLockCallbacks - * @protected - */ - this.touchLockCallbacks = []; - - /** - * @property {object} callbackContext - The context under which callbacks are called. - */ - this.callbackContext = this.game; - - /** - * @property {function} touchStartCallback - A callback that can be fired on a touchStart event. - */ - this.touchStartCallback = null; - - /** - * @property {function} touchMoveCallback - A callback that can be fired on a touchMove event. - */ - this.touchMoveCallback = null; - - /** - * @property {function} touchEndCallback - A callback that can be fired on a touchEnd event. - */ - this.touchEndCallback = null; - - /** - * @property {function} touchEnterCallback - A callback that can be fired on a touchEnter event. - */ - this.touchEnterCallback = null; - - /** - * @property {function} touchLeaveCallback - A callback that can be fired on a touchLeave event. - */ - this.touchLeaveCallback = null; - - /** - * @property {function} touchCancelCallback - A callback that can be fired on a touchCancel event. - */ - this.touchCancelCallback = null; - - /** - * @property {boolean} preventDefault - If true the TouchEvent will have prevent.default called on it. - * @default - */ - this.preventDefault = true; - - /** - * @property {TouchEvent} event - The browser touch DOM event. Will be set to null if no touch event has ever been received. - * @default - */ - this.event = null; - - /** - * @property {function} _onTouchStart - Internal event handler reference. - * @private - */ - this._onTouchStart = null; - - /** - * @property {function} _onTouchMove - Internal event handler reference. - * @private - */ - this._onTouchMove = null; - - /** - * @property {function} _onTouchEnd - Internal event handler reference. - * @private - */ - this._onTouchEnd = null; - - /** - * @property {function} _onTouchEnter - Internal event handler reference. - * @private - */ - this._onTouchEnter = null; - - /** - * @property {function} _onTouchLeave - Internal event handler reference. - * @private - */ - this._onTouchLeave = null; - - /** - * @property {function} _onTouchCancel - Internal event handler reference. - * @private - */ - this._onTouchCancel = null; - - /** - * @property {function} _onTouchMove - Internal event handler reference. - * @private - */ - this._onTouchMove = null; - -}; - -Phaser.Touch.prototype = { - - /** - * Starts the event listeners running. - * @method Phaser.Touch#start - */ - start: function () { - - if (this._onTouchStart !== null) - { - // Avoid setting multiple listeners - return; - } - - var _this = this; - - if (this.game.device.touch) - { - this._onTouchStart = function (event) { - return _this.onTouchStart(event); - }; - - this._onTouchMove = function (event) { - return _this.onTouchMove(event); - }; - - this._onTouchEnd = function (event) { - return _this.onTouchEnd(event); - }; - - this._onTouchEnter = function (event) { - return _this.onTouchEnter(event); - }; - - this._onTouchLeave = function (event) { - return _this.onTouchLeave(event); - }; - - this._onTouchCancel = function (event) { - return _this.onTouchCancel(event); - }; - - this.game.canvas.addEventListener('touchstart', this._onTouchStart, false); - this.game.canvas.addEventListener('touchmove', this._onTouchMove, false); - this.game.canvas.addEventListener('touchend', this._onTouchEnd, false); - this.game.canvas.addEventListener('touchcancel', this._onTouchCancel, false); - - if (!this.game.device.cocoonJS) - { - this.game.canvas.addEventListener('touchenter', this._onTouchEnter, false); - this.game.canvas.addEventListener('touchleave', this._onTouchLeave, false); - } - } - - }, - - /** - * Consumes all touchmove events on the document (only enable this if you know you need it!). - * @method Phaser.Touch#consumeTouchMove - */ - consumeDocumentTouches: function () { - - this._documentTouchMove = function (event) { - event.preventDefault(); - }; - - document.addEventListener('touchmove', this._documentTouchMove, false); - - }, - - /** - * Adds a callback that is fired when a browser touchstart or touchend event is received. - * - * This is used internally to handle audio and video unlocking on mobile devices. - * - * If the callback returns 'true' then the callback is automatically deleted once invoked. - * - * The callback is added to the Phaser.Touch.touchLockCallbacks array and should be removed with Phaser.Touch.removeTouchLockCallback. - * - * @method Phaser.Touch#addTouchLockCallback - * @param {function} callback - The callback that will be called when a touchstart event is received. - * @param {object} context - The context in which the callback will be called. - * @param {boolean} [onEnd=false] - Will the callback fire on a touchstart (default) or touchend event? - */ - addTouchLockCallback: function (callback, context, onEnd) { - - if (onEnd === undefined) { onEnd = false; } - - this.touchLockCallbacks.push({ callback: callback, context: context, onEnd: onEnd }); - - }, - - /** - * Removes the callback at the defined index from the Phaser.Touch.touchLockCallbacks array - * - * @method Phaser.Touch#removeTouchLockCallback - * @param {function} callback - The callback to be removed. - * @param {object} context - The context in which the callback exists. - * @return {boolean} True if the callback was deleted, otherwise false. - */ - removeTouchLockCallback: function (callback, context) { - - var i = this.touchLockCallbacks.length; - - while (i--) - { - if (this.touchLockCallbacks[i].callback === callback && this.touchLockCallbacks[i].context === context) - { - this.touchLockCallbacks.splice(i, 1); - return true; - } - } - - return false; - - }, - - /** - * The internal method that handles the touchstart event from the browser. - * @method Phaser.Touch#onTouchStart - * @param {TouchEvent} event - The native event from the browser. This gets stored in Touch.event. - */ - onTouchStart: function (event) { - - var i = this.touchLockCallbacks.length; - - while (i--) - { - var cb = this.touchLockCallbacks[i]; - - if (!cb.onEnd && cb.callback.call(cb.context, this, event)) - { - this.touchLockCallbacks.splice(i, 1); - } - } - - this.event = event; - - if (!this.game.input.enabled || !this.enabled) - { - return; - } - - if (this.touchStartCallback) - { - this.touchStartCallback.call(this.callbackContext, event); - } - - if (this.preventDefault) - { - event.preventDefault(); - } - - // event.targetTouches = list of all touches on the TARGET ELEMENT (i.e. game dom element) - // event.touches = list of all touches on the ENTIRE DOCUMENT, not just the target element - // event.changedTouches = the touches that CHANGED in this event, not the total number of them - for (var i = 0; i < event.changedTouches.length; i++) - { - this.game.input.startPointer(event.changedTouches[i]); - } - - }, - - /** - * Touch cancel - touches that were disrupted (perhaps by moving into a plugin or browser chrome). - * Occurs for example on iOS when you put down 4 fingers and the app selector UI appears. - * @method Phaser.Touch#onTouchCancel - * @param {TouchEvent} event - The native event from the browser. This gets stored in Touch.event. - */ - onTouchCancel: function (event) { - - this.event = event; - - if (this.touchCancelCallback) - { - this.touchCancelCallback.call(this.callbackContext, event); - } - - if (!this.game.input.enabled || !this.enabled) - { - return; - } - - if (this.preventDefault) - { - event.preventDefault(); - } - - // Touch cancel - touches that were disrupted (perhaps by moving into a plugin or browser chrome) - // http://www.w3.org/TR/touch-events/#dfn-touchcancel - for (var i = 0; i < event.changedTouches.length; i++) - { - this.game.input.stopPointer(event.changedTouches[i]); - } - - }, - - /** - * For touch enter and leave its a list of the touch points that have entered or left the target. - * Doesn't appear to be supported by most browsers on a canvas element yet. - * @method Phaser.Touch#onTouchEnter - * @param {TouchEvent} event - The native event from the browser. This gets stored in Touch.event. - */ - onTouchEnter: function (event) { - - this.event = event; - - if (this.touchEnterCallback) - { - this.touchEnterCallback.call(this.callbackContext, event); - } - - if (!this.game.input.enabled || !this.enabled) - { - return; - } - - if (this.preventDefault) - { - event.preventDefault(); - } - - }, - - /** - * For touch enter and leave its a list of the touch points that have entered or left the target. - * Doesn't appear to be supported by most browsers on a canvas element yet. - * @method Phaser.Touch#onTouchLeave - * @param {TouchEvent} event - The native event from the browser. This gets stored in Touch.event. - */ - onTouchLeave: function (event) { - - this.event = event; - - if (this.touchLeaveCallback) - { - this.touchLeaveCallback.call(this.callbackContext, event); - } - - if (this.preventDefault) - { - event.preventDefault(); - } - - }, - - /** - * The handler for the touchmove events. - * @method Phaser.Touch#onTouchMove - * @param {TouchEvent} event - The native event from the browser. This gets stored in Touch.event. - */ - onTouchMove: function (event) { - - this.event = event; - - if (this.touchMoveCallback) - { - this.touchMoveCallback.call(this.callbackContext, event); - } - - if (this.preventDefault) - { - event.preventDefault(); - } - - for (var i = 0; i < event.changedTouches.length; i++) - { - this.game.input.updatePointer(event.changedTouches[i]); - } - - }, - - /** - * The handler for the touchend events. - * @method Phaser.Touch#onTouchEnd - * @param {TouchEvent} event - The native event from the browser. This gets stored in Touch.event. - */ - onTouchEnd: function (event) { - - var i = this.touchLockCallbacks.length; - - while (i--) - { - var cb = this.touchLockCallbacks[i]; - - if (cb.onEnd && cb.callback.call(cb.context, this, event)) - { - this.touchLockCallbacks.splice(i, 1); - } - } - - this.event = event; - - if (this.touchEndCallback) - { - this.touchEndCallback.call(this.callbackContext, event); - } - - if (this.preventDefault) - { - event.preventDefault(); - } - - // For touch end its a list of the touch points that have been removed from the surface - // https://developer.mozilla.org/en-US/docs/DOM/TouchList - // event.changedTouches = the touches that CHANGED in this event, not the total number of them - for (var i = 0; i < event.changedTouches.length; i++) - { - this.game.input.stopPointer(event.changedTouches[i]); - } - - }, - - /** - * Stop the event listeners. - * @method Phaser.Touch#stop - */ - stop: function () { - - if (this.game.device.touch) - { - this.game.canvas.removeEventListener('touchstart', this._onTouchStart); - this.game.canvas.removeEventListener('touchmove', this._onTouchMove); - this.game.canvas.removeEventListener('touchend', this._onTouchEnd); - this.game.canvas.removeEventListener('touchenter', this._onTouchEnter); - this.game.canvas.removeEventListener('touchleave', this._onTouchLeave); - this.game.canvas.removeEventListener('touchcancel', this._onTouchCancel); - } - - } - -}; - -Phaser.Touch.prototype.constructor = Phaser.Touch; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Input Handler is bound to a specific Sprite and is responsible for managing all Input events on that Sprite. -* -* @class Phaser.InputHandler -* @constructor -* @param {Phaser.Sprite} sprite - The Sprite object to which this Input Handler belongs. -*/ -Phaser.InputHandler = function (sprite) { - - /** - * @property {Phaser.Sprite} sprite - The Sprite object to which this Input Handler belongs. - */ - this.sprite = sprite; - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = sprite.game; - - /** - * @property {boolean} enabled - If enabled the Input Handler will process input requests and monitor pointer activity. - * @default - */ - this.enabled = false; - - /** - * @property {boolean} checked - A disposable flag used by the Pointer class when performing priority checks. - * @protected - */ - this.checked = false; - - /** - * The priorityID is used to determine which game objects should get priority when input events occur. For example if you have - * several Sprites that overlap, by default the one at the top of the display list is given priority for input events. You can - * stop this from happening by controlling the priorityID value. The higher the value, the more important they are considered to the Input events. - * @property {number} priorityID - * @default - */ - this.priorityID = 0; - - /** - * @property {boolean} useHandCursor - On a desktop browser you can set the 'hand' cursor to appear when moving over the Sprite. - * @default - */ - this.useHandCursor = false; - - /** - * @property {boolean} _setHandCursor - Did this Sprite trigger the hand cursor? - * @private - */ - this._setHandCursor = false; - - /** - * @property {boolean} isDragged - true if the Sprite is being currently dragged. - * @default - */ - this.isDragged = false; - - /** - * @property {boolean} allowHorizontalDrag - Controls if the Sprite is allowed to be dragged horizontally. - * @default - */ - this.allowHorizontalDrag = true; - - /** - * @property {boolean} allowVerticalDrag - Controls if the Sprite is allowed to be dragged vertically. - * @default - */ - this.allowVerticalDrag = true; - - /** - * @property {boolean} bringToTop - If true when this Sprite is clicked or dragged it will automatically be bought to the top of the Group it is within. - * @default - */ - this.bringToTop = false; - - /** - * @property {Phaser.Point} snapOffset - A Point object that contains by how far the Sprite snap is offset. - * @default - */ - this.snapOffset = null; - - /** - * @property {boolean} snapOnDrag - When the Sprite is dragged this controls if the center of the Sprite will snap to the pointer on drag or not. - * @default - */ - this.snapOnDrag = false; - - /** - * @property {boolean} snapOnRelease - When the Sprite is dragged this controls if the Sprite will be snapped on release. - * @default - */ - this.snapOnRelease = false; - - /** - * @property {number} snapX - When a Sprite has snapping enabled this holds the width of the snap grid. - * @default - */ - this.snapX = 0; - - /** - * @property {number} snapY - When a Sprite has snapping enabled this holds the height of the snap grid. - * @default - */ - this.snapY = 0; - - /** - * @property {number} snapOffsetX - This defines the top-left X coordinate of the snap grid. - * @default - */ - this.snapOffsetX = 0; - - /** - * @property {number} snapOffsetY - This defines the top-left Y coordinate of the snap grid.. - * @default - */ - this.snapOffsetY = 0; - - /** - * Set to true to use pixel perfect hit detection when checking if the pointer is over this Sprite. - * The x/y coordinates of the pointer are tested against the image in combination with the InputHandler.pixelPerfectAlpha value. - * This feature only works for display objects with image based textures such as Sprites. It won't work on BitmapText or Rope. - * Warning: This is expensive, especially on mobile (where it's not even needed!) so only enable if required. Also see the less-expensive InputHandler.pixelPerfectClick. - * @property {boolean} pixelPerfectOver - Use a pixel perfect check when testing for pointer over. - * @default - */ - this.pixelPerfectOver = false; - - /** - * Set to true to use pixel perfect hit detection when checking if the pointer is over this Sprite when it's clicked or touched. - * The x/y coordinates of the pointer are tested against the image in combination with the InputHandler.pixelPerfectAlpha value. - * This feature only works for display objects with image based textures such as Sprites. It won't work on BitmapText or Rope. - * Warning: This is expensive so only enable if you really need it. - * @property {boolean} pixelPerfectClick - Use a pixel perfect check when testing for clicks or touches on the Sprite. - * @default - */ - this.pixelPerfectClick = false; - - /** - * @property {number} pixelPerfectAlpha - The alpha tolerance threshold. If the alpha value of the pixel matches or is above this value, it's considered a hit. - * @default - */ - this.pixelPerfectAlpha = 255; - - /** - * @property {boolean} draggable - Is this sprite allowed to be dragged by the mouse? true = yes, false = no - * @default - */ - this.draggable = false; - - /** - * @property {Phaser.Rectangle} boundsRect - A region of the game world within which the sprite is restricted during drag. - * @default - */ - this.boundsRect = null; - - /** - * @property {Phaser.Sprite} boundsSprite - A Sprite the bounds of which this sprite is restricted during drag. - * @default - */ - this.boundsSprite = null; - - /** - * @property {boolean} scaleLayer - EXPERIMENTAL: Please do not use this property unless you know what it does. Likely to change in the future. - */ - this.scaleLayer = false; - - /** - * @property {Phaser.Point} dragOffset - The offset from the Sprites position that dragging takes place from. - */ - this.dragOffset = new Phaser.Point(); - - /** - * @property {boolean} dragFromCenter - Is the Sprite dragged from its center, or the point at which the Pointer was pressed down upon it? - */ - this.dragFromCenter = false; - - /** - * @property {boolean} dragStopBlocksInputUp - If enabled, when the Sprite stops being dragged, it will only dispatch the `onDragStop` event, and not the `onInputUp` event. If set to `false` it will dispatch both events. - */ - this.dragStopBlocksInputUp = false; - - /** - * @property {Phaser.Point} dragStartPoint - The Point from which the most recent drag started from. Useful if you need to return an object to its starting position. - */ - this.dragStartPoint = new Phaser.Point(); - - /** - * @property {integer} dragDistanceThreshold - The distance, in pixels, the pointer has to move while being held down, before the Sprite thinks it is being dragged. - */ - this.dragDistanceThreshold = 0; - - /** - * @property {integer} dragTimeThreshold - The amount of time, in ms, the pointer has to be held down over the Sprite before it thinks it is being dragged. - */ - this.dragTimeThreshold = 0; - - /** - * @property {Phaser.Point} downPoint - A Point object containing the coordinates of the Pointer when it was first pressed down onto this Sprite. - */ - this.downPoint = new Phaser.Point(); - - /** - * @property {Phaser.Point} snapPoint - If the sprite is set to snap while dragging this holds the point of the most recent 'snap' event. - */ - this.snapPoint = new Phaser.Point(); - - /** - * @property {Phaser.Point} _dragPoint - Internal cache var. - * @private - */ - this._dragPoint = new Phaser.Point(); - - /** - * @property {boolean} _dragPhase - Internal cache var. - * @private - */ - this._dragPhase = false; - - /** - * @property {boolean} _pendingDrag - Internal cache var. - * @private - */ - this._pendingDrag = false; - - /** - * @property {boolean} _dragTimePass - Internal cache var. - * @private - */ - this._dragTimePass = false; - - /** - * @property {boolean} _dragDistancePass - Internal cache var. - * @private - */ - this._dragDistancePass = false; - - /** - * @property {boolean} _wasEnabled - Internal cache var. - * @private - */ - this._wasEnabled = false; - - /** - * @property {Phaser.Point} _tempPoint - Internal cache var. - * @private - */ - this._tempPoint = new Phaser.Point(); - - /** - * @property {array} _pointerData - Internal cache var. - * @private - */ - this._pointerData = []; - - this._pointerData.push({ - id: 0, - x: 0, - y: 0, - camX: 0, - camY: 0, - isDown: false, - isUp: false, - isOver: false, - isOut: false, - timeOver: 0, - timeOut: 0, - timeDown: 0, - timeUp: 0, - downDuration: 0, - isDragged: false - }); - -}; - -Phaser.InputHandler.prototype = { - - /** - * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. - * - * @method Phaser.InputHandler#start - * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) - * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. - */ - start: function (priority, useHandCursor) { - - priority = priority || 0; - if (useHandCursor === undefined) { useHandCursor = false; } - - // Turning on - if (this.enabled === false) - { - // Register, etc - this.game.input.interactiveItems.add(this); - this.useHandCursor = useHandCursor; - this.priorityID = priority; - - for (var i = 0; i < 10; i++) - { - this._pointerData[i] = { - id: i, - x: 0, - y: 0, - isDown: false, - isUp: false, - isOver: false, - isOut: false, - timeOver: 0, - timeOut: 0, - timeDown: 0, - timeUp: 0, - downDuration: 0, - isDragged: false - }; - } - - this.snapOffset = new Phaser.Point(); - this.enabled = true; - this._wasEnabled = true; - - } - - this.sprite.events.onAddedToGroup.add(this.addedToGroup, this); - this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup, this); - - this.flagged = false; - - return this.sprite; - - }, - - /** - * Handles when the parent Sprite is added to a new Group. - * - * @method Phaser.InputHandler#addedToGroup - * @private - */ - addedToGroup: function () { - - if (this._dragPhase) - { - return; - } - - if (this._wasEnabled && !this.enabled) - { - this.start(); - } - - }, - - /** - * Handles when the parent Sprite is removed from a Group. - * - * @method Phaser.InputHandler#removedFromGroup - * @private - */ - removedFromGroup: function () { - - if (this._dragPhase) - { - return; - } - - if (this.enabled) - { - this._wasEnabled = true; - this.stop(); - } - else - { - this._wasEnabled = false; - } - - }, - - /** - * Resets the Input Handler and disables it. - * @method Phaser.InputHandler#reset - */ - reset: function () { - - this.enabled = false; - this.flagged = false; - - for (var i = 0; i < 10; i++) - { - this._pointerData[i] = { - id: i, - x: 0, - y: 0, - isDown: false, - isUp: false, - isOver: false, - isOut: false, - timeOver: 0, - timeOut: 0, - timeDown: 0, - timeUp: 0, - downDuration: 0, - isDragged: false - }; - } - }, - - /** - * Stops the Input Handler from running. - * @method Phaser.InputHandler#stop - */ - stop: function () { - - // Turning off - if (this.enabled === false) - { - return; - } - else - { - // De-register, etc - this.enabled = false; - this.game.input.interactiveItems.remove(this); - } - - }, - - /** - * Clean up memory. - * @method Phaser.InputHandler#destroy - */ - destroy: function () { - - if (this.sprite) - { - if (this._setHandCursor) - { - this.game.canvas.style.cursor = "default"; - this._setHandCursor = false; - } - - this.enabled = false; - - this.game.input.interactiveItems.remove(this); - - this._pointerData.length = 0; - this.boundsRect = null; - this.boundsSprite = null; - this.sprite = null; - } - - }, - - /** - * Checks if the object this InputHandler is bound to is valid for consideration in the Pointer move event. - * This is called by Phaser.Pointer and shouldn't typically be called directly. - * - * @method Phaser.InputHandler#validForInput - * @protected - * @param {number} highestID - The highest ID currently processed by the Pointer. - * @param {number} highestRenderID - The highest Render Order ID currently processed by the Pointer. - * @param {boolean} [includePixelPerfect=true] - If this object has `pixelPerfectClick` or `pixelPerfectOver` set should it be considered as valid? - * @return {boolean} True if the object this InputHandler is bound to should be considered as valid for input detection. - */ - validForInput: function (highestID, highestRenderID, includePixelPerfect) { - - if (includePixelPerfect === undefined) { includePixelPerfect = true; } - - if (!this.enabled || - this.sprite.scale.x === 0 || - this.sprite.scale.y === 0 || - this.priorityID < this.game.input.minPriorityID || - (this.sprite.parent && this.sprite.parent.ignoreChildInput)) - { - return false; - } - - // If we're trying to specifically IGNORE pixel perfect objects, then set includePixelPerfect to false and skip it - if (!includePixelPerfect && (this.pixelPerfectClick || this.pixelPerfectOver)) - { - return false; - } - - if (this.priorityID > highestID || (this.priorityID === highestID && this.sprite.renderOrderID > highestRenderID)) - { - return true; - } - - return false; - - }, - - /** - * Is this object using pixel perfect checking? - * - * @method Phaser.InputHandler#isPixelPerfect - * @return {boolean} True if the this InputHandler has either `pixelPerfectClick` or `pixelPerfectOver` set to `true`. - */ - isPixelPerfect: function () { - - return (this.pixelPerfectClick || this.pixelPerfectOver); - - }, - - /** - * The x coordinate of the Input pointer, relative to the top-left of the parent Sprite. - * This value is only set when the pointer is over this Sprite. - * - * @method Phaser.InputHandler#pointerX - * @param {integer} [pointerId=0] - * @return {number} The x coordinate of the Input pointer. - */ - pointerX: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].x; - - }, - - /** - * The y coordinate of the Input pointer, relative to the top-left of the parent Sprite - * This value is only set when the pointer is over this Sprite. - * - * @method Phaser.InputHandler#pointerY - * @param {integer} [pointerId=0] - * @return {number} The y coordinate of the Input pointer. - */ - pointerY: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].y; - - }, - - /** - * If the Pointer is down this returns true. - * This *only* checks if the Pointer is down, not if it's down over any specific Sprite. - * - * @method Phaser.InputHandler#pointerDown - * @param {integer} [pointerId=0] - * @return {boolean} - True if the given pointer is down, otherwise false. - */ - pointerDown: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].isDown; - - }, - - /** - * If the Pointer is up this returns true. - * This *only* checks if the Pointer is up, not if it's up over any specific Sprite. - * - * @method Phaser.InputHandler#pointerUp - * @param {integer} [pointerId=0] - * @return {boolean} - True if the given pointer is up, otherwise false. - */ - pointerUp: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].isUp; - - }, - - /** - * A timestamp representing when the Pointer first touched the touchscreen. - * - * @method Phaser.InputHandler#pointerTimeDown - * @param {integer} [pointerId=(check all)] - * @return {number} - */ - pointerTimeDown: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].timeDown; - - }, - - /** - * A timestamp representing when the Pointer left the touchscreen. - * - * @method Phaser.InputHandler#pointerTimeUp - * @param {integer} [pointerId=0] - * @return {number} - */ - pointerTimeUp: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].timeUp; - - }, - - /** - * Is the Pointer over this Sprite? - * - * @method Phaser.InputHandler#pointerOver - * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. - * @return {boolean} - True if the given pointer (if a index was given, or any pointer if not) is over this object. - */ - pointerOver: function (pointerId) { - - if (!this.enabled) - { - return false; - } - - if (pointerId === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOver) - { - return true; - } - } - - return false; - } - else - { - return this._pointerData[pointerId].isOver; - } - - }, - - /** - * Is the Pointer outside of this Sprite? - * - * @method Phaser.InputHandler#pointerOut - * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. - * @return {boolean} True if the given pointer (if a index was given, or any pointer if not) is out of this object. - */ - pointerOut: function (pointerId) { - - if (!this.enabled) - { - return false; - } - - if (pointerId === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOut) - { - return true; - } - } - } - else - { - return this._pointerData[pointerId].isOut; - } - - }, - - /** - * A timestamp representing when the Pointer first touched the touchscreen. - * - * @method Phaser.InputHandler#pointerTimeOver - * @param {integer} [pointerId=0] - * @return {number} - */ - pointerTimeOver: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].timeOver; - - }, - - /** - * A timestamp representing when the Pointer left the touchscreen. - * - * @method Phaser.InputHandler#pointerTimeOut - * @param {integer} [pointerId=0] - * @return {number} - */ - pointerTimeOut: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].timeOut; - - }, - - /** - * Is this sprite being dragged by the mouse or not? - * - * @method Phaser.InputHandler#pointerDragged - * @param {integer} [pointerId=0] - * @return {boolean} True if the pointer is dragging an object, otherwise false. - */ - pointerDragged: function (pointerId) { - - pointerId = pointerId || 0; - - return this._pointerData[pointerId].isDragged; - - }, - - /** - * Checks if the given pointer is both down and over the Sprite this InputHandler belongs to. - * Use the `fastTest` flag is to quickly check just the bounding hit area even if `InputHandler.pixelPerfectOver` is `true`. - * - * @method Phaser.InputHandler#checkPointerDown - * @param {Phaser.Pointer} pointer - * @param {boolean} [fastTest=false] - Force a simple hit area check even if `pixelPerfectOver` is true for this object? - * @return {boolean} True if the pointer is down, otherwise false. - */ - checkPointerDown: function (pointer, fastTest) { - - if (!pointer.isDown || - !this.enabled || - !this.sprite || - !this.sprite.parent || - !this.sprite.visible || - !this.sprite.parent.visible || - this.sprite.worldScale.x === 0 || - this.sprite.worldScale.y === 0) - { - return false; - } - - // Need to pass it a temp point, in case we need it again for the pixel check - if (this.game.input.hitTest(this.sprite, pointer, this._tempPoint)) - { - if (fastTest === undefined) - { - fastTest = false; - } - - if (!fastTest && this.pixelPerfectClick) - { - return this.checkPixel(this._tempPoint.x, this._tempPoint.y); - } - else - { - return true; - } - } - - return false; - - }, - - /** - * Checks if the given pointer is over the Sprite this InputHandler belongs to. - * Use the `fastTest` flag is to quickly check just the bounding hit area even if `InputHandler.pixelPerfectOver` is `true`. - * - * @method Phaser.InputHandler#checkPointerOver - * @param {Phaser.Pointer} pointer - * @param {boolean} [fastTest=false] - Force a simple hit area check even if `pixelPerfectOver` is true for this object? - * @return {boolean} - */ - checkPointerOver: function (pointer, fastTest) { - - if (!this.enabled || - !this.sprite || - !this.sprite.parent || - !this.sprite.visible || - !this.sprite.parent.visible || - this.sprite.worldScale.x === 0 || - this.sprite.worldScale.y === 0) - { - return false; - } - - // Need to pass it a temp point, in case we need it again for the pixel check - if (this.game.input.hitTest(this.sprite, pointer, this._tempPoint)) - { - if (fastTest === undefined) - { - fastTest = false; - } - - if (!fastTest && this.pixelPerfectOver) - { - return this.checkPixel(this._tempPoint.x, this._tempPoint.y); - } - else - { - return true; - } - } - - return false; - - }, - - /** - * Runs a pixel perfect check against the given x/y coordinates of the Sprite this InputHandler is bound to. - * It compares the alpha value of the pixel and if >= InputHandler.pixelPerfectAlpha it returns true. - * - * @method Phaser.InputHandler#checkPixel - * @param {number} x - The x coordinate to check. - * @param {number} y - The y coordinate to check. - * @param {Phaser.Pointer} [pointer] - The pointer to get the x/y coordinate from if not passed as the first two parameters. - * @return {boolean} true if there is the alpha of the pixel is >= InputHandler.pixelPerfectAlpha - */ - checkPixel: function (x, y, pointer) { - - // Grab a pixel from our image into the hitCanvas and then test it - if (this.sprite.texture.baseTexture.source) - { - if (x === null && y === null) - { - // Use the pointer parameter - this.game.input.getLocalPosition(this.sprite, pointer, this._tempPoint); - - var x = this._tempPoint.x; - var y = this._tempPoint.y; - } - - if (this.sprite.anchor.x !== 0) - { - x -= -this.sprite.texture.frame.width * this.sprite.anchor.x; - } - - if (this.sprite.anchor.y !== 0) - { - y -= -this.sprite.texture.frame.height * this.sprite.anchor.y; - } - - x += this.sprite.texture.frame.x; - y += this.sprite.texture.frame.y; - - if (this.sprite.texture.trim) - { - x -= this.sprite.texture.trim.x; - y -= this.sprite.texture.trim.y; - - // If the coordinates are outside the trim area we return false immediately, to save doing a draw call - if (x < this.sprite.texture.crop.x || x > this.sprite.texture.crop.right || y < this.sprite.texture.crop.y || y > this.sprite.texture.crop.bottom) - { - this._dx = x; - this._dy = y; - return false; - } - } - - this._dx = x; - this._dy = y; - - this.game.input.hitContext.clearRect(0, 0, 1, 1); - this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source, x, y, 1, 1, 0, 0, 1, 1); - - var rgb = this.game.input.hitContext.getImageData(0, 0, 1, 1); - - if (rgb.data[3] >= this.pixelPerfectAlpha) - { - return true; - } - } - - return false; - - }, - - /** - * Internal Update method. This is called automatically and handles the Pointer - * and drag update loops. - * - * @method Phaser.InputHandler#update - * @protected - * @param {Phaser.Pointer} pointer - * @return {boolean} True if the pointer is still active, otherwise false. - */ - update: function (pointer) { - - if (this.sprite === null || this.sprite.parent === undefined) - { - // Abort. We've been destroyed. - return; - } - - if (!this.enabled || !this.sprite.visible || !this.sprite.parent.visible) - { - this._pointerOutHandler(pointer); - return false; - } - - if (this._pendingDrag) - { - if (!this._dragDistancePass) - { - this._dragDistancePass = (Phaser.Math.distance(pointer.x, pointer.y, this.downPoint.x, this.downPoint.y) >= this.dragDistanceThreshold); - } - - if (this._dragDistancePass && this._dragTimePass) - { - this.startDrag(pointer); - } - - return true; - } - else if (this.draggable && this._draggedPointerID === pointer.id) - { - return this.updateDrag(pointer, false); - } - else if (this._pointerData[pointer.id].isOver) - { - if (this.checkPointerOver(pointer)) - { - this._pointerData[pointer.id].x = pointer.x - this.sprite.x; - this._pointerData[pointer.id].y = pointer.y - this.sprite.y; - return true; - } - else - { - this._pointerOutHandler(pointer); - return false; - } - } - }, - - /** - * Internal method handling the pointer over event. - * - * @method Phaser.InputHandler#_pointerOverHandler - * @private - * @param {Phaser.Pointer} pointer - The pointer that triggered the event - * @param {boolean} [silent=false] - If silent is `true` then this method will not dispatch any Signals from the parent Sprite. - */ - _pointerOverHandler: function (pointer, silent) { - - if (this.sprite === null) - { - // Abort. We've been destroyed. - return; - } - - var data = this._pointerData[pointer.id]; - - if (data.isOver === false || pointer.dirty) - { - var sendEvent = (data.isOver === false); - - data.isOver = true; - data.isOut = false; - data.timeOver = this.game.time.time; - data.x = pointer.x - this.sprite.x; - data.y = pointer.y - this.sprite.y; - - if (this.useHandCursor && data.isDragged === false) - { - this.game.canvas.style.cursor = "pointer"; - this._setHandCursor = true; - } - - if (!silent && sendEvent && this.sprite && this.sprite.events) - { - this.sprite.events.onInputOver$dispatch(this.sprite, pointer); - } - - if (this.sprite.parent && this.sprite.parent.type === Phaser.GROUP) - { - this.sprite.parent.onChildInputOver.dispatch(this.sprite, pointer); - } - } - - }, - - /** - * Internal method handling the pointer out event. - * - * @method Phaser.InputHandler#_pointerOutHandler - * @private - * @param {Phaser.Pointer} pointer - The pointer that triggered the event. - * @param {boolean} [silent=false] - If silent is `true` then this method will not dispatch any Signals from the parent Sprite. - */ - _pointerOutHandler: function (pointer, silent) { - - if (this.sprite === null) - { - // Abort. We've been destroyed. - return; - } - - var data = this._pointerData[pointer.id]; - - data.isOver = false; - data.isOut = true; - data.timeOut = this.game.time.time; - - if (this.useHandCursor && data.isDragged === false) - { - this.game.canvas.style.cursor = "default"; - this._setHandCursor = false; - } - - if (!silent && this.sprite && this.sprite.events) - { - this.sprite.events.onInputOut$dispatch(this.sprite, pointer); - - if (this.sprite && this.sprite.parent && this.sprite.parent.type === Phaser.GROUP) - { - this.sprite.parent.onChildInputOut.dispatch(this.sprite, pointer); - } - } - - }, - - /** - * Internal method handling the touched / clicked event. - * - * @method Phaser.InputHandler#_touchedHandler - * @private - * @param {Phaser.Pointer} pointer - The pointer that triggered the event. - */ - _touchedHandler: function (pointer) { - - if (this.sprite === null) - { - // Abort. We've been destroyed. - return; - } - - var data = this._pointerData[pointer.id]; - - if (!data.isDown && data.isOver) - { - if (this.pixelPerfectClick && !this.checkPixel(null, null, pointer)) - { - return; - } - - data.isDown = true; - data.isUp = false; - data.timeDown = this.game.time.time; - - this.downPoint.set(pointer.x, pointer.y); - - // It's possible the onInputDown event creates a new Sprite that is on-top of this one, so we ought to force a Pointer update - pointer.dirty = true; - - if (this.sprite && this.sprite.events) - { - this.sprite.events.onInputDown$dispatch(this.sprite, pointer); - - // The event above might have destroyed this sprite. - if (this.sprite && this.sprite.parent && this.sprite.parent.type === Phaser.GROUP) - { - this.sprite.parent.onChildInputDown.dispatch(this.sprite, pointer); - } - - // The events might have destroyed this sprite. - if (this.sprite === null) - { - return; - } - } - - // Start drag - if (this.draggable && this.isDragged === false) - { - if (this.dragTimeThreshold === 0 && this.dragDistanceThreshold === 0) - { - this.startDrag(pointer); - } - else - { - this._pendingDrag = true; - - this._dragDistancePass = (this.dragDistanceThreshold === 0); - - if (this.dragTimeThreshold > 0) - { - this._dragTimePass = false; - this.game.time.events.add(this.dragTimeThreshold, this.dragTimeElapsed, this, pointer); - } - else - { - this._dragTimePass = true; - } - } - } - - if (this.bringToTop) - { - this.sprite.bringToTop(); - } - } - - }, - - /** - * Internal method handling the drag threshold timer. - * - * @method Phaser.InputHandler#dragTimeElapsed - * @private - * @param {Phaser.Pointer} pointer - */ - dragTimeElapsed: function (pointer) { - - this._dragTimePass = true; - - if (this._pendingDrag && this.sprite) - { - if (this._dragDistancePass) - { - this.startDrag(pointer); - } - } - - }, - - /** - * Internal method handling the pointer released event. - * @method Phaser.InputHandler#_releasedHandler - * @private - * @param {Phaser.Pointer} pointer - */ - _releasedHandler: function (pointer) { - - if (this.sprite === null) - { - // Abort. We've been destroyed. - return; - } - - var data = this._pointerData[pointer.id]; - - // If was previously touched by this Pointer, check if still is AND still over this item - if (data.isDown && pointer.isUp) - { - data.isDown = false; - data.isUp = true; - data.timeUp = this.game.time.time; - data.downDuration = data.timeUp - data.timeDown; - - // Only release the InputUp signal if the pointer is still over this sprite - var isOver = this.checkPointerOver(pointer); - - if (this.sprite && this.sprite.events) - { - if (!this.dragStopBlocksInputUp || - this.dragStopBlocksInputUp && !(this.draggable && this.isDragged && this._draggedPointerID === pointer.id)) - { - this.sprite.events.onInputUp$dispatch(this.sprite, pointer, isOver); - } - - if (this.sprite && this.sprite.parent && this.sprite.parent.type === Phaser.GROUP) - { - this.sprite.parent.onChildInputUp.dispatch(this.sprite, pointer, isOver); - } - - // The onInputUp event may have changed the sprite so that checkPointerOver is no longer true, so update it. - if (isOver) - { - isOver = this.checkPointerOver(pointer); - } - } - - data.isOver = isOver; - - if (!isOver && this.useHandCursor) - { - this.game.canvas.style.cursor = "default"; - this._setHandCursor = false; - } - - // It's possible the onInputUp event created a new Sprite that is on-top of this one, so force a Pointer update - pointer.dirty = true; - - this._pendingDrag = false; - - // Stop drag - if (this.draggable && this.isDragged && this._draggedPointerID === pointer.id) - { - this.stopDrag(pointer); - } - } - - }, - - /** - * Called as a Pointer actively drags this Game Object. - * - * @method Phaser.InputHandler#updateDrag - * @private - * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. - * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. - * @return {boolean} - */ - updateDrag: function (pointer, fromStart) { - - if (fromStart === undefined) { fromStart = false; } - - if (pointer.isUp) - { - this.stopDrag(pointer); - return false; - } - - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; - var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; - - if (this.sprite.fixedToCamera) - { - if (this.allowHorizontalDrag) - { - this.sprite.cameraOffset.x = px; - } - - if (this.allowVerticalDrag) - { - this.sprite.cameraOffset.y = py; - } - - if (this.boundsRect) - { - this.checkBoundsRect(); - } - - if (this.boundsSprite) - { - this.checkBoundsSprite(); - } - - if (this.snapOnDrag) - { - this.sprite.cameraOffset.x = Math.round((this.sprite.cameraOffset.x - (this.snapOffsetX % this.snapX)) / this.snapX) * this.snapX + (this.snapOffsetX % this.snapX); - this.sprite.cameraOffset.y = Math.round((this.sprite.cameraOffset.y - (this.snapOffsetY % this.snapY)) / this.snapY) * this.snapY + (this.snapOffsetY % this.snapY); - this.snapPoint.set(this.sprite.cameraOffset.x, this.sprite.cameraOffset.y); - } - } - else - { - var cx = this.game.camera.x - this._pointerData[pointer.id].camX; - var cy = this.game.camera.y - this._pointerData[pointer.id].camY; - - if (this.allowHorizontalDrag) - { - this.sprite.x = px + cx; - } - - if (this.allowVerticalDrag) - { - this.sprite.y = py + cy; - } - - if (this.boundsRect) - { - this.checkBoundsRect(); - } - - if (this.boundsSprite) - { - this.checkBoundsSprite(); - } - - if (this.snapOnDrag) - { - this.sprite.x = Math.round((this.sprite.x - (this.snapOffsetX % this.snapX)) / this.snapX) * this.snapX + (this.snapOffsetX % this.snapX); - this.sprite.y = Math.round((this.sprite.y - (this.snapOffsetY % this.snapY)) / this.snapY) * this.snapY + (this.snapOffsetY % this.snapY); - this.snapPoint.set(this.sprite.x, this.sprite.y); - } - } - - this.sprite.events.onDragUpdate.dispatch(this.sprite, pointer, px, py, this.snapPoint, fromStart); - - return true; - - }, - - /** - * Returns true if the pointer has entered the Sprite within the specified delay time (defaults to 500ms, half a second) - * - * @method Phaser.InputHandler#justOver - * @param {integer} [pointerId=0] - * @param {number} delay - The time below which the pointer is considered as just over. - * @return {boolean} - */ - justOver: function (pointerId, delay) { - - pointerId = pointerId || 0; - delay = delay || 500; - - return (this._pointerData[pointerId].isOver && this.overDuration(pointerId) < delay); - - }, - - /** - * Returns true if the pointer has left the Sprite within the specified delay time (defaults to 500ms, half a second) - * - * @method Phaser.InputHandler#justOut - * @param {integer} [pointerId=0] - * @param {number} delay - The time below which the pointer is considered as just out. - * @return {boolean} - */ - justOut: function (pointerId, delay) { - - pointerId = pointerId || 0; - delay = delay || 500; - - return (this._pointerData[pointerId].isOut && (this.game.time.time - this._pointerData[pointerId].timeOut < delay)); - - }, - - /** - * Returns true if the pointer has touched or clicked on the Sprite within the specified delay time (defaults to 500ms, half a second) - * - * @method Phaser.InputHandler#justPressed - * @param {integer} [pointerId=0] - * @param {number} delay - The time below which the pointer is considered as just over. - * @return {boolean} - */ - justPressed: function (pointerId, delay) { - - pointerId = pointerId || 0; - delay = delay || 500; - - return (this._pointerData[pointerId].isDown && this.downDuration(pointerId) < delay); - - }, - - /** - * Returns true if the pointer was touching this Sprite, but has been released within the specified delay time (defaults to 500ms, half a second) - * - * @method Phaser.InputHandler#justReleased - * @param {integer} [pointerId=0] - * @param {number} delay - The time below which the pointer is considered as just out. - * @return {boolean} - */ - justReleased: function (pointerId, delay) { - - pointerId = pointerId || 0; - delay = delay || 500; - - return (this._pointerData[pointerId].isUp && (this.game.time.time - this._pointerData[pointerId].timeUp < delay)); - - }, - - /** - * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. - * - * @method Phaser.InputHandler#overDuration - * @param {integer} [pointerId=0] - * @return {number} The number of milliseconds the pointer has been over the Sprite, or -1 if not over. - */ - overDuration: function (pointerId) { - - pointerId = pointerId || 0; - - if (this._pointerData[pointerId].isOver) - { - return this.game.time.time - this._pointerData[pointerId].timeOver; - } - - return -1; - - }, - - /** - * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. - * - * @method Phaser.InputHandler#downDuration - * @param {integer} [pointerId=0] - * @return {number} The number of milliseconds the pointer has been pressed down on the Sprite, or -1 if not over. - */ - downDuration: function (pointerId) { - - pointerId = pointerId || 0; - - if (this._pointerData[pointerId].isDown) - { - return this.game.time.time - this._pointerData[pointerId].timeDown; - } - - return -1; - - }, - - /** - * Allow this Sprite to be dragged by any valid pointer. - * - * When the drag begins the Sprite.events.onDragStart event will be dispatched. - * - * When the drag completes by way of the user letting go of the pointer that was dragging the sprite, the Sprite.events.onDragStop event is dispatched. - * - * You can control the thresholds over when a drag starts via the properties: - * - * `Pointer.dragDistanceThreshold` the distance, in pixels, that the pointer has to move - * before the drag will start. - * - * `Pointer.dragTimeThreshold` the time, in ms, that the pointer must be held down on - * the Sprite before the drag will start. - * - * You can set either (or both) of these properties after enabling a Sprite for drag. - * - * For the duration of the drag the Sprite.events.onDragUpdate event is dispatched. This event is only dispatched when the pointer actually - * changes position and moves. The event sends 5 parameters: `sprite`, `pointer`, `dragX`, `dragY` and `snapPoint`. - * - * @method Phaser.InputHandler#enableDrag - * @param {boolean} [lockCenter=false] - If false the Sprite will drag from where you click it minus the dragOffset. If true it will center itself to the tip of the mouse pointer. - * @param {boolean} [bringToTop=false] - If true the Sprite will be bought to the top of the rendering list in its current Group. - * @param {boolean} [pixelPerfect=false] - If true it will use a pixel perfect test to see if you clicked the Sprite. False uses the bounding box. - * @param {boolean} [alphaThreshold=255] - If using pixel perfect collision this specifies the alpha level from 0 to 255 above which a collision is processed. - * @param {Phaser.Rectangle} [boundsRect=null] - If you want to restrict the drag of this sprite to a specific Rectangle, pass the Phaser.Rectangle here, otherwise it's free to drag anywhere. - * @param {Phaser.Sprite} [boundsSprite=null] - If you want to restrict the drag of this sprite to within the bounding box of another sprite, pass it here. - */ - enableDrag: function (lockCenter, bringToTop, pixelPerfect, alphaThreshold, boundsRect, boundsSprite) { - - if (lockCenter === undefined) { lockCenter = false; } - if (bringToTop === undefined) { bringToTop = false; } - if (pixelPerfect === undefined) { pixelPerfect = false; } - if (alphaThreshold === undefined) { alphaThreshold = 255; } - if (boundsRect === undefined) { boundsRect = null; } - if (boundsSprite === undefined) { boundsSprite = null; } - - this._dragPoint = new Phaser.Point(); - this.draggable = true; - this.bringToTop = bringToTop; - this.dragOffset = new Phaser.Point(); - this.dragFromCenter = lockCenter; - - this.pixelPerfectClick = pixelPerfect; - this.pixelPerfectAlpha = alphaThreshold; - - if (boundsRect) - { - this.boundsRect = boundsRect; - } - - if (boundsSprite) - { - this.boundsSprite = boundsSprite; - } - - }, - - /** - * Stops this sprite from being able to be dragged. - * If it is currently the target of an active drag it will be stopped immediately; also disables any set callbacks. - * - * @method Phaser.InputHandler#disableDrag - */ - disableDrag: function () { - - if (this._pointerData) - { - for (var i = 0; i < 10; i++) - { - this._pointerData[i].isDragged = false; - } - } - - this.draggable = false; - this.isDragged = false; - this._draggedPointerID = -1; - this._pendingDrag = false; - - }, - - /** - * Called by Pointer when drag starts on this Sprite. Should not usually be called directly. - * - * @method Phaser.InputHandler#startDrag - * @param {Phaser.Pointer} pointer - */ - startDrag: function (pointer) { - - var x = this.sprite.x; - var y = this.sprite.y; - - this.isDragged = true; - this._draggedPointerID = pointer.id; - - this._pointerData[pointer.id].camX = this.game.camera.x; - this._pointerData[pointer.id].camY = this.game.camera.y; - - this._pointerData[pointer.id].isDragged = true; - - if (this.sprite.fixedToCamera) - { - if (this.dragFromCenter) - { - var bounds = this.sprite.getBounds(); - - this.sprite.cameraOffset.x = this.globalToLocalX(pointer.x) + (this.sprite.cameraOffset.x - bounds.centerX); - this.sprite.cameraOffset.y = this.globalToLocalY(pointer.y) + (this.sprite.cameraOffset.y - bounds.centerY); - } - - this._dragPoint.setTo(this.sprite.cameraOffset.x - pointer.x, this.sprite.cameraOffset.y - pointer.y); - } - else - { - if (this.dragFromCenter) - { - var bounds = this.sprite.getBounds(); - - this.sprite.x = this.globalToLocalX(pointer.x) + (this.sprite.x - bounds.centerX); - this.sprite.y = this.globalToLocalY(pointer.y) + (this.sprite.y - bounds.centerY); - } - - this._dragPoint.setTo(this.sprite.x - this.globalToLocalX(pointer.x), this.sprite.y - this.globalToLocalY(pointer.y)); - } - - this.updateDrag(pointer, true); - - if (this.bringToTop) - { - this._dragPhase = true; - this.sprite.bringToTop(); - } - - this.dragStartPoint.set(x, y); - - this.sprite.events.onDragStart$dispatch(this.sprite, pointer, x, y); - - this._pendingDrag = false; - - }, - - /** - * Warning: EXPERIMENTAL - * - * @method Phaser.InputHandler#globalToLocalX - * @param {number} x - */ - globalToLocalX: function (x) { - - if (this.scaleLayer) - { - x -= this.game.scale.grid.boundsFluid.x; - x *= this.game.scale.grid.scaleFluidInversed.x; - } - - return x; - - }, - - /** - * Warning: EXPERIMENTAL - * - * @method Phaser.InputHandler#globalToLocalY - * @param {number} y - */ - globalToLocalY: function (y) { - - if (this.scaleLayer) - { - y -= this.game.scale.grid.boundsFluid.y; - y *= this.game.scale.grid.scaleFluidInversed.y; - } - - return y; - - }, - - /** - * Called by Pointer when drag is stopped on this Sprite. Should not usually be called directly. - * - * @method Phaser.InputHandler#stopDrag - * @param {Phaser.Pointer} pointer - */ - stopDrag: function (pointer) { - - this.isDragged = false; - this._draggedPointerID = -1; - this._pointerData[pointer.id].isDragged = false; - this._dragPhase = false; - this._pendingDrag = false; - - if (this.snapOnRelease) - { - if (this.sprite.fixedToCamera) - { - this.sprite.cameraOffset.x = Math.round((this.sprite.cameraOffset.x - (this.snapOffsetX % this.snapX)) / this.snapX) * this.snapX + (this.snapOffsetX % this.snapX); - this.sprite.cameraOffset.y = Math.round((this.sprite.cameraOffset.y - (this.snapOffsetY % this.snapY)) / this.snapY) * this.snapY + (this.snapOffsetY % this.snapY); - } - else - { - this.sprite.x = Math.round((this.sprite.x - (this.snapOffsetX % this.snapX)) / this.snapX) * this.snapX + (this.snapOffsetX % this.snapX); - this.sprite.y = Math.round((this.sprite.y - (this.snapOffsetY % this.snapY)) / this.snapY) * this.snapY + (this.snapOffsetY % this.snapY); - } - } - - this.sprite.events.onDragStop$dispatch(this.sprite, pointer); - - if (this.checkPointerOver(pointer) === false) - { - this._pointerOutHandler(pointer); - } - - }, - - /** - * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! - * - * @method Phaser.InputHandler#setDragLock - * @param {boolean} [allowHorizontal=true] - To enable the sprite to be dragged horizontally set to true, otherwise false. - * @param {boolean} [allowVertical=true] - To enable the sprite to be dragged vertically set to true, otherwise false. - */ - setDragLock: function (allowHorizontal, allowVertical) { - - if (allowHorizontal === undefined) { allowHorizontal = true; } - if (allowVertical === undefined) { allowVertical = true; } - - this.allowHorizontalDrag = allowHorizontal; - this.allowVerticalDrag = allowVertical; - - }, - - /** - * Make this Sprite snap to the given grid either during drag or when it's released. - * For example 16x16 as the snapX and snapY would make the sprite snap to every 16 pixels. - * - * @method Phaser.InputHandler#enableSnap - * @param {number} snapX - The width of the grid cell to snap to. - * @param {number} snapY - The height of the grid cell to snap to. - * @param {boolean} [onDrag=true] - If true the sprite will snap to the grid while being dragged. - * @param {boolean} [onRelease=false] - If true the sprite will snap to the grid when released. - * @param {number} [snapOffsetX=0] - Used to offset the top-left starting point of the snap grid. - * @param {number} [snapOffsetY=0] - Used to offset the top-left starting point of the snap grid. - */ - enableSnap: function (snapX, snapY, onDrag, onRelease, snapOffsetX, snapOffsetY) { - - if (onDrag === undefined) { onDrag = true; } - if (onRelease === undefined) { onRelease = false; } - if (snapOffsetX === undefined) { snapOffsetX = 0; } - if (snapOffsetY === undefined) { snapOffsetY = 0; } - - this.snapX = snapX; - this.snapY = snapY; - this.snapOffsetX = snapOffsetX; - this.snapOffsetY = snapOffsetY; - this.snapOnDrag = onDrag; - this.snapOnRelease = onRelease; - - }, - - /** - * Stops the sprite from snapping to a grid during drag or release. - * - * @method Phaser.InputHandler#disableSnap - */ - disableSnap: function () { - - this.snapOnDrag = false; - this.snapOnRelease = false; - - }, - - /** - * Bounds Rect check for the sprite drag - * - * @method Phaser.InputHandler#checkBoundsRect - */ - checkBoundsRect: function () { - - if (this.sprite.fixedToCamera) - { - if (this.sprite.cameraOffset.x < this.boundsRect.left) - { - this.sprite.cameraOffset.x = this.boundsRect.left; - } - else if ((this.sprite.cameraOffset.x + this.sprite.width) > this.boundsRect.right) - { - this.sprite.cameraOffset.x = this.boundsRect.right - this.sprite.width; - } - - if (this.sprite.cameraOffset.y < this.boundsRect.top) - { - this.sprite.cameraOffset.y = this.boundsRect.top; - } - else if ((this.sprite.cameraOffset.y + this.sprite.height) > this.boundsRect.bottom) - { - this.sprite.cameraOffset.y = this.boundsRect.bottom - this.sprite.height; - } - } - else - { - if (this.sprite.left < this.boundsRect.left) - { - this.sprite.x = this.boundsRect.x + this.sprite.offsetX; - } - else if (this.sprite.right > this.boundsRect.right) - { - this.sprite.x = this.boundsRect.right - (this.sprite.width - this.sprite.offsetX); - } - - if (this.sprite.top < this.boundsRect.top) - { - this.sprite.y = this.boundsRect.top + this.sprite.offsetY; - } - else if (this.sprite.bottom > this.boundsRect.bottom) - { - this.sprite.y = this.boundsRect.bottom - (this.sprite.height - this.sprite.offsetY); - } - } - - }, - - /** - * Parent Sprite Bounds check for the sprite drag. - * - * @method Phaser.InputHandler#checkBoundsSprite - */ - checkBoundsSprite: function () { - - if (this.sprite.fixedToCamera && this.boundsSprite.fixedToCamera) - { - if (this.sprite.cameraOffset.x < this.boundsSprite.cameraOffset.x) - { - this.sprite.cameraOffset.x = this.boundsSprite.cameraOffset.x; - } - else if ((this.sprite.cameraOffset.x + this.sprite.width) > (this.boundsSprite.cameraOffset.x + this.boundsSprite.width)) - { - this.sprite.cameraOffset.x = (this.boundsSprite.cameraOffset.x + this.boundsSprite.width) - this.sprite.width; - } - - if (this.sprite.cameraOffset.y < this.boundsSprite.cameraOffset.y) - { - this.sprite.cameraOffset.y = this.boundsSprite.cameraOffset.y; - } - else if ((this.sprite.cameraOffset.y + this.sprite.height) > (this.boundsSprite.cameraOffset.y + this.boundsSprite.height)) - { - this.sprite.cameraOffset.y = (this.boundsSprite.cameraOffset.y + this.boundsSprite.height) - this.sprite.height; - } - } - else - { - if (this.sprite.left < this.boundsSprite.left) - { - this.sprite.x = this.boundsSprite.left + this.sprite.offsetX; - } - else if (this.sprite.right > this.boundsSprite.right) - { - this.sprite.x = this.boundsSprite.right - (this.sprite.width - this.sprite.offsetX); - } - - if (this.sprite.top < this.boundsSprite.top) - { - this.sprite.y = this.boundsSprite.top + this.sprite.offsetY; - } - else if (this.sprite.bottom > this.boundsSprite.bottom) - { - this.sprite.y = this.boundsSprite.bottom - (this.sprite.height - this.sprite.offsetY); - } - } - - } - -}; - -Phaser.InputHandler.prototype.constructor = Phaser.InputHandler; - -/** -* @author @karlmacklin -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Gamepad class handles gamepad input and dispatches gamepad events. -* -* Remember to call `gamepad.start()`. -* -* HTML5 GAMEPAD API SUPPORT IS AT AN EXPERIMENTAL STAGE! -* At moment of writing this (end of 2013) only Chrome supports parts of it out of the box. Firefox supports it -* via prefs flags (about:config, search gamepad). The browsers map the same controllers differently. -* This class has constants for Windows 7 Chrome mapping of XBOX 360 controller. -* -* @class Phaser.Gamepad -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Gamepad = function (game) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * @property {object} _gamepadIndexMap - Maps the browsers gamepad indices to our Phaser Gamepads - * @private - */ - this._gamepadIndexMap = {}; - - /** - * @property {Array} _rawPads - The raw state of the gamepads from the browser - * @private - */ - this._rawPads = []; - - /** - * @property {boolean} _active - Private flag for whether or not the API is polled - * @private - * @default - */ - this._active = false; - - /** - * Gamepad input will only be processed if enabled. - * @property {boolean} enabled - * @default - */ - this.enabled = true; - - /** - * Whether or not gamepads are supported in the current browser. Note that as of Dec. 2013 this check is actually not accurate at all due to poor implementation. - * @property {boolean} _gamepadSupportAvailable - Are gamepads supported in this browser or not? - * @private - */ - this._gamepadSupportAvailable = !!navigator.webkitGetGamepads || !!navigator.webkitGamepads || (navigator.userAgent.indexOf('Firefox/') != -1) || !!navigator.getGamepads; - - /** - * Used to check for differences between earlier polls and current state of gamepads. - * @property {Array} _prevRawGamepadTypes - * @private - * @default - */ - this._prevRawGamepadTypes = []; - - /** - * Used to check for differences between earlier polls and current state of gamepads. - * @property {Array} _prevTimestamps - * @private - * @default - */ - this._prevTimestamps = []; - - /** - * @property {object} callbackContext - The context under which the callbacks are run. - */ - this.callbackContext = this; - - /** - * @property {function} onConnectCallback - This callback is invoked every time any gamepad is connected - */ - this.onConnectCallback = null; - - /** - * @property {function} onDisconnectCallback - This callback is invoked every time any gamepad is disconnected - */ - this.onDisconnectCallback = null; - - /** - * @property {function} onDownCallback - This callback is invoked every time any gamepad button is pressed down. - */ - this.onDownCallback = null; - - /** - * @property {function} onUpCallback - This callback is invoked every time any gamepad button is released. - */ - this.onUpCallback = null; - - /** - * @property {function} onAxisCallback - This callback is invoked every time any gamepad axis is changed. - */ - this.onAxisCallback = null; - - /** - * @property {function} onFloatCallback - This callback is invoked every time any gamepad button is changed to a value where value > 0 and value < 1. - */ - this.onFloatCallback = null; - - /** - * @property {function} _ongamepadconnected - Private callback for Firefox gamepad connection handling - * @private - */ - this._ongamepadconnected = null; - - /** - * @property {function} _gamepaddisconnected - Private callback for Firefox gamepad connection handling - * @private - */ - this._gamepaddisconnected = null; - - /** - * @property {Array} _gamepads - The four Phaser Gamepads. - * @private - */ - this._gamepads = [ - new Phaser.SinglePad(game, this), - new Phaser.SinglePad(game, this), - new Phaser.SinglePad(game, this), - new Phaser.SinglePad(game, this) - ]; - -}; - -Phaser.Gamepad.prototype = { - - /** - * Add callbacks to the main Gamepad handler to handle connect/disconnect/button down/button up/axis change/float value buttons. - * - * @method Phaser.Gamepad#addCallbacks - * @param {object} context - The context under which the callbacks are run. - * @param {object} callbacks - Object that takes six different callback methods: - * onConnectCallback, onDisconnectCallback, onDownCallback, onUpCallback, onAxisCallback, onFloatCallback - */ - addCallbacks: function (context, callbacks) { - - if (typeof callbacks !== 'undefined') - { - this.onConnectCallback = (typeof callbacks.onConnect === 'function') ? callbacks.onConnect : this.onConnectCallback; - this.onDisconnectCallback = (typeof callbacks.onDisconnect === 'function') ? callbacks.onDisconnect : this.onDisconnectCallback; - this.onDownCallback = (typeof callbacks.onDown === 'function') ? callbacks.onDown : this.onDownCallback; - this.onUpCallback = (typeof callbacks.onUp === 'function') ? callbacks.onUp : this.onUpCallback; - this.onAxisCallback = (typeof callbacks.onAxis === 'function') ? callbacks.onAxis : this.onAxisCallback; - this.onFloatCallback = (typeof callbacks.onFloat === 'function') ? callbacks.onFloat : this.onFloatCallback; - this.callbackContext = context; - } - - }, - - /** - * Starts the Gamepad event handling. - * This MUST be called manually before Phaser will start polling the Gamepad API. - * - * @method Phaser.Gamepad#start - */ - start: function () { - - if (this._active) - { - // Avoid setting multiple listeners - return; - } - - this._active = true; - - var _this = this; - - this._onGamepadConnected = function (event) { - return _this.onGamepadConnected(event); - }; - - this._onGamepadDisconnected = function (event) { - return _this.onGamepadDisconnected(event); - }; - - window.addEventListener('gamepadconnected', this._onGamepadConnected, false); - window.addEventListener('gamepaddisconnected', this._onGamepadDisconnected, false); - - }, - - /** - * Handles the connection of a Gamepad. - * - * @method onGamepadConnected - * @private - * @param {object} event - The DOM event. - */ - onGamepadConnected: function (event) { - - var newPad = event.gamepad; - this._rawPads.push(newPad); - this._gamepads[newPad.index].connect(newPad); - - }, - - /** - * Handles the disconnection of a Gamepad. - * - * @method onGamepadDisconnected - * @private - * @param {object} event - The DOM event. - */ - onGamepadDisconnected: function (event) { - - var removedPad = event.gamepad; - - for (var i in this._rawPads) - { - if (this._rawPads[i].index === removedPad.index) - { - this._rawPads.splice(i,1); - } - } - - this._gamepads[removedPad.index].disconnect(); - - }, - - /** - * Main gamepad update loop. Should not be called manually. - * @method Phaser.Gamepad#update - * @protected - */ - update: function () { - - this._pollGamepads(); - - this.pad1.pollStatus(); - this.pad2.pollStatus(); - this.pad3.pollStatus(); - this.pad4.pollStatus(); - - }, - - /** - * Updating connected gamepads (for Google Chrome). Should not be called manually. - * - * @method Phaser.Gamepad#_pollGamepads - * @private - */ - _pollGamepads: function () { - - if (!this._active) - { - return; - } - - if (navigator['getGamepads']) - { - var rawGamepads = navigator.getGamepads(); - } - else if (navigator['webkitGetGamepads']) - { - var rawGamepads = navigator.webkitGetGamepads(); - } - else if (navigator['webkitGamepads']) - { - var rawGamepads = navigator.webkitGamepads(); - } - - if (rawGamepads) - { - this._rawPads = []; - - var gamepadsChanged = false; - - for (var i = 0; i < rawGamepads.length; i++) - { - if (typeof rawGamepads[i] !== this._prevRawGamepadTypes[i]) - { - gamepadsChanged = true; - this._prevRawGamepadTypes[i] = typeof rawGamepads[i]; - } - - if (rawGamepads[i]) - { - this._rawPads.push(rawGamepads[i]); - } - - // Support max 4 pads at the moment - if (i === 3) - { - break; - } - } - - for (var g = 0; g < this._gamepads.length; g++) - { - this._gamepads[g]._rawPad = this._rawPads[g]; - } - - if (gamepadsChanged) - { - var validConnections = { rawIndices: {}, padIndices: {} }; - var singlePad; - - for (var j = 0; j < this._gamepads.length; j++) - { - singlePad = this._gamepads[j]; - - if (singlePad.connected) - { - for (var k = 0; k < this._rawPads.length; k++) - { - if (this._rawPads[k].index === singlePad.index) - { - validConnections.rawIndices[singlePad.index] = true; - validConnections.padIndices[j] = true; - } - } - } - } - - for (var l = 0; l < this._gamepads.length; l++) - { - singlePad = this._gamepads[l]; - - if (validConnections.padIndices[l]) - { - continue; - } - - if (this._rawPads.length < 1) - { - singlePad.disconnect(); - } - - for (var m = 0; m < this._rawPads.length; m++) - { - if (validConnections.padIndices[l]) - { - break; - } - - var rawPad = this._rawPads[m]; - - if (rawPad) - { - if (validConnections.rawIndices[rawPad.index]) - { - singlePad.disconnect(); - continue; - } - else - { - singlePad.connect(rawPad); - validConnections.rawIndices[rawPad.index] = true; - validConnections.padIndices[l] = true; - } - } - else - { - singlePad.disconnect(); - } - } - } - } - } - }, - - /** - * Sets the deadZone variable for all four gamepads - * @method Phaser.Gamepad#setDeadZones - */ - setDeadZones: function (value) { - - for (var i = 0; i < this._gamepads.length; i++) - { - this._gamepads[i].deadZone = value; - } - - }, - - /** - * Stops the Gamepad event handling. - * - * @method Phaser.Gamepad#stop - */ - stop: function () { - - this._active = false; - - window.removeEventListener('gamepadconnected', this._onGamepadConnected); - window.removeEventListener('gamepaddisconnected', this._onGamepadDisconnected); - - }, - - /** - * Reset all buttons/axes of all gamepads - * @method Phaser.Gamepad#reset - */ - reset: function () { - - this.update(); - - for (var i = 0; i < this._gamepads.length; i++) - { - this._gamepads[i].reset(); - } - - }, - - /** - * Returns the "just pressed" state of a button from ANY gamepad connected. Just pressed is considered true if the button was pressed down within the duration given (default 250ms). - * @method Phaser.Gamepad#justPressed - * @param {number} buttonCode - The buttonCode of the button to check for. - * @param {number} [duration=250] - The duration below which the button is considered as being just pressed. - * @return {boolean} True if the button is just pressed otherwise false. - */ - justPressed: function (buttonCode, duration) { - - for (var i = 0; i < this._gamepads.length; i++) - { - if (this._gamepads[i].justPressed(buttonCode, duration) === true) - { - return true; - } - } - - return false; - - }, - - /** - * Returns the "just released" state of a button from ANY gamepad connected. Just released is considered as being true if the button was released within the duration given (default 250ms). - * @method Phaser.Gamepad#justPressed - * @param {number} buttonCode - The buttonCode of the button to check for. - * @param {number} [duration=250] - The duration below which the button is considered as being just released. - * @return {boolean} True if the button is just released otherwise false. - */ - justReleased: function (buttonCode, duration) { - - for (var i = 0; i < this._gamepads.length; i++) - { - if (this._gamepads[i].justReleased(buttonCode, duration) === true) - { - return true; - } - } - - return false; - - }, - - /** - * Returns true if the button is currently pressed down, on ANY gamepad. - * @method Phaser.Gamepad#isDown - * @param {number} buttonCode - The buttonCode of the button to check for. - * @return {boolean} True if a button is currently down. - */ - isDown: function (buttonCode) { - - for (var i = 0; i < this._gamepads.length; i++) - { - if (this._gamepads[i].isDown(buttonCode) === true) - { - return true; - } - } - - return false; - }, - - /** - * Destroys this object and the associated event listeners. - * - * @method Phaser.Gamepad#destroy - */ - destroy: function () { - - this.stop(); - - for (var i = 0; i < this._gamepads.length; i++) - { - this._gamepads[i].destroy(); - } - - } - -}; - -Phaser.Gamepad.prototype.constructor = Phaser.Gamepad; - -/** -* If the gamepad input is active or not - if not active it should not be updated from Input.js -* @name Phaser.Gamepad#active -* @property {boolean} active - If the gamepad input is active or not. -* @readonly -*/ -Object.defineProperty(Phaser.Gamepad.prototype, "active", { - - get: function () { - return this._active; - } - -}); - -/** -* Whether or not gamepads are supported in current browser. -* @name Phaser.Gamepad#supported -* @property {boolean} supported - Whether or not gamepads are supported in current browser. -* @readonly -*/ -Object.defineProperty(Phaser.Gamepad.prototype, "supported", { - - get: function () { - return this._gamepadSupportAvailable; - } - -}); - -/** -* How many live gamepads are currently connected. -* @name Phaser.Gamepad#padsConnected -* @property {number} padsConnected - How many live gamepads are currently connected. -* @readonly -*/ -Object.defineProperty(Phaser.Gamepad.prototype, "padsConnected", { - - get: function () { - return this._rawPads.length; - } - -}); - -/** -* Gamepad #1 -* @name Phaser.Gamepad#pad1 -* @property {Phaser.SinglePad} pad1 - Gamepad #1; -* @readonly -*/ -Object.defineProperty(Phaser.Gamepad.prototype, "pad1", { - - get: function () { - return this._gamepads[0]; - } - -}); - -/** -* Gamepad #2 -* @name Phaser.Gamepad#pad2 -* @property {Phaser.SinglePad} pad2 - Gamepad #2 -* @readonly -*/ -Object.defineProperty(Phaser.Gamepad.prototype, "pad2", { - - get: function () { - return this._gamepads[1]; - } - -}); - -/** -* Gamepad #3 -* @name Phaser.Gamepad#pad3 -* @property {Phaser.SinglePad} pad3 - Gamepad #3 -* @readonly -*/ -Object.defineProperty(Phaser.Gamepad.prototype, "pad3", { - - get: function () { - return this._gamepads[2]; - } - -}); - -/** -* Gamepad #4 -* @name Phaser.Gamepad#pad4 -* @property {Phaser.SinglePad} pad4 - Gamepad #4 -* @readonly -*/ -Object.defineProperty(Phaser.Gamepad.prototype, "pad4", { - - get: function () { - return this._gamepads[3]; - } - -}); - -Phaser.Gamepad.BUTTON_0 = 0; -Phaser.Gamepad.BUTTON_1 = 1; -Phaser.Gamepad.BUTTON_2 = 2; -Phaser.Gamepad.BUTTON_3 = 3; -Phaser.Gamepad.BUTTON_4 = 4; -Phaser.Gamepad.BUTTON_5 = 5; -Phaser.Gamepad.BUTTON_6 = 6; -Phaser.Gamepad.BUTTON_7 = 7; -Phaser.Gamepad.BUTTON_8 = 8; -Phaser.Gamepad.BUTTON_9 = 9; -Phaser.Gamepad.BUTTON_10 = 10; -Phaser.Gamepad.BUTTON_11 = 11; -Phaser.Gamepad.BUTTON_12 = 12; -Phaser.Gamepad.BUTTON_13 = 13; -Phaser.Gamepad.BUTTON_14 = 14; -Phaser.Gamepad.BUTTON_15 = 15; - -Phaser.Gamepad.AXIS_0 = 0; -Phaser.Gamepad.AXIS_1 = 1; -Phaser.Gamepad.AXIS_2 = 2; -Phaser.Gamepad.AXIS_3 = 3; -Phaser.Gamepad.AXIS_4 = 4; -Phaser.Gamepad.AXIS_5 = 5; -Phaser.Gamepad.AXIS_6 = 6; -Phaser.Gamepad.AXIS_7 = 7; -Phaser.Gamepad.AXIS_8 = 8; -Phaser.Gamepad.AXIS_9 = 9; - -// Below mapping applies to XBOX 360 Wired and Wireless controller on Google Chrome (tested on Windows 7). -// - Firefox uses different map! Separate amount of buttons and axes. DPAD = axis and not a button. -// In other words - discrepancies when using gamepads. - -Phaser.Gamepad.XBOX360_A = 0; -Phaser.Gamepad.XBOX360_B = 1; -Phaser.Gamepad.XBOX360_X = 2; -Phaser.Gamepad.XBOX360_Y = 3; -Phaser.Gamepad.XBOX360_LEFT_BUMPER = 4; -Phaser.Gamepad.XBOX360_RIGHT_BUMPER = 5; -Phaser.Gamepad.XBOX360_LEFT_TRIGGER = 6; -Phaser.Gamepad.XBOX360_RIGHT_TRIGGER = 7; -Phaser.Gamepad.XBOX360_BACK = 8; -Phaser.Gamepad.XBOX360_START = 9; -Phaser.Gamepad.XBOX360_STICK_LEFT_BUTTON = 10; -Phaser.Gamepad.XBOX360_STICK_RIGHT_BUTTON = 11; - -Phaser.Gamepad.XBOX360_DPAD_LEFT = 14; -Phaser.Gamepad.XBOX360_DPAD_RIGHT = 15; -Phaser.Gamepad.XBOX360_DPAD_UP = 12; -Phaser.Gamepad.XBOX360_DPAD_DOWN = 13; - -// On FF 0 = Y, 1 = X, 2 = Y, 3 = X, 4 = left bumper, 5 = dpad left, 6 = dpad right -Phaser.Gamepad.XBOX360_STICK_LEFT_X = 0; -Phaser.Gamepad.XBOX360_STICK_LEFT_Y = 1; -Phaser.Gamepad.XBOX360_STICK_RIGHT_X = 2; -Phaser.Gamepad.XBOX360_STICK_RIGHT_Y = 3; - -// PlayStation 3 controller (masquerading as xbox360 controller) button mappings - -Phaser.Gamepad.PS3XC_X = 0; -Phaser.Gamepad.PS3XC_CIRCLE = 1; -Phaser.Gamepad.PS3XC_SQUARE = 2; -Phaser.Gamepad.PS3XC_TRIANGLE = 3; -Phaser.Gamepad.PS3XC_L1 = 4; -Phaser.Gamepad.PS3XC_R1 = 5; -Phaser.Gamepad.PS3XC_L2 = 6; // analog trigger, range 0..1 -Phaser.Gamepad.PS3XC_R2 = 7; // analog trigger, range 0..1 -Phaser.Gamepad.PS3XC_SELECT = 8; -Phaser.Gamepad.PS3XC_START = 9; -Phaser.Gamepad.PS3XC_STICK_LEFT_BUTTON = 10; -Phaser.Gamepad.PS3XC_STICK_RIGHT_BUTTON = 11; -Phaser.Gamepad.PS3XC_DPAD_UP = 12; -Phaser.Gamepad.PS3XC_DPAD_DOWN = 13; -Phaser.Gamepad.PS3XC_DPAD_LEFT = 14; -Phaser.Gamepad.PS3XC_DPAD_RIGHT = 15; -Phaser.Gamepad.PS3XC_STICK_LEFT_X = 0; // analog stick, range -1..1 -Phaser.Gamepad.PS3XC_STICK_LEFT_Y = 1; // analog stick, range -1..1 -Phaser.Gamepad.PS3XC_STICK_RIGHT_X = 2; // analog stick, range -1..1 -Phaser.Gamepad.PS3XC_STICK_RIGHT_Y = 3; // analog stick, range -1..1 - -/** -* @author @karlmacklin -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A single Phaser Gamepad -* -* @class Phaser.SinglePad -* @constructor -* @param {Phaser.Game} game - Current game instance. -* @param {object} padParent - The parent Phaser.Gamepad object (all gamepads reside under this) -*/ -Phaser.SinglePad = function (game, padParent) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * @property {number} index - The gamepad index as per browsers data - * @readonly - */ - this.index = null; - - /** - * @property {boolean} connected - Whether or not this particular gamepad is connected or not. - * @readonly - */ - this.connected = false; - - /** - * @property {object} callbackContext - The context under which the callbacks are run. - */ - this.callbackContext = this; - - /** - * @property {function} onConnectCallback - This callback is invoked every time this gamepad is connected - */ - this.onConnectCallback = null; - - /** - * @property {function} onDisconnectCallback - This callback is invoked every time this gamepad is disconnected - */ - this.onDisconnectCallback = null; - - /** - * @property {function} onDownCallback - This callback is invoked every time a button is pressed down. - */ - this.onDownCallback = null; - - /** - * @property {function} onUpCallback - This callback is invoked every time a gamepad button is released. - */ - this.onUpCallback = null; - - /** - * @property {function} onAxisCallback - This callback is invoked every time an axis is changed. - */ - this.onAxisCallback = null; - - /** - * @property {function} onFloatCallback - This callback is invoked every time a button is changed to a value where value > 0 and value < 1. - */ - this.onFloatCallback = null; - - /** - * @property {number} deadZone - Dead zone for axis feedback - within this value you won't trigger updates. - */ - this.deadZone = 0.26; - - /** - * @property {Phaser.Gamepad} padParent - Main Phaser Gamepad object - * @private - */ - this._padParent = padParent; - - /** - * @property {object} _rawPad - The 'raw' gamepad data. - * @private - */ - this._rawPad = null; - - /** - * @property {number} _prevTimestamp - Used to check for differences between earlier polls and current state of gamepads. - * @private - */ - this._prevTimestamp = null; - - /** - * @property {Array} _buttons - Array of Phaser.DeviceButton objects. This array is populated when the gamepad is connected. - * @private - */ - this._buttons = []; - - /** - * @property {number} _buttonsLen - Length of the _buttons array. - * @private - */ - this._buttonsLen = 0; - - /** - * @property {Array} _axes - Current axes state. - * @private - */ - this._axes = []; - - /** - * @property {number} _axesLen - Length of the _axes array. - * @private - */ - this._axesLen = 0; - -}; - -Phaser.SinglePad.prototype = { - - /** - * Add callbacks to this Gamepad to handle connect / disconnect / button down / button up / axis change / float value buttons. - * - * @method Phaser.SinglePad#addCallbacks - * @param {object} context - The context under which the callbacks are run. - * @param {object} callbacks - Object that takes six different callbak methods: - * onConnectCallback, onDisconnectCallback, onDownCallback, onUpCallback, onAxisCallback, onFloatCallback - */ - addCallbacks: function (context, callbacks) { - - if (typeof callbacks !== 'undefined') - { - this.onConnectCallback = (typeof callbacks.onConnect === 'function') ? callbacks.onConnect : this.onConnectCallback; - this.onDisconnectCallback = (typeof callbacks.onDisconnect === 'function') ? callbacks.onDisconnect : this.onDisconnectCallback; - this.onDownCallback = (typeof callbacks.onDown === 'function') ? callbacks.onDown : this.onDownCallback; - this.onUpCallback = (typeof callbacks.onUp === 'function') ? callbacks.onUp : this.onUpCallback; - this.onAxisCallback = (typeof callbacks.onAxis === 'function') ? callbacks.onAxis : this.onAxisCallback; - this.onFloatCallback = (typeof callbacks.onFloat === 'function') ? callbacks.onFloat : this.onFloatCallback; - - this.callbackContext = context; - } - }, - - /** - * Gets a DeviceButton object from this controller to be stored and referenced locally. - * The DeviceButton object can then be polled, have events attached to it, etc. - * - * @method Phaser.SinglePad#getButton - * @param {number} buttonCode - The buttonCode of the button, i.e. Phaser.Gamepad.BUTTON_0, Phaser.Gamepad.XBOX360_A, etc. - * @return {Phaser.DeviceButton} The DeviceButton object which you can store locally and reference directly. - */ - getButton: function (buttonCode) { - - if (this._buttons[buttonCode]) - { - return this._buttons[buttonCode]; - } - else - { - return null; - } - - }, - - /** - * Main update function called by Phaser.Gamepad. - * - * @method Phaser.SinglePad#pollStatus - */ - pollStatus: function () { - - if (!this.connected || !this.game.input.enabled || !this.game.input.gamepad.enabled || (this._rawPad.timestamp && (this._rawPad.timestamp === this._prevTimestamp))) - { - return; - } - - for (var i = 0; i < this._buttonsLen; i++) - { - var rawButtonVal = isNaN(this._rawPad.buttons[i]) ? this._rawPad.buttons[i].value : this._rawPad.buttons[i]; - - if (rawButtonVal !== this._buttons[i].value) - { - if (rawButtonVal === 1) - { - this.processButtonDown(i, rawButtonVal); - } - else if (rawButtonVal === 0) - { - this.processButtonUp(i, rawButtonVal); - } - else - { - this.processButtonFloat(i, rawButtonVal); - } - } - } - - for (var index = 0; index < this._axesLen; index++) - { - var value = this._rawPad.axes[index]; - - if ((value > 0 && value > this.deadZone) || (value < 0 && value < -this.deadZone)) - { - this.processAxisChange(index, value); - } - else - { - this.processAxisChange(index, 0); - } - } - - this._prevTimestamp = this._rawPad.timestamp; - - }, - - /** - * Gamepad connect function, should be called by Phaser.Gamepad. - * - * @method Phaser.SinglePad#connect - * @param {object} rawPad - The raw gamepad object - */ - connect: function (rawPad) { - - var triggerCallback = !this.connected; - - this.connected = true; - this.index = rawPad.index; - - this._rawPad = rawPad; - - this._buttons = []; - this._buttonsLen = rawPad.buttons.length; - - this._axes = []; - this._axesLen = rawPad.axes.length; - - for (var a = 0; a < this._axesLen; a++) - { - this._axes[a] = rawPad.axes[a]; - } - - for (var buttonCode in rawPad.buttons) - { - buttonCode = parseInt(buttonCode, 10); - this._buttons[buttonCode] = new Phaser.DeviceButton(this, buttonCode); - } - - if (triggerCallback && this._padParent.onConnectCallback) - { - this._padParent.onConnectCallback.call(this._padParent.callbackContext, this.index); - } - - if (triggerCallback && this.onConnectCallback) - { - this.onConnectCallback.call(this.callbackContext); - } - - }, - - /** - * Gamepad disconnect function, should be called by Phaser.Gamepad. - * - * @method Phaser.SinglePad#disconnect - */ - disconnect: function () { - - var triggerCallback = this.connected; - var disconnectingIndex = this.index; - - this.connected = false; - this.index = null; - - this._rawPad = undefined; - - for (var i = 0; i < this._buttonsLen; i++) - { - this._buttons[i].destroy(); - } - - this._buttons = []; - this._buttonsLen = 0; - - this._axes = []; - this._axesLen = 0; - - if (triggerCallback && this._padParent.onDisconnectCallback) - { - this._padParent.onDisconnectCallback.call(this._padParent.callbackContext, disconnectingIndex); - } - - if (triggerCallback && this.onDisconnectCallback) - { - this.onDisconnectCallback.call(this.callbackContext); - } - - }, - - /** - * Destroys this object and associated callback references. - * - * @method Phaser.SinglePad#destroy - */ - destroy: function () { - - this._rawPad = undefined; - - for (var i = 0; i < this._buttonsLen; i++) - { - this._buttons[i].destroy(); - } - - this._buttons = []; - this._buttonsLen = 0; - - this._axes = []; - this._axesLen = 0; - - this.onConnectCallback = null; - this.onDisconnectCallback = null; - this.onDownCallback = null; - this.onUpCallback = null; - this.onAxisCallback = null; - this.onFloatCallback = null; - - }, - - /** - * Handles changes in axis. - * - * @method Phaser.SinglePad#processAxisChange - * @param {object} axisState - State of the relevant axis - */ - processAxisChange: function (index, value) { - - if (this._axes[index] === value) - { - return; - } - - this._axes[index] = value; - - if (this._padParent.onAxisCallback) - { - this._padParent.onAxisCallback.call(this._padParent.callbackContext, this, index, value); - } - - if (this.onAxisCallback) - { - this.onAxisCallback.call(this.callbackContext, this, index, value); - } - - }, - - /** - * Handles button down press. - * - * @method Phaser.SinglePad#processButtonDown - * @param {number} buttonCode - Which buttonCode of this button - * @param {object} value - Button value - */ - processButtonDown: function (buttonCode, value) { - - if (this._buttons[buttonCode]) - { - this._buttons[buttonCode].start(null, value); - } - - if (this._padParent.onDownCallback) - { - this._padParent.onDownCallback.call(this._padParent.callbackContext, buttonCode, value, this.index); - } - - if (this.onDownCallback) - { - this.onDownCallback.call(this.callbackContext, buttonCode, value); - } - - }, - - /** - * Handles button release. - * - * @method Phaser.SinglePad#processButtonUp - * @param {number} buttonCode - Which buttonCode of this button - * @param {object} value - Button value - */ - processButtonUp: function (buttonCode, value) { - - if (this._padParent.onUpCallback) - { - this._padParent.onUpCallback.call(this._padParent.callbackContext, buttonCode, value, this.index); - } - - if (this.onUpCallback) - { - this.onUpCallback.call(this.callbackContext, buttonCode, value); - } - - if (this._buttons[buttonCode]) - { - this._buttons[buttonCode].stop(null, value); - } - - }, - - /** - * Handles buttons with floating values (like analog buttons that acts almost like an axis but still registers like a button) - * - * @method Phaser.SinglePad#processButtonFloat - * @param {number} buttonCode - Which buttonCode of this button - * @param {object} value - Button value (will range somewhere between 0 and 1, but not specifically 0 or 1. - */ - processButtonFloat: function (buttonCode, value) { - - if (this._padParent.onFloatCallback) - { - this._padParent.onFloatCallback.call(this._padParent.callbackContext, buttonCode, value, this.index); - } - - if (this.onFloatCallback) - { - this.onFloatCallback.call(this.callbackContext, buttonCode, value); - } - - if (this._buttons[buttonCode]) - { - this._buttons[buttonCode].padFloat(value); - } - - }, - - /** - * Returns value of requested axis. - * - * @method Phaser.SinglePad#axis - * @param {number} axisCode - The index of the axis to check - * @return {number} Axis value if available otherwise false - */ - axis: function (axisCode) { - - if (this._axes[axisCode]) - { - return this._axes[axisCode]; - } - - return false; - - }, - - /** - * Returns true if the button is pressed down. - * - * @method Phaser.SinglePad#isDown - * @param {number} buttonCode - The buttonCode of the button to check. - * @return {boolean} True if the button is pressed down. - */ - isDown: function (buttonCode) { - - if (this._buttons[buttonCode]) - { - return this._buttons[buttonCode].isDown; - } - - return false; - - }, - - /** - * Returns true if the button is not currently pressed. - * - * @method Phaser.SinglePad#isUp - * @param {number} buttonCode - The buttonCode of the button to check. - * @return {boolean} True if the button is not currently pressed down. - */ - isUp: function (buttonCode) { - - if (this._buttons[buttonCode]) - { - return this._buttons[buttonCode].isUp; - } - - return false; - - }, - - /** - * Returns the "just released" state of a button from this gamepad. Just released is considered as being true if the button was released within the duration given (default 250ms). - * - * @method Phaser.SinglePad#justReleased - * @param {number} buttonCode - The buttonCode of the button to check for. - * @param {number} [duration=250] - The duration below which the button is considered as being just released. - * @return {boolean} True if the button is just released otherwise false. - */ - justReleased: function (buttonCode, duration) { - - if (this._buttons[buttonCode]) - { - return this._buttons[buttonCode].justReleased(duration); - } - - }, - - /** - * Returns the "just pressed" state of a button from this gamepad. Just pressed is considered true if the button was pressed down within the duration given (default 250ms). - * - * @method Phaser.SinglePad#justPressed - * @param {number} buttonCode - The buttonCode of the button to check for. - * @param {number} [duration=250] - The duration below which the button is considered as being just pressed. - * @return {boolean} True if the button is just pressed otherwise false. - */ - justPressed: function (buttonCode, duration) { - - if (this._buttons[buttonCode]) - { - return this._buttons[buttonCode].justPressed(duration); - } - - }, - - /** - * Returns the value of a gamepad button. Intended mainly for cases when you have floating button values, for example - * analog trigger buttons on the XBOX 360 controller. - * - * @method Phaser.SinglePad#buttonValue - * @param {number} buttonCode - The buttonCode of the button to check. - * @return {number} Button value if available otherwise null. Be careful as this can incorrectly evaluate to 0. - */ - buttonValue: function (buttonCode) { - - if (this._buttons[buttonCode]) - { - return this._buttons[buttonCode].value; - } - - return null; - - }, - - /** - * Reset all buttons/axes of this gamepad. - * - * @method Phaser.SinglePad#reset - */ - reset: function () { - - for (var j = 0; j < this._axes.length; j++) - { - this._axes[j] = 0; - } - - } - -}; - -Phaser.SinglePad.prototype.constructor = Phaser.SinglePad; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* If you need more fine-grained control over the handling of specific keys you can create and use Phaser.Key objects. -* -* @class Phaser.Key -* @constructor -* @param {Phaser.Game} game - Current game instance. -* @param {integer} keycode - The key code this Key is responsible for. See {@link Phaser.KeyCode}. -*/ -Phaser.Key = function (game, keycode) { - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * The enabled state of the key - see `enabled`. - * @property {boolean} _enabled - * @private - */ - this._enabled = true; - - /** - * @property {object} event - Stores the most recent DOM event. - * @readonly - */ - this.event = null; - - /** - * @property {boolean} isDown - The "down" state of the key. This will remain `true` for as long as the keyboard thinks this key is held down. - * @default - */ - this.isDown = false; - - /** - * @property {boolean} isUp - The "up" state of the key. This will remain `true` for as long as the keyboard thinks this key is up. - * @default - */ - this.isUp = true; - - /** - * @property {boolean} altKey - The down state of the ALT key, if pressed at the same time as this key. - * @default - */ - this.altKey = false; - - /** - * @property {boolean} ctrlKey - The down state of the CTRL key, if pressed at the same time as this key. - * @default - */ - this.ctrlKey = false; - - /** - * @property {boolean} shiftKey - The down state of the SHIFT key, if pressed at the same time as this key. - * @default - */ - this.shiftKey = false; - - /** - * @property {number} timeDown - The timestamp when the key was last pressed down. This is based on Game.time.now. - */ - this.timeDown = 0; - - /** - * If the key is down this value holds the duration of that key press and is constantly updated. - * If the key is up it holds the duration of the previous down session. - * @property {number} duration - The number of milliseconds this key has been held down for. - * @default - */ - this.duration = 0; - - /** - * @property {number} timeUp - The timestamp when the key was last released. This is based on Game.time.now. - * @default - */ - this.timeUp = -2500; - - /** - * @property {number} repeats - If a key is held down this holds down the number of times the key has 'repeated'. - * @default - */ - this.repeats = 0; - - /** - * @property {number} keyCode - The keycode of this key. - */ - this.keyCode = keycode; - - /** - * @property {Phaser.Signal} onDown - This Signal is dispatched every time this Key is pressed down. It is only dispatched once (until the key is released again). - */ - this.onDown = new Phaser.Signal(); - - /** - * @property {function} onHoldCallback - A callback that is called while this Key is held down. Warning: Depending on refresh rate that could be 60+ times per second. - */ - this.onHoldCallback = null; - - /** - * @property {object} onHoldContext - The context under which the onHoldCallback will be called. - */ - this.onHoldContext = null; - - /** - * @property {Phaser.Signal} onUp - This Signal is dispatched every time this Key is released. It is only dispatched once (until the key is pressed and released again). - */ - this.onUp = new Phaser.Signal(); - - /** - * @property {boolean} _justDown - True if the key has just been pressed (NOTE: requires to be reset, see justDown getter) - * @private - */ - this._justDown = false; - - /** - * @property {boolean} _justUp - True if the key has just been pressed (NOTE: requires to be reset, see justDown getter) - * @private - */ - this._justUp = false; - -}; - -Phaser.Key.prototype = { - - /** - * Called automatically by Phaser.Keyboard. - * - * @method Phaser.Key#update - * @protected - */ - update: function () { - - if (!this._enabled) { return; } - - if (this.isDown) - { - this.duration = this.game.time.time - this.timeDown; - this.repeats++; - - if (this.onHoldCallback) - { - this.onHoldCallback.call(this.onHoldContext, this); - } - } - - }, - - /** - * Called automatically by Phaser.Keyboard. - * - * @method Phaser.Key#processKeyDown - * @param {KeyboardEvent} event - The DOM event that triggered this. - * @protected - */ - processKeyDown: function (event) { - - if (!this._enabled) { return; } - - this.event = event; - - // exit if this key down is from auto-repeat - if (this.isDown) - { - return; - } - - this.altKey = event.altKey; - this.ctrlKey = event.ctrlKey; - this.shiftKey = event.shiftKey; - - this.isDown = true; - this.isUp = false; - this.timeDown = this.game.time.time; - this.duration = 0; - this.repeats = 0; - - // _justDown will remain true until it is read via the justDown Getter - // this enables the game to poll for past presses, or reset it at the start of a new game state - this._justDown = true; - - this.onDown.dispatch(this); - - }, - - /** - * Called automatically by Phaser.Keyboard. - * - * @method Phaser.Key#processKeyUp - * @param {KeyboardEvent} event - The DOM event that triggered this. - * @protected - */ - processKeyUp: function (event) { - - if (!this._enabled) { return; } - - this.event = event; - - if (this.isUp) - { - return; - } - - this.isDown = false; - this.isUp = true; - this.timeUp = this.game.time.time; - this.duration = this.game.time.time - this.timeDown; - - // _justUp will remain true until it is read via the justUp Getter - // this enables the game to poll for past presses, or reset it at the start of a new game state - this._justUp = true; - - this.onUp.dispatch(this); - - }, - - /** - * Resets the state of this Key. - * - * This sets isDown to false, isUp to true, resets the time to be the current time, and _enables_ the key. - * In addition, if it is a "hard reset", it clears clears any callbacks associated with the onDown and onUp events and removes the onHoldCallback. - * - * @method Phaser.Key#reset - * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks; a hard reset will. - */ - reset: function (hard) { - - if (hard === undefined) { hard = true; } - - this.isDown = false; - this.isUp = true; - this.timeUp = this.game.time.time; - this.duration = 0; - this._enabled = true; // .enabled causes reset(false) - this._justDown = false; - this._justUp = false; - - if (hard) - { - this.onDown.removeAll(); - this.onUp.removeAll(); - this.onHoldCallback = null; - this.onHoldContext = null; - } - - }, - - /** - * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, - * or was pressed down longer ago than then given duration. - * - * @method Phaser.Key#downDuration - * @param {number} [duration=50] - The duration within which the key is considered as being just pressed. Given in ms. - * @return {boolean} True if the key was pressed down within the given duration. - */ - downDuration: function (duration) { - - if (duration === undefined) { duration = 50; } - - return (this.isDown && this.duration < duration); - - }, - - /** - * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, - * or was pressed down longer ago than then given duration. - * - * @method Phaser.Key#upDuration - * @param {number} [duration=50] - The duration within which the key is considered as being just released. Given in ms. - * @return {boolean} True if the key was released within the given duration. - */ - upDuration: function (duration) { - - if (duration === undefined) { duration = 50; } - - return (!this.isDown && ((this.game.time.time - this.timeUp) < duration)); - - } - -}; - -/** -* The justDown value allows you to test if this Key has just been pressed down or not. -* When you check this value it will return `true` if the Key is down, otherwise `false`. -* You can only call justDown once per key press. It will only return `true` once, until the Key is released and pressed down again. -* This allows you to use it in situations where you want to check if this key is down without using a Signal, such as in a core game loop. -* -* @property {boolean} justDown -* @memberof Phaser.Key -* @default false -*/ -Object.defineProperty(Phaser.Key.prototype, "justDown", { - - get: function () { - - var current = this._justDown; - this._justDown = false; - return current; - - } - -}); - -/** -* The justUp value allows you to test if this Key has just been released or not. -* When you check this value it will return `true` if the Key is up, otherwise `false`. -* You can only call justUp once per key release. It will only return `true` once, until the Key is pressed down and released again. -* This allows you to use it in situations where you want to check if this key is up without using a Signal, such as in a core game loop. -* -* @property {boolean} justUp -* @memberof Phaser.Key -* @default false -*/ -Object.defineProperty(Phaser.Key.prototype, "justUp", { - - get: function () { - - var current = this._justUp; - this._justUp = false; - return current; - - } - -}); - -/** -* An enabled key processes its update and dispatches events. -* A key can be disabled momentarily at runtime instead of deleting it. -* -* @property {boolean} enabled -* @memberof Phaser.Key -* @default true -*/ -Object.defineProperty(Phaser.Key.prototype, "enabled", { - - get: function () { - - return this._enabled; - - }, - - set: function (value) { - - value = !!value; - - if (value !== this._enabled) - { - if (!value) - { - this.reset(false); - } - - this._enabled = value; - } - } - -}); - -Phaser.Key.prototype.constructor = Phaser.Key; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Keyboard class monitors keyboard input and dispatches keyboard events. -* -* _Note_: many keyboards are unable to process certain combinations of keys due to hardware limitations known as ghosting. -* See http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ for more details. -* -* Also please be aware that certain browser extensions can disable or override Phaser keyboard handling. -* For example the Chrome extension vimium is known to disable Phaser from using the D key. And there are others. -* So please check your extensions before opening Phaser issues. -* -* @class Phaser.Keyboard -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Keyboard = function (game) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * Keyboard input will only be processed if enabled. - * @property {boolean} enabled - * @default - */ - this.enabled = true; - - /** - * @property {object} event - The most recent DOM event from keydown or keyup. This is updated every time a new key is pressed or released. - */ - this.event = null; - - /** - * @property {object} pressEvent - The most recent DOM event from keypress. - */ - this.pressEvent = null; - - /** - * @property {object} callbackContext - The context under which the callbacks are run. - */ - this.callbackContext = this; - - /** - * @property {function} onDownCallback - This callback is invoked every time a key is pressed down, including key repeats when a key is held down. - */ - this.onDownCallback = null; - - /** - * @property {function} onPressCallback - This callback is invoked every time a DOM onkeypress event is raised, which is only for printable keys. - */ - this.onPressCallback = null; - - /** - * @property {function} onUpCallback - This callback is invoked every time a key is released. - */ - this.onUpCallback = null; - - /** - * @property {array} _keys - The array the Phaser.Key objects are stored in. - * @private - */ - this._keys = []; - - /** - * @property {array} _capture - The array the key capture values are stored in. - * @private - */ - this._capture = []; - - /** - * @property {function} _onKeyDown - * @private - * @default - */ - this._onKeyDown = null; - - /** - * @property {function} _onKeyPress - * @private - * @default - */ - this._onKeyPress = null; - - /** - * @property {function} _onKeyUp - * @private - * @default - */ - this._onKeyUp = null; - - /** - * @property {number} _i - Internal cache var - * @private - */ - this._i = 0; - - /** - * @property {number} _k - Internal cache var - * @private - */ - this._k = 0; - -}; - -Phaser.Keyboard.prototype = { - - /** - * Add callbacks to the Keyboard handler so that each time a key is pressed down or released the callbacks are activated. - * - * @method Phaser.Keyboard#addCallbacks - * @param {object} context - The context under which the callbacks are run. - * @param {function} [onDown=null] - This callback is invoked every time a key is pressed down. - * @param {function} [onUp=null] - This callback is invoked every time a key is released. - * @param {function} [onPress=null] - This callback is invoked every time the onkeypress event is raised. - */ - addCallbacks: function (context, onDown, onUp, onPress) { - - this.callbackContext = context; - - if (onDown !== undefined && onDown !== null) - { - this.onDownCallback = onDown; - } - - if (onUp !== undefined && onUp !== null) - { - this.onUpCallback = onUp; - } - - if (onPress !== undefined && onPress !== null) - { - this.onPressCallback = onPress; - } - - }, - - /** - * If you need more fine-grained control over a Key you can create a new Phaser.Key object via this method. - * The Key object can then be polled, have events attached to it, etc. - * - * @method Phaser.Keyboard#addKey - * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key. - * @return {Phaser.Key} The Key object which you can store locally and reference directly. - */ - addKey: function (keycode) { - - if (!this._keys[keycode]) - { - this._keys[keycode] = new Phaser.Key(this.game, keycode); - - this.addKeyCapture(keycode); - } - - return this._keys[keycode]; - - }, - - /** - * A practical way to create an object containing user selected hotkeys. - * - * For example, - * - * addKeys( { 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S, 'left': Phaser.KeyCode.A, 'right': Phaser.KeyCode.D } ); - * - * would return an object containing properties (`up`, `down`, `left` and `right`) referring to {@link Phaser.Key} object. - * - * @method Phaser.Keyboard#addKeys - * @param {object} keys - A key mapping object, i.e. `{ 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S }` or `{ 'up': 52, 'down': 53 }`. - * @return {object} An object containing the properties mapped to {@link Phaser.Key} values. - */ - addKeys: function (keys) { - - var output = {}; - - for (var key in keys) - { - output[key] = this.addKey(keys[key]); - } - - return output; - - }, - - /** - * Removes a Key object from the Keyboard manager. - * - * @method Phaser.Keyboard#removeKey - * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to remove. - */ - removeKey: function (keycode) { - - if (this._keys[keycode]) - { - this._keys[keycode] = null; - - this.removeKeyCapture(keycode); - } - - }, - - /** - * Creates and returns an object containing 4 hotkeys for Up, Down, Left and Right. - * - * @method Phaser.Keyboard#createCursorKeys - * @return {object} An object containing properties: `up`, `down`, `left` and `right` of {@link Phaser.Key} objects. - */ - createCursorKeys: function () { - - return this.addKeys({ 'up': Phaser.KeyCode.UP, 'down': Phaser.KeyCode.DOWN, 'left': Phaser.KeyCode.LEFT, 'right': Phaser.KeyCode.RIGHT }); - - }, - - /** - * Starts the Keyboard event listeners running (keydown and keyup). They are attached to the window. - * This is called automatically by Phaser.Input and should not normally be invoked directly. - * - * @method Phaser.Keyboard#start - * @protected - */ - start: function () { - - if (this.game.device.cocoonJS) - { - return; - } - - if (this._onKeyDown !== null) - { - // Avoid setting multiple listeners - return; - } - - var _this = this; - - this._onKeyDown = function (event) { - return _this.processKeyDown(event); - }; - - this._onKeyUp = function (event) { - return _this.processKeyUp(event); - }; - - this._onKeyPress = function (event) { - return _this.processKeyPress(event); - }; - - window.addEventListener('keydown', this._onKeyDown, false); - window.addEventListener('keyup', this._onKeyUp, false); - window.addEventListener('keypress', this._onKeyPress, false); - - }, - - /** - * Stops the Keyboard event listeners from running (keydown, keyup and keypress). They are removed from the window. - * - * @method Phaser.Keyboard#stop - */ - stop: function () { - - window.removeEventListener('keydown', this._onKeyDown); - window.removeEventListener('keyup', this._onKeyUp); - window.removeEventListener('keypress', this._onKeyPress); - - this._onKeyDown = null; - this._onKeyUp = null; - this._onKeyPress = null; - - }, - - /** - * Stops the Keyboard event listeners from running (keydown and keyup). They are removed from the window. - * Also clears all key captures and currently created Key objects. - * - * @method Phaser.Keyboard#destroy - */ - destroy: function () { - - this.stop(); - - this.clearCaptures(); - - this._keys.length = 0; - this._i = 0; - - }, - - /** - * By default when a key is pressed Phaser will not stop the event from propagating up to the browser. - * There are some keys this can be annoying for, like the arrow keys or space bar, which make the browser window scroll. - * - * The `addKeyCapture` method enables consuming keyboard event for specific keys so it doesn't bubble up to the the browser - * and cause the default browser behavior. - * - * Pass in either a single keycode or an array/hash of keycodes. - * - * @method Phaser.Keyboard#addKeyCapture - * @param {integer|integer[]|object} keycode - Either a single {@link Phaser.KeyCode keycode} or an array/hash of keycodes such as `[65, 67, 68]`. - */ - addKeyCapture: function (keycode) { - - if (typeof keycode === 'object') - { - for (var key in keycode) - { - this._capture[keycode[key]] = true; - } - } - else - { - this._capture[keycode] = true; - } - }, - - /** - * Removes an existing key capture. - * - * @method Phaser.Keyboard#removeKeyCapture - * @param {integer} keycode - The {@link Phaser.KeyCode keycode} to remove capturing of. - */ - removeKeyCapture: function (keycode) { - - delete this._capture[keycode]; - - }, - - /** - * Clear all set key captures. - * - * @method Phaser.Keyboard#clearCaptures - */ - clearCaptures: function () { - - this._capture = {}; - - }, - - /** - * Updates all currently defined keys. - * - * @method Phaser.Keyboard#update - */ - update: function () { - - this._i = this._keys.length; - - while (this._i--) - { - if (this._keys[this._i]) - { - this._keys[this._i].update(); - } - } - - }, - - /** - * Process the keydown event. - * - * @method Phaser.Keyboard#processKeyDown - * @param {KeyboardEvent} event - * @protected - */ - processKeyDown: function (event) { - - this.event = event; - - if (!this.game.input.enabled || !this.enabled) - { - return; - } - - var key = event.keyCode; - - // The event is being captured but another hotkey may need it - if (this._capture[key]) - { - event.preventDefault(); - } - - if (!this._keys[key]) - { - this._keys[key] = new Phaser.Key(this.game, key); - } - - this._keys[key].processKeyDown(event); - - this._k = key; - - if (this.onDownCallback) - { - this.onDownCallback.call(this.callbackContext, event); - } - - }, - - /** - * Process the keypress event. - * - * @method Phaser.Keyboard#processKeyPress - * @param {KeyboardEvent} event - * @protected - */ - processKeyPress: function (event) { - - this.pressEvent = event; - - if (!this.game.input.enabled || !this.enabled) - { - return; - } - - if (this.onPressCallback) - { - this.onPressCallback.call(this.callbackContext, String.fromCharCode(event.charCode), event); - } - - }, - - /** - * Process the keyup event. - * - * @method Phaser.Keyboard#processKeyUp - * @param {KeyboardEvent} event - * @protected - */ - processKeyUp: function (event) { - - this.event = event; - - if (!this.game.input.enabled || !this.enabled) - { - return; - } - - var key = event.keyCode; - - if (this._capture[key]) - { - event.preventDefault(); - } - - if (!this._keys[key]) - { - this._keys[key] = new Phaser.Key(this.game, key); - } - - this._keys[key].processKeyUp(event); - - if (this.onUpCallback) - { - this.onUpCallback.call(this.callbackContext, event); - } - - }, - - /** - * Resets all Keys. - * - * @method Phaser.Keyboard#reset - * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to the Keys. A hard reset will. - */ - reset: function (hard) { - - if (hard === undefined) { hard = true; } - - this.event = null; - - var i = this._keys.length; - - while (i--) - { - if (this._keys[i]) - { - this._keys[i].reset(hard); - } - } - - }, - - /** - * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, - * or was pressed down longer ago than then given duration. - * - * @method Phaser.Keyboard#downDuration - * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. - * @param {number} [duration=50] - The duration within which the key is considered as being just pressed. Given in ms. - * @return {boolean} True if the key was pressed down within the given duration, false if not or null if the Key wasn't found. - */ - downDuration: function (keycode, duration) { - - if (this._keys[keycode]) - { - return this._keys[keycode].downDuration(duration); - } - else - { - return null; - } - - }, - - /** - * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, - * or was pressed down longer ago than then given duration. - * - * @method Phaser.Keyboard#upDuration - * @param {Phaser.KeyCode|integer} keycode - The keycode of the key to check, i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. - * @param {number} [duration=50] - The duration within which the key is considered as being just released. Given in ms. - * @return {boolean} True if the key was released within the given duration, false if not or null if the Key wasn't found. - */ - upDuration: function (keycode, duration) { - - if (this._keys[keycode]) - { - return this._keys[keycode].upDuration(duration); - } - else - { - return null; - } - - }, - - /** - * Returns true of the key is currently pressed down. Note that it can only detect key presses on the web browser. - * - * @method Phaser.Keyboard#isDown - * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. - * @return {boolean} True if the key is currently down, false if not or null if the Key wasn't found. - */ - isDown: function (keycode) { - - if (this._keys[keycode]) - { - return this._keys[keycode].isDown; - } - else - { - return null; - } - - } - -}; - -/** -* Returns the string value of the most recently pressed key. -* @name Phaser.Keyboard#lastChar -* @property {string} lastChar - The string value of the most recently pressed key. -* @readonly -*/ -Object.defineProperty(Phaser.Keyboard.prototype, "lastChar", { - - get: function () { - - if (this.event.charCode === 32) - { - return ''; - } - else - { - return String.fromCharCode(this.pressEvent.charCode); - } - - } - -}); - -/** -* Returns the most recently pressed Key. This is a Phaser.Key object and it changes every time a key is pressed. -* @name Phaser.Keyboard#lastKey -* @property {Phaser.Key} lastKey - The most recently pressed Key. -* @readonly -*/ -Object.defineProperty(Phaser.Keyboard.prototype, "lastKey", { - - get: function () { - - return this._keys[this._k]; - - } - -}); - -Phaser.Keyboard.prototype.constructor = Phaser.Keyboard; - -/** -* A key code represents a physical key on a keyboard. -* -* The KeyCode class contains commonly supported keyboard key codes which can be used -* as keycode`-parameters in several {@link Phaser.Keyboard} and {@link Phaser.Key} methods. -* -* _Note_: These values should only be used indirectly, eg. as `Phaser.KeyCode.KEY`. -* Future versions may replace the actual values, such that they remain compatible with `keycode`-parameters. -* The current implementation maps to the {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode KeyboardEvent.keyCode} property. -* -* _Note_: Use `Phaser.KeyCode.KEY` instead of `Phaser.Keyboard.KEY` to refer to a key code; -* the latter approach is supported for compatibility. -* -* @namespace -*/ -Phaser.KeyCode = { - /** @static */ - A: "A".charCodeAt(0), - /** @static */ - B: "B".charCodeAt(0), - /** @static */ - C: "C".charCodeAt(0), - /** @static */ - D: "D".charCodeAt(0), - /** @static */ - E: "E".charCodeAt(0), - /** @static */ - F: "F".charCodeAt(0), - /** @static */ - G: "G".charCodeAt(0), - /** @static */ - H: "H".charCodeAt(0), - /** @static */ - I: "I".charCodeAt(0), - /** @static */ - J: "J".charCodeAt(0), - /** @static */ - K: "K".charCodeAt(0), - /** @static */ - L: "L".charCodeAt(0), - /** @static */ - M: "M".charCodeAt(0), - /** @static */ - N: "N".charCodeAt(0), - /** @static */ - O: "O".charCodeAt(0), - /** @static */ - P: "P".charCodeAt(0), - /** @static */ - Q: "Q".charCodeAt(0), - /** @static */ - R: "R".charCodeAt(0), - /** @static */ - S: "S".charCodeAt(0), - /** @static */ - T: "T".charCodeAt(0), - /** @static */ - U: "U".charCodeAt(0), - /** @static */ - V: "V".charCodeAt(0), - /** @static */ - W: "W".charCodeAt(0), - /** @static */ - X: "X".charCodeAt(0), - /** @static */ - Y: "Y".charCodeAt(0), - /** @static */ - Z: "Z".charCodeAt(0), - /** @static */ - ZERO: "0".charCodeAt(0), - /** @static */ - ONE: "1".charCodeAt(0), - /** @static */ - TWO: "2".charCodeAt(0), - /** @static */ - THREE: "3".charCodeAt(0), - /** @static */ - FOUR: "4".charCodeAt(0), - /** @static */ - FIVE: "5".charCodeAt(0), - /** @static */ - SIX: "6".charCodeAt(0), - /** @static */ - SEVEN: "7".charCodeAt(0), - /** @static */ - EIGHT: "8".charCodeAt(0), - /** @static */ - NINE: "9".charCodeAt(0), - /** @static */ - NUMPAD_0: 96, - /** @static */ - NUMPAD_1: 97, - /** @static */ - NUMPAD_2: 98, - /** @static */ - NUMPAD_3: 99, - /** @static */ - NUMPAD_4: 100, - /** @static */ - NUMPAD_5: 101, - /** @static */ - NUMPAD_6: 102, - /** @static */ - NUMPAD_7: 103, - /** @static */ - NUMPAD_8: 104, - /** @static */ - NUMPAD_9: 105, - /** @static */ - NUMPAD_MULTIPLY: 106, - /** @static */ - NUMPAD_ADD: 107, - /** @static */ - NUMPAD_ENTER: 108, - /** @static */ - NUMPAD_SUBTRACT: 109, - /** @static */ - NUMPAD_DECIMAL: 110, - /** @static */ - NUMPAD_DIVIDE: 111, - /** @static */ - F1: 112, - /** @static */ - F2: 113, - /** @static */ - F3: 114, - /** @static */ - F4: 115, - /** @static */ - F5: 116, - /** @static */ - F6: 117, - /** @static */ - F7: 118, - /** @static */ - F8: 119, - /** @static */ - F9: 120, - /** @static */ - F10: 121, - /** @static */ - F11: 122, - /** @static */ - F12: 123, - /** @static */ - F13: 124, - /** @static */ - F14: 125, - /** @static */ - F15: 126, - /** @static */ - COLON: 186, - /** @static */ - EQUALS: 187, - /** @static */ - COMMA: 188, - /** @static */ - UNDERSCORE: 189, - /** @static */ - PERIOD: 190, - /** @static */ - QUESTION_MARK: 191, - /** @static */ - TILDE: 192, - /** @static */ - OPEN_BRACKET: 219, - /** @static */ - BACKWARD_SLASH: 220, - /** @static */ - CLOSED_BRACKET: 221, - /** @static */ - QUOTES: 222, - /** @static */ - BACKSPACE: 8, - /** @static */ - TAB: 9, - /** @static */ - CLEAR: 12, - /** @static */ - ENTER: 13, - /** @static */ - SHIFT: 16, - /** @static */ - CONTROL: 17, - /** @static */ - ALT: 18, - /** @static */ - CAPS_LOCK: 20, - /** @static */ - ESC: 27, - /** @static */ - SPACEBAR: 32, - /** @static */ - PAGE_UP: 33, - /** @static */ - PAGE_DOWN: 34, - /** @static */ - END: 35, - /** @static */ - HOME: 36, - /** @static */ - LEFT: 37, - /** @static */ - UP: 38, - /** @static */ - RIGHT: 39, - /** @static */ - DOWN: 40, - /** @static */ - PLUS: 43, - /** @static */ - MINUS: 44, - /** @static */ - INSERT: 45, - /** @static */ - DELETE: 46, - /** @static */ - HELP: 47, - /** @static */ - NUM_LOCK: 144 -}; - -// Duplicate Phaser.KeyCode values in Phaser.Keyboard for compatibility -for (var key in Phaser.KeyCode) { - if (Phaser.KeyCode.hasOwnProperty(key) && !key.match(/[a-z]/)) { - Phaser.Keyboard[key] = Phaser.KeyCode[key]; - } -} - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -Phaser.Component = function () {}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Angle Component provides access to an `angle` property; the rotation of a Game Object in degrees. -* -* @class -*/ -Phaser.Component.Angle = function () {}; - -Phaser.Component.Angle.prototype = { - - /** - * The angle property is the rotation of the Game Object in *degrees* from its original orientation. - * - * Values from 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation. - * - * Values outside this range are added to or subtracted from 360 to obtain a value within the range. - * For example, the statement player.angle = 450 is the same as player.angle = 90. - * - * If you wish to work in radians instead of degrees you can use the property `rotation` instead. - * Working in radians is slightly faster as it doesn't have to perform any calculations. - * - * @property {number} angle - */ - angle: { - - get: function() { - - return Phaser.Math.wrapAngle(Phaser.Math.radToDeg(this.rotation)); - - }, - - set: function(value) { - - this.rotation = Phaser.Math.degToRad(Phaser.Math.wrapAngle(value)); - - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Animation Component provides a `play` method, which is a proxy to the `AnimationManager.play` method. -* -* @class -*/ -Phaser.Component.Animation = function () {}; - -Phaser.Component.Animation.prototype = { - - /** - * Plays an Animation. - * - * The animation should have previously been created via `animations.add`. - * - * If the animation is already playing calling this again won't do anything. - * If you need to reset an already running animation do so directly on the Animation object itself or via `AnimationManager.stop`. - * - * @method - * @param {string} name - The name of the animation to be played, e.g. "fire", "walk", "jump". Must have been previously created via 'AnimationManager.add'. - * @param {number} [frameRate=null] - The framerate to play the animation at. The speed is given in frames per second. If not provided the previously set frameRate of the Animation is used. - * @param {boolean} [loop=false] - Should the animation be looped after playback. If not provided the previously set loop value of the Animation is used. - * @param {boolean} [killOnComplete=false] - If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. - * @return {Phaser.Animation} A reference to playing Animation. - */ - play: function (name, frameRate, loop, killOnComplete) { - - if (this.animations) - { - return this.animations.play(name, frameRate, loop, killOnComplete); - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The AutoCull Component is responsible for providing methods that check if a Game Object is within the bounds of the World Camera. -* It is used by the InWorld component. -* -* @class -*/ -Phaser.Component.AutoCull = function () {}; - -Phaser.Component.AutoCull.prototype = { - - /** - * A Game Object with `autoCull` set to true will check its bounds against the World Camera every frame. - * If it is not intersecting the Camera bounds at any point then it has its `renderable` property set to `false`. - * This keeps the Game Object alive and still processing updates, but forces it to skip the render step entirely. - * - * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, - * or you have tested performance and find it acceptable. - * - * @property {boolean} autoCull - * @default - */ - autoCull: false, - - /** - * Checks if the Game Objects bounds intersect with the Game Camera bounds. - * Returns `true` if they do, otherwise `false` if fully outside of the Cameras bounds. - * - * @property {boolean} inCamera - * @readonly - */ - inCamera: { - - get: function() { - - if (!this.autoCull && !this.checkWorldBounds) - { - this._bounds.copyFrom(this.getBounds()); - this._bounds.x += this.game.camera.view.x; - this._bounds.y += this.game.camera.view.y; - } - - return this.game.world.camera.view.intersects(this._bounds); - - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Bounds component contains properties related to the bounds of the Game Object. -* -* @class -*/ -Phaser.Component.Bounds = function () {}; - -Phaser.Component.Bounds.prototype = { - - /** - * The amount the Game Object is visually offset from its x coordinate. - * This is the same as `width * anchor.x`. - * It will only be > 0 if anchor.x is not equal to zero. - * - * @property {number} offsetX - * @readOnly - */ - offsetX: { - - get: function () { - - return this.anchor.x * this.width; - - } - - }, - - /** - * The amount the Game Object is visually offset from its y coordinate. - * This is the same as `height * anchor.y`. - * It will only be > 0 if anchor.y is not equal to zero. - * - * @property {number} offsetY - * @readOnly - */ - offsetY: { - - get: function () { - - return this.anchor.y * this.height; - - } - - }, - - /** - * The center x coordinate of the Game Object. - * This is the same as `(x - offsetX) + (width / 2)`. - * - * @property {number} centerX - */ - centerX: { - - get: function () { - - return (this.x - this.offsetX) + (this.width * 0.5); - - }, - - set: function (value) { - - this.x = (value + this.offsetX) - (this.width * 0.5); - - } - - }, - - /** - * The center y coordinate of the Game Object. - * This is the same as `(y - offsetY) + (height / 2)`. - * - * @property {number} centerY - */ - centerY: { - - get: function () { - - return (this.y - this.offsetY) + (this.height * 0.5); - - }, - - set: function (value) { - - this.y = (value + this.offsetY) - (this.height * 0.5); - - } - - }, - - /** - * The left coordinate of the Game Object. - * This is the same as `x - offsetX`. - * - * @property {number} left - */ - left: { - - get: function () { - - return this.x - this.offsetX; - - }, - - set: function (value) { - - this.x = value + this.offsetX; - - } - - }, - - /** - * The right coordinate of the Game Object. - * This is the same as `x + width - offsetX`. - * - * @property {number} right - */ - right: { - - get: function () { - - return (this.x + this.width) - this.offsetX; - - }, - - set: function (value) { - - this.x = value - (this.width) + this.offsetX; - - } - - }, - - /** - * The y coordinate of the Game Object. - * This is the same as `y - offsetY`. - * - * @property {number} top - */ - top: { - - get: function () { - - return this.y - this.offsetY; - - }, - - set: function (value) { - - this.y = value + this.offsetY; - - } - - }, - - /** - * The sum of the y and height properties. - * This is the same as `y + height - offsetY`. - * - * @property {number} bottom - */ - bottom: { - - get: function () { - - return (this.y + this.height) - this.offsetY; - - }, - - set: function (value) { - - this.y = value - (this.height) + this.offsetY; - - } - - }, - - /** - * Aligns this Game Object within another Game Object, or Rectangle, known as the - * 'container', to one of 9 possible positions. - * - * The container must be a Game Object, or Phaser.Rectangle object. This can include properties - * such as `World.bounds` or `Camera.view`, for aligning Game Objects within the world - * and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, - * TileSprites or Buttons. - * - * Please note that aligning a Sprite to another Game Object does **not** make it a child of - * the container. It simply modifies its position coordinates so it aligns with it. - * - * The position constants you can use are: - * - * `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, - * `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, - * `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. - * - * The Game Objects are placed in such a way that their _bounds_ align with the - * container, taking into consideration rotation, scale and the anchor property. - * This allows you to neatly align Game Objects, irrespective of their position value. - * - * The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final - * aligned position of the Game Object. For example: - * - * `sprite.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` - * - * Would align the `sprite` to the bottom-right, but moved 20 pixels in from the corner. - * Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. - * So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive - * one expands it. - * - * @method - * @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Game Object to. Can also include properties such as `World.bounds` or `Camera.view`. - * @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. - * @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. - * @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. - * @return {Object} This Game Object. - */ - alignIn: function (container, position, offsetX, offsetY) { - - if (offsetX === undefined) { offsetX = 0; } - if (offsetY === undefined) { offsetY = 0; } - - switch (position) - { - default: - case Phaser.TOP_LEFT: - this.left = container.left - offsetX; - this.top = container.top - offsetY; - break; - - case Phaser.TOP_CENTER: - this.centerX = container.centerX + offsetX; - this.top = container.top - offsetY; - break; - - case Phaser.TOP_RIGHT: - this.right = container.right + offsetX; - this.top = container.top - offsetY; - break; - - case Phaser.LEFT_CENTER: - this.left = container.left - offsetX; - this.centerY = container.centerY + offsetY; - break; - - case Phaser.CENTER: - this.centerX = container.centerX + offsetX; - this.centerY = container.centerY + offsetY; - break; - - case Phaser.RIGHT_CENTER: - this.right = container.right + offsetX; - this.centerY = container.centerY + offsetY; - break; - - case Phaser.BOTTOM_LEFT: - this.left = container.left - offsetX; - this.bottom = container.bottom + offsetY; - break; - - case Phaser.BOTTOM_CENTER: - this.centerX = container.centerX + offsetX; - this.bottom = container.bottom + offsetY; - break; - - case Phaser.BOTTOM_RIGHT: - this.right = container.right + offsetX; - this.bottom = container.bottom + offsetY; - break; - } - - return this; - - }, - - /** - * Aligns this Game Object to the side of another Game Object, or Rectangle, known as the - * 'parent', in one of 11 possible positions. - * - * The parent must be a Game Object, or Phaser.Rectangle object. This can include properties - * such as `World.bounds` or `Camera.view`, for aligning Game Objects within the world - * and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, - * TileSprites or Buttons. - * - * Please note that aligning a Sprite to another Game Object does **not** make it a child of - * the parent. It simply modifies its position coordinates so it aligns with it. - * - * The position constants you can use are: - * - * `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, - * `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, - * `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` - * and `Phaser.BOTTOM_RIGHT`. - * - * The Game Objects are placed in such a way that their _bounds_ align with the - * parent, taking into consideration rotation, scale and the anchor property. - * This allows you to neatly align Game Objects, irrespective of their position value. - * - * The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final - * aligned position of the Game Object. For example: - * - * `sprite.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` - * - * Would align the `sprite` to the bottom-right, but moved 20 pixels in from the corner. - * Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. - * So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive - * one expands it. - * - * @method - * @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Game Object to. Can also include properties such as `World.bounds` or `Camera.view`. - * @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. - * @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. - * @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. - * @return {Object} This Game Object. - */ - alignTo: function (parent, position, offsetX, offsetY) { - - if (offsetX === undefined) { offsetX = 0; } - if (offsetY === undefined) { offsetY = 0; } - - switch (position) - { - default: - case Phaser.TOP_LEFT: - this.left = parent.left - offsetX; - this.bottom = parent.top - offsetY; - break; - - case Phaser.TOP_CENTER: - this.centerX = parent.centerX + offsetX; - this.bottom = parent.top - offsetY; - break; - - case Phaser.TOP_RIGHT: - this.right = parent.right + offsetX; - this.bottom = parent.top - offsetY; - break; - - case Phaser.LEFT_TOP: - this.right = parent.left - offsetX; - this.top = parent.top - offsetY; - break; - - case Phaser.LEFT_CENTER: - this.right = parent.left - offsetX; - this.centerY = parent.centerY + offsetY; - break; - - case Phaser.LEFT_BOTTOM: - this.right = parent.left - offsetX; - this.bottom = parent.bottom + offsetY; - break; - - case Phaser.RIGHT_TOP: - this.left = parent.right + offsetX; - this.top = parent.top - offsetY; - break; - - case Phaser.RIGHT_CENTER: - this.left = parent.right + offsetX; - this.centerY = parent.centerY + offsetY; - break; - - case Phaser.RIGHT_BOTTOM: - this.left = parent.right + offsetX; - this.bottom = parent.bottom + offsetY; - break; - - case Phaser.BOTTOM_LEFT: - this.left = parent.left - offsetX; - this.top = parent.bottom + offsetY; - break; - - case Phaser.BOTTOM_CENTER: - this.centerX = parent.centerX + offsetX; - this.top = parent.bottom + offsetY; - break; - - case Phaser.BOTTOM_RIGHT: - this.right = parent.right + offsetX; - this.top = parent.bottom + offsetY; - break; - } - - return this; - - } - -}; - -// Phaser.Group extensions - -Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; -Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The BringToTop Component features quick access to Group sorting related methods. -* -* @class -*/ -Phaser.Component.BringToTop = function () {}; - -/** -* Brings this Game Object to the top of its parents display list. -* Visually this means it will render over the top of any old child in the same Group. -* -* If this Game Object hasn't been added to a custom Group then this method will bring it to the top of the Game World, -* because the World is the root Group from which all Game Objects descend. -* -* @method -* @return {PIXI.DisplayObject} This instance. -*/ -Phaser.Component.BringToTop.prototype.bringToTop = function() { - - if (this.parent) - { - this.parent.bringToTop(this); - } - - return this; - -}; - -/** -* Sends this Game Object to the bottom of its parents display list. -* Visually this means it will render below all other children in the same Group. -* -* If this Game Object hasn't been added to a custom Group then this method will send it to the bottom of the Game World, -* because the World is the root Group from which all Game Objects descend. -* -* @method -* @return {PIXI.DisplayObject} This instance. -*/ -Phaser.Component.BringToTop.prototype.sendToBack = function() { - - if (this.parent) - { - this.parent.sendToBack(this); - } - - return this; - -}; - -/** -* Moves this Game Object up one place in its parents display list. -* This call has no effect if the Game Object is already at the top of the display list. -* -* If this Game Object hasn't been added to a custom Group then this method will move it one object up within the Game World, -* because the World is the root Group from which all Game Objects descend. -* -* @method -* @return {PIXI.DisplayObject} This instance. -*/ -Phaser.Component.BringToTop.prototype.moveUp = function () { - - if (this.parent) - { - this.parent.moveUp(this); - } - - return this; - -}; - -/** -* Moves this Game Object down one place in its parents display list. -* This call has no effect if the Game Object is already at the bottom of the display list. -* -* If this Game Object hasn't been added to a custom Group then this method will move it one object down within the Game World, -* because the World is the root Group from which all Game Objects descend. -* -* @method -* @return {PIXI.DisplayObject} This instance. -*/ -Phaser.Component.BringToTop.prototype.moveDown = function () { - - if (this.parent) - { - this.parent.moveDown(this); - } - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Core Component Features. -* -* @class -*/ -Phaser.Component.Core = function () {}; - -/** -* Installs / registers mixin components. -* -* The `this` context should be that of the applicable object instance or prototype. -* -* @method -* @protected -*/ -Phaser.Component.Core.install = function (components) { - - // Always install 'Core' first - Phaser.Utils.mixinPrototype(this, Phaser.Component.Core.prototype); - - this.components = {}; - - for (var i = 0; i < components.length; i++) - { - var id = components[i]; - var replace = false; - - if (id === 'Destroy') - { - replace = true; - } - - Phaser.Utils.mixinPrototype(this, Phaser.Component[id].prototype, replace); - - this.components[id] = true; - } - -}; - -/** -* Initializes the mixin components. -* -* The `this` context should be an instance of the component mixin target. -* -* @method -* @protected -*/ -Phaser.Component.Core.init = function (game, x, y, key, frame) { - - this.game = game; - - this.key = key; - - this.data = {}; - - this.position.set(x, y); - this.world = new Phaser.Point(x, y); - this.previousPosition = new Phaser.Point(x, y); - - this.events = new Phaser.Events(this); - - this._bounds = new Phaser.Rectangle(); - - if (this.components.PhysicsBody) - { - // Enable-body checks for hasOwnProperty; makes sure to lift property from prototype. - this.body = this.body; - } - - if (this.components.Animation) - { - this.animations = new Phaser.AnimationManager(this); - } - - if (this.components.LoadTexture && key !== null) - { - this.loadTexture(key, frame); - } - - if (this.components.FixedToCamera) - { - this.cameraOffset = new Phaser.Point(x, y); - } - -}; - -Phaser.Component.Core.preUpdate = function () { - - if (this.pendingDestroy) - { - this.destroy(); - return; - } - - this.previousPosition.set(this.world.x, this.world.y); - this.previousRotation = this.rotation; - - if (!this.exists || !this.parent.exists) - { - this.renderOrderID = -1; - return false; - } - - this.world.setTo(this.game.camera.x + this.worldTransform.tx, this.game.camera.y + this.worldTransform.ty); - - if (this.visible) - { - this.renderOrderID = this.game.stage.currentRenderOrderID++; - } - - if (this.animations) - { - this.animations.update(); - } - - if (this.body) - { - this.body.preUpdate(); - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].preUpdate(); - } - - return true; - -}; - -Phaser.Component.Core.prototype = { - - /** - * A reference to the currently running Game. - * @property {Phaser.Game} game - */ - game: null, - - /** - * A user defined name given to this Game Object. - * This value isn't ever used internally by Phaser, it is meant as a game level property. - * @property {string} name - * @default - */ - name: '', - - /** - * An empty Object that belongs to this Game Object. - * This value isn't ever used internally by Phaser, but may be used by your own code, or - * by Phaser Plugins, to store data that needs to be associated with the Game Object, - * without polluting the Game Object directly. - * @property {Object} data - * @default - */ - data: {}, - - /** - * The components this Game Object has installed. - * @property {object} components - * @protected - */ - components: {}, - - /** - * The z depth of this Game Object within its parent Group. - * No two objects in a Group can have the same z value. - * This value is adjusted automatically whenever the Group hierarchy changes. - * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. - * @property {number} z - * @readOnly - */ - z: 0, - - /** - * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this - * Game Object, or any of its components. - * @see Phaser.Events - * @property {Phaser.Events} events - */ - events: undefined, - - /** - * If the Game Object is enabled for animation (such as a Phaser.Sprite) this is a reference to its AnimationManager instance. - * Through it you can create, play, pause and stop animations. - * @see Phaser.AnimationManager - * @property {Phaser.AnimationManager} animations - */ - animations: undefined, - - /** - * The key of the image or texture used by this Game Object during rendering. - * If it is a string it's the string used to retrieve the texture from the Phaser Image Cache. - * It can also be an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. - * If a Game Object is created without a key it is automatically assigned the key `__default` which is a 32x32 transparent PNG stored within the Cache. - * If a Game Object is given a key which doesn't exist in the Image Cache it is re-assigned the key `__missing` which is a 32x32 PNG of a green box with a line through it. - * @property {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} key - */ - key: '', - - /** - * The world coordinates of this Game Object in pixels. - * Depending on where in the display list this Game Object is placed this value can differ from `position`, - * which contains the x/y coordinates relative to the Game Objects parent. - * @property {Phaser.Point} world - */ - world: null, - - /** - * A debug flag designed for use with `Game.enableStep`. - * @property {boolean} debug - * @default - */ - debug: false, - - /** - * The position the Game Object was located in the previous frame. - * @property {Phaser.Point} previousPosition - * @readOnly - */ - previousPosition: null, - - /** - * The rotation the Game Object was in set to in the previous frame. Value is in radians. - * @property {number} previousRotation - * @readOnly - */ - previousRotation: 0, - - /** - * The render order ID is used internally by the renderer and Input Manager and should not be modified. - * This property is mostly used internally by the renderers, but is exposed for the use of plugins. - * @property {number} renderOrderID - * @readOnly - */ - renderOrderID: 0, - - /** - * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. - * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. - * @property {boolean} fresh - * @readOnly - */ - fresh: true, - - /** - * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. - * You can set it directly to allow you to flag an object to be destroyed on its next update. - * - * This is extremely useful if you wish to destroy an object from within one of its own callbacks - * such as with Buttons or other Input events. - * - * @property {boolean} pendingDestroy - */ - pendingDestroy: false, - - /** - * @property {Phaser.Rectangle} _bounds - Internal cache var. - * @private - */ - _bounds: null, - - /** - * @property {boolean} _exists - Internal cache var. - * @private - */ - _exists: true, - - /** - * Controls if this Game Object is processed by the core game loop. - * If this Game Object has a physics body it also controls if its physics body is updated or not. - * When `exists` is set to `false` it will remove its physics body from the physics world if it has one. - * It also toggles the `visible` property to false as well. - * - * Setting `exists` to true will add its physics body back in to the physics world, if it has one. - * It will also set the `visible` property to `true`. - * - * @property {boolean} exists - */ - exists: { - - get: function () { - - return this._exists; - - }, - - set: function (value) { - - if (value) - { - this._exists = true; - - if (this.body && this.body.type === Phaser.Physics.P2JS) - { - this.body.addToWorld(); - } - - this.visible = true; - } - else - { - this._exists = false; - - if (this.body && this.body.type === Phaser.Physics.P2JS) - { - this.body.removeFromWorld(); - } - - this.visible = false; - } - - } - - }, - - /** - * Override this method in your own custom objects to handle any update requirements. - * It is called immediately after `preUpdate` and before `postUpdate`. - * Remember if this Game Object has any children you should call update on those too. - * - * @method - */ - update: function() { - - }, - - /** - * Internal method called by the World postUpdate cycle. - * - * @method - * @protected - */ - postUpdate: function() { - - if (this.customRender) - { - this.key.render(); - } - - if (this.components.PhysicsBody) - { - Phaser.Component.PhysicsBody.postUpdate.call(this); - } - - if (this.components.FixedToCamera) - { - Phaser.Component.FixedToCamera.postUpdate.call(this); - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].postUpdate(); - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Crop component provides the ability to crop a texture based Game Object to a defined rectangle, -* which can be updated in real-time. -* -* @class -*/ -Phaser.Component.Crop = function () {}; - -Phaser.Component.Crop.prototype = { - - /** - * The Rectangle used to crop the texture this Game Object uses. - * Set this property via `crop`. - * If you modify this property directly you must call `updateCrop` in order to have the change take effect. - * @property {Phaser.Rectangle} cropRect - * @default - */ - cropRect: null, - - /** - * @property {Phaser.Rectangle} _crop - Internal cache var. - * @private - */ - _crop: null, - - /** - * Crop allows you to crop the texture being used to display this Game Object. - * Setting a crop rectangle modifies the core texture frame. The Game Object width and height properties will be adjusted accordingly. - * - * Cropping takes place from the top-left and can be modified in real-time either by providing an updated rectangle object to this method, - * or by modifying `cropRect` property directly and then calling `updateCrop`. - * - * The rectangle object given to this method can be either a `Phaser.Rectangle` or any other object - * so long as it has public `x`, `y`, `width`, `height`, `right` and `bottom` properties. - * - * A reference to the rectangle is stored in `cropRect` unless the `copy` parameter is `true`, - * in which case the values are duplicated to a local object. - * - * @method - * @param {Phaser.Rectangle} rect - The Rectangle used during cropping. Pass null or no parameters to clear a previously set crop rectangle. - * @param {boolean} [copy=false] - If false `cropRect` will be stored as a reference to the given rect. If true it will copy the rect values into a local Phaser Rectangle object stored in cropRect. - */ - crop: function(rect, copy) { - - if (copy === undefined) { copy = false; } - - if (rect) - { - if (copy && this.cropRect !== null) - { - this.cropRect.setTo(rect.x, rect.y, rect.width, rect.height); - } - else if (copy && this.cropRect === null) - { - this.cropRect = new Phaser.Rectangle(rect.x, rect.y, rect.width, rect.height); - } - else - { - this.cropRect = rect; - } - - this.updateCrop(); - } - else - { - this._crop = null; - this.cropRect = null; - - this.resetFrame(); - } - - }, - - /** - * If you have set a crop rectangle on this Game Object via `crop` and since modified the `cropRect` property, - * or the rectangle it references, then you need to update the crop frame by calling this method. - * - * @method - */ - updateCrop: function() { - - if (!this.cropRect) - { - return; - } - - this._crop = Phaser.Rectangle.clone(this.cropRect, this._crop); - this._crop.x += this._frame.x; - this._crop.y += this._frame.y; - - var cx = Math.max(this._frame.x, this._crop.x); - var cy = Math.max(this._frame.y, this._crop.y); - var cw = Math.min(this._frame.right, this._crop.right) - cx; - var ch = Math.min(this._frame.bottom, this._crop.bottom) - cy; - - this.texture.crop.x = cx; - this.texture.crop.y = cy; - this.texture.crop.width = cw; - this.texture.crop.height = ch; - - this.texture.frame.width = Math.min(cw, this.cropRect.width); - this.texture.frame.height = Math.min(ch, this.cropRect.height); - - this.texture.width = this.texture.frame.width; - this.texture.height = this.texture.frame.height; - - this.texture._updateUvs(); - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Delta component provides access to delta values between the Game Objects current and previous position. -* -* @class -*/ -Phaser.Component.Delta = function () {}; - -Phaser.Component.Delta.prototype = { - - /** - * Returns the delta x value. The difference between world.x now and in the previous frame. - * - * The value will be positive if the Game Object has moved to the right or negative if to the left. - * - * @property {number} deltaX - * @readonly - */ - deltaX: { - - get: function() { - - return this.world.x - this.previousPosition.x; - - } - - }, - - /** - * Returns the delta y value. The difference between world.y now and in the previous frame. - * - * The value will be positive if the Game Object has moved down or negative if up. - * - * @property {number} deltaY - * @readonly - */ - deltaY: { - - get: function() { - - return this.world.y - this.previousPosition.y; - - } - - }, - - /** - * Returns the delta z value. The difference between rotation now and in the previous frame. - * - * @property {number} deltaZ - The delta value. - * @readonly - */ - deltaZ: { - - get: function() { - - return this.rotation - this.previousRotation; - - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Destroy component is responsible for destroying a Game Object. -* -* @class -*/ -Phaser.Component.Destroy = function () {}; - -Phaser.Component.Destroy.prototype = { - - /** - * As a Game Object runs through its destroy method this flag is set to true, - * and can be checked in any sub-systems or plugins it is being destroyed from. - * @property {boolean} destroyPhase - * @readOnly - */ - destroyPhase: false, - - /** - * Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present - * and nulls its reference to `game`, freeing it up for garbage collection. - * - * If this Game Object has the Events component it will also dispatch the `onDestroy` event. - * - * You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've - * more than one Game Object sharing the same BaseTexture. - * - * @method - * @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called as well? - * @param {boolean} [destroyTexture=false] - Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it. - */ - destroy: function (destroyChildren, destroyTexture) { - - if (this.game === null || this.destroyPhase) { return; } - - if (destroyChildren === undefined) { destroyChildren = true; } - if (destroyTexture === undefined) { destroyTexture = false; } - - this.destroyPhase = true; - - if (this.events) - { - this.events.onDestroy$dispatch(this); - } - - if (this.parent) - { - if (this.parent instanceof Phaser.Group) - { - this.parent.remove(this); - } - else - { - this.parent.removeChild(this); - } - } - - if (this.input) - { - this.input.destroy(); - } - - if (this.animations) - { - this.animations.destroy(); - } - - if (this.body) - { - this.body.destroy(); - } - - if (this.events) - { - this.events.destroy(); - } - - this.game.tweens.removeFrom(this); - - var i = this.children.length; - - if (destroyChildren) - { - while (i--) - { - this.children[i].destroy(destroyChildren); - } - } - else - { - while (i--) - { - this.removeChild(this.children[i]); - } - } - - if (this._crop) - { - this._crop = null; - } - - if (this._frame) - { - this._frame = null; - } - - if (Phaser.Video && this.key instanceof Phaser.Video) - { - this.key.onChangeSource.remove(this.resizeFrame, this); - } - - if (Phaser.BitmapText && this._glyphs) - { - this._glyphs = []; - } - - this.alive = false; - this.exists = false; - this.visible = false; - - this.filters = null; - this.mask = null; - this.game = null; - - this.data = {}; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - if (this.transformCallback) - { - this.transformCallback = null; - this.transformCallbackContext = null; - } - - // Pixi level DisplayObject destroy - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - this._destroyCachedSprite(); - - // Texture? - if (destroyTexture) - { - this.texture.destroy(true); - } - - this.destroyPhase = false; - this.pendingDestroy = false; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Events component is a collection of events fired by the parent Game Object. -* -* Phaser uses what are known as 'Signals' for all event handling. All of the events in -* this class are signals you can subscribe to, much in the same way you'd "listen" for -* an event. -* -* For example to tell when a Sprite has been added to a new group, you can bind a function -* to the `onAddedToGroup` signal: -* -* `sprite.events.onAddedToGroup.add(yourFunction, this);` -* -* Where `yourFunction` is the function you want called when this event occurs. -* -* For more details about how signals work please see the Phaser.Signal class. -* -* The Input-related events will only be dispatched if the Sprite has had `inputEnabled` set to `true` -* and the Animation-related events only apply to game objects with animations like {@link Phaser.Sprite}. -* -* @class Phaser.Events -* @constructor -* @param {Phaser.Sprite} sprite - A reference to the game object / Sprite that owns this Events object. -*/ -Phaser.Events = function (sprite) { - - /** - * @property {Phaser.Sprite} parent - The Sprite that owns these events. - */ - this.parent = sprite; - - // The signals are automatically added by the corresponding proxy properties - -}; - -Phaser.Events.prototype = { - - /** - * Removes all events. - * - * @method Phaser.Events#destroy - */ - destroy: function () { - - this._parent = null; - - if (this._onDestroy) { this._onDestroy.dispose(); } - if (this._onAddedToGroup) { this._onAddedToGroup.dispose(); } - if (this._onRemovedFromGroup) { this._onRemovedFromGroup.dispose(); } - if (this._onRemovedFromWorld) { this._onRemovedFromWorld.dispose(); } - if (this._onKilled) { this._onKilled.dispose(); } - if (this._onRevived) { this._onRevived.dispose(); } - if (this._onEnterBounds) { this._onEnterBounds.dispose(); } - if (this._onOutOfBounds) { this._onOutOfBounds.dispose(); } - - if (this._onInputOver) { this._onInputOver.dispose(); } - if (this._onInputOut) { this._onInputOut.dispose(); } - if (this._onInputDown) { this._onInputDown.dispose(); } - if (this._onInputUp) { this._onInputUp.dispose(); } - if (this._onDragStart) { this._onDragStart.dispose(); } - if (this._onDragUpdate) { this._onDragUpdate.dispose(); } - if (this._onDragStop) { this._onDragStop.dispose(); } - - if (this._onAnimationStart) { this._onAnimationStart.dispose(); } - if (this._onAnimationComplete) { this._onAnimationComplete.dispose(); } - if (this._onAnimationLoop) { this._onAnimationLoop.dispose(); } - - }, - - // The following properties are sentinels that will be replaced with getters - - /** - * This signal is dispatched when this Game Object is added to a new Group. - * It is sent two arguments: - * {any} The Game Object that was added to the Group. - * {Phaser.Group} The Group it was added to. - * @property {Phaser.Signal} onAddedToGroup - */ - onAddedToGroup: null, - - /** - * This signal is dispatched when the Game Object is removed from a Group. - * It is sent two arguments: - * {any} The Game Object that was removed from the Group. - * {Phaser.Group} The Group it was removed from. - * @property {Phaser.Signal} onRemovedFromGroup - */ - onRemovedFromGroup: null, - - /** - * This Signal is never used internally by Phaser and is now deprecated. - * @deprecated - * @property {Phaser.Signal} onRemovedFromWorld - */ - onRemovedFromWorld: null, - - /** - * This signal is dispatched when the Game Object is destroyed. - * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. - * It is sent one argument: - * {any} The Game Object that was destroyed. - * @property {Phaser.Signal} onDestroy - */ - onDestroy: null, - - /** - * This signal is dispatched when the Game Object is killed. - * This happens when `Sprite.kill()` is called. - * Please understand the difference between `kill` and `destroy` by looking at their respective methods. - * It is sent one argument: - * {any} The Game Object that was killed. - * @property {Phaser.Signal} onKilled - */ - onKilled: null, - - /** - * This signal is dispatched when the Game Object is revived from a previously killed state. - * This happens when `Sprite.revive()` is called. - * It is sent one argument: - * {any} The Game Object that was revived. - * @property {Phaser.Signal} onRevived - */ - onRevived: null, - - /** - * This signal is dispatched when the Game Object leaves the Phaser.World bounds. - * This signal is only if `Sprite.checkWorldBounds` is set to `true`. - * It is sent one argument: - * {any} The Game Object that left the World bounds. - * @property {Phaser.Signal} onOutOfBounds - */ - onOutOfBounds: null, - - /** - * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. - * This signal is only if `Sprite.checkWorldBounds` is set to `true`. - * It is sent one argument: - * {any} The Game Object that entered the World bounds. - * @property {Phaser.Signal} onEnterBounds - */ - onEnterBounds: null, - - /** - * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, - * and receives an over event from a Phaser.Pointer. - * It is sent two arguments: - * {any} The Game Object that received the event. - * {Phaser.Pointer} The Phaser.Pointer object that caused the event. - * @property {Phaser.Signal} onInputOver - */ - onInputOver: null, - - /** - * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, - * and receives an out event from a Phaser.Pointer, which was previously over it. - * It is sent two arguments: - * {any} The Game Object that received the event. - * {Phaser.Pointer} The Phaser.Pointer object that caused the event. - * @property {Phaser.Signal} onInputOut - */ - onInputOut: null, - - /** - * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, - * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been - * pressed down (but not yet released) on the Game Object. - * It is sent two arguments: - * {any} The Game Object that received the event. - * {Phaser.Pointer} The Phaser.Pointer object that caused the event. - * @property {Phaser.Signal} onInputDown - */ - onInputDown: null, - - /** - * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, - * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been - * pressed down, and was then released on the Game Object. - * It is sent three arguments: - * {any} The Game Object that received the event. - * {Phaser.Pointer} The Phaser.Pointer object that caused the event. - * {boolean} isOver - Is the Pointer still over the Game Object? - * @property {Phaser.Signal} onInputUp - */ - onInputUp: null, - - /** - * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. - * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various - * drag limitations that may be set. - * It is sent four arguments: - * {any} The Game Object that received the event. - * {Phaser.Pointer} The Phaser.Pointer object that caused the event. - * {number} The x coordinate that the drag started from. - * {number} The y coordinate that the drag started from. - * @property {Phaser.Signal} onDragStart - */ - onDragStart: null, - - /** - * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. - * It is sent when a Phaser.Pointer is actively dragging the Game Object. - * Be warned: This is a high volume Signal. Be careful what you bind to it. - * It is sent six arguments: - * {any} The Game Object that received the event. - * {Phaser.Pointer} The Phaser.Pointer object that caused the event. - * {number} The new x coordinate of the Game Object. - * {number} The new y coordinate of the Game Object. - * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. - * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. - * @property {Phaser.Signal} onDragUpdate - */ - onDragUpdate: null, - - /** - * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. - * It is sent when a Phaser.Pointer stops dragging the Game Object. - * It is sent two arguments: - * {any} The Game Object that received the event. - * {Phaser.Pointer} The Phaser.Pointer object that caused the event. - * @property {Phaser.Signal} onDragStop - */ - onDragStop: null, - - /** - * This signal is dispatched if the Game Object has the AnimationManager component, - * and an Animation has been played. - * You can also listen to `Animation.onStart` rather than via the Game Objects events. - * It is sent two arguments: - * {any} The Game Object that received the event. - * {Phaser.Animation} The Phaser.Animation that was started. - * @property {Phaser.Signal} onAnimationStart - */ - onAnimationStart: null, - - /** - * This signal is dispatched if the Game Object has the AnimationManager component, - * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. - * You can also listen to `Animation.onComplete` rather than via the Game Objects events. - * It is sent two arguments: - * {any} The Game Object that received the event. - * {Phaser.Animation} The Phaser.Animation that was stopped. - * @property {Phaser.Signal} onAnimationComplete - */ - onAnimationComplete: null, - - /** - * This signal is dispatched if the Game Object has the AnimationManager component, - * and an Animation has looped playback. - * You can also listen to `Animation.onLoop` rather than via the Game Objects events. - * It is sent two arguments: - * {any} The Game Object that received the event. - * {Phaser.Animation} The Phaser.Animation that looped. - * @property {Phaser.Signal} onAnimationLoop - */ - onAnimationLoop: null - -}; - -Phaser.Events.prototype.constructor = Phaser.Events; - -// Create an auto-create proxy getter and dispatch method for all events. -// The backing property is the same as the event name, prefixed with '_' -// and the dispatch method is the same as the event name postfixed with '$dispatch'. -for (var prop in Phaser.Events.prototype) -{ - if (!Phaser.Events.prototype.hasOwnProperty(prop) || - prop.indexOf('on') !== 0 || - Phaser.Events.prototype[prop] !== null) - { - continue; - } - - (function (prop, backing) { - 'use strict'; - - // The accessor creates a new Signal; and so it should only be used from user-code. - Object.defineProperty(Phaser.Events.prototype, prop, { - get: function () { - return this[backing] || (this[backing] = new Phaser.Signal()); - } - }); - - // The dispatcher will only broadcast on an already-created signal; call this internally. - Phaser.Events.prototype[prop + '$dispatch'] = function () { - return this[backing] ? this[backing].dispatch.apply(this[backing], arguments) : null; - }; - - })(prop, '_' + prop); - -} - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The FixedToCamera component enables a Game Object to be rendered relative to the game camera coordinates, regardless -* of where in the world the camera is. This is used for things like sticking game UI to the camera that scrolls as it moves around the world. -* -* @class -*/ -Phaser.Component.FixedToCamera = function () {}; - -/** - * The FixedToCamera component postUpdate handler. - * Called automatically by the Game Object. - * - * @method - */ -Phaser.Component.FixedToCamera.postUpdate = function () { - - if (this.fixedToCamera) - { - this.position.x = (this.game.camera.view.x + this.cameraOffset.x) / this.game.camera.scale.x; - this.position.y = (this.game.camera.view.y + this.cameraOffset.y) / this.game.camera.scale.y; - } - -}; - -Phaser.Component.FixedToCamera.prototype = { - - /** - * @property {boolean} _fixedToCamera - * @private - */ - _fixedToCamera: false, - - /** - * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. - * - * The values are adjusted at the rendering stage, overriding the Game Objects actual world position. - * - * The end result is that the Game Object will appear to be 'fixed' to the camera, regardless of where in the game world - * the camera is viewing. This is useful if for example this Game Object is a UI item that you wish to be visible at all times - * regardless where in the world the camera is. - * - * The offsets are stored in the `cameraOffset` property. - * - * Note that the `cameraOffset` values are in addition to any parent of this Game Object on the display list. - * - * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. - * - * @property {boolean} fixedToCamera - */ - fixedToCamera: { - - get: function () { - - return this._fixedToCamera; - - }, - - set: function (value) { - - if (value) - { - this._fixedToCamera = true; - this.cameraOffset.set(this.x, this.y); - } - else - { - this._fixedToCamera = false; - } - - } - - }, - - /** - * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. - * - * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. - * @property {Phaser.Point} cameraOffset - */ - cameraOffset: new Phaser.Point() - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Health component provides the ability for Game Objects to have a `health` property -* that can be damaged and reset through game code. -* Requires the LifeSpan component. -* -* @class -*/ -Phaser.Component.Health = function () {}; - -Phaser.Component.Health.prototype = { - - /** - * The Game Objects health value. This is a handy property for setting and manipulating health on a Game Object. - * - * It can be used in combination with the `damage` method or modified directly. - * - * @property {number} health - * @default - */ - health: 1, - - /** - * The Game Objects maximum health value. This works in combination with the `heal` method to ensure - * the health value never exceeds the maximum. - * - * @property {number} maxHealth - * @default - */ - maxHealth: 100, - - /** - * Damages the Game Object. This removes the given amount of health from the `health` property. - * - * If health is taken below or is equal to zero then the `kill` method is called. - * - * @member - * @param {number} amount - The amount to subtract from the current `health` value. - * @return {Phaser.Sprite} This instance. - */ - damage: function (amount) { - - if (this.alive) - { - this.health -= amount; - - if (this.health <= 0) - { - this.kill(); - } - } - - return this; - - }, - - /** - * Sets the health property of the Game Object to the given amount. - * Will never exceed the `maxHealth` value. - * - * @member - * @param {number} amount - The amount to set the `health` value to. The total will never exceed `maxHealth`. - * @return {Phaser.Sprite} This instance. - */ - setHealth: function (amount) { - - this.health = amount; - - if (this.health > this.maxHealth) - { - this.health = this.maxHealth; - } - - return this; - - }, - - /** - * Heal the Game Object. This adds the given amount of health to the `health` property. - * - * @member - * @param {number} amount - The amount to add to the current `health` value. The total will never exceed `maxHealth`. - * @return {Phaser.Sprite} This instance. - */ - heal: function (amount) { - - if (this.alive) - { - this.health += amount; - - if (this.health > this.maxHealth) - { - this.health = this.maxHealth; - } - } - - return this; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The InCamera component checks if the Game Object intersects with the Game Camera. -* -* @class -*/ -Phaser.Component.InCamera = function () {}; - -Phaser.Component.InCamera.prototype = { - - /** - * Checks if this Game Objects bounds intersects with the Game Cameras bounds. - * - * It will be `true` if they intersect, or `false` if the Game Object is fully outside of the Cameras bounds. - * - * An object outside the bounds can be considered for camera culling if it has the AutoCull component. - * - * @property {boolean} inCamera - * @readonly - */ - inCamera: { - - get: function() { - - return this.game.world.camera.view.intersects(this._bounds); - - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The InputEnabled component allows a Game Object to have its own InputHandler and process input related events. -* -* @class -*/ -Phaser.Component.InputEnabled = function () {}; - -Phaser.Component.InputEnabled.prototype = { - - /** - * The Input Handler for this Game Object. - * - * By default it is disabled. If you wish this Game Object to process input events you should enable it with: `inputEnabled = true`. - * - * After you have done this, this property will be a reference to the Phaser InputHandler. - * @property {Phaser.InputHandler|null} input - */ - input: null, - - /** - * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created - * for this Game Object and it will then start to process click / touch events and more. - * - * You can then access the Input Handler via `this.input`. - * - * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. - * - * If you set this property to false it will stop the Input Handler from processing any more input events. - * - * If you want to _temporarily_ disable input for a Game Object, then it's better to set - * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. - * You can then toggle this back on as needed. - * - * @property {boolean} inputEnabled - */ - inputEnabled: { - - get: function () { - - return (this.input && this.input.enabled); - - }, - - set: function (value) { - - if (value) - { - if (this.input === null) - { - this.input = new Phaser.InputHandler(this); - this.input.start(); - } - else if (this.input && !this.input.enabled) - { - this.input.start(); - } - } - else - { - if (this.input && this.input.enabled) - { - this.input.stop(); - } - } - - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The InWorld component checks if a Game Object is within the Game World Bounds. -* An object is considered as being "in bounds" so long as its own bounds intersects at any point with the World bounds. -* If the AutoCull component is enabled on the Game Object then it will check the Game Object against the Camera bounds as well. -* -* @class -*/ -Phaser.Component.InWorld = function () {}; - -/** - * The InWorld component preUpdate handler. - * Called automatically by the Game Object. - * - * @method - */ -Phaser.Component.InWorld.preUpdate = function () { - - // Cache the bounds if we need it - if (this.autoCull || this.checkWorldBounds) - { - this._bounds.copyFrom(this.getBounds()); - - this._bounds.x += this.game.camera.view.x; - this._bounds.y += this.game.camera.view.y; - - if (this.autoCull) - { - // Won't get rendered but will still get its transform updated - if (this.game.world.camera.view.intersects(this._bounds)) - { - this.renderable = true; - this.game.world.camera.totalInView++; - } - else - { - this.renderable = false; - - if (this.outOfCameraBoundsKill) - { - this.kill(); - return false; - } - } - } - - if (this.checkWorldBounds) - { - // The Sprite is already out of the world bounds, so let's check to see if it has come back again - if (this._outOfBoundsFired && this.game.world.bounds.intersects(this._bounds)) - { - this._outOfBoundsFired = false; - this.events.onEnterBounds$dispatch(this); - } - else if (!this._outOfBoundsFired && !this.game.world.bounds.intersects(this._bounds)) - { - // The Sprite WAS in the screen, but has now left. - this._outOfBoundsFired = true; - this.events.onOutOfBounds$dispatch(this); - - if (this.outOfBoundsKill) - { - this.kill(); - return false; - } - } - } - } - - return true; - -}; - -Phaser.Component.InWorld.prototype = { - - /** - * If this is set to `true` the Game Object checks if it is within the World bounds each frame. - * - * When it is no longer intersecting the world bounds it dispatches the `onOutOfBounds` event. - * - * If it was *previously* out of bounds but is now intersecting the world bounds again it dispatches the `onEnterBounds` event. - * - * It also optionally kills the Game Object if `outOfBoundsKill` is `true`. - * - * When `checkWorldBounds` is enabled it forces the Game Object to calculate its full bounds every frame. - * - * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, - * or you have tested performance and find it acceptable. - * - * @property {boolean} checkWorldBounds - * @default - */ - checkWorldBounds: false, - - /** - * If this and the `checkWorldBounds` property are both set to `true` then the `kill` method is called as soon as `inWorld` returns false. - * - * @property {boolean} outOfBoundsKill - * @default - */ - outOfBoundsKill: false, - - /** - * If this and the `autoCull` property are both set to `true`, then the `kill` method - * is called as soon as the Game Object leaves the camera bounds. - * - * @property {boolean} outOfCameraBoundsKill - * @default - */ - outOfCameraBoundsKill: false, - - /** - * @property {boolean} _outOfBoundsFired - Internal state var. - * @private - */ - _outOfBoundsFired: false, - - /** - * Checks if the Game Objects bounds are within, or intersect at any point with the Game World bounds. - * - * @property {boolean} inWorld - * @readonly - */ - inWorld: { - - get: function () { - - return this.game.world.bounds.intersects(this.getBounds()); - - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* LifeSpan Component Features. -* -* @class -*/ -Phaser.Component.LifeSpan = function () {}; - -/** - * The LifeSpan component preUpdate handler. - * Called automatically by the Game Object. - * - * @method - */ -Phaser.Component.LifeSpan.preUpdate = function () { - - if (this.lifespan > 0) - { - this.lifespan -= this.game.time.physicsElapsedMS; - - if (this.lifespan <= 0) - { - this.kill(); - return false; - } - } - - return true; - -}; - -Phaser.Component.LifeSpan.prototype = { - - /** - * A useful flag to control if the Game Object is alive or dead. - * - * This is set automatically by the Health components `damage` method should the object run out of health. - * Or you can toggle it via your game code. - * - * This property is mostly just provided to be used by your game - it doesn't effect rendering or logic updates. - * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. - * @property {boolean} alive - * @default - */ - alive: true, - - /** - * The lifespan allows you to give a Game Object a lifespan in milliseconds. - * - * Once the Game Object is 'born' you can set this to a positive value. - * - * It is automatically decremented by the millisecond equivalent of `game.time.physicsElapsed` each frame. - * When it reaches zero it will call the `kill` method. - * - * Very handy for particles, bullets, collectibles, or any other short-lived entity. - * - * @property {number} lifespan - * @default - */ - lifespan: 0, - - /** - * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. - * - * A resurrected Game Object has its `alive`, `exists` and `visible` properties all set to true. - * - * It will dispatch the `onRevived` event. Listen to `events.onRevived` for the signal. - * - * @method - * @param {number} [health=100] - The health to give the Game Object. Only set if the GameObject has the Health component. - * @return {PIXI.DisplayObject} This instance. - */ - revive: function (health) { - - if (health === undefined) { health = 100; } - - this.alive = true; - this.exists = true; - this.visible = true; - - if (typeof this.setHealth === 'function') - { - this.setHealth(health); - } - - if (this.events) - { - this.events.onRevived$dispatch(this); - } - - return this; - - }, - - /** - * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. - * - * It will dispatch the `onKilled` event. You can listen to `events.onKilled` for the signal. - * - * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, - * it doesn't destroy the object or free it up from memory. - * - * If you don't need this Game Object any more you should call `destroy` instead. - * - * @method - * @return {PIXI.DisplayObject} This instance. - */ - kill: function () { - - this.alive = false; - this.exists = false; - this.visible = false; - - if (this.events) - { - this.events.onKilled$dispatch(this); - } - - return this; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The LoadTexture component manages the loading of a texture into the Game Object and the changing of frames. -* -* @class -*/ -Phaser.Component.LoadTexture = function () {}; - -Phaser.Component.LoadTexture.prototype = { - - /** - * @property {boolean} customRender - Does this texture require a custom render call? (as set by BitmapData, Video, etc) - * @private - */ - customRender: false, - - /** - * @property {Phaser.Rectangle} _frame - Internal cache var. - * @private - */ - _frame: null, - - /** - * Changes the base texture the Game Object is using. The old texture is removed and the new one is referenced or fetched from the Cache. - * - * If your Game Object is using a frame from a texture atlas and you just wish to change to another frame, then see the `frame` or `frameName` properties instead. - * - * You should only use `loadTexture` if you want to replace the base texture entirely. - * - * Calling this method causes a WebGL texture update, so use sparingly or in low-intensity portions of your game, or if you know the new texture is already on the GPU. - * - * You can use the new const `Phaser.PENDING_ATLAS` as the texture key for any sprite. - * Doing this then sets the key to be the `frame` argument (the frame is set to zero). - * - * This allows you to create sprites using `load.image` during development, and then change them - * to use a Texture Atlas later in development by simply searching your code for 'PENDING_ATLAS' - * and swapping it to be the key of the atlas data. - * - * Note: You cannot use a RenderTexture as a texture for a TileSprite. - * - * @method - * @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. - * @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. - * @param {boolean} [stopAnimation=true] - If an animation is already playing on this Sprite you can choose to stop it or let it carry on playing. - */ - loadTexture: function (key, frame, stopAnimation) { - - if (key === Phaser.PENDING_ATLAS) - { - key = frame; - frame = 0; - } - else - { - frame = frame || 0; - } - - if ((stopAnimation || stopAnimation === undefined) && this.animations) - { - this.animations.stop(); - } - - this.key = key; - this.customRender = false; - var cache = this.game.cache; - - var setFrame = true; - var smoothed = !this.texture.baseTexture.scaleMode; - - if (Phaser.RenderTexture && key instanceof Phaser.RenderTexture) - { - this.key = key.key; - this.setTexture(key); - } - else if (Phaser.BitmapData && key instanceof Phaser.BitmapData) - { - this.customRender = true; - - this.setTexture(key.texture); - - if (cache.hasFrameData(key.key, Phaser.Cache.BITMAPDATA)) - { - setFrame = !this.animations.loadFrameData(cache.getFrameData(key.key, Phaser.Cache.BITMAPDATA), frame); - } - else - { - setFrame = !this.animations.loadFrameData(key.frameData, 0); - } - } - else if (Phaser.Video && key instanceof Phaser.Video) - { - this.customRender = true; - - // This works from a reference, which probably isn't what we need here - var valid = key.texture.valid; - this.setTexture(key.texture); - this.setFrame(key.texture.frame.clone()); - key.onChangeSource.add(this.resizeFrame, this); - this.texture.valid = valid; - } - else if (Phaser.Tilemap && key instanceof Phaser.TilemapLayer) - { - // this.customRender = true; - - this.setTexture(PIXI.Texture.fromCanvas(key.canvas)); - } - else if (key instanceof PIXI.Texture) - { - this.setTexture(key); - } - else - { - var img = cache.getImage(key, true); - - this.key = img.key; - this.setTexture(new PIXI.Texture(img.base)); - - if (key === '__default') - { - this.texture.baseTexture.skipRender = true; - } - else - { - this.texture.baseTexture.skipRender = false; - } - - setFrame = !this.animations.loadFrameData(img.frameData, frame); - } - - if (setFrame) - { - this._frame = Phaser.Rectangle.clone(this.texture.frame); - } - - if (!smoothed) - { - this.texture.baseTexture.scaleMode = 1; - } - - }, - - /** - * Sets the texture frame the Game Object uses for rendering. - * - * This is primarily an internal method used by `loadTexture`, but is exposed for the use of plugins and custom classes. - * - * @method - * @param {Phaser.Frame} frame - The Frame to be used by the texture. - */ - setFrame: function (frame) { - - this._frame = frame; - - this.texture.frame.x = frame.x; - this.texture.frame.y = frame.y; - this.texture.frame.width = frame.width; - this.texture.frame.height = frame.height; - - this.texture.crop.x = frame.x; - this.texture.crop.y = frame.y; - this.texture.crop.width = frame.width; - this.texture.crop.height = frame.height; - - if (frame.trimmed) - { - if (this.texture.trim) - { - this.texture.trim.x = frame.spriteSourceSizeX; - this.texture.trim.y = frame.spriteSourceSizeY; - this.texture.trim.width = frame.sourceSizeW; - this.texture.trim.height = frame.sourceSizeH; - } - else - { - this.texture.trim = { x: frame.spriteSourceSizeX, y: frame.spriteSourceSizeY, width: frame.sourceSizeW, height: frame.sourceSizeH }; - } - - this.texture.width = frame.sourceSizeW; - this.texture.height = frame.sourceSizeH; - this.texture.frame.width = frame.sourceSizeW; - this.texture.frame.height = frame.sourceSizeH; - } - else if (!frame.trimmed && this.texture.trim) - { - this.texture.trim = null; - } - - if (this.cropRect) - { - this.updateCrop(); - } - - this.texture.requiresReTint = true; - - this.texture._updateUvs(); - - if (this.tilingTexture) - { - this.refreshTexture = true; - } - - }, - - /** - * Resizes the Frame dimensions that the Game Object uses for rendering. - * - * You shouldn't normally need to ever call this, but in the case of special texture types such as Video or BitmapData - * it can be useful to adjust the dimensions directly in this way. - * - * @method - * @param {object} parent - The parent texture object that caused the resize, i.e. a Phaser.Video object. - * @param {integer} width - The new width of the texture. - * @param {integer} height - The new height of the texture. - */ - resizeFrame: function (parent, width, height) { - - this.texture.frame.resize(width, height); - this.texture.setFrame(this.texture.frame); - - }, - - /** - * Resets the texture frame dimensions that the Game Object uses for rendering. - * - * @method - */ - resetFrame: function () { - - if (this._frame) - { - this.setFrame(this._frame); - } - - }, - - /** - * Gets or sets the current frame index of the texture being used to render this Game Object. - * - * To change the frame set `frame` to the index of the new frame in the sprite sheet you wish this Game Object to use, - * for example: `player.frame = 4`. - * - * If the frame index given doesn't exist it will revert to the first frame found in the texture. - * - * If you are using a texture atlas then you should use the `frameName` property instead. - * - * If you wish to fully replace the texture being used see `loadTexture`. - * @property {integer} frame - */ - frame: { - - get: function () { - return this.animations.frame; - }, - - set: function (value) { - this.animations.frame = value; - } - - }, - - /** - * Gets or sets the current frame name of the texture being used to render this Game Object. - * - * To change the frame set `frameName` to the name of the new frame in the texture atlas you wish this Game Object to use, - * for example: `player.frameName = "idle"`. - * - * If the frame name given doesn't exist it will revert to the first frame found in the texture and throw a console warning. - * - * If you are using a sprite sheet then you should use the `frame` property instead. - * - * If you wish to fully replace the texture being used see `loadTexture`. - * @property {string} frameName - */ - frameName: { - - get: function () { - return this.animations.frameName; - }, - - set: function (value) { - this.animations.frameName = value; - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Overlap component allows a Game Object to check if it overlaps with the bounds of another Game Object. -* -* @class -*/ -Phaser.Component.Overlap = function () {}; - -Phaser.Component.Overlap.prototype = { - - /** - * Checks to see if the bounds of this Game Object overlaps with the bounds of the given Display Object, - * which can be a Sprite, Image, TileSprite or anything that extends those such as Button or provides a `getBounds` method and result. - * - * This check ignores the `hitArea` property if set and runs a `getBounds` comparison on both objects to determine the result. - * - * Therefore it's relatively expensive to use in large quantities, i.e. with lots of Sprites at a high frequency. - * It should be fine for low-volume testing where physics isn't required. - * - * @method - * @param {Phaser.Sprite|Phaser.Image|Phaser.TileSprite|Phaser.Button|PIXI.DisplayObject} displayObject - The display object to check against. - * @return {boolean} True if the bounds of this Game Object intersects at any point with the bounds of the given display object. - */ - overlap: function (displayObject) { - - return Phaser.Rectangle.intersects(this.getBounds(), displayObject.getBounds()); - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The PhysicsBody component manages the Game Objects physics body and physics enabling. -* It also overrides the x and y properties, ensuring that any manual adjustment of them is reflected in the physics body itself. -* -* @class -*/ -Phaser.Component.PhysicsBody = function () {}; - -/** - * The PhysicsBody component preUpdate handler. - * Called automatically by the Game Object. - * - * @method - */ -Phaser.Component.PhysicsBody.preUpdate = function () { - - if (this.fresh && this.exists) - { - this.world.setTo(this.parent.position.x + this.position.x, this.parent.position.y + this.position.y); - this.worldTransform.tx = this.world.x; - this.worldTransform.ty = this.world.y; - - this.previousPosition.set(this.world.x, this.world.y); - this.previousRotation = this.rotation; - - if (this.body) - { - this.body.preUpdate(); - } - - this.fresh = false; - - return false; - } - - this.previousPosition.set(this.world.x, this.world.y); - this.previousRotation = this.rotation; - - if (!this._exists || !this.parent.exists) - { - this.renderOrderID = -1; - return false; - } - - return true; - -}; - -/** - * The PhysicsBody component postUpdate handler. - * Called automatically by the Game Object. - * - * @method - */ -Phaser.Component.PhysicsBody.postUpdate = function () { - - if (this.exists && this.body) - { - this.body.postUpdate(); - } - -}; - -Phaser.Component.PhysicsBody.prototype = { - - /** - * `body` is the Game Objects physics body. Once a Game Object is enabled for physics you access all associated - * properties and methods via it. - * - * By default Game Objects won't add themselves to any physics system and their `body` property will be `null`. - * - * To enable this Game Object for physics you need to call `game.physics.enable(object, system)` where `object` is this object - * and `system` is the Physics system you are using. If none is given it defaults to `Phaser.Physics.Arcade`. - * - * You can alternatively call `game.physics.arcade.enable(object)`, or add this Game Object to a physics enabled Group. - * - * Important: Enabling a Game Object for P2 or Ninja physics will automatically set its `anchor` property to 0.5, - * so the physics body is centered on the Game Object. - * - * If you need a different result then adjust or re-create the Body shape offsets manually or reset the anchor after enabling physics. - * - * @property {Phaser.Physics.Arcade.Body|Phaser.Physics.P2.Body|Phaser.Physics.Ninja.Body|null} body - * @default - */ - body: null, - - /** - * The position of the Game Object on the x axis relative to the local coordinates of the parent. - * - * @property {number} x - */ - x: { - - get: function () { - - return this.position.x; - - }, - - set: function (value) { - - this.position.x = value; - - if (this.body && !this.body.dirty) - { - this.body._reset = true; - } - - } - - }, - - /** - * The position of the Game Object on the y axis relative to the local coordinates of the parent. - * - * @property {number} y - */ - y: { - - get: function () { - - return this.position.y; - - }, - - set: function (value) { - - this.position.y = value; - - if (this.body && !this.body.dirty) - { - this.body._reset = true; - } - - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Reset component allows a Game Object to be reset and repositioned to a new location. -* -* @class -*/ -Phaser.Component.Reset = function () {}; - -/** -* Resets the Game Object. -* -* This moves the Game Object to the given x/y world coordinates and sets `fresh`, `exists`, -* `visible` and `renderable` to true. -* -* If this Game Object has the LifeSpan component it will also set `alive` to true and `health` to the given value. -* -* If this Game Object has a Physics Body it will reset the Body. -* -* @method -* @param {number} x - The x coordinate (in world space) to position the Game Object at. -* @param {number} y - The y coordinate (in world space) to position the Game Object at. -* @param {number} [health=1] - The health to give the Game Object if it has the Health component. -* @return {PIXI.DisplayObject} This instance. -*/ -Phaser.Component.Reset.prototype.reset = function (x, y, health) { - - if (health === undefined) { health = 1; } - - this.world.set(x, y); - this.position.set(x, y); - - this.fresh = true; - this.exists = true; - this.visible = true; - this.renderable = true; - - if (this.components.InWorld) - { - this._outOfBoundsFired = false; - } - - if (this.components.LifeSpan) - { - this.alive = true; - this.health = health; - } - - if (this.components.PhysicsBody) - { - if (this.body) - { - this.body.reset(x, y, false, false); - } - } - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The ScaleMinMax component allows a Game Object to limit how far it can be scaled by its parent. -* -* @class -*/ -Phaser.Component.ScaleMinMax = function () {}; - -Phaser.Component.ScaleMinMax.prototype = { - - /** - * The callback that will apply any scale limiting to the worldTransform. - * @property {function} transformCallback - */ - transformCallback: null, - - /** - * The context under which `transformCallback` is called. - * @property {object} transformCallbackContext - */ - transformCallbackContext: this, - - /** - * The minimum scale this Game Object will scale down to. - * - * It allows you to prevent a parent from scaling this Game Object lower than the given value. - * - * Set it to `null` to remove the limit. - * @property {Phaser.Point} scaleMin - */ - scaleMin: null, - - /** - * The maximum scale this Game Object will scale up to. - * - * It allows you to prevent a parent from scaling this Game Object higher than the given value. - * - * Set it to `null` to remove the limit. - * @property {Phaser.Point} scaleMax - */ - scaleMax: null, - - /** - * Adjust scaling limits, if set, to this Game Object. - * - * @method - * @private - * @param {PIXI.Matrix} wt - The updated worldTransform matrix. - */ - checkTransform: function (wt) { - - if (this.scaleMin) - { - if (wt.a < this.scaleMin.x) - { - wt.a = this.scaleMin.x; - } - - if (wt.d < this.scaleMin.y) - { - wt.d = this.scaleMin.y; - } - } - - if (this.scaleMax) - { - if (wt.a > this.scaleMax.x) - { - wt.a = this.scaleMax.x; - } - - if (wt.d > this.scaleMax.y) - { - wt.d = this.scaleMax.y; - } - } - - }, - - /** - * Sets the scaleMin and scaleMax values. These values are used to limit how far this Game Object will scale based on its parent. - * - * For example if this Game Object has a `minScale` value of 1 and its parent has a `scale` value of 0.5, the 0.5 will be ignored - * and the scale value of 1 will be used, as the parents scale is lower than the minimum scale this Game Object should adhere to. - * - * By setting these values you can carefully control how Game Objects deal with responsive scaling. - * - * If only one parameter is given then that value will be used for both scaleMin and scaleMax: - * `setScaleMinMax(1)` = scaleMin.x, scaleMin.y, scaleMax.x and scaleMax.y all = 1 - * - * If only two parameters are given the first is set as scaleMin.x and y and the second as scaleMax.x and y: - * `setScaleMinMax(0.5, 2)` = scaleMin.x and y = 0.5 and scaleMax.x and y = 2 - * - * If you wish to set `scaleMin` with different values for x and y then either modify Game Object.scaleMin directly, - * or pass `null` for the `maxX` and `maxY` parameters. - * - * Call `setScaleMinMax(null)` to clear all previously set values. - * - * @method - * @param {number|null} minX - The minimum horizontal scale value this Game Object can scale down to. - * @param {number|null} minY - The minimum vertical scale value this Game Object can scale down to. - * @param {number|null} maxX - The maximum horizontal scale value this Game Object can scale up to. - * @param {number|null} maxY - The maximum vertical scale value this Game Object can scale up to. - */ - setScaleMinMax: function (minX, minY, maxX, maxY) { - - if (minY === undefined) - { - // 1 parameter, set all to it - minY = maxX = maxY = minX; - } - else if (maxX === undefined) - { - // 2 parameters, the first is min, the second max - maxX = maxY = minY; - minY = minX; - } - - if (minX === null) - { - this.scaleMin = null; - } - else - { - if (this.scaleMin) - { - this.scaleMin.set(minX, minY); - } - else - { - this.scaleMin = new Phaser.Point(minX, minY); - } - } - - if (maxX === null) - { - this.scaleMax = null; - } - else - { - if (this.scaleMax) - { - this.scaleMax.set(maxX, maxY); - } - else - { - this.scaleMax = new Phaser.Point(maxX, maxY); - } - } - - if (this.scaleMin === null) - { - this.transformCallback = null; - } - else - { - this.transformCallback = this.checkTransform; - this.transformCallbackContext = this; - } - - } - -}; -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Smoothed component allows a Game Object to control anti-aliasing of an image based texture. -* -* @class -*/ -Phaser.Component.Smoothed = function () {}; - -Phaser.Component.Smoothed.prototype = { - - /** - * Enable or disable texture smoothing for this Game Object. - * - * It only takes effect if the Game Object is using an image based texture. - * - * Smoothing is enabled by default. - * - * @property {boolean} smoothed - */ - smoothed: { - - get: function () { - - return !this.texture.baseTexture.scaleMode; - - }, - - set: function (value) { - - if (value) - { - if (this.texture) - { - this.texture.baseTexture.scaleMode = 0; - } - } - else - { - if (this.texture) - { - this.texture.baseTexture.scaleMode = 1; - } - } - } - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The GameObjectFactory is a quick way to create many common game objects -* using {@linkcode Phaser.Game#add `game.add`}. -* -* Created objects are _automatically added_ to the appropriate Manager, World, or manually specified parent Group. -* -* @class Phaser.GameObjectFactory -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.GameObjectFactory = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - * @protected - */ - this.game = game; - - /** - * @property {Phaser.World} world - A reference to the game world. - * @protected - */ - this.world = this.game.world; - -}; - -Phaser.GameObjectFactory.prototype = { - - /** - * Adds an existing display object to the game world. - * - * @method Phaser.GameObjectFactory#existing - * @param {any} object - An instance of Phaser.Sprite, Phaser.Button or any other display object. - * @return {any} The child that was added to the World. - */ - existing: function (object) { - - return this.world.add(object); - - }, - - /** - * Weapons provide the ability to easily create a bullet pool and manager. - * - * Weapons fire Phaser.Bullet objects, which are essentially Sprites with a few extra properties. - * The Bullets are enabled for Arcade Physics. They do not currently work with P2 Physics. - * - * The Bullets are created inside of `Weapon.bullets`, which is a Phaser.Group instance. Anything you - * can usually do with a Group, such as move it around the display list, iterate it, etc can be done - * to the bullets Group too. - * - * Bullets can have textures and even animations. You can control the speed at which they are fired, - * the firing rate, the firing angle, and even set things like gravity for them. - * - * @method Phaser.GameObjectFactory#weapon - * @param {integer} [quantity=1] - The quantity of bullets to seed the Weapon with. If -1 it will set the pool to automatically expand. - * @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - The image used as a texture by the bullets during rendering. If a string Phaser will get for an entry in the Image Cache. Or it can be an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. - * @param {string|number} [frame] - If a Texture Atlas or Sprite Sheet is used this allows you to specify the frame to be used by the bullets. Use either an integer for a Frame ID or a string for a frame name. - * @param {Phaser.Group} [group] - Optional Group to add the Weapon to. If not specified it will be added to the World group. - * @returns {Phaser.Weapon} A Weapon instance. - */ - weapon: function (quantity, key, frame, group) { - - var weapon = this.game.plugins.add(Phaser.Weapon); - - weapon.createBullets(quantity, key, frame, group); - - return weapon; - - }, - - /** - * Create a new `Image` object. - * - * An Image is a light-weight object you can use to display anything that doesn't need physics or animation. - * - * It can still rotate, scale, crop and receive input events. - * This makes it perfect for logos, backgrounds, simple buttons and other non-Sprite graphics. - * - * @method Phaser.GameObjectFactory#image - * @param {number} [x=0] - The x coordinate of the Image. The coordinate is relative to any parent container this Image may be in. - * @param {number} [y=0] - The y coordinate of the Image. The coordinate is relative to any parent container this Image may be in. - * @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - The image used as a texture by this display object during rendering. If a string Phaser will get for an entry in the Image Cache. Or it can be an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. - * @param {string|number} [frame] - If a Texture Atlas or Sprite Sheet is used this allows you to specify the frame to be used. Use either an integer for a Frame ID or a string for a frame name. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @returns {Phaser.Image} The newly created Image object. - */ - image: function (x, y, key, frame, group) { - - if (group === undefined) { group = this.world; } - - return group.add(new Phaser.Image(this.game, x, y, key, frame)); - - }, - - /** - * Create a new Sprite with specific position and sprite sheet key. - * - * At its most basic a Sprite consists of a set of coordinates and a texture that is used when rendered. - * They also contain additional properties allowing for physics motion (via Sprite.body), input handling (via Sprite.input), - * events (via Sprite.events), animation (via Sprite.animations), camera culling and more. Please see the Examples for use cases. - * - * @method Phaser.GameObjectFactory#sprite - * @param {number} [x=0] - The x coordinate of the sprite. The coordinate is relative to any parent container this sprite may be in. - * @param {number} [y=0] - The y coordinate of the sprite. The coordinate is relative to any parent container this sprite may be in. - * @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - The image used as a texture by this display object during rendering. If a string Phaser will get for an entry in the Image Cache. Or it can be an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. - * @param {string|number} [frame] - If a Texture Atlas or Sprite Sheet is used this allows you to specify the frame to be used. Use either an integer for a Frame ID or a string for a frame name. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @returns {Phaser.Sprite} The newly created Sprite object. - */ - sprite: function (x, y, key, frame, group) { - - if (group === undefined) { group = this.world; } - - return group.create(x, y, key, frame); - - }, - - /** - * Create a new Creature Animation object. - * - * Creature is a custom Game Object used in conjunction with the Creature Runtime libraries by Kestrel Moon Studios. - * - * It allows you to display animated Game Objects that were created with the [Creature Automated Animation Tool](http://www.kestrelmoon.com/creature/). - * - * Note 1: You can only use Phaser.Creature objects in WebGL enabled games. They do not work in Canvas mode games. - * - * Note 2: You must use a build of Phaser that includes the CreatureMeshBone.js runtime and gl-matrix.js, or have them - * loaded before your Phaser game boots. - * - * See the Phaser custom build process for more details. - * - * @method Phaser.GameObjectFactory#creature - * @param {number} [x=0] - The x coordinate of the creature. The coordinate is relative to any parent container this creature may be in. - * @param {number} [y=0] - The y coordinate of the creature. The coordinate is relative to any parent container this creature may be in. - * @param {string|PIXI.Texture} [key] - The image used as a texture by this creature object during rendering. If a string Phaser will get for an entry in the Image Cache. Or it can be an instance of a PIXI.Texture. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @returns {Phaser.Creature} The newly created Sprite object. - */ - creature: function (x, y, key, mesh, group) { - - if (group === undefined) { group = this.world; } - - var obj = new Phaser.Creature(this.game, x, y, key, mesh); - - group.add(obj); - - return obj; - - }, - - /** - * Create a tween on a specific object. - * - * The object can be any JavaScript object or Phaser object such as Sprite. - * - * @method Phaser.GameObjectFactory#tween - * @param {object} object - Object the tween will be run on. - * @return {Phaser.Tween} The newly created Phaser.Tween object. - */ - tween: function (object) { - - return this.game.tweens.create(object); - - }, - - /** - * A Group is a container for display objects that allows for fast pooling, recycling and collision checks. - * - * @method Phaser.GameObjectFactory#group - * @param {any} [parent] - The parent Group or DisplayObjectContainer that will hold this group, if any. If set to null the Group won't be added to the display list. If undefined it will be added to World by default. - * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. - * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. - * @param {boolean} [enableBody=false] - If true all Sprites created with `Group.create` or `Group.createMulitple` will have a physics body created on them. Change the body type with physicsBodyType. - * @param {number} [physicsBodyType=0] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. - * @return {Phaser.Group} The newly created Group. - */ - group: function (parent, name, addToStage, enableBody, physicsBodyType) { - - return new Phaser.Group(this.game, parent, name, addToStage, enableBody, physicsBodyType); - - }, - - /** - * A Group is a container for display objects that allows for fast pooling, recycling and collision checks. - * - * A Physics Group is the same as an ordinary Group except that is has enableBody turned on by default, so any Sprites it creates - * are automatically given a physics body. - * - * @method Phaser.GameObjectFactory#physicsGroup - * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2JS, Phaser.Physics.NINJA, etc. - * @param {any} [parent] - The parent Group or DisplayObjectContainer that will hold this group, if any. If set to null the Group won't be added to the display list. If undefined it will be added to World by default. - * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. - * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. - * @return {Phaser.Group} The newly created Group. - */ - physicsGroup: function (physicsBodyType, parent, name, addToStage) { - - return new Phaser.Group(this.game, parent, name, addToStage, true, physicsBodyType); - - }, - - /** - * A SpriteBatch is a really fast version of a Phaser Group built solely for speed. - * Use when you need a lot of sprites or particles all sharing the same texture. - * The speed gains are specifically for WebGL. In Canvas mode you won't see any real difference. - * - * @method Phaser.GameObjectFactory#spriteBatch - * @param {Phaser.Group|null} parent - The parent Group that will hold this Sprite Batch. Set to `undefined` or `null` to add directly to game.world. - * @param {string} [name='group'] - A name for this Sprite Batch. Not used internally but useful for debugging. - * @param {boolean} [addToStage=false] - If set to true this Sprite Batch will be added directly to the Game.Stage instead of the parent. - * @return {Phaser.SpriteBatch} The newly created Sprite Batch. - */ - spriteBatch: function (parent, name, addToStage) { - - if (parent === undefined) { parent = null; } - if (name === undefined) { name = 'group'; } - if (addToStage === undefined) { addToStage = false; } - - return new Phaser.SpriteBatch(this.game, parent, name, addToStage); - - }, - - /** - * Creates a new Sound object. - * - * @method Phaser.GameObjectFactory#audio - * @param {string} key - The Game.cache key of the sound that this object will use. - * @param {number} [volume=1] - The volume at which the sound will be played. - * @param {boolean} [loop=false] - Whether or not the sound will loop. - * @param {boolean} [connect=true] - Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - * @return {Phaser.Sound} The newly created sound object. - */ - audio: function (key, volume, loop, connect) { - - return this.game.sound.add(key, volume, loop, connect); - - }, - - /** - * Creates a new Sound object. - * - * @method Phaser.GameObjectFactory#sound - * @param {string} key - The Game.cache key of the sound that this object will use. - * @param {number} [volume=1] - The volume at which the sound will be played. - * @param {boolean} [loop=false] - Whether or not the sound will loop. - * @param {boolean} [connect=true] - Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - * @return {Phaser.Sound} The newly created sound object. - */ - sound: function (key, volume, loop, connect) { - - return this.game.sound.add(key, volume, loop, connect); - - }, - - /** - * Creates a new AudioSprite object. - * - * @method Phaser.GameObjectFactory#audioSprite - * @param {string} key - The Game.cache key of the sound that this object will use. - * @return {Phaser.AudioSprite} The newly created AudioSprite object. - */ - audioSprite: function (key) { - - return this.game.sound.addSprite(key); - - }, - - /** - * Creates a new TileSprite object. - * - * @method Phaser.GameObjectFactory#tileSprite - * @param {number} x - The x coordinate of the TileSprite. The coordinate is relative to any parent container this TileSprite may be in. - * @param {number} y - The y coordinate of the TileSprite. The coordinate is relative to any parent container this TileSprite may be in. - * @param {number} width - The width of the TileSprite. - * @param {number} height - The height of the TileSprite. - * @param {string|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a PIXI.Texture or BitmapData. - * @param {string|number} [frame] - If a Texture Atlas or Sprite Sheet is used this allows you to specify the frame to be used. Use either an integer for a Frame ID or a string for a frame name. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @return {Phaser.TileSprite} The newly created TileSprite object. - */ - tileSprite: function (x, y, width, height, key, frame, group) { - - if (group === undefined) { group = this.world; } - - return group.add(new Phaser.TileSprite(this.game, x, y, width, height, key, frame)); - - }, - - /** - * Creates a new Rope object. - * - * Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js - * - * @method Phaser.GameObjectFactory#rope - * @param {number} [x=0] - The x coordinate of the Rope. The coordinate is relative to any parent container this rope may be in. - * @param {number} [y=0] - The y coordinate of the Rope. The coordinate is relative to any parent container this rope may be in. - * @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - The image used as a texture by this display object during rendering. If a string Phaser will get for an entry in the Image Cache. Or it can be an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. - * @param {string|number} [frame] - If a Texture Atlas or Sprite Sheet is used this allows you to specify the frame to be used. Use either an integer for a Frame ID or a string for a frame name. - * @param {Array} points - An array of {Phaser.Point}. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @return {Phaser.Rope} The newly created Rope object. - */ - rope: function (x, y, key, frame, points, group) { - - if (group === undefined) { group = this.world; } - - return group.add(new Phaser.Rope(this.game, x, y, key, frame, points)); - - }, - - /** - * Creates a new Text object. - * - * @method Phaser.GameObjectFactory#text - * @param {number} [x=0] - The x coordinate of the Text. The coordinate is relative to any parent container this text may be in. - * @param {number} [y=0] - The y coordinate of the Text. The coordinate is relative to any parent container this text may be in. - * @param {string} [text=''] - The text string that will be displayed. - * @param {object} [style] - The style object containing style attributes like font, font size , etc. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @return {Phaser.Text} The newly created text object. - */ - text: function (x, y, text, style, group) { - - if (group === undefined) { group = this.world; } - - return group.add(new Phaser.Text(this.game, x, y, text, style)); - - }, - - /** - * Creates a new Button object. - * - * @method Phaser.GameObjectFactory#button - * @param {number} [x=0] - The x coordinate of the Button. The coordinate is relative to any parent container this button may be in. - * @param {number} [y=0] - The y coordinate of the Button. The coordinate is relative to any parent container this button may be in. - * @param {string} [key] - The image key as defined in the Game.Cache to use as the texture for this button. - * @param {function} [callback] - The function to call when this button is pressed - * @param {object} [callbackContext] - The context in which the callback will be called (usually 'this') - * @param {string|number} [overFrame] - This is the frame or frameName that will be set when this button is in an over state. Give either a number to use a frame ID or a string for a frame name. - * @param {string|number} [outFrame] - This is the frame or frameName that will be set when this button is in an out state. Give either a number to use a frame ID or a string for a frame name. - * @param {string|number} [downFrame] - This is the frame or frameName that will be set when this button is in a down state. Give either a number to use a frame ID or a string for a frame name. - * @param {string|number} [upFrame] - This is the frame or frameName that will be set when this button is in an up state. Give either a number to use a frame ID or a string for a frame name. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @return {Phaser.Button} The newly created Button object. - */ - button: function (x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame, group) { - - if (group === undefined) { group = this.world; } - - return group.add(new Phaser.Button(this.game, x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame)); - - }, - - /** - * Creates a new Graphics object. - * - * @method Phaser.GameObjectFactory#graphics - * @param {number} [x=0] - The x coordinate of the Graphic. The coordinate is relative to any parent container this object may be in. - * @param {number} [y=0] - The y coordinate of the Graphic. The coordinate is relative to any parent container this object may be in. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @return {Phaser.Graphics} The newly created graphics object. - */ - graphics: function (x, y, group) { - - if (group === undefined) { group = this.world; } - - return group.add(new Phaser.Graphics(this.game, x, y)); - - }, - - /** - * Create a new Emitter. - * - * A particle emitter can be used for one-time explosions or for - * continuous effects like rain and fire. All it really does is launch Particle objects out - * at set intervals, and fixes their positions and velocities accordingly. - * - * @method Phaser.GameObjectFactory#emitter - * @param {number} [x=0] - The x coordinate within the Emitter that the particles are emitted from. - * @param {number} [y=0] - The y coordinate within the Emitter that the particles are emitted from. - * @param {number} [maxParticles=50] - The total number of particles in this emitter. - * @return {Phaser.Particles.Arcade.Emitter} The newly created emitter object. - */ - emitter: function (x, y, maxParticles) { - - return this.game.particles.add(new Phaser.Particles.Arcade.Emitter(this.game, x, y, maxParticles)); - - }, - - /** - * Create a new RetroFont object. - * - * A RetroFont can be used as a texture for an Image or Sprite and optionally add it to the Cache. - * A RetroFont uses a bitmap which contains fixed with characters for the font set. You use character spacing to define the set. - * If you need variable width character support then use a BitmapText object instead. The main difference between a RetroFont and a BitmapText - * is that a RetroFont creates a single texture that you can apply to a game object, where-as a BitmapText creates one Sprite object per letter of text. - * The texture can be asssigned or one or multiple images/sprites, but note that the text the RetroFont uses will be shared across them all, - * i.e. if you need each Image to have different text in it, then you need to create multiple RetroFont objects. - * - * @method Phaser.GameObjectFactory#retroFont - * @param {string} font - The key of the image in the Game.Cache that the RetroFont will use. - * @param {number} characterWidth - The width of each character in the font set. - * @param {number} characterHeight - The height of each character in the font set. - * @param {string} chars - The characters used in the font set, in display order. You can use the TEXT_SET consts for common font set arrangements. - * @param {number} charsPerRow - The number of characters per row in the font set. - * @param {number} [xSpacing=0] - If the characters in the font set have horizontal spacing between them set the required amount here. - * @param {number} [ySpacing=0] - If the characters in the font set have vertical spacing between them set the required amount here. - * @param {number} [xOffset=0] - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. - * @param {number} [yOffset=0] - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. - * @return {Phaser.RetroFont} The newly created RetroFont texture which can be applied to an Image or Sprite. - */ - retroFont: function (font, characterWidth, characterHeight, chars, charsPerRow, xSpacing, ySpacing, xOffset, yOffset) { - - return new Phaser.RetroFont(this.game, font, characterWidth, characterHeight, chars, charsPerRow, xSpacing, ySpacing, xOffset, yOffset); - - }, - - /** - * Create a new BitmapText object. - * - * BitmapText objects work by taking a texture file and an XML file that describes the font structure. - * It then generates a new Sprite object for each letter of the text, proportionally spaced out and aligned to - * match the font structure. - * - * BitmapText objects are less flexible than Text objects, in that they have less features such as shadows, fills and the ability - * to use Web Fonts. However you trade this flexibility for pure rendering speed. You can also create visually compelling BitmapTexts by - * processing the font texture in an image editor first, applying fills and any other effects required. - * - * To create multi-line text insert \r, \n or \r\n escape codes into the text string. - * - * To create a BitmapText data files you can use: - * - * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ - * Glyph Designer (OS X, commercial): http://www.71squared.com/en/glyphdesigner - * Littera (Web-based, free): http://kvazars.com/littera/ - * - * @method Phaser.GameObjectFactory#bitmapText - * @param {number} x - X coordinate to display the BitmapText object at. - * @param {number} y - Y coordinate to display the BitmapText object at. - * @param {string} font - The key of the BitmapText as stored in Phaser.Cache. - * @param {string} [text=''] - The text that will be rendered. This can also be set later via BitmapText.text. - * @param {number} [size=32] - The size the font will be rendered at in pixels. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @return {Phaser.BitmapText} The newly created bitmapText object. - */ - bitmapText: function (x, y, font, text, size, group) { - - if (group === undefined) { group = this.world; } - - return group.add(new Phaser.BitmapText(this.game, x, y, font, text, size)); - - }, - - /** - * Creates a new Phaser.Tilemap object. - * - * The map can either be populated with data from a Tiled JSON file or from a CSV file. - * To do this pass the Cache key as the first parameter. When using Tiled data you need only provide the key. - * When using CSV data you must provide the key and the tileWidth and tileHeight parameters. - * If creating a blank tilemap to be populated later, you can either specify no parameters at all and then use `Tilemap.create` or pass the map and tile dimensions here. - * Note that all Tilemaps use a base tile size to calculate dimensions from, but that a TilemapLayer may have its own unique tile size that overrides it. - * - * @method Phaser.GameObjectFactory#tilemap - * @param {string} [key] - The key of the tilemap data as stored in the Cache. If you're creating a blank map either leave this parameter out or pass `null`. - * @param {number} [tileWidth=32] - The pixel width of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @param {number} [tileHeight=32] - The pixel height of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @param {number} [width=10] - The width of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - * @param {number} [height=10] - The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - * @return {Phaser.Tilemap} The newly created tilemap object. - */ - tilemap: function (key, tileWidth, tileHeight, width, height) { - - return new Phaser.Tilemap(this.game, key, tileWidth, tileHeight, width, height); - - }, - - /** - * A dynamic initially blank canvas to which images can be drawn. - * - * @method Phaser.GameObjectFactory#renderTexture - * @param {number} [width=100] - the width of the RenderTexture. - * @param {number} [height=100] - the height of the RenderTexture. - * @param {string} [key=''] - Asset key for the RenderTexture when stored in the Cache (see addToCache parameter). - * @param {boolean} [addToCache=false] - Should this RenderTexture be added to the Game.Cache? If so you can retrieve it with Cache.getTexture(key) - * @return {Phaser.RenderTexture} The newly created RenderTexture object. - */ - renderTexture: function (width, height, key, addToCache) { - - if (key === undefined || key === '') { key = this.game.rnd.uuid(); } - if (addToCache === undefined) { addToCache = false; } - - var texture = new Phaser.RenderTexture(this.game, width, height, key); - - if (addToCache) - { - this.game.cache.addRenderTexture(key, texture); - } - - return texture; - - }, - - /** - * Create a Video object. - * - * This will return a Phaser.Video object which you can pass to a Sprite to be used as a texture. - * - * @method Phaser.GameObjectFactory#video - * @param {string|null} [key=null] - The key of the video file in the Phaser.Cache that this Video object will play. Set to `null` or leave undefined if you wish to use a webcam as the source. See `startMediaStream` to start webcam capture. - * @param {string|null} [url=null] - If the video hasn't been loaded then you can provide a full URL to the file here (make sure to set key to null) - * @return {Phaser.Video} The newly created Video object. - */ - video: function (key, url) { - - return new Phaser.Video(this.game, key, url); - - }, - - /** - * Create a BitmapData object. - * - * A BitmapData object can be manipulated and drawn to like a traditional Canvas object and used to texture Sprites. - * - * @method Phaser.GameObjectFactory#bitmapData - * @param {number} [width=256] - The width of the BitmapData in pixels. - * @param {number} [height=256] - The height of the BitmapData in pixels. - * @param {string} [key=''] - Asset key for the BitmapData when stored in the Cache (see addToCache parameter). - * @param {boolean} [addToCache=false] - Should this BitmapData be added to the Game.Cache? If so you can retrieve it with Cache.getBitmapData(key) - * @return {Phaser.BitmapData} The newly created BitmapData object. - */ - bitmapData: function (width, height, key, addToCache) { - - if (addToCache === undefined) { addToCache = false; } - if (key === undefined || key === '') { key = this.game.rnd.uuid(); } - - var texture = new Phaser.BitmapData(this.game, key, width, height); - - if (addToCache) - { - this.game.cache.addBitmapData(key, texture); - } - - return texture; - - }, - - /** - * A WebGL shader/filter that can be applied to Sprites. - * - * @method Phaser.GameObjectFactory#filter - * @param {string} filter - The name of the filter you wish to create, for example HueRotate or SineWave. - * @param {any} - Whatever parameters are needed to be passed to the filter init function. - * @return {Phaser.Filter} The newly created Phaser.Filter object. - */ - filter: function (filter) { - - var args = Array.prototype.slice.call(arguments, 1); - - var filter = new Phaser.Filter[filter](this.game); - - filter.init.apply(filter, args); - - return filter; - - }, - - /** - * Add a new Plugin into the PluginManager. - * - * The Plugin must have 2 properties: `game` and `parent`. Plugin.game is set to the game reference the PluginManager uses, and parent is set to the PluginManager. - * - * @method Phaser.GameObjectFactory#plugin - * @param {object|Phaser.Plugin} plugin - The Plugin to add into the PluginManager. This can be a function or an existing object. - * @param {...*} parameter - Additional parameters that will be passed to the Plugin.init method. - * @return {Phaser.Plugin} The Plugin that was added to the manager. - */ - plugin: function (plugin) { - - return this.game.plugins.add(plugin); - - } - -}; - -Phaser.GameObjectFactory.prototype.constructor = Phaser.GameObjectFactory; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The GameObjectCreator is a quick way to create common game objects _without_ adding them to the game world. -* The object creator can be accessed with {@linkcode Phaser.Game#make `game.make`}. -* -* @class Phaser.GameObjectCreator -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.GameObjectCreator = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - * @protected - */ - this.game = game; - - /** - * @property {Phaser.World} world - A reference to the game world. - * @protected - */ - this.world = this.game.world; - -}; - -Phaser.GameObjectCreator.prototype = { - - /** - * Create a new Image object. - * - * An Image is a light-weight object you can use to display anything that doesn't need physics or animation. - * It can still rotate, scale, crop and receive input events. This makes it perfect for logos, backgrounds, simple buttons and other non-Sprite graphics. - * - * @method Phaser.GameObjectCreator#image - * @param {number} x - X position of the image. - * @param {number} y - Y position of the image. - * @param {string|Phaser.RenderTexture|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. - * @param {string|number} [frame] - If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name. - * @returns {Phaser.Image} the newly created sprite object. - */ - image: function (x, y, key, frame) { - - return new Phaser.Image(this.game, x, y, key, frame); - - }, - - /** - * Create a new Sprite with specific position and sprite sheet key. - * - * @method Phaser.GameObjectCreator#sprite - * @param {number} x - X position of the new sprite. - * @param {number} y - Y position of the new sprite. - * @param {string|Phaser.RenderTexture|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. - * @param {string|number} [frame] - If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name. - * @returns {Phaser.Sprite} the newly created sprite object. - */ - sprite: function (x, y, key, frame) { - - return new Phaser.Sprite(this.game, x, y, key, frame); - - }, - - /** - * Create a tween object for a specific object. - * - * The object can be any JavaScript object or Phaser object such as Sprite. - * - * @method Phaser.GameObjectCreator#tween - * @param {object} obj - Object the tween will be run on. - * @return {Phaser.Tween} The Tween object. - */ - tween: function (obj) { - - return new Phaser.Tween(obj, this.game, this.game.tweens); - - }, - - /** - * A Group is a container for display objects that allows for fast pooling, recycling and collision checks. - * - * @method Phaser.GameObjectCreator#group - * @param {any} parent - The parent Group or DisplayObjectContainer that will hold this group, if any. - * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. - * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. - * @param {boolean} [enableBody=false] - If true all Sprites created with `Group.create` or `Group.createMulitple` will have a physics body created on them. Change the body type with physicsBodyType. - * @param {number} [physicsBodyType=0] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. - * @return {Phaser.Group} The newly created Group. - */ - group: function (parent, name, addToStage, enableBody, physicsBodyType) { - - return new Phaser.Group(this.game, parent, name, addToStage, enableBody, physicsBodyType); - - }, - - /** - * Create a new SpriteBatch. - * - * @method Phaser.GameObjectCreator#spriteBatch - * @param {any} parent - The parent Group or DisplayObjectContainer that will hold this group, if any. - * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. - * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. - * @return {Phaser.SpriteBatch} The newly created group. - */ - spriteBatch: function (parent, name, addToStage) { - - if (name === undefined) { name = 'group'; } - if (addToStage === undefined) { addToStage = false; } - - return new Phaser.SpriteBatch(this.game, parent, name, addToStage); - - }, - - /** - * Creates a new Sound object. - * - * @method Phaser.GameObjectCreator#audio - * @param {string} key - The Game.cache key of the sound that this object will use. - * @param {number} [volume=1] - The volume at which the sound will be played. - * @param {boolean} [loop=false] - Whether or not the sound will loop. - * @param {boolean} [connect=true] - Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - * @return {Phaser.Sound} The newly created text object. - */ - audio: function (key, volume, loop, connect) { - - return this.game.sound.add(key, volume, loop, connect); - - }, - - /** - * Creates a new AudioSprite object. - * - * @method Phaser.GameObjectCreator#audioSprite - * @param {string} key - The Game.cache key of the sound that this object will use. - * @return {Phaser.AudioSprite} The newly created AudioSprite object. - */ - audioSprite: function (key) { - - return this.game.sound.addSprite(key); - - }, - - /** - * Creates a new Sound object. - * - * @method Phaser.GameObjectCreator#sound - * @param {string} key - The Game.cache key of the sound that this object will use. - * @param {number} [volume=1] - The volume at which the sound will be played. - * @param {boolean} [loop=false] - Whether or not the sound will loop. - * @param {boolean} [connect=true] - Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - * @return {Phaser.Sound} The newly created text object. - */ - sound: function (key, volume, loop, connect) { - - return this.game.sound.add(key, volume, loop, connect); - - }, - - /** - * Creates a new TileSprite object. - * - * @method Phaser.GameObjectCreator#tileSprite - * @param {number} x - The x coordinate (in world space) to position the TileSprite at. - * @param {number} y - The y coordinate (in world space) to position the TileSprite at. - * @param {number} width - The width of the TileSprite. - * @param {number} height - The height of the TileSprite. - * @param {string|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a PIXI.Texture or BitmapData. - * @param {string|number} frame - If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. - * @return {Phaser.TileSprite} The newly created tileSprite object. - */ - tileSprite: function (x, y, width, height, key, frame) { - - return new Phaser.TileSprite(this.game, x, y, width, height, key, frame); - - }, - - /** - * Creates a new Rope object. - * - * @method Phaser.GameObjectCreator#rope - * @param {number} x - The x coordinate (in world space) to position the Rope at. - * @param {number} y - The y coordinate (in world space) to position the Rope at. - * @param {number} width - The width of the Rope. - * @param {number} height - The height of the Rope. - * @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. - * @param {string|number} frame - If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. - * @return {Phaser.Rope} The newly created rope object. - */ - rope: function (x, y, key, frame, points) { - - return new Phaser.Rope(this.game, x, y, key, frame, points); - - }, - - /** - * Creates a new Text object. - * - * @method Phaser.GameObjectCreator#text - * @param {number} x - X position of the new text object. - * @param {number} y - Y position of the new text object. - * @param {string} text - The actual text that will be written. - * @param {object} style - The style object containing style attributes like font, font size , etc. - * @return {Phaser.Text} The newly created text object. - */ - text: function (x, y, text, style) { - - return new Phaser.Text(this.game, x, y, text, style); - - }, - - /** - * Creates a new Button object. - * - * @method Phaser.GameObjectCreator#button - * @param {number} [x] X position of the new button object. - * @param {number} [y] Y position of the new button object. - * @param {string} [key] The image key as defined in the Game.Cache to use as the texture for this button. - * @param {function} [callback] The function to call when this button is pressed - * @param {object} [callbackContext] The context in which the callback will be called (usually 'this') - * @param {string|number} [overFrame] This is the frame or frameName that will be set when this button is in an over state. Give either a number to use a frame ID or a string for a frame name. - * @param {string|number} [outFrame] This is the frame or frameName that will be set when this button is in an out state. Give either a number to use a frame ID or a string for a frame name. - * @param {string|number} [downFrame] This is the frame or frameName that will be set when this button is in a down state. Give either a number to use a frame ID or a string for a frame name. - * @param {string|number} [upFrame] This is the frame or frameName that will be set when this button is in an up state. Give either a number to use a frame ID or a string for a frame name. - * @return {Phaser.Button} The newly created button object. - */ - button: function (x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame) { - - return new Phaser.Button(this.game, x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame); - - }, - - /** - * Creates a new Graphics object. - * - * @method Phaser.GameObjectCreator#graphics - * @param {number} [x=0] - X position of the new graphics object. - * @param {number} [y=0] - Y position of the new graphics object. - * @return {Phaser.Graphics} The newly created graphics object. - */ - graphics: function (x, y) { - - return new Phaser.Graphics(this.game, x, y); - - }, - - /** - * Creat a new Emitter. - * - * An Emitter is a lightweight particle emitter. It can be used for one-time explosions or for - * continuous effects like rain and fire. All it really does is launch Particle objects out - * at set intervals, and fixes their positions and velocities accorindgly. - * - * @method Phaser.GameObjectCreator#emitter - * @param {number} [x=0] - The x coordinate within the Emitter that the particles are emitted from. - * @param {number} [y=0] - The y coordinate within the Emitter that the particles are emitted from. - * @param {number} [maxParticles=50] - The total number of particles in this emitter. - * @return {Phaser.Emitter} The newly created emitter object. - */ - emitter: function (x, y, maxParticles) { - - return new Phaser.Particles.Arcade.Emitter(this.game, x, y, maxParticles); - - }, - - /** - * Create a new RetroFont object. - * - * A RetroFont can be used as a texture for an Image or Sprite and optionally add it to the Cache. - * A RetroFont uses a bitmap which contains fixed with characters for the font set. You use character spacing to define the set. - * If you need variable width character support then use a BitmapText object instead. The main difference between a RetroFont and a BitmapText - * is that a RetroFont creates a single texture that you can apply to a game object, where-as a BitmapText creates one Sprite object per letter of text. - * The texture can be asssigned or one or multiple images/sprites, but note that the text the RetroFont uses will be shared across them all, - * i.e. if you need each Image to have different text in it, then you need to create multiple RetroFont objects. - * - * @method Phaser.GameObjectCreator#retroFont - * @param {string} font - The key of the image in the Game.Cache that the RetroFont will use. - * @param {number} characterWidth - The width of each character in the font set. - * @param {number} characterHeight - The height of each character in the font set. - * @param {string} chars - The characters used in the font set, in display order. You can use the TEXT_SET consts for common font set arrangements. - * @param {number} charsPerRow - The number of characters per row in the font set. - * @param {number} [xSpacing=0] - If the characters in the font set have horizontal spacing between them set the required amount here. - * @param {number} [ySpacing=0] - If the characters in the font set have vertical spacing between them set the required amount here. - * @param {number} [xOffset=0] - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. - * @param {number} [yOffset=0] - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. - * @return {Phaser.RetroFont} The newly created RetroFont texture which can be applied to an Image or Sprite. - */ - retroFont: function (font, characterWidth, characterHeight, chars, charsPerRow, xSpacing, ySpacing, xOffset, yOffset) { - - return new Phaser.RetroFont(this.game, font, characterWidth, characterHeight, chars, charsPerRow, xSpacing, ySpacing, xOffset, yOffset); - - }, - - /** - * Create a new BitmapText object. - * - * BitmapText objects work by taking a texture file and an XML file that describes the font structure. - * It then generates a new Sprite object for each letter of the text, proportionally spaced out and aligned to - * match the font structure. - * - * BitmapText objects are less flexible than Text objects, in that they have less features such as shadows, fills and the ability - * to use Web Fonts. However you trade this flexibility for pure rendering speed. You can also create visually compelling BitmapTexts by - * processing the font texture in an image editor first, applying fills and any other effects required. - * - * To create multi-line text insert \r, \n or \r\n escape codes into the text string. - * - * To create a BitmapText data files you can use: - * - * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ - * Glyph Designer (OS X, commercial): http://www.71squared.com/en/glyphdesigner - * Littera (Web-based, free): http://kvazars.com/littera/ - * - * @method Phaser.GameObjectCreator#bitmapText - * @param {number} x - X coordinate to display the BitmapText object at. - * @param {number} y - Y coordinate to display the BitmapText object at. - * @param {string} font - The key of the BitmapText as stored in Phaser.Cache. - * @param {string} [text=''] - The text that will be rendered. This can also be set later via BitmapText.text. - * @param {number} [size=32] - The size the font will be rendered at in pixels. - * @param {string} [align='left'] - The alignment of multi-line text. Has no effect if there is only one line of text. - * @return {Phaser.BitmapText} The newly created bitmapText object. - */ - bitmapText: function (x, y, font, text, size, align) { - - return new Phaser.BitmapText(this.game, x, y, font, text, size, align); - - }, - - /** - * Creates a new Phaser.Tilemap object. - * - * The map can either be populated with data from a Tiled JSON file or from a CSV file. - * To do this pass the Cache key as the first parameter. When using Tiled data you need only provide the key. - * When using CSV data you must provide the key and the tileWidth and tileHeight parameters. - * If creating a blank tilemap to be populated later, you can either specify no parameters at all and then use `Tilemap.create` or pass the map and tile dimensions here. - * Note that all Tilemaps use a base tile size to calculate dimensions from, but that a TilemapLayer may have its own unique tile size that overrides it. - * - * @method Phaser.GameObjectCreator#tilemap - * @param {string} [key] - The key of the tilemap data as stored in the Cache. If you're creating a blank map either leave this parameter out or pass `null`. - * @param {number} [tileWidth=32] - The pixel width of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @param {number} [tileHeight=32] - The pixel height of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @param {number} [width=10] - The width of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - * @param {number} [height=10] - The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - */ - tilemap: function (key, tileWidth, tileHeight, width, height) { - - return new Phaser.Tilemap(this.game, key, tileWidth, tileHeight, width, height); - - }, - - /** - * A dynamic initially blank canvas to which images can be drawn. - * - * @method Phaser.GameObjectCreator#renderTexture - * @param {number} [width=100] - the width of the RenderTexture. - * @param {number} [height=100] - the height of the RenderTexture. - * @param {string} [key=''] - Asset key for the RenderTexture when stored in the Cache (see addToCache parameter). - * @param {boolean} [addToCache=false] - Should this RenderTexture be added to the Game.Cache? If so you can retrieve it with Cache.getTexture(key) - * @return {Phaser.RenderTexture} The newly created RenderTexture object. - */ - renderTexture: function (width, height, key, addToCache) { - - if (key === undefined || key === '') { key = this.game.rnd.uuid(); } - if (addToCache === undefined) { addToCache = false; } - - var texture = new Phaser.RenderTexture(this.game, width, height, key); - - if (addToCache) - { - this.game.cache.addRenderTexture(key, texture); - } - - return texture; - - }, - - /** - * Create a BitmpaData object. - * - * A BitmapData object can be manipulated and drawn to like a traditional Canvas object and used to texture Sprites. - * - * @method Phaser.GameObjectCreator#bitmapData - * @param {number} [width=256] - The width of the BitmapData in pixels. - * @param {number} [height=256] - The height of the BitmapData in pixels. - * @param {string} [key=''] - Asset key for the BitmapData when stored in the Cache (see addToCache parameter). - * @param {boolean} [addToCache=false] - Should this BitmapData be added to the Game.Cache? If so you can retrieve it with Cache.getBitmapData(key) - * @return {Phaser.BitmapData} The newly created BitmapData object. - */ - bitmapData: function (width, height, key, addToCache) { - - if (addToCache === undefined) { addToCache = false; } - if (key === undefined || key === '') { key = this.game.rnd.uuid(); } - - var texture = new Phaser.BitmapData(this.game, key, width, height); - - if (addToCache) - { - this.game.cache.addBitmapData(key, texture); - } - - return texture; - - }, - - /** - * A WebGL shader/filter that can be applied to Sprites. - * - * @method Phaser.GameObjectCreator#filter - * @param {string} filter - The name of the filter you wish to create, for example HueRotate or SineWave. - * @param {any} - Whatever parameters are needed to be passed to the filter init function. - * @return {Phaser.Filter} The newly created Phaser.Filter object. - */ - filter: function (filter) { - - var args = Array.prototype.slice.call(arguments, 1); - - var filter = new Phaser.Filter[filter](this.game); - - filter.init.apply(filter, args); - - return filter; - - } - -}; - -Phaser.GameObjectCreator.prototype.constructor = Phaser.GameObjectCreator; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Sprites are the lifeblood of your game, used for nearly everything visual. -* -* At its most basic a Sprite consists of a set of coordinates and a texture that is rendered to the canvas. -* They also contain additional properties allowing for physics motion (via Sprite.body), input handling (via Sprite.input), -* events (via Sprite.events), animation (via Sprite.animations), camera culling and more. Please see the Examples for use cases. -* -* @class Phaser.Sprite -* @constructor -* @extends PIXI.Sprite -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Crop -* @extends Phaser.Component.Delta -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.Health -* @extends Phaser.Component.InCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.ScaleMinMax -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Sprite = function (game, x, y, key, frame) { - - x = x || 0; - y = y || 0; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.SPRITE; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.Sprite.prototype = Object.create(PIXI.Sprite.prototype); -Phaser.Sprite.prototype.constructor = Phaser.Sprite; - -Phaser.Component.Core.install.call(Phaser.Sprite.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Crop', - 'Delta', - 'Destroy', - 'FixedToCamera', - 'Health', - 'InCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'ScaleMinMax', - 'Smoothed' -]); - -Phaser.Sprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.Sprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.Sprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Sprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method -* @memberof Phaser.Sprite -* @return {boolean} True if the Sprite was rendered, otherwise false. -*/ -Phaser.Sprite.prototype.preUpdate = function() { - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* An Image is a light-weight object you can use to display anything that doesn't need physics or animation. -* It can still rotate, scale, crop and receive input events. This makes it perfect for logos, backgrounds, simple buttons and other non-Sprite graphics. -* -* @class Phaser.Image -* @extends PIXI.Sprite -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Crop -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.Reset -* @extends Phaser.Component.Smoothed -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} [x=0] - The x coordinate of the Image. The coordinate is relative to any parent container this Image may be in. -* @param {number} [y=0] - The y coordinate of the Image. The coordinate is relative to any parent container this Image may be in. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} [key] - The texture used by the Image during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture, BitmapData or PIXI.Texture. -* @param {string|number} [frame] - If this Image is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Image = function (game, x, y, key, frame) { - - x = x || 0; - y = y || 0; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.IMAGE; - - PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.Image.prototype = Object.create(PIXI.Sprite.prototype); -Phaser.Image.prototype.constructor = Phaser.Image; - -Phaser.Component.Core.install.call(Phaser.Image.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Crop', - 'Destroy', - 'FixedToCamera', - 'InputEnabled', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'Reset', - 'Smoothed' -]); - -Phaser.Image.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Image.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Image#preUpdate -* @memberof Phaser.Image -*/ -Phaser.Image.prototype.preUpdate = function() { - - if (!this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. -* -* The four states a Button responds to are: -* -* * 'Over' - when the Pointer moves over the Button. This is also commonly known as 'hover'. -* * 'Out' - when the Pointer that was previously over the Button moves out of it. -* * 'Down' - when the Pointer is pressed down on the Button. I.e. touched on a touch enabled device or clicked with the mouse. -* * 'Up' - when the Pointer that was pressed down on the Button is released again. -* -* A different texture/frame and activation sound can be specified for any of the states. -* -* Frames can be specified as either an integer (the frame ID) or a string (the frame name); the same values that can be used with a Sprite constructor. -* -* @class Phaser.Button -* @constructor -* @extends Phaser.Image -* @param {Phaser.Game} game Current game instance. -* @param {number} [x=0] - X position of the Button. -* @param {number} [y=0] - Y position of the Button. -* @param {string} [key] - The image key (in the Game.Cache) to use as the texture for this Button. -* @param {function} [callback] - The function to call when this Button is pressed. -* @param {object} [callbackContext] - The context in which the callback will be called (usually 'this'). -* @param {string|integer} [overFrame] - The frame / frameName when the button is in the Over state. -* @param {string|integer} [outFrame] - The frame / frameName when the button is in the Out state. -* @param {string|integer} [downFrame] - The frame / frameName when the button is in the Down state. -* @param {string|integer} [upFrame] - The frame / frameName when the button is in the Up state. -*/ -Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame) { - - x = x || 0; - y = y || 0; - key = key || null; - callback = callback || null; - callbackContext = callbackContext || this; - - Phaser.Image.call(this, game, x, y, key, outFrame); - - /** - * The Phaser Object Type. - * @property {number} type - * @readonly - */ - this.type = Phaser.BUTTON; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * The name or ID of the Over state frame. - * @property {string|integer} onOverFrame - * @private - */ - this._onOverFrame = null; - - /** - * The name or ID of the Out state frame. - * @property {string|integer} onOutFrame - * @private - */ - this._onOutFrame = null; - - /** - * The name or ID of the Down state frame. - * @property {string|integer} onDownFrame - * @private - */ - this._onDownFrame = null; - - /** - * The name or ID of the Up state frame. - * @property {string|integer} onUpFrame - * @private - */ - this._onUpFrame = null; - - /** - * The Sound to be played when this Buttons Over state is activated. - * @property {Phaser.Sound|Phaser.AudioSprite|null} onOverSound - * @readonly - */ - this.onOverSound = null; - - /** - * The Sound to be played when this Buttons Out state is activated. - * @property {Phaser.Sound|Phaser.AudioSprite|null} onOutSound - * @readonly - */ - this.onOutSound = null; - - /** - * The Sound to be played when this Buttons Down state is activated. - * @property {Phaser.Sound|Phaser.AudioSprite|null} onDownSound - * @readonly - */ - this.onDownSound = null; - - /** - * The Sound to be played when this Buttons Up state is activated. - * @property {Phaser.Sound|Phaser.AudioSprite|null} onUpSound - * @readonly - */ - this.onUpSound = null; - - /** - * The Sound Marker used in conjunction with the onOverSound. - * @property {string} onOverSoundMarker - * @readonly - */ - this.onOverSoundMarker = ''; - - /** - * The Sound Marker used in conjunction with the onOutSound. - * @property {string} onOutSoundMarker - * @readonly - */ - this.onOutSoundMarker = ''; - - /** - * The Sound Marker used in conjunction with the onDownSound. - * @property {string} onDownSoundMarker - * @readonly - */ - this.onDownSoundMarker = ''; - - /** - * The Sound Marker used in conjunction with the onUpSound. - * @property {string} onUpSoundMarker - * @readonly - */ - this.onUpSoundMarker = ''; - - /** - * The Signal (or event) dispatched when this Button is in an Over state. - * @property {Phaser.Signal} onInputOver - */ - this.onInputOver = new Phaser.Signal(); - - /** - * The Signal (or event) dispatched when this Button is in an Out state. - * @property {Phaser.Signal} onInputOut - */ - this.onInputOut = new Phaser.Signal(); - - /** - * The Signal (or event) dispatched when this Button is in an Down state. - * @property {Phaser.Signal} onInputDown - */ - this.onInputDown = new Phaser.Signal(); - - /** - * The Signal (or event) dispatched when this Button is in an Up state. - * @property {Phaser.Signal} onInputUp - */ - this.onInputUp = new Phaser.Signal(); - - /** - * If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer. - * The frame will still be changed as applicable. - * - * @property {boolean} onOverMouseOnly - * @default - */ - this.onOverMouseOnly = true; - - /** - * Suppresse the over event if a pointer was just released and it matches the given {@link Phaser.PointerModer pointer mode bitmask}. - * - * This behavior was introduced in Phaser 2.3.1; this property is a soft-revert of the change. - * - * @property {Phaser.PointerMode?} justReleasedPreventsOver=ACTIVE_CURSOR - */ - this.justReleasedPreventsOver = Phaser.PointerMode.TOUCH; - - /** - * When true the the texture frame will not be automatically switched on up/down/over/out events. - * @property {boolean} freezeFrames - * @default - */ - this.freezeFrames = false; - - /** - * When the Button is touched / clicked and then released you can force it to enter a state of "out" instead of "up". - * - * This can also accept a {@link Phaser.PointerModer pointer mode bitmask} for more refined control. - * - * @property {boolean|Phaser.PointerMode} forceOut=false - * @default - */ - this.forceOut = false; - - this.inputEnabled = true; - - this.input.start(0, true); - - this.input.useHandCursor = true; - - this.setFrames(overFrame, outFrame, downFrame, upFrame); - - if (callback !== null) - { - this.onInputUp.add(callback, callbackContext); - } - - // Redirect the input events to here so we can handle animation updates, etc - this.events.onInputOver.add(this.onInputOverHandler, this); - this.events.onInputOut.add(this.onInputOutHandler, this); - this.events.onInputDown.add(this.onInputDownHandler, this); - this.events.onInputUp.add(this.onInputUpHandler, this); - - this.events.onRemovedFromWorld.add(this.removedFromWorld, this); - -}; - -Phaser.Button.prototype = Object.create(Phaser.Image.prototype); -Phaser.Button.prototype.constructor = Phaser.Button; - -// State constants; local only. These are tied to property names in Phaser.Button. -var STATE_OVER = 'Over'; -var STATE_OUT = 'Out'; -var STATE_DOWN = 'Down'; -var STATE_UP = 'Up'; - -/** -* Clears all of the frames set on this Button. -* -* @method Phaser.Button#clearFrames -*/ -Phaser.Button.prototype.clearFrames = function () { - - this.setFrames(null, null, null, null); - -}; - -/** -* Called when this Button is removed from the World. -* -* @method Phaser.Button#removedFromWorld -* @protected -*/ -Phaser.Button.prototype.removedFromWorld = function () { - - this.inputEnabled = false; - -}; - -/** -* Set the frame name/ID for the given state. -* -* @method Phaser.Button#setStateFrame -* @private -* @param {object} state - See `STATE_*` -* @param {number|string} frame - The number or string representing the frame. -* @param {boolean} switchImmediately - Immediately switch to the frame if it was set - and this is true. -*/ -Phaser.Button.prototype.setStateFrame = function (state, frame, switchImmediately) -{ - var frameKey = '_on' + state + 'Frame'; - - if (frame !== null) // not null or undefined - { - this[frameKey] = frame; - - if (switchImmediately) - { - this.changeStateFrame(state); - } - } - else - { - this[frameKey] = null; - } - -}; - -/** -* Change the frame to that of the given state, _if_ the state has a frame assigned _and_ if the frames are not currently "frozen". -* -* @method Phaser.Button#changeStateFrame -* @private -* @param {object} state - See `STATE_*` -* @return {boolean} True only if the frame was assigned a value, possibly the same one it already had. -*/ -Phaser.Button.prototype.changeStateFrame = function (state) { - - if (this.freezeFrames) - { - return false; - } - - var frameKey = '_on' + state + 'Frame'; - var frame = this[frameKey]; - - if (typeof frame === 'string') - { - this.frameName = frame; - return true; - } - else if (typeof frame === 'number') - { - this.frame = frame; - return true; - } - else - { - return false; - } - -}; - -/** -* Used to manually set the frames that will be used for the different states of the Button. -* -* Frames can be specified as either an integer (the frame ID) or a string (the frame name); these are the same values that can be used with a Sprite constructor. -* -* @method Phaser.Button#setFrames -* @public -* @param {string|integer} [overFrame] - The frame / frameName when the button is in the Over state. -* @param {string|integer} [outFrame] - The frame / frameName when the button is in the Out state. -* @param {string|integer} [downFrame] - The frame / frameName when the button is in the Down state. -* @param {string|integer} [upFrame] - The frame / frameName when the button is in the Up state. -*/ -Phaser.Button.prototype.setFrames = function (overFrame, outFrame, downFrame, upFrame) { - - this.setStateFrame(STATE_OVER, overFrame, this.input.pointerOver()); - this.setStateFrame(STATE_OUT, outFrame, !this.input.pointerOver()); - this.setStateFrame(STATE_DOWN, downFrame, this.input.pointerDown()); - this.setStateFrame(STATE_UP, upFrame, this.input.pointerUp()); - -}; - -/** -* Set the sound/marker for the given state. -* -* @method Phaser.Button#setStateSound -* @private -* @param {object} state - See `STATE_*` -* @param {Phaser.Sound|Phaser.AudioSprite} [sound] - Sound. -* @param {string} [marker=''] - Sound marker. -*/ -Phaser.Button.prototype.setStateSound = function (state, sound, marker) { - - var soundKey = 'on' + state + 'Sound'; - var markerKey = 'on' + state + 'SoundMarker'; - - if (sound instanceof Phaser.Sound || sound instanceof Phaser.AudioSprite) - { - this[soundKey] = sound; - this[markerKey] = typeof marker === 'string' ? marker : ''; - } - else - { - this[soundKey] = null; - this[markerKey] = ''; - } - -}; - -/** -* Play the sound for the given state, _if_ the state has a sound assigned. -* -* @method Phaser.Button#playStateSound -* @private -* @param {object} state - See `STATE_*` -* @return {boolean} True only if a sound was played. -*/ -Phaser.Button.prototype.playStateSound = function (state) { - - var soundKey = 'on' + state + 'Sound'; - var sound = this[soundKey]; - - if (sound) - { - var markerKey = 'on' + state + 'SoundMarker'; - var marker = this[markerKey]; - - sound.play(marker); - return true; - } - else - { - return false; - } - -}; - -/** -* Sets the sounds to be played whenever this Button is interacted with. Sounds can be either full Sound objects, or markers pointing to a section of a Sound object. -* The most common forms of sounds are 'hover' effects and 'click' effects, which is why the order of the parameters is overSound then downSound. -* -* Call this function with no parameters to reset all sounds on this Button. -* -* @method Phaser.Button#setSounds -* @public -* @param {Phaser.Sound|Phaser.AudioSprite} [overSound] - Over Button Sound. -* @param {string} [overMarker] - Over Button Sound Marker. -* @param {Phaser.Sound|Phaser.AudioSprite} [downSound] - Down Button Sound. -* @param {string} [downMarker] - Down Button Sound Marker. -* @param {Phaser.Sound|Phaser.AudioSprite} [outSound] - Out Button Sound. -* @param {string} [outMarker] - Out Button Sound Marker. -* @param {Phaser.Sound|Phaser.AudioSprite} [upSound] - Up Button Sound. -* @param {string} [upMarker] - Up Button Sound Marker. -*/ -Phaser.Button.prototype.setSounds = function (overSound, overMarker, downSound, downMarker, outSound, outMarker, upSound, upMarker) { - - this.setStateSound(STATE_OVER, overSound, overMarker); - this.setStateSound(STATE_OUT, outSound, outMarker); - this.setStateSound(STATE_DOWN, downSound, downMarker); - this.setStateSound(STATE_UP, upSound, upMarker); - -}; - -/** -* The Sound to be played when a Pointer moves over this Button. -* -* @method Phaser.Button#setOverSound -* @public -* @param {Phaser.Sound|Phaser.AudioSprite} sound - The Sound that will be played. -* @param {string} [marker] - A Sound Marker that will be used in the playback. -*/ -Phaser.Button.prototype.setOverSound = function (sound, marker) { - - this.setStateSound(STATE_OVER, sound, marker); - -}; - -/** -* The Sound to be played when a Pointer moves out of this Button. -* -* @method Phaser.Button#setOutSound -* @public -* @param {Phaser.Sound|Phaser.AudioSprite} sound - The Sound that will be played. -* @param {string} [marker] - A Sound Marker that will be used in the playback. -*/ -Phaser.Button.prototype.setOutSound = function (sound, marker) { - - this.setStateSound(STATE_OUT, sound, marker); - -}; - -/** -* The Sound to be played when a Pointer presses down on this Button. -* -* @method Phaser.Button#setDownSound -* @public -* @param {Phaser.Sound|Phaser.AudioSprite} sound - The Sound that will be played. -* @param {string} [marker] - A Sound Marker that will be used in the playback. -*/ -Phaser.Button.prototype.setDownSound = function (sound, marker) { - - this.setStateSound(STATE_DOWN, sound, marker); - -}; - -/** -* The Sound to be played when a Pointer has pressed down and is released from this Button. -* -* @method Phaser.Button#setUpSound -* @public -* @param {Phaser.Sound|Phaser.AudioSprite} sound - The Sound that will be played. -* @param {string} [marker] - A Sound Marker that will be used in the playback. -*/ -Phaser.Button.prototype.setUpSound = function (sound, marker) { - - this.setStateSound(STATE_UP, sound, marker); - -}; - -/** -* Internal function that handles input events. -* -* @method Phaser.Button#onInputOverHandler -* @protected -* @param {Phaser.Button} sprite - The Button that the event occurred on. -* @param {Phaser.Pointer} pointer - The Pointer that activated the Button. -*/ -Phaser.Button.prototype.onInputOverHandler = function (sprite, pointer) { - - if (pointer.justReleased() && - (this.justReleasedPreventsOver & pointer.pointerMode) === pointer.pointerMode) - { - // If the Pointer was only just released then we don't fire an over event - return; - } - - this.changeStateFrame(STATE_OVER); - - if (this.onOverMouseOnly && !pointer.isMouse) - { - return; - } - - this.playStateSound(STATE_OVER); - - if (this.onInputOver) - { - this.onInputOver.dispatch(this, pointer); - } - -}; - -/** -* Internal function that handles input events. -* -* @method Phaser.Button#onInputOutHandler -* @protected -* @param {Phaser.Button} sprite - The Button that the event occurred on. -* @param {Phaser.Pointer} pointer - The Pointer that activated the Button. -*/ -Phaser.Button.prototype.onInputOutHandler = function (sprite, pointer) { - - this.changeStateFrame(STATE_OUT); - - this.playStateSound(STATE_OUT); - - if (this.onInputOut) - { - this.onInputOut.dispatch(this, pointer); - } -}; - -/** -* Internal function that handles input events. -* -* @method Phaser.Button#onInputDownHandler -* @protected -* @param {Phaser.Button} sprite - The Button that the event occurred on. -* @param {Phaser.Pointer} pointer - The Pointer that activated the Button. -*/ -Phaser.Button.prototype.onInputDownHandler = function (sprite, pointer) { - - this.changeStateFrame(STATE_DOWN); - - this.playStateSound(STATE_DOWN); - - if (this.onInputDown) - { - this.onInputDown.dispatch(this, pointer); - } -}; - -/** -* Internal function that handles input events. -* -* @method Phaser.Button#onInputUpHandler -* @protected -* @param {Phaser.Button} sprite - The Button that the event occurred on. -* @param {Phaser.Pointer} pointer - The Pointer that activated the Button. -*/ -Phaser.Button.prototype.onInputUpHandler = function (sprite, pointer, isOver) { - - this.playStateSound(STATE_UP); - - // Input dispatched early, before state change (but after sound) - if (this.onInputUp) - { - this.onInputUp.dispatch(this, pointer, isOver); - } - - if (this.freezeFrames) - { - return; - } - - if (this.forceOut === true || (this.forceOut & pointer.pointerMode) === pointer.pointerMode) - { - this.changeStateFrame(STATE_OUT); - } - else - { - var changedUp = this.changeStateFrame(STATE_UP); - if (!changedUp) - { - // No Up frame to show.. - if (isOver) - { - this.changeStateFrame(STATE_OVER); - } - else - { - this.changeStateFrame(STATE_OUT); - } - } - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The SpriteBatch class is a really fast version of the DisplayObjectContainer built purely for speed, so use when you need a lot of sprites or particles. -* It's worth mentioning that by default sprite batches are used through-out the renderer, so you only really need to use a SpriteBatch if you have over -* 1000 sprites that all share the same texture (or texture atlas). It's also useful if running in Canvas mode and you have a lot of un-rotated or un-scaled -* Sprites as it skips all of the Canvas setTransform calls, which helps performance, especially on mobile devices. -* -* Please note that any Sprite that is part of a SpriteBatch will not have its bounds updated, so will fail checks such as outOfBounds. -* -* @class Phaser.SpriteBatch -* @extends Phaser.Group -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {Phaser.Group|Phaser.Sprite|null} parent - The parent Group, DisplayObject or DisplayObjectContainer that this Group will be added to. If `undefined` or `null` it will use game.world. -* @param {string} [name=group] - A name for this Group. Not used internally but useful for debugging. -* @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. -*/ -Phaser.SpriteBatch = function (game, parent, name, addToStage) { - - if (parent === undefined || parent === null) { parent = game.world; } - - PIXI.SpriteBatch.call(this); - - Phaser.Group.call(this, game, parent, name, addToStage); - - /** - * @property {number} type - Internal Phaser Type value. - * @protected - */ - this.type = Phaser.SPRITEBATCH; - -}; - -Phaser.SpriteBatch.prototype = Phaser.Utils.extend(true, Phaser.SpriteBatch.prototype, PIXI.SpriteBatch.prototype, Phaser.Group.prototype); - -Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A BitmapData object contains a Canvas element to which you can draw anything you like via normal Canvas context operations. -* A single BitmapData can be used as the texture for one or many Images / Sprites. -* So if you need to dynamically create a Sprite texture then they are a good choice. -* -* Important note: Every BitmapData creates its own Canvas element. Because BitmapData's are now Game Objects themselves, and don't -* live on the display list, they are NOT automatically cleared when you change State. Therefore you _must_ call BitmapData.destroy -* in your State's shutdown method if you wish to free-up the resources the BitmapData used, it will not happen for you. -* -* @class Phaser.BitmapData -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {string} key - Internal Phaser reference key for the BitmapData. -* @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. -* @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. -* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. -*/ -Phaser.BitmapData = function (game, key, width, height, skipPool) { - - if (width === undefined || width === 0) { width = 256; } - if (height === undefined || height === 0) { height = 256; } - if (skipPool === undefined) { skipPool = false; } - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {string} key - The key of the BitmapData in the Cache, if stored there. - */ - this.key = key; - - /** - * @property {number} width - The width of the BitmapData in pixels. - */ - this.width = width; - - /** - * @property {number} height - The height of the BitmapData in pixels. - */ - this.height = height; - - /** - * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. - * @default - */ - this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); - - /** - * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. - * @default - */ - this.context = this.canvas.getContext('2d', { alpha: true }); - - /** - * @property {CanvasRenderingContext2D} ctx - A reference to BitmapData.context. - */ - this.ctx = this.context; - - /** - * @property {string} smoothProperty - The context property needed for smoothing this Canvas. - */ - this.smoothProperty = (game.renderType === Phaser.CANVAS) ? game.renderer.renderSession.smoothProperty : Phaser.Canvas.getSmoothingPrefix(this.context); - - /** - * @property {ImageData} imageData - The context image data. - * Please note that a call to BitmapData.draw() or BitmapData.copy() does not update immediately this property for performance reason. Use BitmapData.update() to do so. - * This property is updated automatically after the first game loop, according to the dirty flag property. - */ - this.imageData = this.context.getImageData(0, 0, width, height); - - /** - * A Uint8ClampedArray view into BitmapData.buffer. - * Note that this is unavailable in some browsers (such as Epic Browser due to its security restrictions) - * @property {Uint8ClampedArray} data - */ - this.data = null; - - if (this.imageData) - { - this.data = this.imageData.data; - } - - /** - * @property {Uint32Array} pixels - An Uint32Array view into BitmapData.buffer. - */ - this.pixels = null; - - /** - * @property {ArrayBuffer} buffer - An ArrayBuffer the same size as the context ImageData. - */ - if (this.data) - { - if (this.imageData.data.buffer) - { - this.buffer = this.imageData.data.buffer; - this.pixels = new Uint32Array(this.buffer); - } - else - { - if (window['ArrayBuffer']) - { - this.buffer = new ArrayBuffer(this.imageData.data.length); - this.pixels = new Uint32Array(this.buffer); - } - else - { - this.pixels = this.imageData.data; - } - } - } - - /** - * @property {PIXI.BaseTexture} baseTexture - The PIXI.BaseTexture. - * @default - */ - this.baseTexture = new PIXI.BaseTexture(this.canvas); - - /** - * @property {PIXI.Texture} texture - The PIXI.Texture. - * @default - */ - this.texture = new PIXI.Texture(this.baseTexture); - - /** - * @property {Phaser.FrameData} frameData - The FrameData container this BitmapData uses for rendering. - */ - this.frameData = new Phaser.FrameData(); - - /** - * @property {Phaser.Frame} textureFrame - The Frame this BitmapData uses for rendering. - * @default - */ - this.textureFrame = this.frameData.addFrame(new Phaser.Frame(0, 0, 0, width, height, 'bitmapData')); - - this.texture.frame = this.textureFrame; - - /** - * @property {number} type - The const type of this object. - * @default - */ - this.type = Phaser.BITMAPDATA; - - /** - * @property {boolean} disableTextureUpload - If disableTextureUpload is true this BitmapData will never send its image data to the GPU when its dirty flag is true. - */ - this.disableTextureUpload = false; - - /** - * @property {boolean} dirty - If dirty this BitmapData will be re-rendered. - */ - this.dirty = false; - - // Aliases - this.cls = this.clear; - - /** - * @property {number} _image - Internal cache var. - * @private - */ - this._image = null; - - /** - * @property {Phaser.Point} _pos - Internal cache var. - * @private - */ - this._pos = new Phaser.Point(); - - /** - * @property {Phaser.Point} _size - Internal cache var. - * @private - */ - this._size = new Phaser.Point(); - - /** - * @property {Phaser.Point} _scale - Internal cache var. - * @private - */ - this._scale = new Phaser.Point(); - - /** - * @property {number} _rotate - Internal cache var. - * @private - */ - this._rotate = 0; - - /** - * @property {object} _alpha - Internal cache var. - * @private - */ - this._alpha = { prev: 1, current: 1 }; - - /** - * @property {Phaser.Point} _anchor - Internal cache var. - * @private - */ - this._anchor = new Phaser.Point(); - - /** - * @property {number} _tempR - Internal cache var. - * @private - */ - this._tempR = 0; - - /** - * @property {number} _tempG - Internal cache var. - * @private - */ - this._tempG = 0; - - /** - * @property {number} _tempB - Internal cache var. - * @private - */ - this._tempB = 0; - - /** - * @property {Phaser.Circle} _circle - Internal cache var. - * @private - */ - this._circle = new Phaser.Circle(); - - /** - * @property {HTMLCanvasElement} _swapCanvas - A swap canvas. Used by moveH and moveV, created in those methods. - * @private - */ - this._swapCanvas = undefined; - -}; - -Phaser.BitmapData.prototype = { - - /** - * Shifts the contents of this BitmapData by the distances given. - * - * The image will wrap-around the edges on all sides if the wrap argument is true (the default). - * - * @method Phaser.BitmapData#move - * @param {integer} x - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. - * @param {integer} y - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. - * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - move: function (x, y, wrap) { - - if (x !== 0) - { - this.moveH(x, wrap); - } - - if (y !== 0) - { - this.moveV(y, wrap); - } - - return this; - - }, - - /** - * Shifts the contents of this BitmapData horizontally. - * - * The image will wrap-around the sides if the wrap argument is true (the default). - * - * @method Phaser.BitmapData#moveH - * @param {integer} distance - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. - * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - moveH: function (distance, wrap) { - - if (wrap === undefined) { wrap = true; } - - if (this._swapCanvas === undefined) - { - this._swapCanvas = PIXI.CanvasPool.create(this, this.width, this.height); - } - - var c = this._swapCanvas; - var ctx = c.getContext('2d'); - var h = this.height; - var src = this.canvas; - - ctx.clearRect(0, 0, this.width, this.height); - - if (distance < 0) - { - distance = Math.abs(distance); - - // Moving to the left - var w = this.width - distance; - - // Left-hand chunk - if (wrap) - { - ctx.drawImage(src, 0, 0, distance, h, w, 0, distance, h); - } - - // Rest of the image - ctx.drawImage(src, distance, 0, w, h, 0, 0, w, h); - } - else - { - // Moving to the right - var w = this.width - distance; - - // Right-hand chunk - if (wrap) - { - ctx.drawImage(src, w, 0, distance, h, 0, 0, distance, h); - } - - // Rest of the image - ctx.drawImage(src, 0, 0, w, h, distance, 0, w, h); - } - - this.clear(); - - return this.copy(this._swapCanvas); - - }, - - /** - * Shifts the contents of this BitmapData vertically. - * - * The image will wrap-around the sides if the wrap argument is true (the default). - * - * @method Phaser.BitmapData#moveV - * @param {integer} distance - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. - * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - moveV: function (distance, wrap) { - - if (wrap === undefined) { wrap = true; } - - if (this._swapCanvas === undefined) - { - this._swapCanvas = PIXI.CanvasPool.create(this, this.width, this.height); - } - - var c = this._swapCanvas; - var ctx = c.getContext('2d'); - var w = this.width; - var src = this.canvas; - - ctx.clearRect(0, 0, this.width, this.height); - - if (distance < 0) - { - distance = Math.abs(distance); - - // Moving up - var h = this.height - distance; - - // Top chunk - if (wrap) - { - ctx.drawImage(src, 0, 0, w, distance, 0, h, w, distance); - } - - // Rest of the image - ctx.drawImage(src, 0, distance, w, h, 0, 0, w, h); - } - else - { - // Moving down - var h = this.height - distance; - - // Bottom chunk - if (wrap) - { - ctx.drawImage(src, 0, h, w, distance, 0, 0, w, distance); - } - - // Rest of the image - ctx.drawImage(src, 0, 0, w, h, 0, distance, w, h); - } - - this.clear(); - - return this.copy(this._swapCanvas); - - }, - - /** - * Updates the given objects so that they use this BitmapData as their texture. - * This will replace any texture they will currently have set. - * - * @method Phaser.BitmapData#add - * @param {Phaser.Sprite|Phaser.Sprite[]|Phaser.Image|Phaser.Image[]} object - Either a single Sprite/Image or an Array of Sprites/Images. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - add: function (object) { - - if (Array.isArray(object)) - { - for (var i = 0; i < object.length; i++) - { - if (object[i]['loadTexture']) - { - object[i].loadTexture(this); - } - } - } - else - { - object.loadTexture(this); - } - - return this; - - }, - - /** - * Takes the given Game Object, resizes this BitmapData to match it and then draws it into this BitmapDatas canvas, ready for further processing. - * The source game object is not modified by this operation. - * If the source object uses a texture as part of a Texture Atlas or Sprite Sheet, only the current frame will be used for sizing. - * If a string is given it will assume it's a cache key and look in Phaser.Cache for an image key matching the string. - * - * @method Phaser.BitmapData#load - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapData|Image|HTMLCanvasElement|string} source - The object that will be used to populate this BitmapData. If you give a string it will try and find the Image in the Game.Cache first. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - load: function (source) { - - if (typeof source === 'string') - { - source = this.game.cache.getImage(source); - } - - if (source) - { - this.resize(source.width, source.height); - this.cls(); - } - else - { - return; - } - - this.draw(source); - - this.update(); - - return this; - - }, - - /** - * Clears the BitmapData context using a clearRect. - * - * @method Phaser.BitmapData#cls - */ - - /** - * Clears the BitmapData context using a clearRect. - * - * You can optionally define the area to clear. - * If the arguments are left empty it will clear the entire canvas. - * - * You may need to call BitmapData.update after this in order to clear out the pixel data, - * but Phaser will not do this automatically for you. - * - * @method Phaser.BitmapData#clear - * @param {number} [x=0] - The x coordinate of the top-left of the area to clear. - * @param {number} [y=0] - The y coordinate of the top-left of the area to clear. - * @param {number} [width] - The width of the area to clear. If undefined it will use BitmapData.width. - * @param {number} [height] - The height of the area to clear. If undefined it will use BitmapData.height. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - clear: function (x, y, width, height) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - - this.context.clearRect(x, y, width, height); - - this.dirty = true; - - return this; - - }, - - /** - * Fills the BitmapData with the given color. - * - * @method Phaser.BitmapData#fill - * @param {number} r - The red color value, between 0 and 0xFF (255). - * @param {number} g - The green color value, between 0 and 0xFF (255). - * @param {number} b - The blue color value, between 0 and 0xFF (255). - * @param {number} [a=1] - The alpha color value, between 0 and 1. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - fill: function (r, g, b, a) { - - if (a === undefined) { a = 1; } - - this.context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; - this.context.fillRect(0, 0, this.width, this.height); - this.dirty = true; - - return this; - - }, - - /** - * Creates a new Image element by converting this BitmapDatas canvas into a dataURL. - * - * The image is then stored in the image Cache using the key given. - * - * Finally a PIXI.Texture is created based on the image and returned. - * - * You can apply the texture to a sprite or any other supporting object by using either the - * key or the texture. First call generateTexture: - * - * `var texture = bitmapdata.generateTexture('ball');` - * - * Then you can either apply the texture to a sprite: - * - * `game.add.sprite(0, 0, texture);` - * - * or by using the string based key: - * - * `game.add.sprite(0, 0, 'ball');` - * - * @method Phaser.BitmapData#generateTexture - * @param {string} key - The key which will be used to store the image in the Cache. - * @return {PIXI.Texture} The newly generated texture. - */ - generateTexture: function (key) { - - var image = new Image(); - - image.src = this.canvas.toDataURL("image/png"); - - var obj = this.game.cache.addImage(key, '', image); - - return new PIXI.Texture(obj.base); - - }, - - /** - * Resizes the BitmapData. This changes the size of the underlying canvas and refreshes the buffer. - * - * @method Phaser.BitmapData#resize - * @param {integer} width - The new width of the BitmapData. - * @param {integer} height - The new height of the BitmapData. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - resize: function (width, height) { - - if (width !== this.width || height !== this.height) - { - this.width = width; - this.height = height; - - this.canvas.width = width; - this.canvas.height = height; - - if (this._swapCanvas !== undefined) - { - this._swapCanvas.width = width; - this._swapCanvas.height = height; - } - - this.baseTexture.width = width; - this.baseTexture.height = height; - - this.textureFrame.width = width; - this.textureFrame.height = height; - - this.texture.width = width; - this.texture.height = height; - - this.texture.crop.width = width; - this.texture.crop.height = height; - - this.update(); - this.dirty = true; - } - - return this; - - }, - - /** - * This re-creates the BitmapData.imageData from the current context. - * It then re-builds the ArrayBuffer, the data Uint8ClampedArray reference and the pixels Int32Array. - * If not given the dimensions defaults to the full size of the context. - * - * Warning: This is a very expensive operation, so use it sparingly. - * - * @method Phaser.BitmapData#update - * @param {number} [x=0] - The x coordinate of the top-left of the image data area to grab from. - * @param {number} [y=0] - The y coordinate of the top-left of the image data area to grab from. - * @param {number} [width=1] - The width of the image data area. - * @param {number} [height=1] - The height of the image data area. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - update: function (x, y, width, height) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (width === undefined) { width = Math.max(1, this.width); } - if (height === undefined) { height = Math.max(1, this.height); } - - this.imageData = this.context.getImageData(x, y, width, height); - this.data = this.imageData.data; - - if (this.imageData.data.buffer) - { - this.buffer = this.imageData.data.buffer; - this.pixels = new Uint32Array(this.buffer); - } - else - { - if (window['ArrayBuffer']) - { - this.buffer = new ArrayBuffer(this.imageData.data.length); - this.pixels = new Uint32Array(this.buffer); - } - else - { - this.pixels = this.imageData.data; - } - } - - return this; - - }, - - /** - * Scans through the area specified in this BitmapData and sends a color object for every pixel to the given callback. - * The callback will be sent a color object with 6 properties: `{ r: number, g: number, b: number, a: number, color: number, rgba: string }`. - * Where r, g, b and a are integers between 0 and 255 representing the color component values for red, green, blue and alpha. - * The `color` property is an Int32 of the full color. Note the endianess of this will change per system. - * The `rgba` property is a CSS style rgba() string which can be used with context.fillStyle calls, among others. - * The callback will also be sent the pixels x and y coordinates respectively. - * The callback must return either `false`, in which case no change will be made to the pixel, or a new color object. - * If a new color object is returned the pixel will be set to the r, g, b and a color values given within it. - * - * @method Phaser.BitmapData#processPixelRGB - * @param {function} callback - The callback that will be sent each pixel color object to be processed. - * @param {object} callbackContext - The context under which the callback will be called. - * @param {number} [x=0] - The x coordinate of the top-left of the region to process from. - * @param {number} [y=0] - The y coordinate of the top-left of the region to process from. - * @param {number} [width] - The width of the region to process. - * @param {number} [height] - The height of the region to process. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - processPixelRGB: function (callback, callbackContext, x, y, width, height) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - - var w = x + width; - var h = y + height; - var pixel = Phaser.Color.createColor(); - var result = { r: 0, g: 0, b: 0, a: 0 }; - var dirty = false; - - for (var ty = y; ty < h; ty++) - { - for (var tx = x; tx < w; tx++) - { - Phaser.Color.unpackPixel(this.getPixel32(tx, ty), pixel); - - result = callback.call(callbackContext, pixel, tx, ty); - - if (result !== false && result !== null && result !== undefined) - { - this.setPixel32(tx, ty, result.r, result.g, result.b, result.a, false); - dirty = true; - } - } - } - - if (dirty) - { - this.context.putImageData(this.imageData, 0, 0); - this.dirty = true; - } - - return this; - - }, - - /** - * Scans through the area specified in this BitmapData and sends the color for every pixel to the given callback along with its x and y coordinates. - * Whatever value the callback returns is set as the new color for that pixel, unless it returns the same color, in which case it's skipped. - * Note that the format of the color received will be different depending on if the system is big or little endian. - * It is expected that your callback will deal with endianess. If you'd rather Phaser did it then use processPixelRGB instead. - * The callback will also be sent the pixels x and y coordinates respectively. - * - * @method Phaser.BitmapData#processPixel - * @param {function} callback - The callback that will be sent each pixel color to be processed. - * @param {object} callbackContext - The context under which the callback will be called. - * @param {number} [x=0] - The x coordinate of the top-left of the region to process from. - * @param {number} [y=0] - The y coordinate of the top-left of the region to process from. - * @param {number} [width] - The width of the region to process. - * @param {number} [height] - The height of the region to process. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - processPixel: function (callback, callbackContext, x, y, width, height) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - - var w = x + width; - var h = y + height; - var pixel = 0; - var result = 0; - var dirty = false; - - for (var ty = y; ty < h; ty++) - { - for (var tx = x; tx < w; tx++) - { - pixel = this.getPixel32(tx, ty); - result = callback.call(callbackContext, pixel, tx, ty); - - if (result !== pixel) - { - this.pixels[ty * this.width + tx] = result; - dirty = true; - } - } - } - - if (dirty) - { - this.context.putImageData(this.imageData, 0, 0); - this.dirty = true; - } - - return this; - - }, - - /** - * Replaces all pixels matching one color with another. The color values are given as two sets of RGBA values. - * An optional region parameter controls if the replacement happens in just a specific area of the BitmapData or the entire thing. - * - * @method Phaser.BitmapData#replaceRGB - * @param {number} r1 - The red color value to be replaced. Between 0 and 255. - * @param {number} g1 - The green color value to be replaced. Between 0 and 255. - * @param {number} b1 - The blue color value to be replaced. Between 0 and 255. - * @param {number} a1 - The alpha color value to be replaced. Between 0 and 255. - * @param {number} r2 - The red color value that is the replacement color. Between 0 and 255. - * @param {number} g2 - The green color value that is the replacement color. Between 0 and 255. - * @param {number} b2 - The blue color value that is the replacement color. Between 0 and 255. - * @param {number} a2 - The alpha color value that is the replacement color. Between 0 and 255. - * @param {Phaser.Rectangle} [region] - The area to perform the search over. If not given it will replace over the whole BitmapData. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - replaceRGB: function (r1, g1, b1, a1, r2, g2, b2, a2, region) { - - var sx = 0; - var sy = 0; - var w = this.width; - var h = this.height; - var source = Phaser.Color.packPixel(r1, g1, b1, a1); - - if (region !== undefined && region instanceof Phaser.Rectangle) - { - sx = region.x; - sy = region.y; - w = region.width; - h = region.height; - } - - for (var y = 0; y < h; y++) - { - for (var x = 0; x < w; x++) - { - if (this.getPixel32(sx + x, sy + y) === source) - { - this.setPixel32(sx + x, sy + y, r2, g2, b2, a2, false); - } - } - } - - this.context.putImageData(this.imageData, 0, 0); - this.dirty = true; - - return this; - - }, - - /** - * Sets the hue, saturation and lightness values on every pixel in the given region, or the whole BitmapData if no region was specified. - * - * @method Phaser.BitmapData#setHSL - * @param {number} [h=null] - The hue, in the range 0 - 1. - * @param {number} [s=null] - The saturation, in the range 0 - 1. - * @param {number} [l=null] - The lightness, in the range 0 - 1. - * @param {Phaser.Rectangle} [region] - The area to perform the operation on. If not given it will run over the whole BitmapData. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - setHSL: function (h, s, l, region) { - - var bHaveH = h || h === 0; - var bHaveS = s || s === 0; - var bHaveL = l || l === 0; - - if (!bHaveH && !bHaveS && !bHaveL) - { - return; - } - - if (region === undefined) - { - region = new Phaser.Rectangle(0, 0, this.width, this.height); - } - - var pixel = Phaser.Color.createColor(); - - for (var y = region.y; y < region.bottom; y++) - { - for (var x = region.x; x < region.right; x++) - { - Phaser.Color.unpackPixel(this.getPixel32(x, y), pixel, true); - - if (bHaveH) - { - pixel.h = h; - } - - if (bHaveS) - { - pixel.s = s; - } - - if (bHaveL) - { - pixel.l = l; - } - - Phaser.Color.HSLtoRGB(pixel.h, pixel.s, pixel.l, pixel); - this.setPixel32(x, y, pixel.r, pixel.g, pixel.b, pixel.a, false); - } - } - - this.context.putImageData(this.imageData, 0, 0); - this.dirty = true; - - return this; - - }, - - /** - * Shifts any or all of the hue, saturation and lightness values on every pixel in the given region, or the whole BitmapData if no region was specified. - * Shifting will add the given value onto the current h, s and l values, not replace them. - * The hue is wrapped to keep it within the range 0 to 1. Saturation and lightness are clamped to not exceed 1. - * - * @method Phaser.BitmapData#shiftHSL - * @param {number} [h=null] - The amount to shift the hue by. - * @param {number} [s=null] - The amount to shift the saturation by. - * @param {number} [l=null] - The amount to shift the lightness by. - * @param {Phaser.Rectangle} [region] - The area to perform the operation on. If not given it will run over the whole BitmapData. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - shiftHSL: function (h, s, l, region) { - - if (h === undefined || h === null) { h = false; } - if (s === undefined || s === null) { s = false; } - if (l === undefined || l === null) { l = false; } - - if (!h && !s && !l) - { - return; - } - - if (region === undefined) - { - region = new Phaser.Rectangle(0, 0, this.width, this.height); - } - - var pixel = Phaser.Color.createColor(); - - for (var y = region.y; y < region.bottom; y++) - { - for (var x = region.x; x < region.right; x++) - { - Phaser.Color.unpackPixel(this.getPixel32(x, y), pixel, true); - - if (h) - { - pixel.h = this.game.math.wrap(pixel.h + h, 0, 1); - } - - if (s) - { - pixel.s = this.game.math.clamp(pixel.s + s, 0, 1); - } - - if (l) - { - pixel.l = this.game.math.clamp(pixel.l + l, 0, 1); - } - - Phaser.Color.HSLtoRGB(pixel.h, pixel.s, pixel.l, pixel); - this.setPixel32(x, y, pixel.r, pixel.g, pixel.b, pixel.a, false); - } - } - - this.context.putImageData(this.imageData, 0, 0); - this.dirty = true; - - return this; - - }, - - /** - * Sets the color of the given pixel to the specified red, green, blue and alpha values. - * - * @method Phaser.BitmapData#setPixel32 - * @param {number} x - The x coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {number} y - The y coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {number} red - The red color value, between 0 and 0xFF (255). - * @param {number} green - The green color value, between 0 and 0xFF (255). - * @param {number} blue - The blue color value, between 0 and 0xFF (255). - * @param {number} alpha - The alpha color value, between 0 and 0xFF (255). - * @param {boolean} [immediate=true] - If `true` the context.putImageData will be called and the dirty flag set. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - setPixel32: function (x, y, red, green, blue, alpha, immediate) { - - if (immediate === undefined) { immediate = true; } - - if (x >= 0 && x <= this.width && y >= 0 && y <= this.height) - { - if (Phaser.Device.LITTLE_ENDIAN) - { - this.pixels[y * this.width + x] = (alpha << 24) | (blue << 16) | (green << 8) | red; - } - else - { - this.pixels[y * this.width + x] = (red << 24) | (green << 16) | (blue << 8) | alpha; - } - - if (immediate) - { - this.context.putImageData(this.imageData, 0, 0); - this.dirty = true; - } - } - - return this; - - }, - - /** - * Sets the color of the given pixel to the specified red, green and blue values. - * - * @method Phaser.BitmapData#setPixel - * @param {number} x - The x coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {number} y - The y coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {number} red - The red color value, between 0 and 0xFF (255). - * @param {number} green - The green color value, between 0 and 0xFF (255). - * @param {number} blue - The blue color value, between 0 and 0xFF (255). - * @param {boolean} [immediate=true] - If `true` the context.putImageData will be called and the dirty flag set. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - setPixel: function (x, y, red, green, blue, immediate) { - - return this.setPixel32(x, y, red, green, blue, 255, immediate); - - }, - - /** - * Get the color of a specific pixel in the context into a color object. - * If you have drawn anything to the BitmapData since it was created you must call BitmapData.update to refresh the array buffer, - * otherwise this may return out of date color values, or worse - throw a run-time error as it tries to access an array element that doesn't exist. - * - * @method Phaser.BitmapData#getPixel - * @param {number} x - The x coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {number} y - The y coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {object} [out] - An object into which 4 properties will be created: r, g, b and a. If not provided a new object will be created. - * @return {object} An object with the red, green, blue and alpha values set in the r, g, b and a properties. - */ - getPixel: function (x, y, out) { - - if (!out) - { - out = Phaser.Color.createColor(); - } - - var index = ~~(x + (y * this.width)); - - index *= 4; - - out.r = this.data[index]; - out.g = this.data[++index]; - out.b = this.data[++index]; - out.a = this.data[++index]; - - return out; - - }, - - /** - * Get the color of a specific pixel including its alpha value. - * If you have drawn anything to the BitmapData since it was created you must call BitmapData.update to refresh the array buffer, - * otherwise this may return out of date color values, or worse - throw a run-time error as it tries to access an array element that doesn't exist. - * Note that on little-endian systems the format is 0xAABBGGRR and on big-endian the format is 0xRRGGBBAA. - * - * @method Phaser.BitmapData#getPixel32 - * @param {number} x - The x coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {number} y - The y coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @return {number} A native color value integer (format: 0xAARRGGBB) - */ - getPixel32: function (x, y) { - - if (x >= 0 && x <= this.width && y >= 0 && y <= this.height) - { - return this.pixels[y * this.width + x]; - } - - }, - - /** - * Get the color of a specific pixel including its alpha value as a color object containing r,g,b,a and rgba properties. - * If you have drawn anything to the BitmapData since it was created you must call BitmapData.update to refresh the array buffer, - * otherwise this may return out of date color values, or worse - throw a run-time error as it tries to access an array element that doesn't exist. - * - * @method Phaser.BitmapData#getPixelRGB - * @param {number} x - The x coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {number} y - The y coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. - * @param {object} [out] - An object into which 3 properties will be created: r, g and b. If not provided a new object will be created. - * @param {boolean} [hsl=false] - Also convert the rgb values into hsl? - * @param {boolean} [hsv=false] - Also convert the rgb values into hsv? - * @return {object} An object with the red, green and blue values set in the r, g and b properties. - */ - getPixelRGB: function (x, y, out, hsl, hsv) { - - return Phaser.Color.unpackPixel(this.getPixel32(x, y), out, hsl, hsv); - - }, - - /** - * Gets all the pixels from the region specified by the given Rectangle object. - * - * @method Phaser.BitmapData#getPixels - * @param {Phaser.Rectangle} rect - The Rectangle region to get. - * @return {ImageData} Returns a ImageData object containing a Uint8ClampedArray data property. - */ - getPixels: function (rect) { - - return this.context.getImageData(rect.x, rect.y, rect.width, rect.height); - - }, - - /** - * Scans the BitmapData, pixel by pixel, until it encounters a pixel that isn't transparent (i.e. has an alpha value > 0). - * It then stops scanning and returns an object containing the color of the pixel in r, g and b properties and the location in the x and y properties. - * - * The direction parameter controls from which direction it should start the scan: - * - * 0 = top to bottom - * 1 = bottom to top - * 2 = left to right - * 3 = right to left - * - * @method Phaser.BitmapData#getFirstPixel - * @param {number} [direction=0] - The direction in which to scan for the first pixel. 0 = top to bottom, 1 = bottom to top, 2 = left to right and 3 = right to left. - * @return {object} Returns an object containing the color of the pixel in the `r`, `g` and `b` properties and the location in the `x` and `y` properties. - */ - getFirstPixel: function (direction) { - - if (direction === undefined) { direction = 0; } - - var pixel = Phaser.Color.createColor(); - - var x = 0; - var y = 0; - var v = 1; - var scan = false; - - if (direction === 1) - { - v = -1; - y = this.height; - } - else if (direction === 3) - { - v = -1; - x = this.width; - } - - do { - - Phaser.Color.unpackPixel(this.getPixel32(x, y), pixel); - - if (direction === 0 || direction === 1) - { - // Top to Bottom / Bottom to Top - x++; - - if (x === this.width) - { - x = 0; - y += v; - - if (y >= this.height || y <= 0) - { - scan = true; - } - } - } - else if (direction === 2 || direction === 3) - { - // Left to Right / Right to Left - y++; - - if (y === this.height) - { - y = 0; - x += v; - - if (x >= this.width || x <= 0) - { - scan = true; - } - } - } - } - while (pixel.a === 0 && !scan); - - pixel.x = x; - pixel.y = y; - - return pixel; - - }, - - /** - * Scans the BitmapData and calculates the bounds. This is a rectangle that defines the extent of all non-transparent pixels. - * The rectangle returned will extend from the top-left of the image to the bottom-right, excluding transparent pixels. - * - * @method Phaser.BitmapData#getBounds - * @param {Phaser.Rectangle} [rect] - If provided this Rectangle object will be populated with the bounds, otherwise a new object will be created. - * @return {Phaser.Rectangle} A Rectangle whose dimensions encompass the full extent of non-transparent pixels in this BitmapData. - */ - getBounds: function (rect) { - - if (rect === undefined) { rect = new Phaser.Rectangle(); } - - rect.x = this.getFirstPixel(2).x; - - // If we hit this, there's no point scanning any more, the image is empty - if (rect.x === this.width) - { - return rect.setTo(0, 0, 0, 0); - } - - rect.y = this.getFirstPixel(0).y; - rect.width = (this.getFirstPixel(3).x - rect.x) + 1; - rect.height = (this.getFirstPixel(1).y - rect.y) + 1; - - return rect; - - }, - - /** - * Creates a new Phaser.Image object, assigns this BitmapData to be its texture, adds it to the world then returns it. - * - * @method Phaser.BitmapData#addToWorld - * @param {number} [x=0] - The x coordinate to place the Image at. - * @param {number} [y=0] - The y coordinate to place the Image at. - * @param {number} [anchorX=0] - Set the x anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @param {number} [anchorY=0] - Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @param {number} [scaleX=1] - The horizontal scale factor of the Image. A value of 1 means no scaling. 2 would be twice the size, and so on. - * @param {number} [scaleY=1] - The vertical scale factor of the Image. A value of 1 means no scaling. 2 would be twice the size, and so on. - * @return {Phaser.Image} The newly added Image object. - */ - addToWorld: function (x, y, anchorX, anchorY, scaleX, scaleY) { - - scaleX = scaleX || 1; - scaleY = scaleY || 1; - - var image = this.game.add.image(x, y, this); - - image.anchor.set(anchorX, anchorY); - image.scale.set(scaleX, scaleY); - - return image; - - }, - - /** - * Copies a rectangular area from the source object to this BitmapData. If you give `null` as the source it will copy from itself. - * - * You can optionally resize, translate, rotate, scale, alpha or blend as it's drawn. - * - * All rotation, scaling and drawing takes place around the regions center point by default, but can be changed with the anchor parameters. - * - * Note that the source image can also be this BitmapData, which can create some interesting effects. - * - * This method has a lot of parameters for maximum control. - * You can use the more friendly methods like `copyRect` and `draw` to avoid having to remember them all. - * - * You may prefer to use `copyTransform` if you're simply trying to draw a Sprite to this BitmapData, - * and don't wish to translate, scale or rotate it from its original values. - * - * @method Phaser.BitmapData#copy - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapData|Phaser.RenderTexture|Image|HTMLCanvasElement|string} [source] - The source to copy from. If you give a string it will try and find the Image in the Game.Cache first. This is quite expensive so try to provide the image itself. - * @param {number} [x=0] - The x coordinate representing the top-left of the region to copy from the source image. - * @param {number} [y=0] - The y coordinate representing the top-left of the region to copy from the source image. - * @param {number} [width] - The width of the region to copy from the source image. If not specified it will use the full source image width. - * @param {number} [height] - The height of the region to copy from the source image. If not specified it will use the full source image height. - * @param {number} [tx] - The x coordinate to translate to before drawing. If not specified it will default to the `x` parameter. If `null` and `source` is a Display Object, it will default to `source.x`. - * @param {number} [ty] - The y coordinate to translate to before drawing. If not specified it will default to the `y` parameter. If `null` and `source` is a Display Object, it will default to `source.y`. - * @param {number} [newWidth] - The new width of the block being copied. If not specified it will default to the `width` parameter. - * @param {number} [newHeight] - The new height of the block being copied. If not specified it will default to the `height` parameter. - * @param {number} [rotate=0] - The angle in radians to rotate the block to before drawing. Rotation takes place around the center by default, but can be changed with the `anchor` parameters. - * @param {number} [anchorX=0] - The anchor point around which the block is rotated and scaled. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @param {number} [anchorY=0] - The anchor point around which the block is rotated and scaled. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @param {number} [scaleX=1] - The horizontal scale factor of the block. A value of 1 means no scaling. 2 would be twice the size, and so on. - * @param {number} [scaleY=1] - The vertical scale factor of the block. A value of 1 means no scaling. 2 would be twice the size, and so on. - * @param {number} [alpha=1] - The alpha that will be set on the context before drawing. A value between 0 (fully transparent) and 1, opaque. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @param {boolean} [roundPx=false] - Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - copy: function (source, x, y, width, height, tx, ty, newWidth, newHeight, rotate, anchorX, anchorY, scaleX, scaleY, alpha, blendMode, roundPx) { - - if (source === undefined || source === null) { source = this; } - - if (source instanceof Phaser.RenderTexture || source instanceof PIXI.RenderTexture) - { - source = source.getCanvas(); - } - - this._image = source; - - if (source instanceof Phaser.Sprite || source instanceof Phaser.Image || source instanceof Phaser.Text || source instanceof PIXI.Sprite) - { - // Copy over sprite values - this._pos.set(source.texture.crop.x, source.texture.crop.y); - this._size.set(source.texture.crop.width, source.texture.crop.height); - this._scale.set(source.scale.x, source.scale.y); - this._anchor.set(source.anchor.x, source.anchor.y); - this._rotate = source.rotation; - this._alpha.current = source.alpha; - - if (source.texture instanceof Phaser.RenderTexture || source.texture instanceof PIXI.RenderTexture) - { - this._image = source.texture.getCanvas(); - } - else - { - this._image = source.texture.baseTexture.source; - } - - if (tx === undefined || tx === null) { tx = source.x; } - if (ty === undefined || ty === null) { ty = source.y; } - - if (source.texture.trim) - { - // Offset the translation coordinates by the trim amount - tx += source.texture.trim.x - source.anchor.x * source.texture.trim.width; - ty += source.texture.trim.y - source.anchor.y * source.texture.trim.height; - } - - if (source.tint !== 0xFFFFFF) - { - if (source.cachedTint !== source.tint) - { - source.cachedTint = source.tint; - source.tintedTexture = PIXI.CanvasTinter.getTintedTexture(source, source.tint); - } - - this._image = source.tintedTexture; - this._pos.set(0); - } - } - else - { - // Reset - this._pos.set(0); - this._scale.set(1); - this._anchor.set(0); - this._rotate = 0; - this._alpha.current = 1; - - if (source instanceof Phaser.BitmapData) - { - this._image = source.canvas; - } - else if (typeof source === 'string') - { - source = this.game.cache.getImage(source); - - if (source === null) - { - return; - } - else - { - this._image = source; - } - } - - this._size.set(this._image.width, this._image.height); - } - - // The source region to copy from - if (x === undefined || x === null) { x = 0; } - if (y === undefined || y === null) { y = 0; } - - // If they set a width/height then we override the frame values with them - if (width) - { - this._size.x = width; - } - - if (height) - { - this._size.y = height; - } - - // The destination region to copy to - if (tx === undefined || tx === null) { tx = x; } - if (ty === undefined || ty === null) { ty = y; } - if (newWidth === undefined || newWidth === null) { newWidth = this._size.x; } - if (newHeight === undefined || newHeight === null) { newHeight = this._size.y; } - - // Rotation - if set this will override any potential Sprite value - if (typeof rotate === 'number') - { - this._rotate = rotate; - } - - // Anchor - if set this will override any potential Sprite value - if (typeof anchorX === 'number') - { - this._anchor.x = anchorX; - } - - if (typeof anchorY === 'number') - { - this._anchor.y = anchorY; - } - - // Scaling - if set this will override any potential Sprite value - if (typeof scaleX === 'number') - { - this._scale.x = scaleX; - } - - if (typeof scaleY === 'number') - { - this._scale.y = scaleY; - } - - // Effects - if (typeof alpha === 'number') - { - this._alpha.current = alpha; - } - - if (blendMode === undefined) { blendMode = null; } - if (roundPx === undefined) { roundPx = false; } - - if (this._alpha.current <= 0 || this._scale.x === 0 || this._scale.y === 0 || this._size.x === 0 || this._size.y === 0) - { - // Why bother wasting CPU cycles drawing something you can't see? - return; - } - - var ctx = this.context; - - this._alpha.prev = ctx.globalAlpha; - - ctx.save(); - - ctx.globalAlpha = this._alpha.current; - - if (blendMode) - { - this.op = blendMode; - } - - if (roundPx) - { - tx |= 0; - ty |= 0; - } - - // Doesn't work fully with children, or nested scale + rotation transforms (see copyTransform) - ctx.translate(tx, ty); - - ctx.scale(this._scale.x, this._scale.y); - - ctx.rotate(this._rotate); - - ctx.drawImage(this._image, this._pos.x + x, this._pos.y + y, this._size.x, this._size.y, -newWidth * this._anchor.x, -newHeight * this._anchor.y, newWidth, newHeight); - - // Carry on ... - - ctx.restore(); - - ctx.globalAlpha = this._alpha.prev; - - this.dirty = true; - - return this; - - }, - - /** - * Draws the given `source` Game Object to this BitmapData, using its `worldTransform` property to set the - * position, scale and rotation of where it is drawn. This function is used internally by `drawGroup`. - * It takes the objects tint and scale mode into consideration before drawing. - * - * You can optionally specify Blend Mode and Round Pixels arguments. - * - * @method Phaser.BitmapData#copyTransform - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapData|Phaser.BitmapText} [source] - The Game Object to draw. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @param {boolean} [roundPx=false] - Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - copyTransform: function (source, blendMode, roundPx) { - - if (blendMode === undefined) { blendMode = null; } - if (roundPx === undefined) { roundPx = false; } - - if (!source.hasOwnProperty('worldTransform') || !source.worldVisible || source.worldAlpha === 0) - { - return this; - } - - var wt = source.worldTransform; - - this._pos.set(source.texture.crop.x, source.texture.crop.y); - this._size.set(source.texture.crop.width, source.texture.crop.height); - - if (wt.a === 0 || wt.d === 0 || this._size.x === 0 || this._size.y === 0) - { - // Why bother wasting CPU cycles drawing something you can't see? - return this; - } - - if (source.texture instanceof Phaser.RenderTexture || source.texture instanceof PIXI.RenderTexture) - { - this._image = source.texture.getCanvas(); - } - else - { - this._image = source.texture.baseTexture.source; - } - - var tx = wt.tx; - var ty = wt.ty; - - if (source.texture.trim) - { - // Offset the translation coordinates by the trim amount - tx += source.texture.trim.x - source.anchor.x * source.texture.trim.width; - ty += source.texture.trim.y - source.anchor.y * source.texture.trim.height; - } - - if (source.tint !== 0xFFFFFF) - { - if (source.cachedTint !== source.tint) - { - source.cachedTint = source.tint; - source.tintedTexture = PIXI.CanvasTinter.getTintedTexture(source, source.tint); - } - - this._image = source.tintedTexture; - this._pos.set(0); - } - - if (roundPx) - { - tx |= 0; - ty |= 0; - } - - var ctx = this.context; - - this._alpha.prev = ctx.globalAlpha; - - ctx.save(); - - ctx.globalAlpha = this._alpha.current; - - if (blendMode) - { - this.op = blendMode; - } - - ctx[this.smoothProperty] = (source.texture.baseTexture.scaleMode === PIXI.scaleModes.LINEAR); - - ctx.setTransform(wt.a, wt.b, wt.c, wt.d, tx, ty); - - ctx.drawImage(this._image, - this._pos.x, - this._pos.y, - this._size.x, - this._size.y, - -this._size.x * source.anchor.x, - -this._size.y * source.anchor.y, - this._size.x, - this._size.y); - - ctx.restore(); - - ctx.globalAlpha = this._alpha.prev; - - this.dirty = true; - - return this; - - }, - - /** - * Copies the area defined by the Rectangle parameter from the source image to this BitmapData at the given location. - * - * @method Phaser.BitmapData#copyRect - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapData|Phaser.RenderTexture|Image|string} source - The Image to copy from. If you give a string it will try and find the Image in the Game.Cache. - * @param {Phaser.Rectangle} area - The Rectangle region to copy from the source image. - * @param {number} x - The destination x coordinate to copy the image to. - * @param {number} y - The destination y coordinate to copy the image to. - * @param {number} [alpha=1] - The alpha that will be set on the context before drawing. A value between 0 (fully transparent) and 1, opaque. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @param {boolean} [roundPx=false] - Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - copyRect: function (source, area, x, y, alpha, blendMode, roundPx) { - - return this.copy(source, area.x, area.y, area.width, area.height, x, y, area.width, area.height, 0, 0, 0, 1, 1, alpha, blendMode, roundPx); - - }, - - /** - * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. - * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * - * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. - * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. - * - * Note: You should ensure that at least 1 full update has taken place before calling this, - * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. - * - * @method Phaser.BitmapData#draw - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. - * @param {number} [x=0] - The x coordinate to translate to before drawing. If not specified it will default to `source.x`. - * @param {number} [y=0] - The y coordinate to translate to before drawing. If not specified it will default to `source.y`. - * @param {number} [width] - The new width of the Sprite being copied. If not specified it will default to `source.width`. - * @param {number} [height] - The new height of the Sprite being copied. If not specified it will default to `source.height`. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @param {boolean} [roundPx=false] - Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - draw: function (source, x, y, width, height, blendMode, roundPx) { - - // By specifying null for most parameters it will tell `copy` to use the Sprite values instead, which is what we want here - return this.copy(source, null, null, null, null, x, y, width, height, null, null, null, null, null, null, blendMode, roundPx); - - }, - - /** - * Draws the immediate children of a Phaser.Group to this BitmapData. - * - * It's perfectly valid to pass in `game.world` as the Group, and it will iterate through the entire display list. - * - * Children are drawn _only_ if they have their `exists` property set to `true`, and have image, or RenderTexture, based Textures. - * - * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. - * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. - * - * Note: You should ensure that at least 1 full update has taken place before calling this, - * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. - * - * @method Phaser.BitmapData#drawGroup - * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @param {boolean} [roundPx=false] - Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - drawGroup: function (group, blendMode, roundPx) { - - if (group.total > 0) - { - group.forEachExists(this.drawGroupProxy, this, blendMode, roundPx); - } - - return this; - - }, - - /** - * A proxy for drawGroup that handles child iteration for more complex Game Objects. - * - * @method Phaser.BitmapData#drawGroupProxy - * @private - * @param {Phaser.Sprite|Phaser.Image|Phaser.BitmapText} child - The child to draw. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @param {boolean} [roundPx=false] - Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. - */ - drawGroupProxy: function (child, blendMode, roundPx) { - - if (child.hasOwnProperty('texture')) - { - this.copyTransform(child, blendMode, roundPx); - } - - if (child.type === Phaser.GROUP && child.exists) - { - this.drawGroup(child, blendMode, roundPx); - } - else - { - if (child.hasOwnProperty('children') && child.children.length > 0) - { - for (var i = 0; i < child.children.length; i++) - { - if (child.children[i].exists) - { - this.copyTransform(child.children[i], blendMode, roundPx); - } - } - } - } - - }, - - /** - * Draws the Game Object or Group to this BitmapData and then recursively iterates through all of its children. - * - * If a child has an `exists` property then it (and its children) will be only be drawn if exists is `true`. - * - * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData - * they won't be drawn. Depending on your requirements you may need to resize the BitmapData in advance to match the - * bounds of the top-level Game Object. - * - * When drawing it will take into account the child's world rotation, scale and alpha values. - * - * It's perfectly valid to pass in `game.world` as the parent object, and it will iterate through the entire display list. - * - * Note: If you are trying to grab your entire game at the start of a State then you should ensure that at least 1 full update - * has taken place before doing so, otherwise all of the objects will render with incorrect positions and scales. You can - * trigger an update yourself by calling `stage.updateTransform()` before calling `drawFull`. - * - * @method Phaser.BitmapData#drawFull - * @param {Phaser.World|Phaser.Group|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText} parent - The Game Object to draw onto this BitmapData and then recursively draw all of its children. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @param {boolean} [roundPx=false] - Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - drawFull: function (parent, blendMode, roundPx) { - - if (parent.worldVisible === false || parent.worldAlpha === 0 || (parent.hasOwnProperty('exists') && parent.exists === false)) - { - return this; - } - - if (parent.type !== Phaser.GROUP && parent.type !== Phaser.EMITTER && parent.type !== Phaser.BITMAPTEXT) - { - if (parent.type === Phaser.GRAPHICS) - { - var bounds = parent.getBounds(); - this.ctx.save(); - this.ctx.translate(bounds.x, bounds.y); - PIXI.CanvasGraphics.renderGraphics(parent, this.ctx); - this.ctx.restore(); - } - else - { - this.copy(parent, null, null, null, null, parent.worldPosition.x, parent.worldPosition.y, null, null, parent.worldRotation, null, null, parent.worldScale.x, parent.worldScale.y, parent.worldAlpha, blendMode, roundPx); - } - } - - if (parent.children) - { - for (var i = 0; i < parent.children.length; i++) - { - this.drawFull(parent.children[i], blendMode, roundPx); - } - } - - return this; - - }, - - /** - * Sets the shadow properties of this BitmapDatas context which will affect all draw operations made to it. - * You can cancel an existing shadow by calling this method and passing no parameters. - * Note: At the time of writing (October 2014) Chrome still doesn't support shadowBlur used with drawImage. - * - * @method Phaser.BitmapData#shadow - * @param {string} color - The color of the shadow, given in a CSS format, i.e. `#000000` or `rgba(0,0,0,1)`. If `null` or `undefined` the shadow will be reset. - * @param {number} [blur=5] - The amount the shadow will be blurred by. Low values = a crisp shadow, high values = a softer shadow. - * @param {number} [x=10] - The horizontal offset of the shadow in pixels. - * @param {number} [y=10] - The vertical offset of the shadow in pixels. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - shadow: function (color, blur, x, y) { - - var ctx = this.context; - - if (color === undefined || color === null) - { - ctx.shadowColor = 'rgba(0,0,0,0)'; - } - else - { - ctx.shadowColor = color; - ctx.shadowBlur = blur || 5; - ctx.shadowOffsetX = x || 10; - ctx.shadowOffsetY = y || 10; - } - - }, - - /** - * Draws the image onto this BitmapData using an image as an alpha mask. - * - * @method Phaser.BitmapData#alphaMask - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapData|Image|HTMLCanvasElement|string} source - The source to copy from. If you give a string it will try and find the Image in the Game.Cache first. This is quite expensive so try to provide the image itself. - * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapData|Image|HTMLCanvasElement|string} [mask] - The object to be used as the mask. If you give a string it will try and find the Image in the Game.Cache first. This is quite expensive so try to provide the image itself. If you don't provide a mask it will use this BitmapData as the mask. - * @param {Phaser.Rectangle} [sourceRect] - A Rectangle where x/y define the coordinates to draw the Source image to and width/height define the size. - * @param {Phaser.Rectangle} [maskRect] - A Rectangle where x/y define the coordinates to draw the Mask image to and width/height define the size. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - alphaMask: function (source, mask, sourceRect, maskRect) { - - if (maskRect === undefined || maskRect === null) - { - this.draw(mask).blendSourceAtop(); - } - else - { - this.draw(mask, maskRect.x, maskRect.y, maskRect.width, maskRect.height).blendSourceAtop(); - } - - if (sourceRect === undefined || sourceRect === null) - { - this.draw(source).blendReset(); - } - else - { - this.draw(source, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height).blendReset(); - } - - return this; - - }, - - /** - * Scans this BitmapData for all pixels matching the given r,g,b values and then draws them into the given destination BitmapData. - * The original BitmapData remains unchanged. - * The destination BitmapData must be large enough to receive all of the pixels that are scanned unless the 'resize' parameter is true. - * Although the destination BitmapData is returned from this method, it's actually modified directly in place, meaning this call is perfectly valid: - * `picture.extract(mask, r, g, b)` - * You can specify optional r2, g2, b2 color values. If given the pixel written to the destination bitmap will be of the r2, g2, b2 color. - * If not given it will be written as the same color it was extracted. You can provide one or more alternative colors, allowing you to tint - * the color during extraction. - * - * @method Phaser.BitmapData#extract - * @param {Phaser.BitmapData} destination - The BitmapData that the extracted pixels will be drawn to. - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @param {number} [a=255] - The alpha color component, in the range 0 - 255 that the new pixel will be drawn at. - * @param {boolean} [resize=false] - Should the destination BitmapData be resized to match this one before the pixels are copied? - * @param {number} [r2] - An alternative red color component to be written to the destination, in the range 0 - 255. - * @param {number} [g2] - An alternative green color component to be written to the destination, in the range 0 - 255. - * @param {number} [b2] - An alternative blue color component to be written to the destination, in the range 0 - 255. - * @returns {Phaser.BitmapData} The BitmapData that the extract pixels were drawn on. - */ - extract: function (destination, r, g, b, a, resize, r2, g2, b2) { - - if (a === undefined) { a = 255; } - if (resize === undefined) { resize = false; } - if (r2 === undefined) { r2 = r; } - if (g2 === undefined) { g2 = g; } - if (b2 === undefined) { b2 = b; } - - if (resize) - { - destination.resize(this.width, this.height); - } - - this.processPixelRGB( - function (pixel, x, y) - { - if (pixel.r === r && pixel.g === g && pixel.b === b) - { - destination.setPixel32(x, y, r2, g2, b2, a, false); - } - return false; - }, - this); - - destination.context.putImageData(destination.imageData, 0, 0); - destination.dirty = true; - - return destination; - - }, - - /** - * Draws a filled Rectangle to the BitmapData at the given x, y coordinates and width / height in size. - * - * @method Phaser.BitmapData#rect - * @param {number} x - The x coordinate of the top-left of the Rectangle. - * @param {number} y - The y coordinate of the top-left of the Rectangle. - * @param {number} width - The width of the Rectangle. - * @param {number} height - The height of the Rectangle. - * @param {string} [fillStyle] - If set the context fillStyle will be set to this value before the rect is drawn. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - rect: function (x, y, width, height, fillStyle) { - - if (typeof fillStyle !== 'undefined') - { - this.context.fillStyle = fillStyle; - } - - this.context.fillRect(x, y, width, height); - - return this; - - }, - - /** - * Draws text to the BitmapData in the given font and color. - * The default font is 14px Courier, so useful for quickly drawing debug text. - * If you need to do a lot of font work to this BitmapData we'd recommend implementing your own text draw method. - * - * @method Phaser.BitmapData#text - * @param {string} text - The text to write to the BitmapData. - * @param {number} x - The x coordinate of the top-left of the text string. - * @param {number} y - The y coordinate of the top-left of the text string. - * @param {string} [font='14px Courier'] - The font. This is passed directly to Context.font, so anything that can support, this can. - * @param {string} [color='rgb(255,255,255)'] - The color the text will be drawn in. - * @param {boolean} [shadow=true] - Draw a single pixel black shadow below the text (offset by text.x/y + 1) - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - text: function (text, x, y, font, color, shadow) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (font === undefined) { font = '14px Courier'; } - if (color === undefined) { color = 'rgb(255,255,255)'; } - if (shadow === undefined) { shadow = true; } - - var ctx = this.context; - var prevFont = ctx.font; - - ctx.font = font; - - if (shadow) - { - ctx.fillStyle = 'rgb(0,0,0)'; - ctx.fillText(text, x + 1, y + 1); - } - - ctx.fillStyle = color; - ctx.fillText(text, x, y); - - ctx.font = prevFont; - - }, - - /** - * Draws a filled Circle to the BitmapData at the given x, y coordinates and radius in size. - * - * @method Phaser.BitmapData#circle - * @param {number} x - The x coordinate to draw the Circle at. This is the center of the circle. - * @param {number} y - The y coordinate to draw the Circle at. This is the center of the circle. - * @param {number} radius - The radius of the Circle in pixels. The radius is half the diameter. - * @param {string} [fillStyle] - If set the context fillStyle will be set to this value before the circle is drawn. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - circle: function (x, y, radius, fillStyle) { - - var ctx = this.context; - - if (fillStyle !== undefined) - { - ctx.fillStyle = fillStyle; - } - - ctx.beginPath(); - ctx.arc(x, y, radius, 0, Math.PI * 2, false); - ctx.closePath(); - - ctx.fill(); - - return this; - - }, - - /** - * Draws a line between the coordinates given in the color and thickness specified. - * - * @method Phaser.BitmapData#line - * @param {number} x1 - The x coordinate to start the line from. - * @param {number} y1 - The y coordinate to start the line from. - * @param {number} x2 - The x coordinate to draw the line to. - * @param {number} y2 - The y coordinate to draw the line to. - * @param {string} [color='#fff'] - The stroke color that the line will be drawn in. - * @param {number} [width=1] - The line thickness. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - line: function (x1, y1, x2, y2, color, width) { - - if (color === undefined) { color = '#fff'; } - if (width === undefined) { width = 1; } - - var ctx = this.context; - - ctx.beginPath(); - - ctx.moveTo(x1, y1); - ctx.lineTo(x2, y2); - - ctx.lineWidth = width; - ctx.strokeStyle = color; - ctx.stroke(); - - ctx.closePath(); - - return this; - - }, - - /** - * Takes the given Line object and image and renders it to this BitmapData as a repeating texture line. - * - * @method Phaser.BitmapData#textureLine - * @param {Phaser.Line} line - A Phaser.Line object that will be used to plot the start and end of the line. - * @param {string|Image} image - The key of an image in the Phaser.Cache to use as the texture for this line, or an actual Image. - * @param {string} [repeat='repeat-x'] - The pattern repeat mode to use when drawing the line. Either `repeat`, `repeat-x` or `no-repeat`. - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - textureLine: function (line, image, repeat) { - - if (repeat === undefined) { repeat = 'repeat-x'; } - - if (typeof image === 'string') - { - image = this.game.cache.getImage(image); - - if (!image) - { - return; - } - } - - var width = line.length; - - if (repeat === 'no-repeat' && width > image.width) - { - width = image.width; - } - - var ctx = this.context; - - ctx.fillStyle = ctx.createPattern(image, repeat); - - this._circle = new Phaser.Circle(line.start.x, line.start.y, image.height); - - this._circle.circumferencePoint(line.angle - 1.5707963267948966, false, this._pos); - - ctx.save(); - ctx.translate(this._pos.x, this._pos.y); - ctx.rotate(line.angle); - ctx.fillRect(0, 0, width, image.height); - ctx.restore(); - - this.dirty = true; - - return this; - - }, - - /** - * If the game is running in WebGL this will push the texture up to the GPU if it's dirty. - * This is called automatically if the BitmapData is being used by a Sprite, otherwise you need to remember to call it in your render function. - * If you wish to suppress this functionality set BitmapData.disableTextureUpload to `true`. - * - * @method Phaser.BitmapData#render - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - render: function () { - - if (!this.disableTextureUpload && this.dirty) - { - this.baseTexture.dirty(); - this.dirty = false; - } - - return this; - - }, - - /** - * Destroys this BitmapData and puts the canvas it was using back into the canvas pool for re-use. - * - * @method Phaser.BitmapData#destroy - */ - destroy: function () { - - this.frameData.destroy(); - - this.texture.destroy(true); - - PIXI.CanvasPool.remove(this); - - }, - - /** - * Resets the blend mode (effectively sets it to 'source-over') - * - * @method Phaser.BitmapData#blendReset - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendReset: function () { - - this.op = 'source-over'; - return this; - - }, - - /** - * Sets the blend mode to 'source-over' - * - * @method Phaser.BitmapData#blendSourceOver - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendSourceOver: function () { - - this.op = 'source-over'; - return this; - - }, - - /** - * Sets the blend mode to 'source-in' - * - * @method Phaser.BitmapData#blendSourceIn - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendSourceIn: function () { - - this.op = 'source-in'; - return this; - - }, - - /** - * Sets the blend mode to 'source-out' - * - * @method Phaser.BitmapData#blendSourceOut - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendSourceOut: function () { - - this.op = 'source-out'; - return this; - - }, - - /** - * Sets the blend mode to 'source-atop' - * - * @method Phaser.BitmapData#blendSourceAtop - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendSourceAtop: function () { - - this.op = 'source-atop'; - return this; - - }, - - /** - * Sets the blend mode to 'destination-over' - * - * @method Phaser.BitmapData#blendDestinationOver - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendDestinationOver: function () { - - this.op = 'destination-over'; - return this; - - }, - - /** - * Sets the blend mode to 'destination-in' - * - * @method Phaser.BitmapData#blendDestinationIn - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendDestinationIn: function () { - - this.op = 'destination-in'; - return this; - - }, - - /** - * Sets the blend mode to 'destination-out' - * - * @method Phaser.BitmapData#blendDestinationOut - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendDestinationOut: function () { - - this.op = 'destination-out'; - return this; - - }, - - /** - * Sets the blend mode to 'destination-atop' - * - * @method Phaser.BitmapData#blendDestinationAtop - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendDestinationAtop: function () { - - this.op = 'destination-atop'; - return this; - - }, - - /** - * Sets the blend mode to 'xor' - * - * @method Phaser.BitmapData#blendXor - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendXor: function () { - - this.op = 'xor'; - return this; - - }, - - /** - * Sets the blend mode to 'lighter' - * - * @method Phaser.BitmapData#blendAdd - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendAdd: function () { - - this.op = 'lighter'; - return this; - - }, - - /** - * Sets the blend mode to 'multiply' - * - * @method Phaser.BitmapData#blendMultiply - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendMultiply: function () { - - this.op = 'multiply'; - return this; - - }, - - /** - * Sets the blend mode to 'screen' - * - * @method Phaser.BitmapData#blendScreen - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendScreen: function () { - - this.op = 'screen'; - return this; - - }, - - /** - * Sets the blend mode to 'overlay' - * - * @method Phaser.BitmapData#blendOverlay - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendOverlay: function () { - - this.op = 'overlay'; - return this; - - }, - - /** - * Sets the blend mode to 'darken' - * - * @method Phaser.BitmapData#blendDarken - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendDarken: function () { - - this.op = 'darken'; - return this; - - }, - - /** - * Sets the blend mode to 'lighten' - * - * @method Phaser.BitmapData#blendLighten - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendLighten: function () { - - this.op = 'lighten'; - return this; - - }, - - /** - * Sets the blend mode to 'color-dodge' - * - * @method Phaser.BitmapData#blendColorDodge - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendColorDodge: function () { - - this.op = 'color-dodge'; - return this; - - }, - - /** - * Sets the blend mode to 'color-burn' - * - * @method Phaser.BitmapData#blendColorBurn - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendColorBurn: function () { - - this.op = 'color-burn'; - return this; - - }, - - /** - * Sets the blend mode to 'hard-light' - * - * @method Phaser.BitmapData#blendHardLight - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendHardLight: function () { - - this.op = 'hard-light'; - return this; - - }, - - /** - * Sets the blend mode to 'soft-light' - * - * @method Phaser.BitmapData#blendSoftLight - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendSoftLight: function () { - - this.op = 'soft-light'; - return this; - - }, - - /** - * Sets the blend mode to 'difference' - * - * @method Phaser.BitmapData#blendDifference - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendDifference: function () { - - this.op = 'difference'; - return this; - - }, - - /** - * Sets the blend mode to 'exclusion' - * - * @method Phaser.BitmapData#blendExclusion - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendExclusion: function () { - - this.op = 'exclusion'; - return this; - - }, - - /** - * Sets the blend mode to 'hue' - * - * @method Phaser.BitmapData#blendHue - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendHue: function () { - - this.op = 'hue'; - return this; - - }, - - /** - * Sets the blend mode to 'saturation' - * - * @method Phaser.BitmapData#blendSaturation - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendSaturation: function () { - - this.op = 'saturation'; - return this; - - }, - - /** - * Sets the blend mode to 'color' - * - * @method Phaser.BitmapData#blendColor - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendColor: function () { - - this.op = 'color'; - return this; - - }, - - /** - * Sets the blend mode to 'luminosity' - * - * @method Phaser.BitmapData#blendLuminosity - * @return {Phaser.BitmapData} This BitmapData object for method chaining. - */ - blendLuminosity: function () { - - this.op = 'luminosity'; - return this; - - } - -}; - -/** -* @memberof Phaser.BitmapData -* @property {boolean} smoothed - Gets or sets this BitmapData.contexts smoothing enabled value. -*/ -Object.defineProperty(Phaser.BitmapData.prototype, "smoothed", { - - get: function () { - - Phaser.Canvas.getSmoothingEnabled(this.context); - - }, - - set: function (value) { - - Phaser.Canvas.setSmoothingEnabled(this.context, value); - - } - -}); - -/** -* @memberof Phaser.BitmapData -* @property {string} op - A short-hand code to get or set the global composite operation of the BitmapDatas canvas. -*/ -Object.defineProperty(Phaser.BitmapData.prototype, "op", { - - get: function () { - - return this.context.globalCompositeOperation; - - }, - - set: function (value) { - - this.context.globalCompositeOperation = value; - - } - -}); - -/** - * Gets a JavaScript object that has 6 properties set that are used by BitmapData in a transform. - * - * @method Phaser.BitmapData.getTransform - * @param {number} translateX - The x translate value. - * @param {number} translateY - The y translate value. - * @param {number} scaleX - The scale x value. - * @param {number} scaleY - The scale y value. - * @param {number} skewX - The skew x value. - * @param {number} skewY - The skew y value. - * @return {object} A JavaScript object containing all of the properties BitmapData needs for transforms. - */ -Phaser.BitmapData.getTransform = function (translateX, translateY, scaleX, scaleY, skewX, skewY) { - - if (typeof translateX !== 'number') { translateX = 0; } - if (typeof translateY !== 'number') { translateY = 0; } - if (typeof scaleX !== 'number') { scaleX = 1; } - if (typeof scaleY !== 'number') { scaleY = 1; } - if (typeof skewX !== 'number') { skewX = 0; } - if (typeof skewY !== 'number') { skewY = 0; } - - return { sx: scaleX, sy: scaleY, scaleX: scaleX, scaleY: scaleY, skewX: skewX, skewY: skewY, translateX: translateX, translateY: translateY, tx: translateX, ty: translateY }; - -}; - -Phaser.BitmapData.prototype.constructor = Phaser.BitmapData; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * The Graphics class contains methods used to draw primitive shapes such as lines, circles and rectangles to the display, and color and fill them. - * - * @class Graphics - * @extends DisplayObjectContainer - * @constructor - */ -PIXI.Graphics = function() -{ - PIXI.DisplayObjectContainer.call(this); - - this.renderable = true; - - /** - * The alpha value used when filling the Graphics object. - * - * @property fillAlpha - * @type Number - */ - this.fillAlpha = 1; - - /** - * The width (thickness) of any lines drawn. - * - * @property lineWidth - * @type Number - */ - this.lineWidth = 0; - - /** - * The color of any lines drawn. - * - * @property lineColor - * @type String - * @default 0 - */ - this.lineColor = 0; - - /** - * Graphics data - * - * @property graphicsData - * @type Array - * @private - */ - this.graphicsData = []; - - /** - * The tint applied to the graphic shape. This is a hex value. Apply a value of 0xFFFFFF to reset the tint. - * - * @property tint - * @type Number - * @default 0xFFFFFF - */ - this.tint = 0xFFFFFF; - - /** - * The blend mode to be applied to the graphic shape. Apply a value of PIXI.blendModes.NORMAL to reset the blend mode. - * - * @property blendMode - * @type Number - * @default PIXI.blendModes.NORMAL; - */ - this.blendMode = PIXI.blendModes.NORMAL; - - /** - * Current path - * - * @property currentPath - * @type Object - * @private - */ - this.currentPath = null; - - /** - * Array containing some WebGL-related properties used by the WebGL renderer. - * - * @property _webGL - * @type Array - * @private - */ - this._webGL = []; - - /** - * Whether this shape is being used as a mask. - * - * @property isMask - * @type Boolean - */ - this.isMask = false; - - /** - * The bounds' padding used for bounds calculation. - * - * @property boundsPadding - * @type Number - */ - this.boundsPadding = 0; - - this._localBounds = new PIXI.Rectangle(0,0,1,1); - - /** - * Used to detect if the graphics object has changed. If this is set to true then the graphics object will be recalculated. - * - * @property dirty - * @type Boolean - * @private - */ - this.dirty = true; - - /** - * Used to detect if the webgl graphics object has changed. If this is set to true then the graphics object will be recalculated. - * - * @property webGLDirty - * @type Boolean - * @private - */ - this.webGLDirty = false; - - /** - * Used to detect if the cached sprite object needs to be updated. - * - * @property cachedSpriteDirty - * @type Boolean - * @private - */ - this.cachedSpriteDirty = false; - -}; - -// constructor -PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.constructor = PIXI.Graphics; - -/** - * Specifies the line style used for subsequent calls to Graphics methods such as the lineTo() method or the drawCircle() method. - * - * @method lineStyle - * @param lineWidth {Number} width of the line to draw, will update the objects stored style - * @param color {Number} color of the line to draw, will update the objects stored style - * @param alpha {Number} alpha of the line to draw, will update the objects stored style - * @return {Graphics} - */ -PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) -{ - this.lineWidth = lineWidth || 0; - this.lineColor = color || 0; - this.lineAlpha = (alpha === undefined) ? 1 : alpha; - - if (this.currentPath) - { - if (this.currentPath.shape.points.length) - { - // halfway through a line? start a new one! - this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))); - } - else - { - // otherwise its empty so lets just set the line properties - this.currentPath.lineWidth = this.lineWidth; - this.currentPath.lineColor = this.lineColor; - this.currentPath.lineAlpha = this.lineAlpha; - } - } - - return this; -}; - -/** - * Moves the current drawing position to x, y. - * - * @method moveTo - * @param x {Number} the X coordinate to move to - * @param y {Number} the Y coordinate to move to - * @return {Graphics} - */ -PIXI.Graphics.prototype.moveTo = function(x, y) -{ - this.drawShape(new PIXI.Polygon([x, y])); - - return this; -}; - -/** - * Draws a line using the current line style from the current drawing position to (x, y); - * The current drawing position is then set to (x, y). - * - * @method lineTo - * @param x {Number} the X coordinate to draw to - * @param y {Number} the Y coordinate to draw to - * @return {Graphics} - */ -PIXI.Graphics.prototype.lineTo = function(x, y) -{ - if (!this.currentPath) - { - this.moveTo(0, 0); - } - - this.currentPath.shape.points.push(x, y); - this.dirty = true; - this.updateLocalBounds(); - - return this; -}; - -/** - * Calculate the points for a quadratic bezier curve and then draws it. - * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c - * - * @method quadraticCurveTo - * @param cpX {Number} Control point x - * @param cpY {Number} Control point y - * @param toX {Number} Destination point x - * @param toY {Number} Destination point y - * @return {Graphics} - */ -PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) -{ - if (this.currentPath) - { - if (this.currentPath.shape.points.length === 0) - { - this.currentPath.shape.points = [0, 0]; - } - } - else - { - this.moveTo(0,0); - } - - var xa, - ya, - n = 20, - points = this.currentPath.shape.points; - - if (points.length === 0) - { - this.moveTo(0, 0); - } - - var fromX = points[points.length - 2]; - var fromY = points[points.length - 1]; - var j = 0; - for (var i = 1; i <= n; ++i) - { - j = i / n; - - xa = fromX + ( (cpX - fromX) * j ); - ya = fromY + ( (cpY - fromY) * j ); - - points.push( xa + ( ((cpX + ( (toX - cpX) * j )) - xa) * j ), - ya + ( ((cpY + ( (toY - cpY) * j )) - ya) * j ) ); - } - - this.dirty = true; - this.updateLocalBounds(); - - return this; -}; - -/** - * Calculate the points for a bezier curve and then draws it. - * - * @method bezierCurveTo - * @param cpX {Number} Control point x - * @param cpY {Number} Control point y - * @param cpX2 {Number} Second Control point x - * @param cpY2 {Number} Second Control point y - * @param toX {Number} Destination point x - * @param toY {Number} Destination point y - * @return {Graphics} - */ -PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) -{ - if (this.currentPath) - { - if (this.currentPath.shape.points.length === 0) - { - this.currentPath.shape.points = [0, 0]; - } - } - else - { - this.moveTo(0,0); - } - - var n = 20, - dt, - dt2, - dt3, - t2, - t3, - points = this.currentPath.shape.points; - - var fromX = points[points.length-2]; - var fromY = points[points.length-1]; - var j = 0; - - for (var i = 1; i <= n; ++i) - { - j = i / n; - - dt = (1 - j); - dt2 = dt * dt; - dt3 = dt2 * dt; - - t2 = j * j; - t3 = t2 * j; - - points.push( dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX, - dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY); - } - - this.dirty = true; - this.updateLocalBounds(); - - return this; -}; - -/* - * The arcTo() method creates an arc/curve between two tangents on the canvas. - * - * "borrowed" from https://code.google.com/p/fxcanvas/ - thanks google! - * - * @method arcTo - * @param x1 {Number} The x-coordinate of the beginning of the arc - * @param y1 {Number} The y-coordinate of the beginning of the arc - * @param x2 {Number} The x-coordinate of the end of the arc - * @param y2 {Number} The y-coordinate of the end of the arc - * @param radius {Number} The radius of the arc - * @return {Graphics} - */ -PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) -{ - if (this.currentPath) - { - if (this.currentPath.shape.points.length === 0) - { - this.currentPath.shape.points.push(x1, y1); - } - } - else - { - this.moveTo(x1, y1); - } - - var points = this.currentPath.shape.points, - fromX = points[points.length-2], - fromY = points[points.length-1], - a1 = fromY - y1, - b1 = fromX - x1, - a2 = y2 - y1, - b2 = x2 - x1, - mm = Math.abs(a1 * b2 - b1 * a2); - - if (mm < 1.0e-8 || radius === 0) - { - if (points[points.length-2] !== x1 || points[points.length-1] !== y1) - { - points.push(x1, y1); - } - } - else - { - var dd = a1 * a1 + b1 * b1, - cc = a2 * a2 + b2 * b2, - tt = a1 * a2 + b1 * b2, - k1 = radius * Math.sqrt(dd) / mm, - k2 = radius * Math.sqrt(cc) / mm, - j1 = k1 * tt / dd, - j2 = k2 * tt / cc, - cx = k1 * b2 + k2 * b1, - cy = k1 * a2 + k2 * a1, - px = b1 * (k2 + j1), - py = a1 * (k2 + j1), - qx = b2 * (k1 + j2), - qy = a2 * (k1 + j2), - startAngle = Math.atan2(py - cy, px - cx), - endAngle = Math.atan2(qy - cy, qx - cx); - - this.arc(cx + x1, cy + y1, radius, startAngle, endAngle, b1 * a2 > b2 * a1); - } - - this.dirty = true; - this.updateLocalBounds(); - - return this; -}; - -/** - * The arc method creates an arc/curve (used to create circles, or parts of circles). - * - * @method arc - * @param cx {Number} The x-coordinate of the center of the circle - * @param cy {Number} The y-coordinate of the center of the circle - * @param radius {Number} The radius of the circle - * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle) - * @param endAngle {Number} The ending angle, in radians - * @param anticlockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise. - * @param segments {Number} Optional. The number of segments to use when calculating the arc. The default is 40. If you need more fidelity use a higher number. - * @return {Graphics} - */ -PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, anticlockwise, segments) -{ - // If we do this we can never draw a full circle - if (startAngle === endAngle) - { - return this; - } - - if (anticlockwise === undefined) { anticlockwise = false; } - if (segments === undefined) { segments = 40; } - - if (!anticlockwise && endAngle <= startAngle) - { - endAngle += Math.PI * 2; - } - else if (anticlockwise && startAngle <= endAngle) - { - startAngle += Math.PI * 2; - } - - var sweep = anticlockwise ? (startAngle - endAngle) * -1 : (endAngle - startAngle); - var segs = Math.ceil(Math.abs(sweep) / (Math.PI * 2)) * segments; - - // Sweep check - moved here because we don't want to do the moveTo below if the arc fails - if (sweep === 0) - { - return this; - } - - var startX = cx + Math.cos(startAngle) * radius; - var startY = cy + Math.sin(startAngle) * radius; - - if (anticlockwise && this.filling) - { - this.moveTo(cx, cy); - } - else - { - this.moveTo(startX, startY); - } - - // currentPath will always exist after calling a moveTo - var points = this.currentPath.shape.points; - - var theta = sweep / (segs * 2); - var theta2 = theta * 2; - - var cTheta = Math.cos(theta); - var sTheta = Math.sin(theta); - - var segMinus = segs - 1; - - var remainder = (segMinus % 1) / segMinus; - - for (var i = 0; i <= segMinus; i++) - { - var real = i + remainder * i; - - var angle = ((theta) + startAngle + (theta2 * real)); - - var c = Math.cos(angle); - var s = -Math.sin(angle); - - points.push(( (cTheta * c) + (sTheta * s) ) * radius + cx, - ( (cTheta * -s) + (sTheta * c) ) * radius + cy); - } - - this.dirty = true; - this.updateLocalBounds(); - - return this; -}; - -/** - * Specifies a simple one-color fill that subsequent calls to other Graphics methods - * (such as lineTo() or drawCircle()) use when drawing. - * - * @method beginFill - * @param color {Number} the color of the fill - * @param alpha {Number} the alpha of the fill - * @return {Graphics} - */ -PIXI.Graphics.prototype.beginFill = function(color, alpha) -{ - this.filling = true; - this.fillColor = color || 0; - this.fillAlpha = (alpha === undefined) ? 1 : alpha; - - if (this.currentPath) - { - if (this.currentPath.shape.points.length <= 2) - { - this.currentPath.fill = this.filling; - this.currentPath.fillColor = this.fillColor; - this.currentPath.fillAlpha = this.fillAlpha; - } - } - - return this; -}; - -/** - * Applies a fill to the lines and shapes that were added since the last call to the beginFill() method. - * - * @method endFill - * @return {Graphics} - */ -PIXI.Graphics.prototype.endFill = function() -{ - this.filling = false; - this.fillColor = null; - this.fillAlpha = 1; - - return this; -}; - -/** - * @method drawRect - * - * @param x {Number} The X coord of the top-left of the rectangle - * @param y {Number} The Y coord of the top-left of the rectangle - * @param width {Number} The width of the rectangle - * @param height {Number} The height of the rectangle - * @return {Graphics} - */ -PIXI.Graphics.prototype.drawRect = function(x, y, width, height) -{ - this.drawShape(new PIXI.Rectangle(x, y, width, height)); - - return this; -}; - -/** - * @method drawRoundedRect - * @param x {Number} The X coord of the top-left of the rectangle - * @param y {Number} The Y coord of the top-left of the rectangle - * @param width {Number} The width of the rectangle - * @param height {Number} The height of the rectangle - * @param radius {Number} Radius of the rectangle corners. In WebGL this must be a value between 0 and 9. - */ -PIXI.Graphics.prototype.drawRoundedRect = function(x, y, width, height, radius) -{ - this.drawShape(new PIXI.RoundedRectangle(x, y, width, height, radius)); - - return this; -}; - -/** - * Draws a circle. - * - * @method drawCircle - * @param x {Number} The X coordinate of the center of the circle - * @param y {Number} The Y coordinate of the center of the circle - * @param diameter {Number} The diameter of the circle - * @return {Graphics} - */ -PIXI.Graphics.prototype.drawCircle = function(x, y, diameter) -{ - this.drawShape(new PIXI.Circle(x, y, diameter)); - - return this; -}; - -/** - * Draws an ellipse. - * - * @method drawEllipse - * @param x {Number} The X coordinate of the center of the ellipse - * @param y {Number} The Y coordinate of the center of the ellipse - * @param width {Number} The half width of the ellipse - * @param height {Number} The half height of the ellipse - * @return {Graphics} - */ -PIXI.Graphics.prototype.drawEllipse = function(x, y, width, height) -{ - this.drawShape(new PIXI.Ellipse(x, y, width, height)); - - return this; -}; - -/** - * Draws a polygon using the given path. - * - * @method drawPolygon - * @param path {Array|Phaser.Polygon} The path data used to construct the polygon. Can either be an array of points or a Phaser.Polygon object. - * @return {Graphics} - */ -PIXI.Graphics.prototype.drawPolygon = function(path) -{ - if (path instanceof Phaser.Polygon || path instanceof PIXI.Polygon) - { - path = path.points; - } - - // prevents an argument assignment deopt - // see section 3.1: https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#3-managing-arguments - var points = path; - - if (!Array.isArray(points)) - { - // prevents an argument leak deopt - // see section 3.2: https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#3-managing-arguments - points = new Array(arguments.length); - - for (var i = 0; i < points.length; ++i) - { - points[i] = arguments[i]; - } - } - - this.drawShape(new Phaser.Polygon(points)); - - return this; -}; - -/** - * Clears the graphics that were drawn to this Graphics object, and resets fill and line style settings. - * - * @method clear - * @return {Graphics} - */ -PIXI.Graphics.prototype.clear = function() -{ - this.lineWidth = 0; - this.filling = false; - - this.dirty = true; - this.clearDirty = true; - this.graphicsData = []; - - this.updateLocalBounds(); - - return this; -}; - -/** - * Useful function that returns a texture of the graphics object that can then be used to create sprites - * This can be quite useful if your geometry is complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param [resolution=1] {Number} The resolution of the texture being generated - * @param [scaleMode=0] {Number} Should be one of the PIXI.scaleMode consts - * @param [padding=0] {Number} Add optional extra padding to the generated texture (default 0) - * @return {Texture} a texture of the graphics object - */ -PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, padding) -{ - if (resolution === undefined) { resolution = 1; } - if (scaleMode === undefined) { scaleMode = PIXI.scaleModes.DEFAULT; } - if (padding === undefined) { padding = 0; } - - var bounds = this.getBounds(); - - bounds.width += padding; - bounds.height += padding; - - var canvasBuffer = new PIXI.CanvasBuffer(bounds.width * resolution, bounds.height * resolution); - - var texture = PIXI.Texture.fromCanvas(canvasBuffer.canvas, scaleMode); - - texture.baseTexture.resolution = resolution; - - canvasBuffer.context.scale(resolution, resolution); - - canvasBuffer.context.translate(-bounds.x, -bounds.y); - - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); - - return texture; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.Graphics.prototype._renderWebGL = function(renderSession) -{ - // if the sprite is not visible or the alpha is 0 then no need to render this element - if (this.visible === false || this.alpha === 0 || this.isMask === true) return; - - if (this._cacheAsBitmap) - { - if (this.dirty || this.cachedSpriteDirty) - { - this._generateCachedSprite(); - - // we will also need to update the texture on the gpu too! - this.updateCachedSpriteTexture(); - - this.cachedSpriteDirty = false; - this.dirty = false; - } - - this._cachedSprite.worldAlpha = this.worldAlpha; - - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - - return; - } - else - { - renderSession.spriteBatch.stop(); - renderSession.blendModeManager.setBlendMode(this.blendMode); - - if (this._mask) renderSession.maskManager.pushMask(this._mask, renderSession); - if (this._filters) renderSession.filterManager.pushFilter(this._filterBlock); - - // check blend mode - if (this.blendMode !== renderSession.spriteBatch.currentBlendMode) - { - renderSession.spriteBatch.currentBlendMode = this.blendMode; - var blendModeWebGL = PIXI.blendModesWebGL[renderSession.spriteBatch.currentBlendMode]; - renderSession.spriteBatch.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); - } - - // check if the webgl graphic needs to be updated - if (this.webGLDirty) - { - this.dirty = true; - this.webGLDirty = false; - } - - PIXI.WebGLGraphics.renderGraphics(this, renderSession); - - // only render if it has children! - if (this.children.length) - { - renderSession.spriteBatch.start(); - - // simple render children! - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - - renderSession.spriteBatch.stop(); - } - - if (this._filters) renderSession.filterManager.popFilter(); - if (this._mask) renderSession.maskManager.popMask(this.mask, renderSession); - - renderSession.drawCount++; - - renderSession.spriteBatch.start(); - } -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.Graphics.prototype._renderCanvas = function(renderSession) -{ - // if the sprite is not visible or the alpha is 0 then no need to render this element - if (this.visible === false || this.alpha === 0 || this.isMask === true) return; - - // if the tint has changed, set the graphics object to dirty. - if (this._prevTint !== this.tint) { - this.dirty = true; - this._prevTint = this.tint; - } - - if (this._cacheAsBitmap) - { - if (this.dirty || this.cachedSpriteDirty) - { - this._generateCachedSprite(); - - // we will also need to update the texture - this.updateCachedSpriteTexture(); - - this.cachedSpriteDirty = false; - this.dirty = false; - } - - this._cachedSprite.alpha = this.alpha; - - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - - return; - } - else - { - var context = renderSession.context; - var transform = this.worldTransform; - - if (this.blendMode !== renderSession.currentBlendMode) - { - renderSession.currentBlendMode = this.blendMode; - context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode]; - } - - if (this._mask) - { - renderSession.maskManager.pushMask(this._mask, renderSession); - } - - var resolution = renderSession.resolution; - var tx = (transform.tx * renderSession.resolution) + renderSession.shakeX; - var ty = (transform.ty * renderSession.resolution) + renderSession.shakeY; - - context.setTransform(transform.a * resolution, - transform.b * resolution, - transform.c * resolution, - transform.d * resolution, - tx, - ty); - - PIXI.CanvasGraphics.renderGraphics(this, context); - - // simple render children! - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderCanvas(renderSession); - } - - if (this._mask) - { - renderSession.maskManager.popMask(renderSession); - } - } -}; - -/** - * Retrieves the bounds of the graphic shape as a rectangle object - * - * @method getBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.Graphics.prototype.getBounds = function(matrix) -{ - if (!this._currentBounds) - { - // Return an empty object if the item is a mask! - if (!this.renderable) - { - return PIXI.EmptyRectangle; - } - - if (this.dirty) - { - this.updateLocalBounds(); - this.webGLDirty = true; - this.cachedSpriteDirty = true; - this.dirty = false; - } - - var bounds = this._localBounds; - - var w0 = bounds.x; - var w1 = bounds.width + bounds.x; - - var h0 = bounds.y; - var h1 = bounds.height + bounds.y; - - var worldTransform = matrix || this.worldTransform; - - var a = worldTransform.a; - var b = worldTransform.b; - var c = worldTransform.c; - var d = worldTransform.d; - var tx = worldTransform.tx; - var ty = worldTransform.ty; - - var x1 = a * w1 + c * h1 + tx; - var y1 = d * h1 + b * w1 + ty; - - var x2 = a * w0 + c * h1 + tx; - var y2 = d * h1 + b * w0 + ty; - - var x3 = a * w0 + c * h0 + tx; - var y3 = d * h0 + b * w0 + ty; - - var x4 = a * w1 + c * h0 + tx; - var y4 = d * h0 + b * w1 + ty; - - var maxX = x1; - var maxY = y1; - - var minX = x1; - var minY = y1; - - minX = x2 < minX ? x2 : minX; - minX = x3 < minX ? x3 : minX; - minX = x4 < minX ? x4 : minX; - - minY = y2 < minY ? y2 : minY; - minY = y3 < minY ? y3 : minY; - minY = y4 < minY ? y4 : minY; - - maxX = x2 > maxX ? x2 : maxX; - maxX = x3 > maxX ? x3 : maxX; - maxX = x4 > maxX ? x4 : maxX; - - maxY = y2 > maxY ? y2 : maxY; - maxY = y3 > maxY ? y3 : maxY; - maxY = y4 > maxY ? y4 : maxY; - - this._bounds.x = minX; - this._bounds.width = maxX - minX; - - this._bounds.y = minY; - this._bounds.height = maxY - minY; - - this._currentBounds = this._bounds; - } - - return this._currentBounds; - -}; - -/** -* Tests if a point is inside this graphics object -* -* @param point {Point} the point to test -* @return {boolean} the result of the test -*/ -PIXI.Graphics.prototype.containsPoint = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - - var graphicsData = this.graphicsData; - - for (var i = 0; i < graphicsData.length; i++) - { - var data = graphicsData[i]; - - if (!data.fill) - { - continue; - } - - // only deal with fills.. - if (data.shape) - { - if (data.shape.contains(tempPoint.x, tempPoint.y)) - { - return true; - } - } - } - - return false; - -}; - -/** - * Update the bounds of the object - * - * @method updateLocalBounds - */ -PIXI.Graphics.prototype.updateLocalBounds = function() -{ - var minX = Infinity; - var maxX = -Infinity; - - var minY = Infinity; - var maxY = -Infinity; - - if (this.graphicsData.length) - { - var shape, points, x, y, w, h; - - for (var i = 0; i < this.graphicsData.length; i++) - { - var data = this.graphicsData[i]; - var type = data.type; - var lineWidth = data.lineWidth; - shape = data.shape; - - if (type === PIXI.Graphics.RECT || type === PIXI.Graphics.RREC) - { - x = shape.x - lineWidth / 2; - y = shape.y - lineWidth / 2; - w = shape.width + lineWidth; - h = shape.height + lineWidth; - - minX = x < minX ? x : minX; - maxX = x + w > maxX ? x + w : maxX; - - minY = y < minY ? y : minY; - maxY = y + h > maxY ? y + h : maxY; - } - else if (type === PIXI.Graphics.CIRC) - { - x = shape.x; - y = shape.y; - w = shape.radius + lineWidth / 2; - h = shape.radius + lineWidth / 2; - - minX = x - w < minX ? x - w : minX; - maxX = x + w > maxX ? x + w : maxX; - - minY = y - h < minY ? y - h : minY; - maxY = y + h > maxY ? y + h : maxY; - } - else if (type === PIXI.Graphics.ELIP) - { - x = shape.x; - y = shape.y; - w = shape.width + lineWidth / 2; - h = shape.height + lineWidth / 2; - - minX = x - w < minX ? x - w : minX; - maxX = x + w > maxX ? x + w : maxX; - - minY = y - h < minY ? y - h : minY; - maxY = y + h > maxY ? y + h : maxY; - } - else - { - // POLY - assumes points are sequential, not Point objects - points = shape.points; - - for (var j = 0; j < points.length; j++) - { - if (points[j] instanceof Phaser.Point) - { - x = points[j].x; - y = points[j].y; - } - else - { - x = points[j]; - y = points[j + 1]; - - if (j < points.length - 1) - { - j++; - } - } - - minX = x - lineWidth < minX ? x - lineWidth : minX; - maxX = x + lineWidth > maxX ? x + lineWidth : maxX; - - minY = y - lineWidth < minY ? y - lineWidth : minY; - maxY = y + lineWidth > maxY ? y + lineWidth : maxY; - } - } - } - } - else - { - minX = 0; - maxX = 0; - minY = 0; - maxY = 0; - } - - var padding = this.boundsPadding; - - this._localBounds.x = minX - padding; - this._localBounds.width = (maxX - minX) + padding * 2; - - this._localBounds.y = minY - padding; - this._localBounds.height = (maxY - minY) + padding * 2; -}; - -/** - * Generates the cached sprite when the sprite has cacheAsBitmap = true - * - * @method _generateCachedSprite - * @private - */ -PIXI.Graphics.prototype._generateCachedSprite = function() -{ - var bounds = this.getLocalBounds(); - - if (!this._cachedSprite) - { - var canvasBuffer = new PIXI.CanvasBuffer(bounds.width, bounds.height); - var texture = PIXI.Texture.fromCanvas(canvasBuffer.canvas); - - this._cachedSprite = new PIXI.Sprite(texture); - this._cachedSprite.buffer = canvasBuffer; - - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.buffer.resize(bounds.width, bounds.height); - } - - // leverage the anchor to account for the offset of the element - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - // this._cachedSprite.buffer.context.save(); - this._cachedSprite.buffer.context.translate(-bounds.x, -bounds.y); - - // make sure we set the alpha of the graphics to 1 for the render.. - this.worldAlpha = 1; - - // now render the graphic.. - PIXI.CanvasGraphics.renderGraphics(this, this._cachedSprite.buffer.context); - this._cachedSprite.alpha = this.alpha; -}; - -/** - * Updates texture size based on canvas size - * - * @method updateCachedSpriteTexture - * @private - */ -PIXI.Graphics.prototype.updateCachedSpriteTexture = function() -{ - var cachedSprite = this._cachedSprite; - var texture = cachedSprite.texture; - var canvas = cachedSprite.buffer.canvas; - - texture.baseTexture.width = canvas.width; - texture.baseTexture.height = canvas.height; - texture.crop.width = texture.frame.width = canvas.width; - texture.crop.height = texture.frame.height = canvas.height; - - cachedSprite._width = canvas.width; - cachedSprite._height = canvas.height; - - // update the dirty base textures - texture.baseTexture.dirty(); -}; - -/** - * Destroys a previous cached sprite. - * - * @method destroyCachedSprite - */ -PIXI.Graphics.prototype.destroyCachedSprite = function() -{ - this._cachedSprite.texture.destroy(true); - this._cachedSprite = null; -}; - -/** - * Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon. - * - * @method drawShape - * @param {Circle|Rectangle|Ellipse|Line|Polygon} shape The Shape object to draw. - * @return {GraphicsData} The generated GraphicsData object. - */ -PIXI.Graphics.prototype.drawShape = function(shape) -{ - if (this.currentPath) - { - // check current path! - if (this.currentPath.shape.points.length <= 2) - { - this.graphicsData.pop(); - } - } - - this.currentPath = null; - - // Handle mixed-type polygons - if (shape instanceof Phaser.Polygon) - { - shape = shape.clone(); - shape.flatten(); - } - - var data = new PIXI.GraphicsData(this.lineWidth, this.lineColor, this.lineAlpha, this.fillColor, this.fillAlpha, this.filling, shape); - - this.graphicsData.push(data); - - if (data.type === PIXI.Graphics.POLY) - { - data.shape.closed = this.filling; - this.currentPath = data; - } - - this.dirty = true; - - this.updateLocalBounds(); - - return data; - -}; - -/** - * When cacheAsBitmap is set to true the graphics object will be rendered as if it was a sprite. - * This is useful if your graphics element does not change often, as it will speed up the rendering of the object in exchange for taking up texture memory. - * It is also useful if you need the graphics object to be anti-aliased, because it will be rendered using canvas. - * This is not recommended if you are constantly redrawing the graphics element. - * - * @property cacheAsBitmap - * @type Boolean - * @default false - * @private - */ -Object.defineProperty(PIXI.Graphics.prototype, "cacheAsBitmap", { - - get: function() { - return this._cacheAsBitmap; - }, - - set: function(value) { - - this._cacheAsBitmap = value; - - if (this._cacheAsBitmap) - { - this._generateCachedSprite(); - } - else - { - this.destroyCachedSprite(); - } - - this.dirty = true; - this.webGLDirty = true; - - } -}); - -/** - * A GraphicsData object. - * - * @class GraphicsData - * @constructor -PIXI.GraphicsData = function(lineWidth, lineColor, lineAlpha, fillColor, fillAlpha, fill, shape) -{ - this.lineWidth = lineWidth; - this.lineColor = lineColor; - this.lineAlpha = lineAlpha; - this._lineTint = lineColor; - - this.fillColor = fillColor; - this.fillAlpha = fillAlpha; - this._fillTint = fillColor; - this.fill = fill; - - this.shape = shape; - this.type = shape.type; -}; - */ - -/** - * A GraphicsData object. - * - * @class - * @memberof PIXI - * @param lineWidth {number} the width of the line to draw - * @param lineColor {number} the color of the line to draw - * @param lineAlpha {number} the alpha of the line to draw - * @param fillColor {number} the color of the fill - * @param fillAlpha {number} the alpha of the fill - * @param fill {boolean} whether or not the shape is filled with a colour - * @param shape {Circle|Rectangle|Ellipse|Line|Polygon} The shape object to draw. - */ - -PIXI.GraphicsData = function(lineWidth, lineColor, lineAlpha, fillColor, fillAlpha, fill, shape) { - - /* - * @member {number} the width of the line to draw - */ - this.lineWidth = lineWidth; - - /* - * @member {number} the color of the line to draw - */ - this.lineColor = lineColor; - - /* - * @member {number} the alpha of the line to draw - */ - this.lineAlpha = lineAlpha; - - /* - * @member {number} cached tint of the line to draw - */ - this._lineTint = lineColor; - - /* - * @member {number} the color of the fill - */ - this.fillColor = fillColor; - - /* - * @member {number} the alpha of the fill - */ - this.fillAlpha = fillAlpha; - - /* - * @member {number} cached tint of the fill - */ - this._fillTint = fillColor; - - /* - * @member {boolean} whether or not the shape is filled with a color - */ - this.fill = fill; - - /* - * @member {Circle|Rectangle|Ellipse|Line|Polygon} The shape object to draw. - */ - this.shape = shape; - - /* - * @member {number} The type of the shape, see the Const.Shapes file for all the existing types, - */ - this.type = shape.type; - -}; - -PIXI.GraphicsData.prototype.constructor = PIXI.GraphicsData; - -/** - * Creates a new GraphicsData object with the same values as this one. - * - * @return {GraphicsData} - */ -PIXI.GraphicsData.prototype.clone = function() { - - return new GraphicsData( - this.lineWidth, - this.lineColor, - this.lineAlpha, - this.fillColor, - this.fillAlpha, - this.fill, - this.shape - ); - -}; -/* - PolyK library - url: http://polyk.ivank.net - Released under MIT licence. - - Copyright (c) 2012 Ivan Kuckir - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - This is an amazing lib! - - Slightly modified by Mat Groves (matgroves.com); -*/ - -/** - * Based on the Polyk library http://polyk.ivank.net released under MIT licence. - * This is an amazing lib! - * Slightly modified by Mat Groves (matgroves.com); - * @class PolyK - */ -PIXI.PolyK = {}; - -/** - * Triangulates shapes for webGL graphic fills. - * - * @method Triangulate - */ -PIXI.PolyK.Triangulate = function(p) -{ - var sign = true; - - var n = p.length >> 1; - if(n < 3) return []; - - var tgs = []; - var avl = []; - for(var i = 0; i < n; i++) avl.push(i); - - i = 0; - var al = n; - while(al > 3) - { - var i0 = avl[(i+0)%al]; - var i1 = avl[(i+1)%al]; - var i2 = avl[(i+2)%al]; - - var ax = p[2*i0], ay = p[2*i0+1]; - var bx = p[2*i1], by = p[2*i1+1]; - var cx = p[2*i2], cy = p[2*i2+1]; - - var earFound = false; - if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) - { - earFound = true; - for(var j = 0; j < al; j++) - { - var vi = avl[j]; - if(vi === i0 || vi === i1 || vi === i2) continue; - - if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { - earFound = false; - break; - } - } - } - - if(earFound) - { - tgs.push(i0, i1, i2); - avl.splice((i+1)%al, 1); - al--; - i = 0; - } - else if(i++ > 3*al) - { - // need to flip flip reverse it! - // reset! - if(sign) - { - tgs = []; - avl = []; - for(i = 0; i < n; i++) avl.push(i); - - i = 0; - al = n; - - sign = false; - } - else - { - // window.console.log("PIXI Warning: shape too complex to fill"); - return null; - } - } - } - - tgs.push(avl[0], avl[1], avl[2]); - return tgs; -}; - -/** - * Checks whether a point is within a triangle - * - * @method _PointInTriangle - * @param px {Number} x coordinate of the point to test - * @param py {Number} y coordinate of the point to test - * @param ax {Number} x coordinate of the a point of the triangle - * @param ay {Number} y coordinate of the a point of the triangle - * @param bx {Number} x coordinate of the b point of the triangle - * @param by {Number} y coordinate of the b point of the triangle - * @param cx {Number} x coordinate of the c point of the triangle - * @param cy {Number} y coordinate of the c point of the triangle - * @private - * @return {Boolean} - */ -PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) -{ - var v0x = cx-ax; - var v0y = cy-ay; - var v1x = bx-ax; - var v1y = by-ay; - var v2x = px-ax; - var v2y = py-ay; - - var dot00 = v0x*v0x+v0y*v0y; - var dot01 = v0x*v1x+v0y*v1y; - var dot02 = v0x*v2x+v0y*v2y; - var dot11 = v1x*v1x+v1y*v1y; - var dot12 = v1x*v2x+v1y*v2y; - - var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); - var u = (dot11 * dot02 - dot01 * dot12) * invDenom; - var v = (dot00 * dot12 - dot01 * dot02) * invDenom; - - // Check if point is in triangle - return (u >= 0) && (v >= 0) && (u + v < 1); -}; - -/** - * Checks whether a shape is convex - * - * @method _convex - * @private - * @return {Boolean} - */ -PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) -{ - return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; -}; - -/* -Copyright (c) 2016, Mapbox - -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. -*/ - -/** -* @class EarCut -*/ -PIXI.EarCut = {}; - -PIXI.EarCut.Triangulate = function (data, holeIndices, dim) { - - dim = dim || 2; - - var hasHoles = holeIndices && holeIndices.length, - outerLen = hasHoles ? holeIndices[0] * dim : data.length, - outerNode = PIXI.EarCut.linkedList(data, 0, outerLen, dim, true), - triangles = []; - - if (!outerNode) return triangles; - - var minX, minY, maxX, maxY, x, y, size; - - if (hasHoles) outerNode = PIXI.EarCut.eliminateHoles(data, holeIndices, outerNode, dim); - - // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox - if (data.length > 80 * dim) { - minX = maxX = data[0]; - minY = maxY = data[1]; - - for (var i = dim; i < outerLen; i += dim) { - x = data[i]; - y = data[i + 1]; - if (x < minX) minX = x; - if (y < minY) minY = y; - if (x > maxX) maxX = x; - if (y > maxY) maxY = y; - } - - // minX, minY and size are later used to transform coords into integers for z-order calculation - size = Math.max(maxX - minX, maxY - minY); - } - - PIXI.EarCut.earcutLinked(outerNode, triangles, dim, minX, minY, size); - - return triangles; -} - -// create a circular doubly linked list from polygon points in the specified winding order - -PIXI.EarCut.linkedList = function (data, start, end, dim, clockwise) { - var sum = 0, - i, j, last; - - // calculate original winding order of a polygon ring - for (i = start, j = end - dim; i < end; i += dim) { - sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); - j = i; - } - - // link points into circular doubly-linked list in the specified winding order - if (clockwise === (sum > 0)) { - for (i = start; i < end; i += dim) last = PIXI.EarCut.insertNode(i, data[i], data[i + 1], last); - } else { - for (i = end - dim; i >= start; i -= dim) last = PIXI.EarCut.insertNode(i, data[i], data[i + 1], last); - } - - return last; -} - -// eliminate colinear or duplicate points - -PIXI.EarCut.filterPoints = function (start, end) { - if (!start) return start; - if (!end) end = start; - - var p = start, - again; - do { - again = false; - - if (!p.steiner && (PIXI.EarCut.equals(p, p.next) || PIXI.EarCut.area(p.prev, p, p.next) === 0)) { - PIXI.EarCut.removeNode(p); - p = end = p.prev; - if (p === p.next) return null; - again = true; - - } else { - p = p.next; - } - } while (again || p !== end); - - return end; -} - -// main ear slicing loop which triangulates a polygon (given as a linked list) - -PIXI.EarCut.earcutLinked = function (ear, triangles, dim, minX, minY, size, pass) { - if (!ear) return; - - // interlink polygon nodes in z-order - if (!pass && size) PIXI.EarCut.indexCurve(ear, minX, minY, size); - - var stop = ear, - prev, next; - - // iterate through ears, slicing them one by one - while (ear.prev !== ear.next) { - prev = ear.prev; - next = ear.next; - - if (size ? PIXI.EarCut.isEarHashed(ear, minX, minY, size) : PIXI.EarCut.isEar(ear)) { - // cut off the triangle - triangles.push(prev.i / dim); - triangles.push(ear.i / dim); - triangles.push(next.i / dim); - - PIXI.EarCut.removeNode(ear); - - // skipping the next vertice leads to less sliver triangles - ear = next.next; - stop = next.next; - - continue; - } - - ear = next; - - // if we looped through the whole remaining polygon and can't find any more ears - if (ear === stop) { - // try filtering points and slicing again - if (!pass) { - PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(ear), triangles, dim, minX, minY, size, 1); - - // if this didn't work, try curing all small self-intersections locally - } else if (pass === 1) { - ear = PIXI.EarCut.cureLocalIntersections(ear, triangles, dim); - PIXI.EarCut.earcutLinked(ear, triangles, dim, minX, minY, size, 2); - - // as a last resort, try splitting the remaining polygon into two - } else if (pass === 2) { - PIXI.EarCut.splitEarcut(ear, triangles, dim, minX, minY, size); - } - - break; - } - } -} - -// check whether a polygon node forms a valid ear with adjacent nodes - -PIXI.EarCut.isEar = function (ear) { - var a = ear.prev, - b = ear, - c = ear.next; - - if (PIXI.EarCut.area(a, b, c) >= 0) return false; // reflex, can't be an ear - - // now make sure we don't have other points inside the potential ear - var p = ear.next.next; - - while (p !== ear.prev) { - if (PIXI.EarCut.pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && - PIXI.EarCut.area(p.prev, p, p.next) >= 0) return false; - p = p.next; - } - - return true; -} - -PIXI.EarCut.isEarHashed = function (ear, minX, minY, size) { - var a = ear.prev, - b = ear, - c = ear.next; - - if (PIXI.EarCut.area(a, b, c) >= 0) return false; // reflex, can't be an ear - - // triangle bbox; min & max are calculated like this for speed - var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x), - minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y), - maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x), - maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y); - - // z-order range for the current triangle bbox; - var minZ = PIXI.EarCut.zOrder(minTX, minTY, minX, minY, size), - maxZ = PIXI.EarCut.zOrder(maxTX, maxTY, minX, minY, size); - - // first look for points inside the triangle in increasing z-order - var p = ear.nextZ; - - while (p && p.z <= maxZ) { - if (p !== ear.prev && p !== ear.next && - PIXI.EarCut.pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && - PIXI.EarCut.area(p.prev, p, p.next) >= 0) return false; - p = p.nextZ; - } - - // then look for points in decreasing z-order - p = ear.prevZ; - - while (p && p.z >= minZ) { - if (p !== ear.prev && p !== ear.next && - PIXI.EarCut.pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && - PIXI.EarCut.area(p.prev, p, p.next) >= 0) return false; - p = p.prevZ; - } - - return true; -} - -// go through all polygon nodes and cure small local self-intersections - -PIXI.EarCut.cureLocalIntersections = function (start, triangles, dim) { - var p = start; - do { - var a = p.prev, - b = p.next.next; - - // a self-intersection where edge (v[i-1],v[i]) intersects (v[i+1],v[i+2]) - if (PIXI.EarCut.intersects(a, p, p.next, b) && PIXI.EarCut.locallyInside(a, b) && PIXI.EarCut.locallyInside(b, a)) { - - triangles.push(a.i / dim); - triangles.push(p.i / dim); - triangles.push(b.i / dim); - - // remove two nodes involved - PIXI.EarCut.removeNode(p); - PIXI.EarCut.removeNode(p.next); - - p = start = b; - } - p = p.next; - } while (p !== start); - - return p; -} - -// try splitting polygon into two and triangulate them independently - -PIXI.EarCut.splitEarcut = function (start, triangles, dim, minX, minY, size) { - // look for a valid diagonal that divides the polygon into two - var a = start; - do { - var b = a.next.next; - while (b !== a.prev) { - if (a.i !== b.i && PIXI.EarCut.isValidDiagonal(a, b)) { - // split the polygon in two by the diagonal - var c = PIXI.EarCut.splitPolygon(a, b); - - // filter colinear points around the cuts - a = PIXI.EarCut.filterPoints(a, a.next); - c = PIXI.EarCut.filterPoints(c, c.next); - - // run earcut on each half - PIXI.EarCut.earcutLinked(a, triangles, dim, minX, minY, size); - PIXI.EarCut.earcutLinked(c, triangles, dim, minX, minY, size); - return; - } - b = b.next; - } - a = a.next; - } while (a !== start); -} - -// link every hole into the outer loop, producing a single-ring polygon without holes - -PIXI.EarCut.eliminateHoles = function (data, holeIndices, outerNode, dim) { - var queue = [], - i, len, start, end, list; - - for (i = 0, len = holeIndices.length; i < len; i++) { - start = holeIndices[i] * dim; - end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; - list = PIXI.EarCut.linkedList(data, start, end, dim, false); - if (list === list.next) list.steiner = true; - queue.push(PIXI.EarCut.getLeftmost(list)); - } - - queue.sort(compareX); - - // process holes from left to right - for (i = 0; i < queue.length; i++) { - PIXI.EarCut.eliminateHole(queue[i], outerNode); - outerNode = PIXI.EarCut.filterPoints(outerNode, outerNode.next); - } - - return outerNode; -} - -PIXI.EarCut.compareX = function (a, b) { - return a.x - b.x; -} - -// find a bridge between vertices that connects hole with an outer ring and and link it - -PIXI.EarCut.eliminateHole = function (hole, outerNode) { - outerNode = PIXI.EarCut.findHoleBridge(hole, outerNode); - if (outerNode) { - var b = PIXI.EarCut.splitPolygon(outerNode, hole); - PIXI.EarCut.filterPoints(b, b.next); - } -} - -// David Eberly's algorithm for finding a bridge between hole and outer polygon - -PIXI.EarCut.findHoleBridge = function (hole, outerNode) { - var p = outerNode, - hx = hole.x, - hy = hole.y, - qx = -Infinity, - m; - - // find a segment intersected by a ray from the hole's leftmost point to the left; - // segment's endpoint with lesser x will be potential connection point - do { - if (hy <= p.y && hy >= p.next.y) { - var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); - if (x <= hx && x > qx) { - qx = x; - m = p.x < p.next.x ? p : p.next; - } - } - p = p.next; - } while (p !== outerNode); - - if (!m) return null; - - if (hole.x === m.x) return m.prev; // hole touches outer segment; pick lower endpoint - - // look for points inside the triangle of hole point, segment intersection and endpoint; - // if there are no points found, we have a valid connection; - // otherwise choose the point of the minimum angle with the ray as connection point - - var stop = m, - tanMin = Infinity, - tan; - - p = m.next; - - while (p !== stop) { - if (hx >= p.x && p.x >= m.x && - PIXI.EarCut.pointInTriangle(hy < m.y ? hx : qx, hy, m.x, m.y, hy < m.y ? qx : hx, hy, p.x, p.y)) { - - tan = Math.abs(hy - p.y) / (hx - p.x); // tangential - - if ((tan < tanMin || (tan === tanMin && p.x > m.x)) && PIXI.EarCut.locallyInside(p, hole)) { - m = p; - tanMin = tan; - } - } - - p = p.next; - } - - return m; -} - -// interlink polygon nodes in z-order - -PIXI.EarCut.indexCurve = function (start, minX, minY, size) { - var p = start; - do { - if (p.z === null) p.z = PIXI.EarCut.zOrder(p.x, p.y, minX, minY, size); - p.prevZ = p.prev; - p.nextZ = p.next; - p = p.next; - } while (p !== start); - - p.prevZ.nextZ = null; - p.prevZ = null; - - PIXI.EarCut.sortLinked(p); -} - -// Simon Tatham's linked list merge sort algorithm -// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html - -PIXI.EarCut.sortLinked = function (list) { - var i, p, q, e, tail, numMerges, pSize, qSize, - inSize = 1; - - do { - p = list; - list = null; - tail = null; - numMerges = 0; - - while (p) { - numMerges++; - q = p; - pSize = 0; - for (i = 0; i < inSize; i++) { - pSize++; - q = q.nextZ; - if (!q) break; - } - - qSize = inSize; - - while (pSize > 0 || (qSize > 0 && q)) { - - if (pSize === 0) { - e = q; - q = q.nextZ; - qSize--; - } else if (qSize === 0 || !q) { - e = p; - p = p.nextZ; - pSize--; - } else if (p.z <= q.z) { - e = p; - p = p.nextZ; - pSize--; - } else { - e = q; - q = q.nextZ; - qSize--; - } - - if (tail) tail.nextZ = e; - else list = e; - - e.prevZ = tail; - tail = e; - } - - p = q; - } - - tail.nextZ = null; - inSize *= 2; - - } while (numMerges > 1); - - return list; -} - -// z-order of a point given coords and size of the data bounding box - -PIXI.EarCut.zOrder = function (x, y, minX, minY, size) { - // coords are transformed into non-negative 15-bit integer range - x = 32767 * (x - minX) / size; - y = 32767 * (y - minY) / size; - - x = (x | (x << 8)) & 0x00FF00FF; - x = (x | (x << 4)) & 0x0F0F0F0F; - x = (x | (x << 2)) & 0x33333333; - x = (x | (x << 1)) & 0x55555555; - - y = (y | (y << 8)) & 0x00FF00FF; - y = (y | (y << 4)) & 0x0F0F0F0F; - y = (y | (y << 2)) & 0x33333333; - y = (y | (y << 1)) & 0x55555555; - - return x | (y << 1); -} - -// find the leftmost node of a polygon ring - -PIXI.EarCut.getLeftmost = function (start) { - var p = start, - leftmost = start; - do { - if (p.x < leftmost.x) leftmost = p; - p = p.next; - } while (p !== start); - - return leftmost; -} - -// check if a point lies within a convex triangle - -PIXI.EarCut.pointInTriangle = function (ax, ay, bx, by, cx, cy, px, py) { - return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && - (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && - (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0; -} - -// check if a diagonal between two polygon nodes is valid (lies in polygon interior) - -PIXI.EarCut.isValidDiagonal = function (a, b) { - return PIXI.EarCut.equals(a, b) || a.next.i !== b.i && a.prev.i !== b.i && !PIXI.EarCut.intersectsPolygon(a, b) && - PIXI.EarCut.locallyInside(a, b) && PIXI.EarCut.locallyInside(b, a) && PIXI.EarCut.middleInside(a, b); -} - -// signed area of a triangle - -PIXI.EarCut.area = function (p, q, r) { - return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); -} - -// check if two points are equal - -PIXI.EarCut.equals = function (p1, p2) { - return p1.x === p2.x && p1.y === p2.y; -} - -// check if two segments intersect - -PIXI.EarCut.intersects = function (p1, q1, p2, q2) { - return PIXI.EarCut.area(p1, q1, p2) > 0 !== PIXI.EarCut.area(p1, q1, q2) > 0 && - PIXI.EarCut.area(p2, q2, p1) > 0 !== PIXI.EarCut.area(p2, q2, q1) > 0; -} - -// check if a polygon diagonal intersects any polygon segments - -PIXI.EarCut.intersectsPolygon = function (a, b) { - var p = a; - do { - if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && - PIXI.EarCut.intersects(p, p.next, a, b)) return true; - p = p.next; - } while (p !== a); - - return false; -} - -// check if a polygon diagonal is locally inside the polygon - -PIXI.EarCut.locallyInside = function (a, b) { - return PIXI.EarCut.area(a.prev, a, a.next) < 0 ? - PIXI.EarCut.area(a, b, a.next) >= 0 && PIXI.EarCut.area(a, a.prev, b) >= 0 : - PIXI.EarCut.area(a, b, a.prev) < 0 || PIXI.EarCut.area(a, a.next, b) < 0; -} - -// check if the middle point of a polygon diagonal is inside the polygon - -PIXI.EarCut.middleInside = function (a, b) { - var p = a, - inside = false, - px = (a.x + b.x) / 2, - py = (a.y + b.y) / 2; - do { - if (((p.y > py) !== (p.next.y > py)) && (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x)) - inside = !inside; - p = p.next; - } while (p !== a); - - return inside; -} - -// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; -// if one belongs to the outer ring and another to a hole, it merges it into a single ring - -PIXI.EarCut.splitPolygon = function (a, b) { - var a2 = new PIXI.EarCut.Node(a.i, a.x, a.y), - b2 = new PIXI.EarCut.Node(b.i, b.x, b.y), - an = a.next, - bp = b.prev; - - a.next = b; - b.prev = a; - - a2.next = an; - an.prev = a2; - - b2.next = a2; - a2.prev = b2; - - bp.next = b2; - b2.prev = bp; - - return b2; -} - -// create a node and optionally link it with previous one (in a circular doubly linked list) - -PIXI.EarCut.insertNode = function (i, x, y, last) { - var p = new PIXI.EarCut.Node(i, x, y); - - if (!last) { - p.prev = p; - p.next = p; - - } else { - p.next = last.next; - p.prev = last; - last.next.prev = p; - last.next = p; - } - return p; -} - -PIXI.EarCut.removeNode = function (p) { - p.next.prev = p.prev; - p.prev.next = p.next; - - if (p.prevZ) p.prevZ.nextZ = p.nextZ; - if (p.nextZ) p.nextZ.prevZ = p.prevZ; -} - -PIXI.EarCut.Node = function (i, x, y) { - // vertice index in coordinates array - this.i = i; - - // vertex coordinates - this.x = x; - this.y = y; - - // previous and next vertice nodes in a polygon ring - this.prev = null; - this.next = null; - - // z-order curve value - this.z = null; - - // previous and next nodes in z-order - this.prevZ = null; - this.nextZ = null; - - // indicates whether this is a steiner point - this.steiner = false; -} - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A set of functions used by the webGL renderer to draw the primitive graphics data - * - * @class WebGLGraphics - * @private - * @static - */ -PIXI.WebGLGraphics = function() -{ -}; - -/** - * The number of points beyond which Pixi swaps to using the Stencil Buffer to render the Graphics. - * - * @type {number} - */ -PIXI.WebGLGraphics.stencilBufferLimit = 6; - -/** - * Renders the graphics object - * - * @static - * @private - * @method renderGraphics - * @param graphics {Graphics} - * @param renderSession {Object} - */ -PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) -{ - var gl = renderSession.gl; - var projection = renderSession.projection, - offset = renderSession.offset, - shader = renderSession.shaderManager.primitiveShader, - webGLData; - - if(graphics.dirty) - { - PIXI.WebGLGraphics.updateGraphics(graphics, gl); - } - - var webGL = graphics._webGL[gl.id]; - - // This could be speeded up for sure! - - for (var i = 0; i < webGL.data.length; i++) - { - if(webGL.data[i].mode === 1) - { - webGLData = webGL.data[i]; - - renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); - - // render quad.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); - } - else - { - webGLData = webGL.data[i]; - - - renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); - shader = renderSession.shaderManager.primitiveShader; - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform1f(shader.flipY, 1); - - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - - gl.uniform1f(shader.alpha, graphics.worldAlpha); - - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); - - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - } - } -}; - -/** - * Updates the graphics object - * - * @static - * @private - * @method updateGraphics - * @param graphicsData {Graphics} The graphics object to update - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) -{ - // get the contexts graphics object - var webGL = graphics._webGL[gl.id]; - // if the graphics object does not exist in the webGL context time to create it! - if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; - - // flag the graphics as not dirty as we are about to update it... - graphics.dirty = false; - - var i; - - // if the user cleared the graphics object we will need to clear every object - if(graphics.clearDirty) - { - graphics.clearDirty = false; - - // lop through and return all the webGLDatas to the object pool so than can be reused later on - for (i = 0; i < webGL.data.length; i++) - { - var graphicsData = webGL.data[i]; - graphicsData.reset(); - PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); - } - - // clear the array and reset the index.. - webGL.data = []; - webGL.lastIndex = 0; - } - - var webGLData; - - // loop through the graphics datas and construct each one.. - // if the object is a complex fill then the new stencil buffer technique will be used - // other wise graphics objects will be pushed into a batch.. - for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - if(data.type === PIXI.Graphics.POLY) - { - // need to add the points the the graphics object.. - data.points = data.shape.points.slice(); - if(data.shape.closed) - { - // close the poly if the value is true! - if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) - { - data.points.push(data.points[0], data.points[1]); - } - } - - // MAKE SURE WE HAVE THE CORRECT TYPE.. - if(data.fill) - { - if(data.points.length >= PIXI.WebGLGraphics.stencilBufferLimit) - { - if(data.points.length < PIXI.WebGLGraphics.stencilBufferLimit * 2) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); - // console.log(canDrawUsingSimple); - - if(!canDrawUsingSimple) - { - // console.log("<>>>") - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - } - } - - if(data.lineWidth > 0) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - PIXI.WebGLGraphics.buildLine(data, webGLData); - - } - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - if(data.type === PIXI.Graphics.RECT) - { - PIXI.WebGLGraphics.buildRectangle(data, webGLData); - } - else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) - { - PIXI.WebGLGraphics.buildCircle(data, webGLData); - } - else if(data.type === PIXI.Graphics.RREC) - { - PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); - } - } - - webGL.lastIndex++; - } - - // upload all the dirty data... - for (i = 0; i < webGL.data.length; i++) - { - webGLData = webGL.data[i]; - if(webGLData.dirty)webGLData.upload(); - } -}; - -/** - * @static - * @private - * @method switchMode - * @param webGL {WebGLContext} - * @param type {Number} - */ -PIXI.WebGLGraphics.switchMode = function(webGL, type) -{ - var webGLData; - - if(!webGL.data.length) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - else - { - webGLData = webGL.data[webGL.data.length-1]; - - if(webGLData.mode !== type || type === 1) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - } - - webGLData.dirty = true; - - return webGLData; -}; - -/** - * Builds a rectangle to draw - * - * @static - * @private - * @method buildRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) -{ - // --- // - // need to convert points to a nice regular data - // - var rectData = graphicsData.shape; - var x = rectData.x; - var y = rectData.y; - var width = rectData.width; - var height = rectData.height; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vertPos = verts.length / 6; - - // start - verts.push(x, y); - verts.push(r, g, b, alpha); - - verts.push(x + width, y); - verts.push(r, g, b, alpha); - - verts.push(x , y + height); - verts.push(r, g, b, alpha); - - verts.push(x + width, y + height); - verts.push(r, g, b, alpha); - - // insert 2 dead triangles.. - indices.push(vertPos, vertPos, vertPos + 1, vertPos + 2, vertPos + 3, vertPos + 3); - } - - if (graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = [x, y, - x + width, y, - x + width, y + height, - x, y + height, - x, y]; - - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a rounded rectangle to draw - * - * @static - * @private - * @method buildRoundedRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) -{ - var rrectData = graphicsData.shape; - var x = rrectData.x; - var y = rrectData.y; - var width = rrectData.width; - var height = rrectData.height; - - var radius = rrectData.radius; - - var recPoints = []; - recPoints.push(x, y + radius); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); - - if (graphicsData.fill) { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length / 6; - - var triangles = PIXI.EarCut.Triangulate(recPoints, null, 2); - - var i = 0; - - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vecPos); - indices.push(triangles[i] + vecPos); - indices.push(triangles[i+1] + vecPos); - indices.push(triangles[i+2] + vecPos); - indices.push(triangles[i+2] + vecPos); - } - - - for (i = 0; i < recPoints.length; i++) - { - verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); - } - } - - if (graphicsData.lineWidth) { - var tempPoints = graphicsData.points; - - graphicsData.points = recPoints; - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Calculate the points for a quadratic bezier curve. (helper function..) - * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c - * - * @static - * @private - * @method quadraticBezierCurve - * @param fromX {Number} Origin point x - * @param fromY {Number} Origin point x - * @param cpX {Number} Control point x - * @param cpY {Number} Control point y - * @param toX {Number} Destination point x - * @param toY {Number} Destination point y - * @return {Array(Number)} - */ -PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { - - var xa, - ya, - xb, - yb, - x, - y, - n = 20, - points = []; - - function getPt(n1 , n2, perc) { - var diff = n2 - n1; - - return n1 + ( diff * perc ); - } - - var j = 0; - for (var i = 0; i <= n; i++ ) - { - j = i / n; - - // The Green Line - xa = getPt( fromX , cpX , j ); - ya = getPt( fromY , cpY , j ); - xb = getPt( cpX , toX , j ); - yb = getPt( cpY , toY , j ); - - // The Black Dot - x = getPt( xa , xb , j ); - y = getPt( ya , yb , j ); - - points.push(x, y); - } - return points; -}; - -/** - * Builds a circle to draw - * - * @static - * @private - * @method buildCircle - * @param graphicsData {Graphics} The graphics object to draw - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) -{ - // need to convert points to a nice regular data - var circleData = graphicsData.shape; - var x = circleData.x; - var y = circleData.y; - var width; - var height; - - // TODO - bit hacky?? - if(graphicsData.type === PIXI.Graphics.CIRC) - { - width = circleData.radius; - height = circleData.radius; - } - else - { - width = circleData.width; - height = circleData.height; - } - - var totalSegs = 40; - var seg = (Math.PI * 2) / totalSegs ; - - var i = 0; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length / 6; - - indices.push(vecPos); - - for (i = 0; i < totalSegs + 1 ; i++) - { - verts.push(x,y, r, g, b, alpha); - - verts.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height, - r, g, b, alpha); - - indices.push(vecPos++, vecPos++); - } - - indices.push(vecPos-1); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = []; - - for (i = 0; i < totalSegs + 1; i++) - { - graphicsData.points.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height); - } - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a line to draw - * - * @static - * @private - * @method buildLine - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) -{ - // TODO OPTIMISE! - var i = 0; - var points = graphicsData.points; - if(points.length === 0)return; - - // if the line width is an odd number add 0.5 to align to a whole pixel - if(graphicsData.lineWidth%2) - { - for (i = 0; i < points.length; i++) { - points[i] += 0.5; - } - } - - // get first and last point.. figure out the middle! - var firstPoint = new PIXI.Point( points[0], points[1] ); - var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - // if the first point is the last point - gonna have issues :) - if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) - { - // need to clone as we are going to slightly modify the shape.. - points = points.slice(); - - points.pop(); - points.pop(); - - lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; - var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; - - points.unshift(midPointX, midPointY); - points.push(midPointX, midPointY); - } - - var verts = webGLData.points; - var indices = webGLData.indices; - var length = points.length / 2; - var indexCount = points.length; - var indexStart = verts.length/6; - - // DRAW the Line - var width = graphicsData.lineWidth / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.lineColor); - var alpha = graphicsData.lineAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var px, py, p1x, p1y, p2x, p2y, p3x, p3y; - var perpx, perpy, perp2x, perp2y, perp3x, perp3y; - var a1, b1, c1, a2, b2, c2; - var denom, pdist, dist; - - p1x = points[0]; - p1y = points[1]; - - p2x = points[2]; - p2y = points[3]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - // start - verts.push(p1x - perpx , p1y - perpy, - r, g, b, alpha); - - verts.push(p1x + perpx , p1y + perpy, - r, g, b, alpha); - - for (i = 1; i < length-1; i++) - { - p1x = points[(i-1)*2]; - p1y = points[(i-1)*2 + 1]; - - p2x = points[(i)*2]; - p2y = points[(i)*2 + 1]; - - p3x = points[(i+1)*2]; - p3y = points[(i+1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - perp2x = -(p2y - p3y); - perp2y = p2x - p3x; - - dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); - perp2x /= dist; - perp2y /= dist; - perp2x *= width; - perp2y *= width; - - a1 = (-perpy + p1y) - (-perpy + p2y); - b1 = (-perpx + p2x) - (-perpx + p1x); - c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); - a2 = (-perp2y + p3y) - (-perp2y + p2y); - b2 = (-perp2x + p2x) - (-perp2x + p3x); - c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); - - denom = a1*b2 - a2*b1; - - if(Math.abs(denom) < 0.1 ) - { - - denom+=10.1; - verts.push(p2x - perpx , p2y - perpy, - r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy, - r, g, b, alpha); - - continue; - } - - px = (b1*c2 - b2*c1)/denom; - py = (a2*c1 - a1*c2)/denom; - - - pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); - - - if(pdist > 140 * 140) - { - perp3x = perpx - perp2x; - perp3y = perpy - perp2y; - - dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); - perp3x /= dist; - perp3y /= dist; - perp3x *= width; - perp3y *= width; - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x + perp3x, p2y +perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - indexCount++; - } - else - { - - verts.push(px , py); - verts.push(r, g, b, alpha); - - verts.push(p2x - (px-p2x), p2y - (py - p2y)); - verts.push(r, g, b, alpha); - } - } - - p1x = points[(length-2)*2]; - p1y = points[(length-2)*2 + 1]; - - p2x = points[(length-1)*2]; - p2y = points[(length-1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - verts.push(p2x - perpx , p2y - perpy); - verts.push(r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy); - verts.push(r, g, b, alpha); - - indices.push(indexStart); - - for (i = 0; i < indexCount; i++) - { - indices.push(indexStart++); - } - - indices.push(indexStart-1); -}; - -/** - * Builds a complex polygon to draw - * - * @static - * @private - * @method buildComplexPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) -{ - //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. - var points = graphicsData.points.slice(); - if(points.length < 6)return; - - // get first and last point.. figure out the middle! - var indices = webGLData.indices; - webGLData.points = points; - webGLData.alpha = graphicsData.fillAlpha; - webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); - - /* - calclate the bounds.. - */ - var minX = Infinity; - var maxX = -Infinity; - - var minY = Infinity; - var maxY = -Infinity; - - var x,y; - - // get size.. - for (var i = 0; i < points.length; i+=2) - { - x = points[i]; - y = points[i+1]; - - minX = x < minX ? x : minX; - maxX = x > maxX ? x : maxX; - - minY = y < minY ? y : minY; - maxY = y > maxY ? y : maxY; - } - - // add a quad to the end cos there is no point making another buffer! - points.push(minX, minY, - maxX, minY, - maxX, maxY, - minX, maxY); - - // push a quad onto the end.. - - //TODO - this aint needed! - var length = points.length / 2; - for (i = 0; i < length; i++) - { - indices.push( i ); - } - -}; - -/** - * Builds a polygon to draw - * - * @static - * @private - * @method buildPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) -{ - var points = graphicsData.points; - - if(points.length < 6)return; - // get first and last point.. figure out the middle! - var verts = webGLData.points; - var indices = webGLData.indices; - - var length = points.length / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var triangles = PIXI.EarCut.Triangulate(points, null, 2); - - if(!triangles)return false; - - var vertPos = verts.length / 6; - - var i = 0; - - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vertPos); - indices.push(triangles[i] + vertPos); - indices.push(triangles[i+1] + vertPos); - indices.push(triangles[i+2] +vertPos); - indices.push(triangles[i+2] + vertPos); - } - - for (i = 0; i < length; i++) - { - verts.push(points[i * 2], points[i * 2 + 1], - r, g, b, alpha); - } - - return true; -}; - -PIXI.WebGLGraphics.graphicsDataPool = []; - -/** - * @class WebGLGraphicsData - * @private - * @static - */ -PIXI.WebGLGraphicsData = function(gl) -{ - this.gl = gl; - - //TODO does this need to be split before uploding?? - this.color = [0,0,0]; // color split! - this.points = []; - this.indices = []; - this.buffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - this.mode = 1; - this.alpha = 1; - this.dirty = true; -}; - -/** - * @method reset - */ -PIXI.WebGLGraphicsData.prototype.reset = function() -{ - this.points = []; - this.indices = []; -}; - -/** - * @method upload - */ -PIXI.WebGLGraphicsData.prototype.upload = function() -{ - var gl = this.gl; - -// this.lastIndex = graphics.graphicsData.length; - this.glPoints = new PIXI.Float32Array(this.points); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); - - this.glIndicies = new PIXI.Uint16Array(this.indices); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); - - this.dirty = false; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - - -/** - * A set of functions used by the canvas renderer to draw the primitive graphics data. - * - * @class CanvasGraphics - * @static - */ -PIXI.CanvasGraphics = function() -{ -}; - -/* - * Renders a PIXI.Graphics object to a canvas. - * - * @method renderGraphics - * @static - * @param graphics {Graphics} the actual graphics object to render - * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas - */ -PIXI.CanvasGraphics.renderGraphics = function(graphics, context) -{ - var worldAlpha = graphics.worldAlpha; - - if (graphics.dirty) - { - this.updateGraphicsTint(graphics); - graphics.dirty = false; - } - - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - var fillColor = data._fillTint; - var lineColor = data._lineTint; - - context.lineWidth = data.lineWidth; - - if (data.type === PIXI.Graphics.POLY) - { - context.beginPath(); - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - if (shape.closed) - { - context.lineTo(points[0], points[1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RECT) - { - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fillRect(shape.x, shape.y, shape.width, shape.height); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.strokeRect(shape.x, shape.y, shape.width, shape.height); - } - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.beginPath(); - context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.ELIP) - { - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - context.beginPath(); - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RREC) - { - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.beginPath(); - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - } - -}; - -/* - * Renders a graphics mask - * - * @static - * @private - * @method renderGraphicsMask - * @param graphics {Graphics} the graphics which will be used as a mask - * @param context {CanvasRenderingContext2D} the context 2d method of the canvas - */ -PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) -{ - var len = graphics.graphicsData.length; - - if (len === 0) - { - return; - } - - context.beginPath(); - - for (var i = 0; i < len; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - if (data.type === PIXI.Graphics.POLY) - { - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - } - else if (data.type === PIXI.Graphics.RECT) - { - context.rect(shape.x, shape.y, shape.width, shape.height); - context.closePath(); - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); - context.closePath(); - } - else if (data.type === PIXI.Graphics.ELIP) - { - - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - context.closePath(); - } - else if (data.type === PIXI.Graphics.RREC) - { - - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - } - } -}; - -PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) -{ - if (graphics.tint === 0xFFFFFF) - { - return; - } - - var tintR = (graphics.tint >> 16 & 0xFF) / 255; - var tintG = (graphics.tint >> 8 & 0xFF) / 255; - var tintB = (graphics.tint & 0xFF)/ 255; - - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - var fillColor = data.fillColor | 0; - var lineColor = data.lineColor | 0; - - data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); - data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, -* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will -* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: -* -* ``` -* graphics.beginFill(0xff0000); -* graphics.drawCircle(50, 50, 100); -* graphics.endFill(); -* ``` -* -* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. -* -* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or -* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the -* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. -* -* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help -* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. -* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then -* you should avoid doing this, as it will constantly generate new textures, which will consume memory. -* -* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful -* in their complexity and quantity of them in your game. -* -* @class Phaser.Graphics -* @constructor -* @extends PIXI.Graphics -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @param {Phaser.Game} game - Current game instance. -* @param {number} [x=0] - X position of the new graphics object. -* @param {number} [y=0] - Y position of the new graphics object. -*/ -Phaser.Graphics = function (game, x, y) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - - /** - * @property {number} type - The const type of this object. - * @default - */ - this.type = Phaser.GRAPHICS; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * @property {Phaser.Point} anchor - Required for a Graphics shape to work as a Physics body, do not modify this value. - * @private - */ - this.anchor = new Phaser.Point(); - - PIXI.Graphics.call(this); - - Phaser.Component.Core.init.call(this, game, x, y, '', null); - -}; - -Phaser.Graphics.prototype = Object.create(PIXI.Graphics.prototype); -Phaser.Graphics.prototype.constructor = Phaser.Graphics; - -Phaser.Component.Core.install.call(Phaser.Graphics.prototype, [ - 'Angle', - 'AutoCull', - 'Bounds', - 'Destroy', - 'FixedToCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'PhysicsBody', - 'Reset' -]); - -Phaser.Graphics.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.Graphics.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.Graphics.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Graphics.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method -* @memberof Phaser.Graphics -*/ -Phaser.Graphics.prototype.preUpdate = function () { - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Destroy this Graphics instance. -* -* @method Phaser.Graphics.prototype.destroy -* @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called? -*/ -Phaser.Graphics.prototype.destroy = function(destroyChildren) { - - this.clear(); - - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); - -}; - -/* -* Draws a single {Phaser.Polygon} triangle from a {Phaser.Point} array -* -* @method Phaser.Graphics.prototype.drawTriangle -* @param {Array} points - An array of Phaser.Points that make up the three vertices of this triangle -* @param {boolean} [cull=false] - Should we check if the triangle is back-facing -*/ -Phaser.Graphics.prototype.drawTriangle = function(points, cull) { - - if (cull === undefined) { cull = false; } - - var triangle = new Phaser.Polygon(points); - - if (cull) - { - var cameraToFace = new Phaser.Point(this.game.camera.x - points[0].x, this.game.camera.y - points[0].y); - var ab = new Phaser.Point(points[1].x - points[0].x, points[1].y - points[0].y); - var cb = new Phaser.Point(points[1].x - points[2].x, points[1].y - points[2].y); - var faceNormal = cb.cross(ab); - - if (cameraToFace.dot(faceNormal) > 0) - { - this.drawPolygon(triangle); - } - } - else - { - this.drawPolygon(triangle); - } - -}; - -/* -* Draws {Phaser.Polygon} triangles -* -* @method Phaser.Graphics.prototype.drawTriangles -* @param {Array|Array} vertices - An array of Phaser.Points or numbers that make up the vertices of the triangles -* @param {Array} {indices=null} - An array of numbers that describe what order to draw the vertices in -* @param {boolean} [cull=false] - Should we check if the triangle is back-facing -*/ -Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) { - - if (cull === undefined) { cull = false; } - - var point1 = new Phaser.Point(); - var point2 = new Phaser.Point(); - var point3 = new Phaser.Point(); - var points = []; - var i; - - if (!indices) - { - if (vertices[0] instanceof Phaser.Point) - { - for (i = 0; i < vertices.length / 3; i++) - { - this.drawTriangle([vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2]], cull); - } - } - else - { - for (i = 0; i < vertices.length / 6; i++) - { - point1.x = vertices[i * 6 + 0]; - point1.y = vertices[i * 6 + 1]; - point2.x = vertices[i * 6 + 2]; - point2.y = vertices[i * 6 + 3]; - point3.x = vertices[i * 6 + 4]; - point3.y = vertices[i * 6 + 5]; - this.drawTriangle([point1, point2, point3], cull); - } - } - } - else - { - if (vertices[0] instanceof Phaser.Point) - { - for (i = 0; i < indices.length /3; i++) - { - points.push(vertices[indices[i * 3 ]]); - points.push(vertices[indices[i * 3 + 1]]); - points.push(vertices[indices[i * 3 + 2]]); - - if (points.length === 3) - { - this.drawTriangle(points, cull); - points = []; - } - } - } - else - { - for (i = 0; i < indices.length; i++) - { - point1.x = vertices[indices[i] * 2]; - point1.y = vertices[indices[i] * 2 + 1]; - points.push(point1.copyTo({})); - - if (points.length === 3) - { - this.drawTriangle(points, cull); - points = []; - } - } - } - } -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A RenderTexture is a special texture that allows any displayObject to be rendered to it. It allows you to take many complex objects and -* render them down into a single quad (on WebGL) which can then be used to texture other display objects with. A way of generating textures at run-time. -* -* @class Phaser.RenderTexture -* @constructor -* @extends PIXI.RenderTexture -* @param {Phaser.Game} game - Current game instance. -* @param {string} key - Internal Phaser reference key for the render texture. -* @param {number} [width=100] - The width of the render texture. -* @param {number} [height=100] - The height of the render texture. -* @param {string} [key=''] - The key of the RenderTexture in the Cache, if stored there. -* @param {number} [scaleMode=Phaser.scaleModes.DEFAULT] - One of the Phaser.scaleModes consts. -* @param {number} [resolution=1] - The resolution of the texture being generated. -*/ -Phaser.RenderTexture = function (game, width, height, key, scaleMode, resolution) { - - if (key === undefined) { key = ''; } - if (scaleMode === undefined) { scaleMode = Phaser.scaleModes.DEFAULT; } - if (resolution === undefined) { resolution = 1; } - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {string} key - The key of the RenderTexture in the Cache, if stored there. - */ - this.key = key; - - /** - * @property {number} type - Base Phaser object type. - */ - this.type = Phaser.RENDERTEXTURE; - - /** - * @property {PIXI.Matrix} _tempMatrix - The matrix that is applied when display objects are rendered to this RenderTexture. - * @private - */ - this._tempMatrix = new PIXI.Matrix(); - - PIXI.RenderTexture.call(this, width, height, this.game.renderer, scaleMode, resolution); - - this.render = Phaser.RenderTexture.prototype.render; - -}; - -Phaser.RenderTexture.prototype = Object.create(PIXI.RenderTexture.prototype); -Phaser.RenderTexture.prototype.constructor = Phaser.RenderTexture; - -/** -* This function will draw the display object to the RenderTexture at the given coordinates. -* -* When the display object is drawn it takes into account scale and rotation. -* -* If you don't want those then use RenderTexture.renderRawXY instead. -* -* @method Phaser.RenderTexture.prototype.renderXY -* @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Group} displayObject - The display object to render to this texture. -* @param {number} x - The x position to render the object at. -* @param {number} y - The y position to render the object at. -* @param {boolean} [clear=false] - If true the texture will be cleared before the display object is drawn. -*/ -Phaser.RenderTexture.prototype.renderXY = function (displayObject, x, y, clear) { - - displayObject.updateTransform(); - - this._tempMatrix.copyFrom(displayObject.worldTransform); - this._tempMatrix.tx = x; - this._tempMatrix.ty = y; - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - this.renderWebGL(displayObject, this._tempMatrix, clear); - } - else - { - this.renderCanvas(displayObject, this._tempMatrix, clear); - } - -}; - -/** -* This function will draw the display object to the RenderTexture at the given coordinates. -* -* When the display object is drawn it doesn't take into account scale, rotation or translation. -* -* If you need those then use RenderTexture.renderXY instead. -* -* @method Phaser.RenderTexture.prototype.renderRawXY -* @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Group} displayObject - The display object to render to this texture. -* @param {number} x - The x position to render the object at. -* @param {number} y - The y position to render the object at. -* @param {boolean} [clear=false] - If true the texture will be cleared before the display object is drawn. -*/ -Phaser.RenderTexture.prototype.renderRawXY = function (displayObject, x, y, clear) { - - this._tempMatrix.identity().translate(x, y); - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - this.renderWebGL(displayObject, this._tempMatrix, clear); - } - else - { - this.renderCanvas(displayObject, this._tempMatrix, clear); - } - -}; - -/** -* This function will draw the display object to the RenderTexture. -* -* In versions of Phaser prior to 2.4.0 the second parameter was a Phaser.Point object. -* This is now a Matrix allowing you much more control over how the Display Object is rendered. -* If you need to replicate the earlier behavior please use Phaser.RenderTexture.renderXY instead. -* -* If you wish for the displayObject to be rendered taking its current scale, rotation and translation into account then either -* pass `null`, leave it undefined or pass `displayObject.worldTransform` as the matrix value. -* -* @method Phaser.RenderTexture.prototype.render -* @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Group} displayObject - The display object to render to this texture. -* @param {Phaser.Matrix} [matrix] - Optional matrix to apply to the display object before rendering. If null or undefined it will use the worldTransform matrix of the given display object. -* @param {boolean} [clear=false] - If true the texture will be cleared before the display object is drawn. -*/ -Phaser.RenderTexture.prototype.render = function (displayObject, matrix, clear) { - - if (matrix === undefined || matrix === null) - { - this._tempMatrix.copyFrom(displayObject.worldTransform); - } - else - { - this._tempMatrix.copyFrom(matrix); - } - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - this.renderWebGL(displayObject, this._tempMatrix, clear); - } - else - { - this.renderCanvas(displayObject, this._tempMatrix, clear); - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Create a new game object for displaying Text. -* -* This uses a local hidden Canvas object and renders the type into it. It then makes a texture from this for rendering to the view. -* Because of this you can only display fonts that are currently loaded and available to the browser: fonts must be pre-loaded. -* -* See {@link http://www.jordanm.co.uk/tinytype this compatibility table} for the available default fonts across mobile browsers. -* -* @class Phaser.Text -* @extends Phaser.Sprite -* @constructor -* @param {Phaser.Game} game - Current game instance. -* @param {number} x - X position of the new text object. -* @param {number} y - Y position of the new text object. -* @param {string} text - The actual text that will be written. -* @param {object} [style] - The style properties to be set on the Text. -* @param {string} [style.font='bold 20pt Arial'] - The style and size of the font. -* @param {string} [style.fontStyle=(from font)] - The style of the font (eg. 'italic'): overrides the value in `style.font`. -* @param {string} [style.fontVariant=(from font)] - The variant of the font (eg. 'small-caps'): overrides the value in `style.font`. -* @param {string} [style.fontWeight=(from font)] - The weight of the font (eg. 'bold'): overrides the value in `style.font`. -* @param {string|number} [style.fontSize=(from font)] - The size of the font (eg. 32 or '32px'): overrides the value in `style.font`. -* @param {string} [style.backgroundColor=null] - A canvas fillstyle that will be used as the background for the whole Text object. Set to `null` to disable. -* @param {string} [style.fill='black'] - A canvas fillstyle that will be used on the text eg 'red', '#00FF00'. -* @param {string} [style.align='left'] - Horizontal alignment of each line in multiline text. Can be: 'left', 'center' or 'right'. Does not affect single lines of text (see `textBounds` and `boundsAlignH` for that). -* @param {string} [style.boundsAlignH='left'] - Horizontal alignment of the text within the `textBounds`. Can be: 'left', 'center' or 'right'. -* @param {string} [style.boundsAlignV='top'] - Vertical alignment of the text within the `textBounds`. Can be: 'top', 'middle' or 'bottom'. -* @param {string} [style.stroke='black'] - A canvas stroke style that will be used on the text stroke eg 'blue', '#FCFF00'. -* @param {number} [style.strokeThickness=0] - A number that represents the thickness of the stroke. Default is 0 (no stroke). -* @param {boolean} [style.wordWrap=false] - Indicates if word wrap should be used. -* @param {number} [style.wordWrapWidth=100] - The width in pixels at which text will wrap. -* @param {number} [style.maxLines=0] - The maximum number of lines to be shown for wrapped text. -* @param {number} [style.tabs=0] - The size (in pixels) of the tabs, for when text includes tab characters. 0 disables. Can be an array of varying tab sizes, one per tab stop. -*/ -Phaser.Text = function (game, x, y, text, style) { - - x = x || 0; - y = y || 0; - - if (text === undefined || text === null) - { - text = ''; - } - else - { - text = text.toString(); - } - - style = Phaser.Utils.extend({}, style); - - /** - * @property {number} type - The const type of this object. - * @default - */ - this.type = Phaser.TEXT; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * Specify a padding value which is added to the line width and height when calculating the Text size. - * ALlows you to add extra spacing if Phaser is unable to accurately determine the true font dimensions. - * @property {Phaser.Point} padding - */ - this.padding = new Phaser.Point(); - - /** - * The textBounds property allows you to specify a rectangular region upon which text alignment is based. - * See `Text.setTextBounds` for more details. - * @property {Phaser.Rectangle} textBounds - * @readOnly - */ - this.textBounds = null; - - /** - * @property {HTMLCanvasElement} canvas - The canvas element that the text is rendered. - */ - this.canvas = PIXI.CanvasPool.create(this); - - /** - * @property {HTMLCanvasElement} context - The context of the canvas element that the text is rendered to. - */ - this.context = this.canvas.getContext('2d'); - - /** - * @property {array} colors - An array of the color values as specified by {@link Phaser.Text#addColor addColor}. - */ - this.colors = []; - - /** - * @property {array} strokeColors - An array of the stroke color values as specified by {@link Phaser.Text#addStrokeColor addStrokeColor}. - */ - this.strokeColors = []; - - /** - * @property {array} fontStyles - An array of the font styles values as specified by {@link Phaser.Text#addFontStyle addFontStyle}. - */ - this.fontStyles = []; - - /** - * @property {array} fontWeights - An array of the font weights values as specified by {@link Phaser.Text#addFontWeight addFontWeight}. - */ - this.fontWeights = []; - - /** - * Should the linePositionX and Y values be automatically rounded before rendering the Text? - * You may wish to enable this if you want to remove the effect of sub-pixel aliasing from text. - * @property {boolean} autoRound - * @default - */ - this.autoRound = false; - - /** - * Will this Text object use Basic or Advanced Word Wrapping? - * - * Advanced wrapping breaks long words if they are the first of a line, and repeats the process as necessary. - * White space is condensed (e.g., consecutive spaces are replaced with one). - * Lines are trimmed of white space before processing. - * - * It throws an error if wordWrapWidth is less than a single character. - * @property {boolean} useAdvancedWrap - * @default - */ - this.useAdvancedWrap = false; - - /** - * @property {number} _res - Internal canvas resolution var. - * @private - */ - this._res = game.renderer.resolution; - - /** - * @property {string} _text - Internal cache var. - * @private - */ - this._text = text; - - /** - * @property {object} _fontComponents - The font, broken down into components, set in `setStyle`. - * @private - */ - this._fontComponents = null; - - /** - * @property {number} lineSpacing - Additional spacing (in pixels) between each line of text if multi-line. - * @private - */ - this._lineSpacing = 0; - - /** - * @property {number} _charCount - Internal character counter used by the text coloring. - * @private - */ - this._charCount = 0; - - /** - * @property {number} _width - Internal width var. - * @private - */ - this._width = 0; - - /** - * @property {number} _height - Internal height var. - * @private - */ - this._height = 0; - - Phaser.Sprite.call(this, game, x, y, PIXI.Texture.fromCanvas(this.canvas)); - - this.setStyle(style); - - if (text !== '') - { - this.updateText(); - } - -}; - -Phaser.Text.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.Text.prototype.constructor = Phaser.Text; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Text#preUpdate -* @protected -*/ -Phaser.Text.prototype.preUpdate = function () { - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Override this function to handle any special update requirements. -* -* @method Phaser.Text#update -* @protected -*/ -Phaser.Text.prototype.update = function() { - -}; - -/** -* Destroy this Text object, removing it from the group it belongs to. -* -* @method Phaser.Text#destroy -* @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called? -*/ -Phaser.Text.prototype.destroy = function (destroyChildren) { - - this.texture.destroy(true); - - PIXI.CanvasPool.remove(this); - - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); - -}; - -/** -* Sets a drop shadow effect on the Text. You can specify the horizontal and vertical distance of the drop shadow with the `x` and `y` parameters. -* The color controls the shade of the shadow (default is black) and can be either an `rgba` or `hex` value. -* The blur is the strength of the shadow. A value of zero means a hard shadow, a value of 10 means a very soft shadow. -* To remove a shadow already in place you can call this method with no parameters set. -* -* @method Phaser.Text#setShadow -* @param {number} [x=0] - The shadowOffsetX value in pixels. This is how far offset horizontally the shadow effect will be. -* @param {number} [y=0] - The shadowOffsetY value in pixels. This is how far offset vertically the shadow effect will be. -* @param {string} [color='rgba(0,0,0,1)'] - The color of the shadow, as given in CSS rgba or hex format. Set the alpha component to 0 to disable the shadow. -* @param {number} [blur=0] - The shadowBlur value. Make the shadow softer by applying a Gaussian blur to it. A number from 0 (no blur) up to approx. 10 (depending on scene). -* @param {boolean} [shadowStroke=true] - Apply the drop shadow to the Text stroke (if set). -* @param {boolean} [shadowFill=true] - Apply the drop shadow to the Text fill (if set). -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.setShadow = function (x, y, color, blur, shadowStroke, shadowFill) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (color === undefined) { color = 'rgba(0, 0, 0, 1)'; } - if (blur === undefined) { blur = 0; } - if (shadowStroke === undefined) { shadowStroke = true; } - if (shadowFill === undefined) { shadowFill = true; } - - this.style.shadowOffsetX = x; - this.style.shadowOffsetY = y; - this.style.shadowColor = color; - this.style.shadowBlur = blur; - this.style.shadowStroke = shadowStroke; - this.style.shadowFill = shadowFill; - this.dirty = true; - - return this; - -}; - -/** -* Set the style of the text by passing a single style object to it. -* -* @method Phaser.Text#setStyle -* @param {object} [style] - The style properties to be set on the Text. -* @param {string} [style.font='bold 20pt Arial'] - The style and size of the font. -* @param {string} [style.fontStyle=(from font)] - The style of the font (eg. 'italic'): overrides the value in `style.font`. -* @param {string} [style.fontVariant=(from font)] - The variant of the font (eg. 'small-caps'): overrides the value in `style.font`. -* @param {string} [style.fontWeight=(from font)] - The weight of the font (eg. 'bold'): overrides the value in `style.font`. -* @param {string|number} [style.fontSize=(from font)] - The size of the font (eg. 32 or '32px'): overrides the value in `style.font`. -* @param {string} [style.backgroundColor=null] - A canvas fillstyle that will be used as the background for the whole Text object. Set to `null` to disable. -* @param {string} [style.fill='black'] - A canvas fillstyle that will be used on the text eg 'red', '#00FF00'. -* @param {string} [style.align='left'] - Horizontal alignment of each line in multiline text. Can be: 'left', 'center' or 'right'. Does not affect single lines of text (see `textBounds` and `boundsAlignH` for that). -* @param {string} [style.boundsAlignH='left'] - Horizontal alignment of the text within the `textBounds`. Can be: 'left', 'center' or 'right'. -* @param {string} [style.boundsAlignV='top'] - Vertical alignment of the text within the `textBounds`. Can be: 'top', 'middle' or 'bottom'. -* @param {string} [style.stroke='black'] - A canvas stroke style that will be used on the text stroke eg 'blue', '#FCFF00'. -* @param {number} [style.strokeThickness=0] - A number that represents the thickness of the stroke. Default is 0 (no stroke). -* @param {boolean} [style.wordWrap=false] - Indicates if word wrap should be used. -* @param {number} [style.wordWrapWidth=100] - The width in pixels at which text will wrap. -* @param {number} [style.maxLines=0] - The maximum number of lines to be shown for wrapped text. -* @param {number|array} [style.tabs=0] - The size (in pixels) of the tabs, for when text includes tab characters. 0 disables. Can be an array of varying tab sizes, one per tab stop. -* @param {boolean} [update=false] - Immediately update the Text object after setting the new style? Or wait for the next frame. -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.setStyle = function (style, update) { - - if (update === undefined) { update = false; } - - style = style || {}; - style.font = style.font || 'bold 20pt Arial'; - style.backgroundColor = style.backgroundColor || null; - style.fill = style.fill || 'black'; - style.align = style.align || 'left'; - style.boundsAlignH = style.boundsAlignH || 'left'; - style.boundsAlignV = style.boundsAlignV || 'top'; - style.stroke = style.stroke || 'black'; //provide a default, see: https://github.com/GoodBoyDigital/pixi.js/issues/136 - style.strokeThickness = style.strokeThickness || 0; - style.wordWrap = style.wordWrap || false; - style.wordWrapWidth = style.wordWrapWidth || 100; - style.maxLines = style.maxLines || 0; - style.shadowOffsetX = style.shadowOffsetX || 0; - style.shadowOffsetY = style.shadowOffsetY || 0; - style.shadowColor = style.shadowColor || 'rgba(0,0,0,0)'; - style.shadowBlur = style.shadowBlur || 0; - style.tabs = style.tabs || 0; - - var components = this.fontToComponents(style.font); - - if (style.fontStyle) - { - components.fontStyle = style.fontStyle; - } - - if (style.fontVariant) - { - components.fontVariant = style.fontVariant; - } - - if (style.fontWeight) - { - components.fontWeight = style.fontWeight; - } - - if (style.fontSize) - { - if (typeof style.fontSize === 'number') - { - style.fontSize = style.fontSize + 'px'; - } - - components.fontSize = style.fontSize; - } - - this._fontComponents = components; - - style.font = this.componentsToFont(this._fontComponents); - - this.style = style; - this.dirty = true; - - if (update) - { - this.updateText(); - } - - return this; - -}; - -/** -* Renders text. This replaces the Pixi.Text.updateText function as we need a few extra bits in here. -* -* @method Phaser.Text#updateText -* @private -*/ -Phaser.Text.prototype.updateText = function () { - - this.texture.baseTexture.resolution = this._res; - - this.context.font = this.style.font; - - var outputText = this.text; - - if (this.style.wordWrap) - { - outputText = this.runWordWrap(this.text); - } - - // Split text into lines - var lines = outputText.split(/(?:\r\n|\r|\n)/); - - // Calculate text width - var tabs = this.style.tabs; - var lineWidths = []; - var maxLineWidth = 0; - var fontProperties = this.determineFontProperties(this.style.font); - - var drawnLines = lines.length; - - if (this.style.maxLines > 0 && this.style.maxLines < lines.length) - { - drawnLines = this.style.maxLines; - } - - this._charCount = 0; - - for (var i = 0; i < drawnLines; i++) - { - if (tabs === 0) - { - // Simple layout (no tabs) - var lineWidth = this.style.strokeThickness + this.padding.x; - - if (this.colors.length > 0 || this.strokeColors.length > 0 || this.fontWeights.length > 0 || this.fontStyles.length > 0) - { - lineWidth += this.measureLine(lines[i]); - } - else - { - lineWidth += this.context.measureText(lines[i]).width; - } - - // Adjust for wrapped text - if (this.style.wordWrap) - { - lineWidth -= this.context.measureText(' ').width; - } - } - else - { - // Complex layout (tabs) - var line = lines[i].split(/(?:\t)/); - var lineWidth = this.padding.x + this.style.strokeThickness; - - if (Array.isArray(tabs)) - { - var tab = 0; - - for (var c = 0; c < line.length; c++) - { - var section = 0; - - if (this.colors.length > 0 || this.strokeColors.length > 0 || this.fontWeights.length > 0 || this.fontStyles.length > 0) - { - section = this.measureLine(line[c]); - } - else - { - section = Math.ceil(this.context.measureText(line[c]).width); - } - - if (c > 0) - { - tab += tabs[c - 1]; - } - - lineWidth = tab + section; - } - } - else - { - for (var c = 0; c < line.length; c++) - { - // How far to the next tab? - if (this.colors.length > 0 || this.strokeColors.length > 0 || this.fontWeights.length > 0 || this.fontStyles.length > 0) - { - lineWidth += this.measureLine(line[c]); - } - else - { - lineWidth += Math.ceil(this.context.measureText(line[c]).width); - } - - var diff = this.game.math.snapToCeil(lineWidth, tabs) - lineWidth; - - lineWidth += diff; - } - } - } - - lineWidths[i] = Math.ceil(lineWidth); - maxLineWidth = Math.max(maxLineWidth, lineWidths[i]); - } - - this.canvas.width = maxLineWidth * this._res; - - // Calculate text height - var lineHeight = fontProperties.fontSize + this.style.strokeThickness + this.padding.y; - var height = lineHeight * drawnLines; - var lineSpacing = this._lineSpacing; - - if (lineSpacing < 0 && Math.abs(lineSpacing) > lineHeight) - { - lineSpacing = -lineHeight; - } - - // Adjust for line spacing - if (lineSpacing !== 0) - { - height += (lineSpacing > 0) ? lineSpacing * lines.length : lineSpacing * (lines.length - 1); - } - - this.canvas.height = height * this._res; - - this.context.scale(this._res, this._res); - - if (navigator.isCocoonJS) - { - this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); - } - - if (this.style.backgroundColor) - { - this.context.fillStyle = this.style.backgroundColor; - this.context.fillRect(0, 0, this.canvas.width, this.canvas.height); - } - - this.context.fillStyle = this.style.fill; - this.context.font = this.style.font; - this.context.strokeStyle = this.style.stroke; - this.context.textBaseline = 'alphabetic'; - - this.context.lineWidth = this.style.strokeThickness; - this.context.lineCap = 'round'; - this.context.lineJoin = 'round'; - - var linePositionX; - var linePositionY; - - this._charCount = 0; - - // Draw text line by line - for (i = 0; i < drawnLines; i++) - { - // Split the line by - - linePositionX = this.style.strokeThickness / 2; - linePositionY = (this.style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent; - - if (i > 0) - { - linePositionY += (lineSpacing * i); - } - - if (this.style.align === 'right') - { - linePositionX += maxLineWidth - lineWidths[i]; - } - else if (this.style.align === 'center') - { - linePositionX += (maxLineWidth - lineWidths[i]) / 2; - } - - if (this.autoRound) - { - linePositionX = Math.round(linePositionX); - linePositionY = Math.round(linePositionY); - } - - if (this.colors.length > 0 || this.strokeColors.length > 0 || this.fontWeights.length > 0 || this.fontStyles.length > 0) - { - this.updateLine(lines[i], linePositionX, linePositionY); - } - else - { - if (this.style.stroke && this.style.strokeThickness) - { - this.updateShadow(this.style.shadowStroke); - - if (tabs === 0) - { - this.context.strokeText(lines[i], linePositionX, linePositionY); - } - else - { - this.renderTabLine(lines[i], linePositionX, linePositionY, false); - } - } - - if (this.style.fill) - { - this.updateShadow(this.style.shadowFill); - - if (tabs === 0) - { - this.context.fillText(lines[i], linePositionX, linePositionY); - } - else - { - this.renderTabLine(lines[i], linePositionX, linePositionY, true); - } - } - } - } - - this.updateTexture(); - -}; - -/** -* Renders a line of text that contains tab characters if Text.tab > 0. -* Called automatically by updateText. -* -* @method Phaser.Text#renderTabLine -* @private -* @param {string} line - The line of text to render. -* @param {integer} x - The x position to start rendering from. -* @param {integer} y - The y position to start rendering from. -* @param {boolean} fill - If true uses fillText, if false uses strokeText. -*/ -Phaser.Text.prototype.renderTabLine = function (line, x, y, fill) { - - var text = line.split(/(?:\t)/); - var tabs = this.style.tabs; - var snap = 0; - - if (Array.isArray(tabs)) - { - var tab = 0; - - for (var c = 0; c < text.length; c++) - { - if (c > 0) - { - tab += tabs[c - 1]; - } - - snap = x + tab; - - if (fill) - { - this.context.fillText(text[c], snap, y); - } - else - { - this.context.strokeText(text[c], snap, y); - } - } - } - else - { - for (var c = 0; c < text.length; c++) - { - var section = Math.ceil(this.context.measureText(text[c]).width); - - // How far to the next tab? - snap = this.game.math.snapToCeil(x, tabs); - - if (fill) - { - this.context.fillText(text[c], snap, y); - } - else - { - this.context.strokeText(text[c], snap, y); - } - - x = snap + section; - } - } - -}; - -/** -* Sets the Shadow on the Text.context based on the Style settings, or disables it if not enabled. -* This is called automatically by Text.updateText. -* -* @method Phaser.Text#updateShadow -* @param {boolean} state - If true the shadow will be set to the Style values, otherwise it will be set to zero. -*/ -Phaser.Text.prototype.updateShadow = function (state) { - - if (state) - { - this.context.shadowOffsetX = this.style.shadowOffsetX; - this.context.shadowOffsetY = this.style.shadowOffsetY; - this.context.shadowColor = this.style.shadowColor; - this.context.shadowBlur = this.style.shadowBlur; - } - else - { - this.context.shadowOffsetX = 0; - this.context.shadowOffsetY = 0; - this.context.shadowColor = 0; - this.context.shadowBlur = 0; - } - -}; - -/** -* Measures a line of text character by character taking into the account the specified character styles. -* -* @method Phaser.Text#measureLine -* @private -* @param {string} line - The line of text to measure. -* @return {integer} length of the line. -*/ -Phaser.Text.prototype.measureLine = function (line) { - - var lineLength = 0; - - for (var i = 0; i < line.length; i++) - { - var letter = line[i]; - - if (this.fontWeights.length > 0 || this.fontStyles.length > 0) - { - var components = this.fontToComponents(this.context.font); - - if (this.fontStyles[this._charCount]) - { - components.fontStyle = this.fontStyles[this._charCount]; - } - - if (this.fontWeights[this._charCount]) - { - components.fontWeight = this.fontWeights[this._charCount]; - } - - this.context.font = this.componentsToFont(components); - } - - if (this.style.stroke && this.style.strokeThickness) - { - if (this.strokeColors[this._charCount]) - { - this.context.strokeStyle = this.strokeColors[this._charCount]; - } - - this.updateShadow(this.style.shadowStroke); - } - - if (this.style.fill) - { - if (this.colors[this._charCount]) - { - this.context.fillStyle = this.colors[this._charCount]; - } - - this.updateShadow(this.style.shadowFill); - } - - lineLength += this.context.measureText(letter).width; - - this._charCount++; - } - - return Math.ceil(lineLength); -}; - -/** -* Updates a line of text, applying fill and stroke per-character colors or style and weight per-character font if applicable. -* -* @method Phaser.Text#updateLine -* @private -*/ -Phaser.Text.prototype.updateLine = function (line, x, y) { - - for (var i = 0; i < line.length; i++) - { - var letter = line[i]; - - if (this.fontWeights.length > 0 || this.fontStyles.length > 0) - { - var components = this.fontToComponents(this.context.font); - - if (this.fontStyles[this._charCount]) - { - components.fontStyle = this.fontStyles[this._charCount]; - } - - if (this.fontWeights[this._charCount]) - { - components.fontWeight = this.fontWeights[this._charCount]; - } - - this.context.font = this.componentsToFont(components); - } - - if (this.style.stroke && this.style.strokeThickness) - { - if (this.strokeColors[this._charCount]) - { - this.context.strokeStyle = this.strokeColors[this._charCount]; - } - - this.updateShadow(this.style.shadowStroke); - this.context.strokeText(letter, x, y); - } - - if (this.style.fill) - { - if (this.colors[this._charCount]) - { - this.context.fillStyle = this.colors[this._charCount]; - } - - this.updateShadow(this.style.shadowFill); - this.context.fillText(letter, x, y); - } - - x += this.context.measureText(letter).width; - - this._charCount++; - } - -}; - -/** -* Clears any text fill or stroke colors that were set by `addColor` or `addStrokeColor`. -* -* @method Phaser.Text#clearColors -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.clearColors = function () { - - this.colors = []; - this.strokeColors = []; - this.dirty = true; - - return this; - -}; - -/** -* Clears any text styles or weights font that were set by `addFontStyle` or `addFontWeight`. -* -* @method Phaser.Text#clearFontValues -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.clearFontValues = function () { - - this.fontStyles = []; - this.fontWeights = []; - this.dirty = true; - - return this; - -}; - -/** -* Set specific colors for certain characters within the Text. -* -* It works by taking a color value, which is a typical HTML string such as `#ff0000` or `rgb(255,0,0)` and a position. -* The position value is the index of the character in the Text string to start applying this color to. -* Once set the color remains in use until either another color or the end of the string is encountered. -* For example if the Text was `Photon Storm` and you did `Text.addColor('#ffff00', 6)` it would color in the word `Storm` in yellow. -* -* If you wish to change the stroke color see addStrokeColor instead. -* -* @method Phaser.Text#addColor -* @param {string} color - A canvas fillstyle that will be used on the text eg `red`, `#00FF00`, `rgba()`. -* @param {number} position - The index of the character in the string to start applying this color value from. -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.addColor = function (color, position) { - - this.colors[position] = color; - this.dirty = true; - - return this; - -}; - -/** -* Set specific stroke colors for certain characters within the Text. -* -* It works by taking a color value, which is a typical HTML string such as `#ff0000` or `rgb(255,0,0)` and a position. -* The position value is the index of the character in the Text string to start applying this color to. -* Once set the color remains in use until either another color or the end of the string is encountered. -* For example if the Text was `Photon Storm` and you did `Text.addColor('#ffff00', 6)` it would color in the word `Storm` in yellow. -* -* This has no effect if stroke is disabled or has a thickness of 0. -* -* If you wish to change the text fill color see addColor instead. -* -* @method Phaser.Text#addStrokeColor -* @param {string} color - A canvas fillstyle that will be used on the text stroke eg `red`, `#00FF00`, `rgba()`. -* @param {number} position - The index of the character in the string to start applying this color value from. -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.addStrokeColor = function (color, position) { - - this.strokeColors[position] = color; - this.dirty = true; - - return this; - -}; - -/** -* Set specific font styles for certain characters within the Text. -* -* It works by taking a font style value, which is a typical string such as `normal`, `italic` or `oblique`. -* The position value is the index of the character in the Text string to start applying this font style to. -* Once set the font style remains in use until either another font style or the end of the string is encountered. -* For example if the Text was `Photon Storm` and you did `Text.addFontStyle('italic', 6)` it would font style in the word `Storm` in italic. -* -* If you wish to change the text font weight see addFontWeight instead. -* -* @method Phaser.Text#addFontStyle -* @param {string} style - A canvas font-style that will be used on the text style eg `normal`, `italic`, `oblique`. -* @param {number} position - The index of the character in the string to start applying this font style value from. -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.addFontStyle = function (style, position) { - - this.fontStyles[position] = style; - this.dirty = true; - - return this; - -}; - -/** -* Set specific font weights for certain characters within the Text. -* -* It works by taking a font weight value, which is a typical string such as `normal`, `bold`, `bolder`, etc. -* The position value is the index of the character in the Text string to start applying this font weight to. -* Once set the font weight remains in use until either another font weight or the end of the string is encountered. -* For example if the Text was `Photon Storm` and you did `Text.addFontWeight('bold', 6)` it would font weight in the word `Storm` in bold. -* -* If you wish to change the text font style see addFontStyle instead. -* -* @method Phaser.Text#addFontWeight -* @param {string} style - A canvas font-weight that will be used on the text weight eg `normal`, `bold`, `bolder`, `lighter`, etc. -* @param {number} position - The index of the character in the string to start applying this font weight value from. -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.addFontWeight = function (weight, position) { - - this.fontWeights[position] = weight; - this.dirty = true; - - return this; - -}; - -/** -* Runs the given text through the Text.runWordWrap function and returns -* the results as an array, where each element of the array corresponds to a wrapped -* line of text. -* -* Useful if you wish to control pagination on long pieces of content. -* -* @method Phaser.Text#precalculateWordWrap -* @param {string} text - The text for which the wrapping will be calculated. -* @return {array} An array of strings with the pieces of wrapped text. -*/ -Phaser.Text.prototype.precalculateWordWrap = function (text) { - - this.texture.baseTexture.resolution = this._res; - this.context.font = this.style.font; - - var wrappedLines = this.runWordWrap(text); - - return wrappedLines.split(/(?:\r\n|\r|\n)/); - -}; - -/** -* Greedy wrapping algorithm that will wrap words as the line grows longer than its horizontal bounds. -* -* @method Phaser.Text#runWordWrap -* @param {string} text - The text to perform word wrap detection against. -* @private -*/ -Phaser.Text.prototype.runWordWrap = function (text) { - - if (this.useAdvancedWrap) - { - return this.advancedWordWrap(text); - } - else - { - return this.basicWordWrap(text); - } - -}; - -/** -* Advanced wrapping algorithm that will wrap words as the line grows longer than its horizontal bounds. -* White space is condensed (e.g., consecutive spaces are replaced with one). -* Lines are trimmed of white space before processing. -* Throws an error if the user was smart enough to specify a wordWrapWidth less than a single character. -* -* @method Phaser.Text#advancedWordWrap -* @param {string} text - The text to perform word wrap detection against. -* @private -*/ -Phaser.Text.prototype.advancedWordWrap = function (text) { - - var context = this.context; - var wordWrapWidth = this.style.wordWrapWidth; - - var output = ''; - - // (1) condense whitespace - // (2) split into lines - var lines = text - .replace(/ +/gi, ' ') - .split(/\r?\n/gi); - - var linesCount = lines.length; - - for (var i = 0; i < linesCount; i++) - { - var line = lines[i]; - var out = ''; - - // trim whitespace - line = line.replace(/^ *|\s*$/gi, ''); - - // if entire line is less than wordWrapWidth - // append the entire line and exit early - var lineWidth = context.measureText(line).width; - - if (lineWidth < wordWrapWidth) - { - output += line + '\n'; - continue; - } - - // otherwise, calculate new lines - var currentLineWidth = wordWrapWidth; - - // split into words - var words = line.split(' '); - - for (var j = 0; j < words.length; j++) - { - var word = words[j]; - var wordWithSpace = word + ' '; - var wordWidth = context.measureText(wordWithSpace).width; - - if (wordWidth > currentLineWidth) - { - // break word - if (j === 0) - { - // shave off letters from word until it's small enough - var newWord = wordWithSpace; - - while (newWord.length) - { - newWord = newWord.slice(0, -1); - wordWidth = context.measureText(newWord).width; - - if (wordWidth <= currentLineWidth) - { - break; - } - } - - // if wordWrapWidth is too small for even a single - // letter, shame user failure with a fatal error - if (!newWord.length) - { - throw new Error('This text\'s wordWrapWidth setting is less than a single character!'); - } - - // replace current word in array with remainder - var secondPart = word.substr(newWord.length); - - words[j] = secondPart; - - // append first piece to output - out += newWord; - } - - // if existing word length is 0, don't include it - var offset = (words[j].length) ? j : j + 1; - - // collapse rest of sentence - var remainder = words.slice(offset).join(' ') - // remove any trailing white space - .replace(/[ \n]*$/gi, ''); - - // prepend remainder to next line - lines[i + 1] = remainder + ' ' + (lines[i + 1] || ''); - linesCount = lines.length; - - break; // processing on this line - - // append word with space to output - } - else - { - out += wordWithSpace; - currentLineWidth -= wordWidth; - } - } - - // append processed line to output - output += out.replace(/[ \n]*$/gi, '') + '\n'; - } - - // trim the end of the string - output = output.replace(/[\s|\n]*$/gi, ''); - - return output; - -}; - -/** -* Greedy wrapping algorithm that will wrap words as the line grows longer than its horizontal bounds. -* -* @method Phaser.Text#basicWordWrap -* @param {string} text - The text to perform word wrap detection against. -* @private -*/ -Phaser.Text.prototype.basicWordWrap = function (text) { - - var result = ''; - var lines = text.split('\n'); - - for (var i = 0; i < lines.length; i++) - { - var spaceLeft = this.style.wordWrapWidth; - var words = lines[i].split(' '); - - for (var j = 0; j < words.length; j++) - { - var wordWidth = this.context.measureText(words[j]).width; - var wordWidthWithSpace = wordWidth + this.context.measureText(' ').width; - - if (wordWidthWithSpace > spaceLeft) - { - // Skip printing the newline if it's the first word of the line that is greater than the word wrap width. - if (j > 0) - { - result += '\n'; - } - result += words[j] + ' '; - spaceLeft = this.style.wordWrapWidth - wordWidth; - } - else - { - spaceLeft -= wordWidthWithSpace; - result += words[j] + ' '; - } - } - - if (i < lines.length-1) - { - result += '\n'; - } - } - - return result; - -}; - -/** -* Updates the internal `style.font` if it now differs according to generation from components. -* -* @method Phaser.Text#updateFont -* @private -* @param {object} components - Font components. -*/ -Phaser.Text.prototype.updateFont = function (components) { - - var font = this.componentsToFont(components); - - if (this.style.font !== font) - { - this.style.font = font; - this.dirty = true; - - if (this.parent) - { - this.updateTransform(); - } - } - -}; - -/** -* Converting a short CSS-font string into the relevant components. -* -* @method Phaser.Text#fontToComponents -* @private -* @param {string} font - a CSS font string -*/ -Phaser.Text.prototype.fontToComponents = function (font) { - - // The format is specified in http://www.w3.org/TR/CSS2/fonts.html#font-shorthand: - // style - normal | italic | oblique | inherit - // variant - normal | small-caps | inherit - // weight - normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit - // size - xx-small | x-small | small | medium | large | x-large | xx-large, - // larger | smaller - // {number} (em | ex | ch | rem | vh | vw | vmin | vmax | px | mm | cm | in | pt | pc | %) - // font-family - rest (but identifiers or quoted with comma separation) - var m = font.match(/^\s*(?:\b(normal|italic|oblique|inherit)?\b)\s*(?:\b(normal|small-caps|inherit)?\b)\s*(?:\b(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit)?\b)\s*(?:\b(xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller|0|\d*(?:[.]\d*)?(?:%|[a-z]{2,5}))?\b)\s*(.*)\s*$/); - - if (m) - { - var family = m[5].trim(); - - // If it looks like the value should be quoted, but isn't, then quote it. - if (!/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(family) && !/['",]/.exec(family)) - { - family = "'" + family + "'"; - } - - return { - font: font, - fontStyle: m[1] || 'normal', - fontVariant: m[2] || 'normal', - fontWeight: m[3] || 'normal', - fontSize: m[4] || 'medium', - fontFamily: family - }; - } - else - { - console.warn("Phaser.Text - unparsable CSS font: " + font); - - return { - font: font - }; - } - -}; - -/** -* Converts individual font components (see `fontToComponents`) to a short CSS font string. -* -* @method Phaser.Text#componentsToFont -* @private -* @param {object} components - Font components. -*/ -Phaser.Text.prototype.componentsToFont = function (components) { - - var parts = []; - var v; - - v = components.fontStyle; - if (v && v !== 'normal') { parts.push(v); } - - v = components.fontVariant; - if (v && v !== 'normal') { parts.push(v); } - - v = components.fontWeight; - if (v && v !== 'normal') { parts.push(v); } - - v = components.fontSize; - if (v && v !== 'medium') { parts.push(v); } - - v = components.fontFamily; - if (v) { parts.push(v); } - - if (!parts.length) - { - // Fallback to whatever value the 'font' was - parts.push(components.font); - } - - return parts.join(" "); - -}; - -/** -* The text to be displayed by this Text object. -* Use a \n to insert a carriage return and split the text. -* The text will be rendered with any style currently set. -* -* Use the optional `immediate` argument if you need the Text display to update immediately. -* -* If not it will re-create the texture of this Text object during the next time the render -* loop is called. -* -* @method Phaser.Text#setText -* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. -* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). -* @return {Phaser.Text} This Text instance. -*/ -Phaser.Text.prototype.setText = function (text, immediate) { - - if (immediate === undefined) { immediate = false; } - - this.text = text.toString() || ''; - - if (immediate) - { - this.updateText(); - } - else - { - this.dirty = true; - } - - return this; - -}; - -/** - * Converts the given array into a tab delimited string and then updates this Text object. - * This is mostly used when you want to display external data using tab stops. - * - * The array can be either single or multi dimensional depending on the result you need: - * - * `[ 'a', 'b', 'c' ]` would convert in to `"a\tb\tc"`. - * - * Where as: - * - * `[ - * [ 'a', 'b', 'c' ], - * [ 'd', 'e', 'f'] - * ]` - * - * would convert in to: `"a\tb\tc\nd\te\tf"` - * - * @method Phaser.Text#parseList - * @param {array} list - The array of data to convert into a string. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.parseList = function (list) { - - if (!Array.isArray(list)) - { - return this; - } - else - { - var s = ""; - - for (var i = 0; i < list.length; i++) - { - if (Array.isArray(list[i])) - { - s += list[i].join("\t"); - - if (i < list.length - 1) - { - s += "\n"; - } - } - else - { - s += list[i]; - - if (i < list.length - 1) - { - s += "\t"; - } - } - } - } - - this.text = s; - this.dirty = true; - - return this; - -}; - -/** - * The Text Bounds is a rectangular region that you control the dimensions of into which the Text object itself is positioned, - * regardless of the number of lines in the text, the font size or any other attribute. - * - * Alignment is controlled via the properties `boundsAlignH` and `boundsAlignV` within the Text.style object, or can be directly - * set through the setters `Text.boundsAlignH` and `Text.boundsAlignV`. Bounds alignment is independent of text alignment. - * - * For example: If your game is 800x600 in size and you set the text bounds to be 0,0,800,600 then by setting boundsAlignH to - * 'center' and boundsAlignV to 'bottom' the text will render in the center and at the bottom of your game window, regardless of - * how many lines of text there may be. Even if you adjust the text content or change the style it will remain at the bottom center - * of the text bounds. - * - * This is especially powerful when you need to align text against specific coordinates in your game, but the actual text dimensions - * may vary based on font (say for multi-lingual games). - * - * If `Text.wordWrapWidth` is greater than the width of the text bounds it is clamped to match the bounds width. - * - * Call this method with no arguments given to reset an existing textBounds. - * - * It works by calculating the final position based on the Text.canvas size, which is modified as the text is updated. Some fonts - * have additional padding around them which you can mitigate by tweaking the Text.padding property. It then adjusts the `pivot` - * property based on the given bounds and canvas size. This means if you need to set the pivot property directly in your game then - * you either cannot use `setTextBounds` or you must place the Text object inside another DisplayObject on which you set the pivot. - * - * @method Phaser.Text#setTextBounds - * @param {number} [x] - The x coordinate of the Text Bounds region. - * @param {number} [y] - The y coordinate of the Text Bounds region. - * @param {number} [width] - The width of the Text Bounds region. - * @param {number} [height] - The height of the Text Bounds region. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setTextBounds = function (x, y, width, height) { - - if (x === undefined) - { - this.textBounds = null; - } - else - { - if (!this.textBounds) - { - this.textBounds = new Phaser.Rectangle(x, y, width, height); - } - else - { - this.textBounds.setTo(x, y, width, height); - } - - if (this.style.wordWrapWidth > width) - { - this.style.wordWrapWidth = width; - } - } - - this.updateTexture(); - - return this; - -}; - -/** - * Updates the texture based on the canvas dimensions. - * - * @method Phaser.Text#updateTexture - * @private - */ -Phaser.Text.prototype.updateTexture = function () { - - var base = this.texture.baseTexture; - var crop = this.texture.crop; - var frame = this.texture.frame; - - var w = this.canvas.width; - var h = this.canvas.height; - - base.width = w; - base.height = h; - - crop.width = w; - crop.height = h; - - frame.width = w; - frame.height = h; - - this.texture.width = w; - this.texture.height = h; - - this._width = w; - this._height = h; - - if (this.textBounds) - { - var x = this.textBounds.x; - var y = this.textBounds.y; - - // Align the canvas based on the bounds - if (this.style.boundsAlignH === 'right') - { - x += this.textBounds.width - this.canvas.width; - } - else if (this.style.boundsAlignH === 'center') - { - x += this.textBounds.halfWidth - (this.canvas.width / 2); - } - - if (this.style.boundsAlignV === 'bottom') - { - y += this.textBounds.height - this.canvas.height; - } - else if (this.style.boundsAlignV === 'middle') - { - y += this.textBounds.halfHeight - (this.canvas.height / 2); - } - - this.pivot.x = -x; - this.pivot.y = -y; - } - - // Can't render something with a zero sized dimension - this.renderable = (w !== 0 && h !== 0); - - this.texture.requiresReTint = true; - - this.texture.baseTexture.dirty(); - -}; - -/** -* Renders the object using the WebGL renderer -* -* @method Phaser.Text#_renderWebGL -* @private -* @param {RenderSession} renderSession - The Render Session to render the Text on. -*/ -Phaser.Text.prototype._renderWebGL = function (renderSession) { - - if (this.dirty) - { - this.updateText(); - this.dirty = false; - } - - PIXI.Sprite.prototype._renderWebGL.call(this, renderSession); - -}; - -/** -* Renders the object using the Canvas renderer. -* -* @method Phaser.Text#_renderCanvas -* @private -* @param {RenderSession} renderSession - The Render Session to render the Text on. -*/ -Phaser.Text.prototype._renderCanvas = function (renderSession) { - - if (this.dirty) - { - this.updateText(); - this.dirty = false; - } - - PIXI.Sprite.prototype._renderCanvas.call(this, renderSession); - -}; - -/** -* Calculates the ascent, descent and fontSize of a given font style. -* -* @method Phaser.Text#determineFontProperties -* @private -* @param {object} fontStyle -*/ -Phaser.Text.prototype.determineFontProperties = function (fontStyle) { - - var properties = Phaser.Text.fontPropertiesCache[fontStyle]; - - if (!properties) - { - properties = {}; - - var canvas = Phaser.Text.fontPropertiesCanvas; - var context = Phaser.Text.fontPropertiesContext; - - context.font = fontStyle; - - var width = Math.ceil(context.measureText('|MÉq').width); - var baseline = Math.ceil(context.measureText('|MÉq').width); - var height = 2 * baseline; - - baseline = baseline * 1.4 | 0; - - canvas.width = width; - canvas.height = height; - - context.fillStyle = '#f00'; - context.fillRect(0, 0, width, height); - - context.font = fontStyle; - - context.textBaseline = 'alphabetic'; - context.fillStyle = '#000'; - context.fillText('|MÉq', 0, baseline); - - if (!context.getImageData(0, 0, width, height)) - { - properties.ascent = baseline; - properties.descent = baseline + 6; - properties.fontSize = properties.ascent + properties.descent; - - Phaser.Text.fontPropertiesCache[fontStyle] = properties; - - return properties; - } - - var imagedata = context.getImageData(0, 0, width, height).data; - var pixels = imagedata.length; - var line = width * 4; - - var i, j; - - var idx = 0; - var stop = false; - - // ascent. scan from top to bottom until we find a non red pixel - for (i = 0; i < baseline; i++) - { - for (j = 0; j < line; j += 4) - { - if (imagedata[idx + j] !== 255) - { - stop = true; - break; - } - } - - if (!stop) - { - idx += line; - } - else - { - break; - } - } - - properties.ascent = baseline - i; - - idx = pixels - line; - stop = false; - - // descent. scan from bottom to top until we find a non red pixel - for (i = height; i > baseline; i--) - { - for (j = 0; j < line; j += 4) - { - if (imagedata[idx + j] !== 255) - { - stop = true; - break; - } - } - - if (!stop) - { - idx -= line; - } - else - { - break; - } - } - - properties.descent = i - baseline; - //TODO might need a tweak. kind of a temp fix! - properties.descent += 6; - properties.fontSize = properties.ascent + properties.descent; - - Phaser.Text.fontPropertiesCache[fontStyle] = properties; - } - - return properties; - -}; - -/** -* Returns the bounds of the Text as a rectangle. -* The bounds calculation takes the worldTransform into account. -* -* @method Phaser.Text#getBounds -* @param {Phaser.Matrix} matrix - The transformation matrix of the Text. -* @return {Phaser.Rectangle} The framing rectangle -*/ -Phaser.Text.prototype.getBounds = function (matrix) { - - if (this.dirty) - { - this.updateText(); - this.dirty = false; - } - - return PIXI.Sprite.prototype.getBounds.call(this, matrix); - -}; - -/** -* The text to be displayed by this Text object. -* Use a \n to insert a carriage return and split the text. -* The text will be rendered with any style currently set. -* -* @name Phaser.Text#text -* @property {string} text -*/ -Object.defineProperty(Phaser.Text.prototype, 'text', { - - get: function() { - return this._text; - }, - - set: function(value) { - - if (value !== this._text) - { - this._text = value.toString() || ''; - this.dirty = true; - - if (this.parent) - { - this.updateTransform(); - } - } - - } - -}); - -/** -* Change the font used. -* -* This is equivalent of the `font` property specified to {@link Phaser.Text#setStyle setStyle}, except -* that unlike using `setStyle` this will not change any current font fill/color settings. -* -* The CSS font string can also be individually altered with the `font`, `fontSize`, `fontWeight`, `fontStyle`, and `fontVariant` properties. -* -* @name Phaser.Text#cssFont -* @property {string} cssFont -*/ -Object.defineProperty(Phaser.Text.prototype, 'cssFont', { - - get: function() { - return this.componentsToFont(this._fontComponents); - }, - - set: function (value) - { - value = value || 'bold 20pt Arial'; - this._fontComponents = this.fontToComponents(value); - this.updateFont(this._fontComponents); - } - -}); - -/** -* Change the font family that the text will be rendered in, such as 'Arial'. -* -* Multiple CSS font families and generic fallbacks can be specified as long as -* {@link http://www.w3.org/TR/CSS2/fonts.html#propdef-font-family CSS font-family rules} are followed. -* -* To change the entire font string use {@link Phaser.Text#cssFont cssFont} instead: eg. `text.cssFont = 'bold 20pt Arial'`. -* -* @name Phaser.Text#font -* @property {string} font -*/ -Object.defineProperty(Phaser.Text.prototype, 'font', { - - get: function() { - return this._fontComponents.fontFamily; - }, - - set: function(value) { - - value = value || 'Arial'; - value = value.trim(); - - // If it looks like the value should be quoted, but isn't, then quote it. - if (!/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(value) && !/['",]/.exec(value)) - { - value = "'" + value + "'"; - } - - this._fontComponents.fontFamily = value; - this.updateFont(this._fontComponents); - - } - -}); - -/** -* The size of the font. -* -* If the font size is specified in pixels (eg. `32` or `'32px`') then a number (ie. `32`) representing -* the font size in pixels is returned; otherwise the value with CSS unit is returned as a string (eg. `'12pt'`). -* -* @name Phaser.Text#fontSize -* @property {number|string} fontSize -*/ -Object.defineProperty(Phaser.Text.prototype, 'fontSize', { - - get: function() { - - var size = this._fontComponents.fontSize; - - if (size && /(?:^0$|px$)/.exec(size)) - { - return parseInt(size, 10); - } - else - { - return size; - } - - }, - - set: function(value) { - - value = value || '0'; - - if (typeof value === 'number') - { - value = value + 'px'; - } - - this._fontComponents.fontSize = value; - this.updateFont(this._fontComponents); - - } - -}); - -/** -* The weight of the font: 'normal', 'bold', or {@link http://www.w3.org/TR/CSS2/fonts.html#propdef-font-weight a valid CSS font weight}. -* @name Phaser.Text#fontWeight -* @property {string} fontWeight -*/ -Object.defineProperty(Phaser.Text.prototype, 'fontWeight', { - - get: function() { - return this._fontComponents.fontWeight || 'normal'; - }, - - set: function(value) { - - value = value || 'normal'; - this._fontComponents.fontWeight = value; - this.updateFont(this._fontComponents); - - } - -}); - -/** -* The style of the font: 'normal', 'italic', 'oblique' -* @name Phaser.Text#fontStyle -* @property {string} fontStyle -*/ -Object.defineProperty(Phaser.Text.prototype, 'fontStyle', { - - get: function() { - return this._fontComponents.fontStyle || 'normal'; - }, - - set: function(value) { - - value = value || 'normal'; - this._fontComponents.fontStyle = value; - this.updateFont(this._fontComponents); - - } - -}); - -/** -* The variant the font: 'normal', 'small-caps' -* @name Phaser.Text#fontVariant -* @property {string} fontVariant -*/ -Object.defineProperty(Phaser.Text.prototype, 'fontVariant', { - - get: function() { - return this._fontComponents.fontVariant || 'normal'; - }, - - set: function(value) { - - value = value || 'normal'; - this._fontComponents.fontVariant = value; - this.updateFont(this._fontComponents); - - } - -}); - -/** -* @name Phaser.Text#fill -* @property {object} fill - A canvas fillstyle that will be used on the text eg 'red', '#00FF00'. -*/ -Object.defineProperty(Phaser.Text.prototype, 'fill', { - - get: function() { - return this.style.fill; - }, - - set: function(value) { - - if (value !== this.style.fill) - { - this.style.fill = value; - this.dirty = true; - } - - } - -}); - -/** -* Controls the horizontal alignment for multiline text. -* Can be: 'left', 'center' or 'right'. -* Does not affect single lines of text. For that please see `setTextBounds`. -* @name Phaser.Text#align -* @property {string} align -*/ -Object.defineProperty(Phaser.Text.prototype, 'align', { - - get: function() { - return this.style.align; - }, - - set: function(value) { - - if (value !== this.style.align) - { - this.style.align = value; - this.dirty = true; - } - - } - -}); - -/** -* The resolution of the canvas the text is rendered to. -* This defaults to match the resolution of the renderer, but can be changed on a per Text object basis. -* @name Phaser.Text#resolution -* @property {integer} resolution -*/ -Object.defineProperty(Phaser.Text.prototype, 'resolution', { - - get: function() { - return this._res; - }, - - set: function(value) { - - if (value !== this._res) - { - this._res = value; - this.dirty = true; - } - - } - -}); - -/** -* The size (in pixels) of the tabs, for when text includes tab characters. 0 disables. -* Can be an integer or an array of varying tab sizes, one tab per element. -* For example if you set tabs to 100 then when Text encounters a tab it will jump ahead 100 pixels. -* If you set tabs to be `[100,200]` then it will set the first tab at 100px and the second at 200px. -* -* @name Phaser.Text#tabs -* @property {integer|array} tabs -*/ -Object.defineProperty(Phaser.Text.prototype, 'tabs', { - - get: function() { - return this.style.tabs; - }, - - set: function(value) { - - if (value !== this.style.tabs) - { - this.style.tabs = value; - this.dirty = true; - } - - } - -}); - -/** -* Horizontal alignment of the text within the `textBounds`. Can be: 'left', 'center' or 'right'. -* @name Phaser.Text#boundsAlignH -* @property {string} boundsAlignH -*/ -Object.defineProperty(Phaser.Text.prototype, 'boundsAlignH', { - - get: function() { - return this.style.boundsAlignH; - }, - - set: function(value) { - - if (value !== this.style.boundsAlignH) - { - this.style.boundsAlignH = value; - this.dirty = true; - } - - } - -}); - -/** -* Vertical alignment of the text within the `textBounds`. Can be: 'top', 'middle' or 'bottom'. -* @name Phaser.Text#boundsAlignV -* @property {string} boundsAlignV -*/ -Object.defineProperty(Phaser.Text.prototype, 'boundsAlignV', { - - get: function() { - return this.style.boundsAlignV; - }, - - set: function(value) { - - if (value !== this.style.boundsAlignV) - { - this.style.boundsAlignV = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#stroke -* @property {string} stroke - A canvas fillstyle that will be used on the text stroke eg 'blue', '#FCFF00'. -*/ -Object.defineProperty(Phaser.Text.prototype, 'stroke', { - - get: function() { - return this.style.stroke; - }, - - set: function(value) { - - if (value !== this.style.stroke) - { - this.style.stroke = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#strokeThickness -* @property {number} strokeThickness - A number that represents the thickness of the stroke. Default is 0 (no stroke) -*/ -Object.defineProperty(Phaser.Text.prototype, 'strokeThickness', { - - get: function() { - return this.style.strokeThickness; - }, - - set: function(value) { - - if (value !== this.style.strokeThickness) - { - this.style.strokeThickness = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#wordWrap -* @property {boolean} wordWrap - Indicates if word wrap should be used. -*/ -Object.defineProperty(Phaser.Text.prototype, 'wordWrap', { - - get: function() { - return this.style.wordWrap; - }, - - set: function(value) { - - if (value !== this.style.wordWrap) - { - this.style.wordWrap = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#wordWrapWidth -* @property {number} wordWrapWidth - The width at which text will wrap. -*/ -Object.defineProperty(Phaser.Text.prototype, 'wordWrapWidth', { - - get: function() { - return this.style.wordWrapWidth; - }, - - set: function(value) { - - if (value !== this.style.wordWrapWidth) - { - this.style.wordWrapWidth = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#lineSpacing -* @property {number} lineSpacing - Additional spacing (in pixels) between each line of text if multi-line. -*/ -Object.defineProperty(Phaser.Text.prototype, 'lineSpacing', { - - get: function() { - return this._lineSpacing; - }, - - set: function(value) { - - if (value !== this._lineSpacing) - { - this._lineSpacing = parseFloat(value); - this.dirty = true; - - if (this.parent) - { - this.updateTransform(); - } - } - - } - -}); - -/** -* @name Phaser.Text#shadowOffsetX -* @property {number} shadowOffsetX - The shadowOffsetX value in pixels. This is how far offset horizontally the shadow effect will be. -*/ -Object.defineProperty(Phaser.Text.prototype, 'shadowOffsetX', { - - get: function() { - return this.style.shadowOffsetX; - }, - - set: function(value) { - - if (value !== this.style.shadowOffsetX) - { - this.style.shadowOffsetX = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#shadowOffsetY -* @property {number} shadowOffsetY - The shadowOffsetY value in pixels. This is how far offset vertically the shadow effect will be. -*/ -Object.defineProperty(Phaser.Text.prototype, 'shadowOffsetY', { - - get: function() { - return this.style.shadowOffsetY; - }, - - set: function(value) { - - if (value !== this.style.shadowOffsetY) - { - this.style.shadowOffsetY = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#shadowColor -* @property {string} shadowColor - The color of the shadow, as given in CSS rgba format. Set the alpha component to 0 to disable the shadow. -*/ -Object.defineProperty(Phaser.Text.prototype, 'shadowColor', { - - get: function() { - return this.style.shadowColor; - }, - - set: function(value) { - - if (value !== this.style.shadowColor) - { - this.style.shadowColor = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#shadowBlur -* @property {number} shadowBlur - The shadowBlur value. Make the shadow softer by applying a Gaussian blur to it. A number from 0 (no blur) up to approx. 10 (depending on scene). -*/ -Object.defineProperty(Phaser.Text.prototype, 'shadowBlur', { - - get: function() { - return this.style.shadowBlur; - }, - - set: function(value) { - - if (value !== this.style.shadowBlur) - { - this.style.shadowBlur = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#shadowStroke -* @property {boolean} shadowStroke - Sets if the drop shadow is applied to the Text stroke. -*/ -Object.defineProperty(Phaser.Text.prototype, 'shadowStroke', { - - get: function() { - return this.style.shadowStroke; - }, - - set: function(value) { - - if (value !== this.style.shadowStroke) - { - this.style.shadowStroke = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#shadowFill -* @property {boolean} shadowFill - Sets if the drop shadow is applied to the Text fill. -*/ -Object.defineProperty(Phaser.Text.prototype, 'shadowFill', { - - get: function() { - return this.style.shadowFill; - }, - - set: function(value) { - - if (value !== this.style.shadowFill) - { - this.style.shadowFill = value; - this.dirty = true; - } - - } - -}); - -/** -* @name Phaser.Text#width -* @property {number} width - The width of the Text. Setting this will modify the scale to achieve the value requested. -*/ -Object.defineProperty(Phaser.Text.prototype, 'width', { - - get: function() { - - if (this.dirty) - { - this.updateText(); - this.dirty = false; - } - - return this.scale.x * this.texture.frame.width; - }, - - set: function(value) { - - this.scale.x = value / this.texture.frame.width; - this._width = value; - } - -}); - -/** -* @name Phaser.Text#height -* @property {number} height - The height of the Text. Setting this will modify the scale to achieve the value requested. -*/ -Object.defineProperty(Phaser.Text.prototype, 'height', { - - get: function() { - - if (this.dirty) - { - this.updateText(); - this.dirty = false; - } - - return this.scale.y * this.texture.frame.height; - }, - - set: function(value) { - - this.scale.y = value / this.texture.frame.height; - this._height = value; - } - -}); - -Phaser.Text.fontPropertiesCache = {}; - -Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); -Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* BitmapText objects work by taking a texture file and an XML or JSON file that describes the font structure. -* It then generates a new Sprite object for each letter of the text, proportionally spaced out and aligned to -* match the font structure. -* -* BitmapText objects are less flexible than Text objects, in that they have less features such as shadows, fills and the ability -* to use Web Fonts, however you trade this flexibility for rendering speed. You can also create visually compelling BitmapTexts by -* processing the font texture in an image editor, applying fills and any other effects required. -* -* To create multi-line text insert \r, \n or \r\n escape codes into the text string. -* -* If you are having performance issues due to the volume of sprites being rendered, and do not require the text to be constantly -* updating, you can use BitmapText.generateTexture to create a static texture from this BitmapText. -* -* To create a BitmapText data files you can use: -* -* BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ -* Glyph Designer (OS X, commercial): http://www.71squared.com/en/glyphdesigner -* Littera (Web-based, free): http://kvazars.com/littera/ -* -* For most use cases it is recommended to use XML. If you wish to use JSON, the formatting should be equal to the result of -* converting a valid XML file through the popular X2JS library. An online tool for conversion can be found here: http://codebeautify.org/xmltojson -* -* If you were using an older version of Phaser (< 2.4) and using the DOMish parser hack, please remove this. It isn't required any longer. -* -* @class Phaser.BitmapText -* @constructor -* @extends PIXI.DisplayObjectContainer -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - X coordinate to display the BitmapText object at. -* @param {number} y - Y coordinate to display the BitmapText object at. -* @param {string} font - The key of the BitmapText as stored in Phaser.Cache. -* @param {string} [text=''] - The text that will be rendered. This can also be set later via BitmapText.text. -* @param {number} [size=32] - The size the font will be rendered at in pixels. -* @param {string} [align='left'] - The alignment of multi-line text. Has no effect if there is only one line of text. -*/ -Phaser.BitmapText = function (game, x, y, font, text, size, align) { - - x = x || 0; - y = y || 0; - font = font || ''; - text = text || ''; - size = size || 32; - align = align || 'left'; - - PIXI.DisplayObjectContainer.call(this); - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.BITMAPTEXT; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * @property {number} textWidth - The width in pixels of the overall text area, taking into consideration multi-line text. - * @readOnly - */ - this.textWidth = 0; - - /** - * @property {number} textHeight - The height in pixels of the overall text area, taking into consideration multi-line text. - * @readOnly - */ - this.textHeight = 0; - - /** - * @property {Phaser.Point} anchor - The anchor value of this BitmapText. - */ - this.anchor = new Phaser.Point(); - - /** - * @property {Phaser.Point} _prevAnchor - The previous anchor value. - * @private - */ - this._prevAnchor = new Phaser.Point(); - - /** - * @property {array} _glyphs - Private tracker for the letter sprite pool. - * @private - */ - this._glyphs = []; - - /** - * @property {number} _maxWidth - Internal cache var. - * @private - */ - this._maxWidth = 0; - - /** - * @property {string} _text - Internal cache var. - * @private - */ - this._text = text.toString() || ''; - - /** - * @property {string} _data - Internal cache var. - * @private - */ - this._data = game.cache.getBitmapFont(font); - - /** - * @property {string} _font - Internal cache var. - * @private - */ - this._font = font; - - /** - * @property {number} _fontSize - Internal cache var. - * @private - */ - this._fontSize = size; - - /** - * @property {string} _align - Internal cache var. - * @private - */ - this._align = align; - - /** - * @property {number} _tint - Internal cache var. - * @private - */ - this._tint = 0xFFFFFF; - - this.updateText(); - - /** - * @property {boolean} dirty - The dirty state of this object. - */ - this.dirty = false; - - Phaser.Component.Core.init.call(this, game, x, y, '', null); - -}; - -Phaser.BitmapText.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -Phaser.BitmapText.prototype.constructor = Phaser.BitmapText; - -Phaser.Component.Core.install.call(Phaser.BitmapText.prototype, [ - 'Angle', - 'AutoCull', - 'Bounds', - 'Destroy', - 'FixedToCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'PhysicsBody', - 'Reset' -]); - -Phaser.BitmapText.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.BitmapText.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.BitmapText.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.BitmapText.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method -* @memberof Phaser.BitmapText -* @return {boolean} True if the BitmapText was rendered, otherwise false. -*/ -Phaser.BitmapText.prototype.preUpdate = function () { - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Automatically called by World.preUpdate. -* @method Phaser.BitmapText.prototype.postUpdate -*/ -Phaser.BitmapText.prototype.postUpdate = function () { - - Phaser.Component.PhysicsBody.postUpdate.call(this); - Phaser.Component.FixedToCamera.postUpdate.call(this); - - if (this.body && this.body.type === Phaser.Physics.ARCADE) - { - if ((this.textWidth !== this.body.sourceWidth) || (this.textHeight !== this.body.sourceHeight)) - { - this.body.setSize(this.textWidth, this.textHeight); - } - } - -}; - -/** -* The text to be displayed by this BitmapText object. -* -* It's faster to use `BitmapText.text = string`, but this is kept for backwards compatibility. -* -* @method Phaser.BitmapText.prototype.setText -* @param {string} text - The text to be displayed by this BitmapText object. -*/ -Phaser.BitmapText.prototype.setText = function (text) { - - this.text = text; - -}; - -/** -* Given the input text this will scan the characters until either a newline is encountered, -* or the line exceeds maxWidth, taking into account kerning, character widths and scaling. -* -* @method Phaser.BitmapText.prototype.scanLine -* @private -* @param {object} data - A reference to the font object in the Phaser.Cache. -* @param {float} scale - The scale of the font in relation to the texture. -* @param {string} text - The text to parse. -* @return {object} An object containing the parsed characters, total pixel width and x offsets. -*/ -Phaser.BitmapText.prototype.scanLine = function (data, scale, text) { - - var x = 0; - var w = 0; - var lastSpace = -1; - var wrappedWidth = 0; - var prevCharCode = null; - var maxWidth = (this._maxWidth > 0) ? this._maxWidth : null; - var chars = []; - - // Let's scan the text and work out if any of the lines are > maxWidth - for (var i = 0; i < text.length; i++) - { - var end = (i === text.length - 1) ? true : false; - - if (/(?:\r\n|\r|\n)/.test(text.charAt(i))) - { - return { width: w, text: text.substr(0, i), end: end, chars: chars }; - } - else - { - var charCode = text.charCodeAt(i); - var charData = data.chars[charCode]; - - var c = 0; - - // If the character data isn't found in the data array - // then we replace it with a blank space - if (charData === undefined) - { - charCode = 32; - charData = data.chars[charCode]; - } - - // Adjust for kerning from previous character to this one - var kerning = (prevCharCode && charData.kerning[prevCharCode]) ? charData.kerning[prevCharCode] : 0; - - // Record the last space in the string and the current width - if (/(\s)/.test(text.charAt(i))) { - lastSpace = i; - wrappedWidth = w; - } - - // What will the line width be if we add this character to it? - c = (kerning + charData.texture.width + charData.xOffset) * scale; - - // Do we need to line-wrap? - if (maxWidth && ((w + c) >= maxWidth) && lastSpace > -1) - { - // The last space was at "lastSpace" which was "i - lastSpace" characters ago - return { width: wrappedWidth || w, text: text.substr(0, i - (i - lastSpace)), end: end, chars: chars }; - } - else - { - w += (charData.xAdvance + kerning) * scale; - - chars.push(x + (charData.xOffset + kerning) * scale); - - x += (charData.xAdvance + kerning) * scale; - - prevCharCode = charCode; - } - } - } - - return { width: w, text: text, end: end, chars: chars }; - -}; - -/** -* Given a text string this will scan each character in the string to ensure it exists -* in the BitmapText font data. If it doesn't the character is removed, or replaced with the `replace` argument. -* -* If no font data has been loaded at all this returns an empty string, as nothing can be rendered. -* -* @method Phaser.BitmapText.prototype.cleanText -* @param {string} text - The text to parse. -* @param {string} [replace=''] - The replacement string for any missing characters. -* @return {string} The cleaned text string. -*/ -Phaser.BitmapText.prototype.cleanText = function (text, replace) { - - if (replace === undefined) - { - replace = ''; - } - - var data = this._data.font; - - if (!data) - { - return ''; - } - - var re = /\r\n|\n\r|\n|\r/g; - var lines = text.replace(re, "\n").split("\n"); - - for (var i = 0; i < lines.length; i++) - { - var output = ''; - var line = lines[i]; - - for (var c = 0; c < line.length; c++) - { - if (data.chars[line.charCodeAt(c)]) - { - output = output.concat(line[c]); - } - else - { - output = output.concat(replace); - } - } - - lines[i] = output; - } - - return lines.join("\n"); - -}; - -/** -* Renders text and updates it when needed. -* -* @method Phaser.BitmapText.prototype.updateText -* @private -*/ -Phaser.BitmapText.prototype.updateText = function () { - - var data = this._data.font; - - if (!data) - { - return; - } - - var text = this.text; - var scale = this._fontSize / data.size; - var lines = []; - - var y = 0; - - this.textWidth = 0; - - do - { - var line = this.scanLine(data, scale, text); - - line.y = y; - - lines.push(line); - - if (line.width > this.textWidth) - { - this.textWidth = line.width; - } - - y += (data.lineHeight * scale); - - text = text.substr(line.text.length + 1); - - } while (line.end === false); - - this.textHeight = y; - - var t = 0; - var align = 0; - var ax = this.textWidth * this.anchor.x; - var ay = this.textHeight * this.anchor.y; - - for (var i = 0; i < lines.length; i++) - { - var line = lines[i]; - - if (this._align === 'right') - { - align = this.textWidth - line.width; - } - else if (this._align === 'center') - { - align = (this.textWidth - line.width) / 2; - } - - for (var c = 0; c < line.text.length; c++) - { - var charCode = line.text.charCodeAt(c); - var charData = data.chars[charCode]; - - if (charData === undefined) - { - charCode = 32; - charData = data.chars[charCode]; - } - - var g = this._glyphs[t]; - - if (g) - { - // Sprite already exists in the glyphs pool, so we'll reuse it for this letter - g.texture = charData.texture; - } - else - { - // We need a new sprite as the pool is empty or exhausted - g = new PIXI.Sprite(charData.texture); - g.name = line.text[c]; - this._glyphs.push(g); - } - - g.position.x = (line.chars[c] + align) - ax; - g.position.y = (line.y + (charData.yOffset * scale)) - ay; - - g.scale.set(scale); - g.tint = this.tint; - g.texture.requiresReTint = true; - - if (!g.parent) - { - this.addChild(g); - } - - t++; - } - } - - // Remove unnecessary children - // This moves them from the display list (children array) but retains them in the _glyphs pool - for (i = t; i < this._glyphs.length; i++) - { - this.removeChild(this._glyphs[i]); - } - -}; - -/** -* If a BitmapText changes from having a large number of characters to having very few characters it will cause lots of -* Sprites to be retained in the BitmapText._glyphs array. Although they are not attached to the display list they -* still take up memory while sat in the glyphs pool waiting to be re-used in the future. -* -* If you know that the BitmapText will not grow any larger then you can purge out the excess glyphs from the pool -* by calling this method. -* -* Calling this doesn't prevent you from increasing the length of the text again in the future. -* -* @method Phaser.BitmapText.prototype.purgeGlyphs -* @return {integer} The amount of glyphs removed from the pool. -*/ -Phaser.BitmapText.prototype.purgeGlyphs = function () { - - var len = this._glyphs.length; - var kept = []; - - for (var i = 0; i < this._glyphs.length; i++) - { - if (this._glyphs[i].parent !== this) - { - this._glyphs[i].destroy(); - } - else - { - kept.push(this._glyphs[i]); - } - } - - this._glyphs = []; - this._glyphs = kept; - - this.updateText(); - - return len - kept.length; - -}; - -/** -* Updates the transform of this object. -* -* @method Phaser.BitmapText.prototype.updateTransform -* @private -*/ -Phaser.BitmapText.prototype.updateTransform = function () { - - if (this.dirty || !this.anchor.equals(this._prevAnchor)) - { - this.updateText(); - this.dirty = false; - this._prevAnchor.copyFrom(this.anchor); - } - - PIXI.DisplayObjectContainer.prototype.updateTransform.call(this); - -}; - -/** -* @name Phaser.BitmapText#align -* @property {string} align - Alignment for multi-line text ('left', 'center' or 'right'), does not affect single lines of text. -*/ -Object.defineProperty(Phaser.BitmapText.prototype, 'align', { - - get: function() { - return this._align; - }, - - set: function(value) { - - if (value !== this._align && (value === 'left' || value === 'center' || value === 'right')) - { - this._align = value; - this.updateText(); - } - - } - -}); - -/** -* @name Phaser.BitmapText#tint -* @property {number} tint - The tint applied to the BitmapText. This is a hex value. Set to white to disable (0xFFFFFF) -*/ -Object.defineProperty(Phaser.BitmapText.prototype, 'tint', { - - get: function() { - return this._tint; - }, - - set: function(value) { - - if (value !== this._tint) - { - this._tint = value; - this.updateText(); - } - - } - -}); - -/** -* @name Phaser.BitmapText#font -* @property {string} font - The font the text will be rendered in, i.e. 'Arial'. Must be loaded in the browser before use. -*/ -Object.defineProperty(Phaser.BitmapText.prototype, 'font', { - - get: function() { - return this._font; - }, - - set: function(value) { - - if (value !== this._font) - { - this._font = value.trim(); - this._data = this.game.cache.getBitmapFont(this._font); - this.updateText(); - } - - } - -}); - -/** -* @name Phaser.BitmapText#fontSize -* @property {number} fontSize - The size of the font in pixels. -*/ -Object.defineProperty(Phaser.BitmapText.prototype, 'fontSize', { - - get: function() { - return this._fontSize; - }, - - set: function(value) { - - value = parseInt(value, 10); - - if (value !== this._fontSize && value > 0) - { - this._fontSize = value; - this.updateText(); - } - - } - -}); - -/** -* @name Phaser.BitmapText#text -* @property {string} text - The text to be displayed by this BitmapText object. -*/ -Object.defineProperty(Phaser.BitmapText.prototype, 'text', { - - get: function() { - return this._text; - }, - - set: function(value) { - - if (value !== this._text) - { - this._text = value.toString() || ''; - this.updateText(); - } - - } - -}); - -/** -* The maximum display width of this BitmapText in pixels. -* -* If BitmapText.text is longer than maxWidth then the lines will be automatically wrapped -* based on the last whitespace character found in the line. -* -* If no whitespace was found then no wrapping will take place and consequently the maxWidth value will not be honored. -* -* Disable maxWidth by setting the value to 0. -* -* @name Phaser.BitmapText#maxWidth -* @property {number} maxWidth - The maximum width of this BitmapText in pixels. -*/ -Object.defineProperty(Phaser.BitmapText.prototype, 'maxWidth', { - - get: function() { - - return this._maxWidth; - - }, - - set: function(value) { - - if (value !== this._maxWidth) - { - this._maxWidth = value; - this.updateText(); - } - - } - -}); - -/** -* Enable or disable texture smoothing for this BitmapText. -* -* The smoothing is applied to the BaseTexture of this font, which all letters of the text reference. -* -* Smoothing is enabled by default. -* -* @name Phaser.BitmapText#smoothed -* @property {boolean} smoothed -*/ -Object.defineProperty(Phaser.BitmapText.prototype, 'smoothed', { - - get: function() { - - return !this._data.base.scaleMode; - - }, - - set: function(value) { - - if (value) - { - this._data.base.scaleMode = 0; - } - else - { - this._data.base.scaleMode = 1; - } - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Retro Font is similar to a BitmapFont, in that it uses a texture to render the text. However unlike a BitmapFont every character in a RetroFont -* is the same size. This makes it similar to a sprite sheet. You typically find font sheets like this from old 8/16-bit games and demos. -* -* @class Phaser.RetroFont -* @extends Phaser.RenderTexture -* @constructor -* @param {Phaser.Game} game - Current game instance. -* @param {string} key - The font set graphic set as stored in the Game.Cache. -* @param {number} characterWidth - The width of each character in the font set. -* @param {number} characterHeight - The height of each character in the font set. -* @param {string} chars - The characters used in the font set, in display order. You can use the TEXT_SET consts for common font set arrangements. -* @param {number} [charsPerRow] - The number of characters per row in the font set. If not given charsPerRow will be the image width / characterWidth. -* @param {number} [xSpacing=0] - If the characters in the font set have horizontal spacing between them set the required amount here. -* @param {number} [ySpacing=0] - If the characters in the font set have vertical spacing between them set the required amount here. -* @param {number} [xOffset=0] - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. -* @param {number} [yOffset=0] - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. -*/ -Phaser.RetroFont = function (game, key, characterWidth, characterHeight, chars, charsPerRow, xSpacing, ySpacing, xOffset, yOffset) { - - if (!game.cache.checkImageKey(key)) - { - return false; - } - - if (charsPerRow === undefined || charsPerRow === null) - { - charsPerRow = game.cache.getImage(key).width / characterWidth; - } - - /** - * @property {number} characterWidth - The width of each character in the font set. - */ - this.characterWidth = characterWidth; - - /** - * @property {number} characterHeight - The height of each character in the font set. - */ - this.characterHeight = characterHeight; - - /** - * @property {number} characterSpacingX - If the characters in the font set have horizontal spacing between them set the required amount here. - */ - this.characterSpacingX = xSpacing || 0; - - /** - * @property {number} characterSpacingY - If the characters in the font set have vertical spacing between them set the required amount here. - */ - this.characterSpacingY = ySpacing || 0; - - /** - * @property {number} characterPerRow - The number of characters per row in the font set. - */ - this.characterPerRow = charsPerRow; - - /** - * @property {number} offsetX - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. - * @readonly - */ - this.offsetX = xOffset || 0; - - /** - * @property {number} offsetY - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. - * @readonly - */ - this.offsetY = yOffset || 0; - - /** - * @property {string} align - Alignment of the text when multiLine = true or a fixedWidth is set. Set to RetroFont.ALIGN_LEFT (default), RetroFont.ALIGN_RIGHT or RetroFont.ALIGN_CENTER. - */ - this.align = "left"; - - /** - * @property {boolean} multiLine - If set to true all carriage-returns in text will form new lines (see align). If false the font will only contain one single line of text (the default) - * @default - */ - this.multiLine = false; - - /** - * @property {boolean} autoUpperCase - Automatically convert any text to upper case. Lots of old bitmap fonts only contain upper-case characters, so the default is true. - * @default - */ - this.autoUpperCase = true; - - /** - * @property {number} customSpacingX - Adds horizontal spacing between each character of the font, in pixels. - * @default - */ - this.customSpacingX = 0; - - /** - * @property {number} customSpacingY - Adds vertical spacing between each line of multi-line text, set in pixels. - * @default - */ - this.customSpacingY = 0; - - /** - * If you need this RetroFont image to have a fixed width you can set the width in this value. - * If text is wider than the width specified it will be cropped off. - * @property {number} fixedWidth - */ - this.fixedWidth = 0; - - /** - * @property {Image} fontSet - A reference to the image stored in the Game.Cache that contains the font. - */ - this.fontSet = game.cache.getImage(key); - - /** - * @property {string} _text - The text of the font image. - * @private - */ - this._text = ''; - - /** - * @property {array} grabData - An array of rects for faster character pasting. - * @private - */ - this.grabData = []; - - /** - * @property {Phaser.FrameData} frameData - The FrameData representing this Retro Font. - */ - this.frameData = new Phaser.FrameData(); - - // Now generate our rects for faster copying later on - var currentX = this.offsetX; - var currentY = this.offsetY; - var r = 0; - - for (var c = 0; c < chars.length; c++) - { - var frame = this.frameData.addFrame(new Phaser.Frame(c, currentX, currentY, this.characterWidth, this.characterHeight)); - - this.grabData[chars.charCodeAt(c)] = frame.index; - - r++; - - if (r === this.characterPerRow) - { - r = 0; - currentX = this.offsetX; - currentY += this.characterHeight + this.characterSpacingY; - } - else - { - currentX += this.characterWidth + this.characterSpacingX; - } - } - - game.cache.updateFrameData(key, this.frameData); - - /** - * @property {Phaser.Image} stamp - The image that is stamped to the RenderTexture for each character in the font. - * @readonly - */ - this.stamp = new Phaser.Image(game, 0, 0, key, 0); - - Phaser.RenderTexture.call(this, game, 100, 100, '', Phaser.scaleModes.NEAREST); - - /** - * @property {number} type - Base Phaser object type. - */ - this.type = Phaser.RETROFONT; - -}; - -Phaser.RetroFont.prototype = Object.create(Phaser.RenderTexture.prototype); -Phaser.RetroFont.prototype.constructor = Phaser.RetroFont; - -/** -* Align each line of multi-line text to the left. -* @constant -* @type {string} -*/ -Phaser.RetroFont.ALIGN_LEFT = "left"; - -/** -* Align each line of multi-line text to the right. -* @constant -* @type {string} -*/ -Phaser.RetroFont.ALIGN_RIGHT = "right"; - -/** -* Align each line of multi-line text in the center. -* @constant -* @type {string} -*/ -Phaser.RetroFont.ALIGN_CENTER = "center"; - -/** -* Text Set 1 = !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET1 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; - -/** -* Text Set 2 = !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET2 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - -/** -* Text Set 3 = ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 "; - -/** -* Text Set 4 = ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"; - -/** -* Text Set 5 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789 -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET5 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789"; - -/** -* Text Set 6 = ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789"(),-.' -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET6 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' "; - -/** -* Text Set 7 = AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW")28FLRX-'39 -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET7 = "AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39"; - -/** -* Text Set 8 = 0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET8 = "0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - -/** -* Text Set 9 = ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'"?! -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET9 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!"; - -/** -* Text Set 10 = ABCDEFGHIJKLMNOPQRSTUVWXYZ -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET10 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - -/** -* Text Set 11 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,"-+!?()':;0123456789 -* @constant -* @type {string} -*/ -Phaser.RetroFont.TEXT_SET11 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789"; - -/** -* If you need this RetroFont to have a fixed width and custom alignment you can set the width here. -* If text is wider than the width specified it will be cropped off. -* -* @method Phaser.RetroFont#setFixedWidth -* @memberof Phaser.RetroFont -* @param {number} width - Width in pixels of this RetroFont. Set to zero to disable and re-enable automatic resizing. -* @param {string} [lineAlignment='left'] - Align the text within this width. Set to RetroFont.ALIGN_LEFT (default), RetroFont.ALIGN_RIGHT or RetroFont.ALIGN_CENTER. -*/ -Phaser.RetroFont.prototype.setFixedWidth = function (width, lineAlignment) { - - if (lineAlignment === undefined) { lineAlignment = 'left'; } - - this.fixedWidth = width; - this.align = lineAlignment; - -}; - -/** -* A helper function that quickly sets lots of variables at once, and then updates the text. -* -* @method Phaser.RetroFont#setText -* @memberof Phaser.RetroFont -* @param {string} content - The text of this sprite. -* @param {boolean} [multiLine=false] - Set to true if you want to support carriage-returns in the text and create a multi-line sprite instead of a single line. -* @param {number} [characterSpacing=0] - To add horizontal spacing between each character specify the amount in pixels. -* @param {number} [lineSpacing=0] - To add vertical spacing between each line of text, set the amount in pixels. -* @param {string} [lineAlignment='left'] - Align each line of multi-line text. Set to RetroFont.ALIGN_LEFT, RetroFont.ALIGN_RIGHT or RetroFont.ALIGN_CENTER. -* @param {boolean} [allowLowerCase=false] - Lots of bitmap font sets only include upper-case characters, if yours needs to support lower case then set this to true. -*/ -Phaser.RetroFont.prototype.setText = function (content, multiLine, characterSpacing, lineSpacing, lineAlignment, allowLowerCase) { - - this.multiLine = multiLine || false; - this.customSpacingX = characterSpacing || 0; - this.customSpacingY = lineSpacing || 0; - this.align = lineAlignment || 'left'; - - if (allowLowerCase) - { - this.autoUpperCase = false; - } - else - { - this.autoUpperCase = true; - } - - if (content.length > 0) - { - this.text = content; - } - -}; - -/** -* Updates the texture with the new text. -* -* @method Phaser.RetroFont#buildRetroFontText -* @memberof Phaser.RetroFont -*/ -Phaser.RetroFont.prototype.buildRetroFontText = function () { - - var cx = 0; - var cy = 0; - - // Clears the textureBuffer - this.clear(); - - if (this.multiLine) - { - var lines = this._text.split("\n"); - - if (this.fixedWidth > 0) - { - this.resize(this.fixedWidth, (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY, true); - } - else - { - this.resize(this.getLongestLine() * (this.characterWidth + this.customSpacingX), (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY, true); - } - - // Loop through each line of text - for (var i = 0; i < lines.length; i++) - { - // Phaser.RetroFont.ALIGN_LEFT - cx = 0; - - // This line of text is held in lines[i] - need to work out the alignment - if (this.align === Phaser.RetroFont.ALIGN_RIGHT) - { - cx = this.width - (lines[i].length * (this.characterWidth + this.customSpacingX)); - } - else if (this.align === Phaser.RetroFont.ALIGN_CENTER) - { - cx = (this.width / 2) - ((lines[i].length * (this.characterWidth + this.customSpacingX)) / 2); - cx += this.customSpacingX / 2; - } - - // Sanity checks - if (cx < 0) - { - cx = 0; - } - - this.pasteLine(lines[i], cx, cy, this.customSpacingX); - - cy += this.characterHeight + this.customSpacingY; - } - } - else - { - if (this.fixedWidth > 0) - { - this.resize(this.fixedWidth, this.characterHeight, true); - } - else - { - this.resize(this._text.length * (this.characterWidth + this.customSpacingX), this.characterHeight, true); - } - - // Phaser.RetroFont.ALIGN_LEFT - cx = 0; - - if (this.align === Phaser.RetroFont.ALIGN_RIGHT) - { - cx = this.width - (this._text.length * (this.characterWidth + this.customSpacingX)); - } - else if (this.align === Phaser.RetroFont.ALIGN_CENTER) - { - cx = (this.width / 2) - ((this._text.length * (this.characterWidth + this.customSpacingX)) / 2); - cx += this.customSpacingX / 2; - } - - // Sanity checks - if (cx < 0) - { - cx = 0; - } - - this.pasteLine(this._text, cx, 0, this.customSpacingX); - } - - this.requiresReTint = true; - -}; - -/** -* Internal function that takes a single line of text (2nd parameter) and pastes it into the BitmapData at the given coordinates. -* Used by getLine and getMultiLine -* -* @method Phaser.RetroFont#pasteLine -* @memberof Phaser.RetroFont -* @param {string} line - The single line of text to paste. -* @param {number} x - The x coordinate. -* @param {number} y - The y coordinate. -* @param {number} customSpacingX - Custom X spacing. -*/ -Phaser.RetroFont.prototype.pasteLine = function (line, x, y, customSpacingX) { - - for (var c = 0; c < line.length; c++) - { - // If it's a space then there is no point copying, so leave a blank space - if (line.charAt(c) === " ") - { - x += this.characterWidth + customSpacingX; - } - else - { - // If the character doesn't exist in the font then we don't want a blank space, we just want to skip it - if (this.grabData[line.charCodeAt(c)] >= 0) - { - this.stamp.frame = this.grabData[line.charCodeAt(c)]; - this.renderXY(this.stamp, x, y, false); - - x += this.characterWidth + customSpacingX; - - if (x > this.width) - { - break; - } - } - } - } -}; - -/** -* Works out the longest line of text in _text and returns its length -* -* @method Phaser.RetroFont#getLongestLine -* @memberof Phaser.RetroFont -* @return {number} The length of the longest line of text. -*/ -Phaser.RetroFont.prototype.getLongestLine = function () { - - var longestLine = 0; - - if (this._text.length > 0) - { - var lines = this._text.split("\n"); - - for (var i = 0; i < lines.length; i++) - { - if (lines[i].length > longestLine) - { - longestLine = lines[i].length; - } - } - } - - return longestLine; -}; - -/** -* Internal helper function that removes all unsupported characters from the _text String, leaving only characters contained in the font set. -* -* @method Phaser.RetroFont#removeUnsupportedCharacters -* @memberof Phaser.RetroFont -* @protected -* @param {boolean} [stripCR=true] - Should it strip carriage returns as well? -* @return {string} A clean version of the string. -*/ -Phaser.RetroFont.prototype.removeUnsupportedCharacters = function (stripCR) { - - var newString = ""; - - for (var c = 0; c < this._text.length; c++) - { - var aChar = this._text[c]; - var code = aChar.charCodeAt(0); - - if (this.grabData[code] >= 0 || (!stripCR && aChar === "\n")) - { - newString = newString.concat(aChar); - } - } - - return newString; - -}; - -/** -* Updates the x and/or y offset that the font is rendered from. This updates all of the texture frames, so be careful how often it is called. -* Note that the values given for the x and y properties are either ADDED to or SUBTRACTED from (if negative) the existing offsetX/Y values of the characters. -* So if the current offsetY is 8 and you want it to start rendering from y16 you would call updateOffset(0, 8) to add 8 to the current y offset. -* -* @method Phaser.RetroFont#updateOffset -* @memberof Phaser.RetroFont -* @param {number} [xOffset=0] - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. -* @param {number} [yOffset=0] - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. -*/ -Phaser.RetroFont.prototype.updateOffset = function (x, y) { - - if (this.offsetX === x && this.offsetY === y) - { - return; - } - - var diffX = x - this.offsetX; - var diffY = y - this.offsetY; - - var frames = this.game.cache.getFrameData(this.stamp.key).getFrames(); - var i = frames.length; - - while (i--) - { - frames[i].x += diffX; - frames[i].y += diffY; - } - - this.buildRetroFontText(); - -}; - -/** -* @name Phaser.RetroFont#text -* @property {string} text - Set this value to update the text in this sprite. Carriage returns are automatically stripped out if multiLine is false. Text is converted to upper case if autoUpperCase is true. -*/ -Object.defineProperty(Phaser.RetroFont.prototype, "text", { - - get: function () { - - return this._text; - - }, - - set: function (value) { - - var newText; - - if (this.autoUpperCase) - { - newText = value.toUpperCase(); - } - else - { - newText = value; - } - - if (newText !== this._text) - { - this._text = newText; - - this.removeUnsupportedCharacters(this.multiLine); - - this.buildRetroFontText(); - } - - } - -}); - -/** -* @name Phaser.RetroFont#smoothed -* @property {boolean} smoothed - Sets if the stamp is smoothed or not. -*/ -Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { - - get: function () { - - return this.stamp.smoothed; - - }, - - set: function (value) { - - this.stamp.smoothed = value; - this.buildRetroFontText(); - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd, Richard Davey -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Rope is a Sprite that has a repeating texture. -* -* The texture will automatically wrap on the edges as it moves. -* -* Please note that Ropes cannot have an input handler. -* -* @class Phaser.Rope -* @constructor -* @extends PIXI.Rope -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Crop -* @extends Phaser.Component.Delta -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.ScaleMinMax -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Rope at. -* @param {number} y - The y coordinate (in world space) to position the Rope at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Rope during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @param {Array} points - An array of {Phaser.Point}. -*/ -Phaser.Rope = function (game, x, y, key, frame, points) { - - this.points = []; - this.points = points; - this._hasUpdateAnimation = false; - this._updateAnimationCallback = null; - x = x || 0; - y = y || 0; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.ROPE; - - PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.Rope.prototype = Object.create(PIXI.Rope.prototype); -Phaser.Rope.prototype.constructor = Phaser.Rope; - -Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Crop', - 'Delta', - 'Destroy', - 'FixedToCamera', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'ScaleMinMax', - 'Smoothed' -]); - -Phaser.Rope.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.Rope.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.Rope.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Rope#preUpdate -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.preUpdate = function() { - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Override and use this function in your own custom objects to handle any update requirements you may have. -* -* @method Phaser.Rope#update -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.update = function() { - - if (this._hasUpdateAnimation) - { - this.updateAnimation.call(this); - } - -}; - -/** -* Resets the Rope. This places the Rope at the given x/y world coordinates and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the Rope has a physics body that too is reset. -* -* @method Phaser.Rope#reset -* @memberof Phaser.Rope -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return {Phaser.Rope} This instance. -*/ -Phaser.Rope.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - return this; - -}; - -/** -* A Rope will call its updateAnimation function on each update loop if it has one. -* -* @name Phaser.Rope#updateAnimation -* @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. -*/ -Object.defineProperty(Phaser.Rope.prototype, "updateAnimation", { - - get: function () { - - return this._updateAnimation; - - }, - - set: function (value) { - - if (value && typeof value === 'function') - { - this._hasUpdateAnimation = true; - this._updateAnimation = value; - } - else - { - this._hasUpdateAnimation = false; - this._updateAnimation = null; - } - - } - -}); - -/** -* The segments that make up the rope body as an array of Phaser.Rectangles -* -* @name Phaser.Rope#segments -* @property {Phaser.Rectangles[]} updateAnimation - Returns an array of Phaser.Rectangles that represent the segments of the given rope -*/ -Object.defineProperty(Phaser.Rope.prototype, "segments", { - - get: function() { - - var segments = []; - var index, x1, y1, x2, y2, width, height, rect; - - for (var i = 0; i < this.points.length; i++) - { - index = i * 4; - - x1 = this.vertices[index] * this.scale.x; - y1 = this.vertices[index + 1] * this.scale.y; - x2 = this.vertices[index + 4] * this.scale.x; - y2 = this.vertices[index + 3] * this.scale.y; - - width = Phaser.Math.difference(x1, x2); - height = Phaser.Math.difference(y1, y2); - - x1 += this.world.x; - y1 += this.world.y; - rect = new Phaser.Rectangle(x1, y1, width, height); - segments.push(rect); - } - - return segments; - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A TileSprite is a Sprite that has a repeating texture. The texture can be scrolled and scaled independently of the TileSprite itself. -* Textures will automatically wrap and are designed so that you can create game backdrops using seamless textures as a source. -* -* TileSprites have no input handler or physics bodies by default, both need enabling in the same way as for normal Sprites. -* -* You shouldn't ever create a TileSprite any larger than your actual screen size. If you want to create a large repeating background -* that scrolls across the whole map of your game, then you create a TileSprite that fits the screen size and then use the `tilePosition` -* property to scroll the texture as the player moves. If you create a TileSprite that is thousands of pixels in size then it will -* consume huge amounts of memory and cause performance issues. Remember: use `tilePosition` to scroll your texture and `tileScale` to -* adjust the scale of the texture - don't resize the sprite itself or make it larger than it needs. -* -* An important note about texture dimensions: -* -* When running under Canvas a TileSprite can use any texture size without issue. When running under WebGL the texture should ideally be -* a power of two in size (i.e. 4, 8, 16, 32, 64, 128, 256, 512, etch pixels width by height). If the texture isn't a power of two -* it will be rendered to a blank canvas that is the correct size, which means you may have 'blank' areas appearing to the right and -* bottom of your frame. To avoid this ensure your textures are perfect powers of two. -* -* TileSprites support animations in the same way that Sprites do. You add and play animations using the AnimationManager. However -* if your game is running under WebGL please note that each frame of the animation must be a power of two in size, or it will receive -* additional padding to enforce it to be so. -* -* @class Phaser.TileSprite -* @constructor -* @extends PIXI.TilingSprite -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.Health -* @extends Phaser.Component.InCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the TileSprite at. -* @param {number} y - The y coordinate (in world space) to position the TileSprite at. -* @param {number} width - The width of the TileSprite. -* @param {number} height - The height of the TileSprite. -* @param {string|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a PIXI.Texture or BitmapData. -* @param {string|number} frame - If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.TileSprite = function (game, x, y, width, height, key, frame) { - - x = x || 0; - y = y || 0; - width = width || 256; - height = height || 256; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.TILESPRITE; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - var def = game.cache.getImage('__default', true); - - PIXI.TilingSprite.call(this, new PIXI.Texture(def.base), width, height); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.TileSprite.prototype = Object.create(PIXI.TilingSprite.prototype); -Phaser.TileSprite.prototype.constructor = Phaser.TileSprite; - -Phaser.Component.Core.install.call(Phaser.TileSprite.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Destroy', - 'FixedToCamera', - 'Health', - 'InCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'Smoothed' -]); - -Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.TileSprite#preUpdate -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Sets this TileSprite to automatically scroll in the given direction until stopped via TileSprite.stopScroll(). -* The scroll speed is specified in pixels per second. -* A negative x value will scroll to the left. A positive x value will scroll to the right. -* A negative y value will scroll up. A positive y value will scroll down. -* -* @method Phaser.TileSprite#autoScroll -* @memberof Phaser.TileSprite -* @param {number} x - Horizontal scroll speed in pixels per second. -* @param {number} y - Vertical scroll speed in pixels per second. -*/ -Phaser.TileSprite.prototype.autoScroll = function(x, y) { - - this._scroll.set(x, y); - -}; - -/** -* Stops an automatically scrolling TileSprite. -* -* @method Phaser.TileSprite#stopScroll -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.stopScroll = function() { - - this._scroll.set(0, 0); - -}; - -/** -* Destroys the TileSprite. This removes it from its parent group, destroys the event and animation handlers if present -* and nulls its reference to game, freeing it up for garbage collection. -* -* @method Phaser.TileSprite#destroy -* @memberof Phaser.TileSprite -* @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called? -*/ -Phaser.TileSprite.prototype.destroy = function(destroyChildren) { - - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); - - PIXI.TilingSprite.prototype.destroy.call(this); - -}; - -/** -* Resets the TileSprite. This places the TileSprite at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the TileSprite has a physics body that too is reset. -* -* @method Phaser.TileSprite#reset -* @memberof Phaser.TileSprite -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return {Phaser.TileSprite} This instance. -*/ -Phaser.TileSprite.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @classdesc -* Detects device support capabilities and is responsible for device initialization - see {@link Phaser.Device.whenReady whenReady}. -* -* This class represents a singleton object that can be accessed directly as `game.device` -* (or, as a fallback, `Phaser.Device` when a game instance is not available) without the need to instantiate it. -* -* Unless otherwise noted the device capabilities are only guaranteed after initialization. Initialization -* occurs automatically and is guaranteed complete before {@link Phaser.Game} begins its "boot" phase. -* Feature detection can be modified in the {@link Phaser.Device.onInitialized onInitialized} signal. -* -* When checking features using the exposed properties only the *truth-iness* of the value should be relied upon -* unless the documentation states otherwise: properties may return `false`, `''`, `null`, or even `undefined` -* when indicating the lack of a feature. -* -* Uses elements from System.js by MrDoob and Modernizr -* -* @description -* It is not possible to instantiate the Device class manually. -* -* @class -* @protected -*/ -Phaser.Device = function () { - - /** - * The time the device became ready. - * @property {integer} deviceReadyAt - * @protected - */ - this.deviceReadyAt = 0; - - /** - * The time as which initialization has completed. - * @property {boolean} initialized - * @protected - */ - this.initialized = false; - - // Browser / Host / Operating System - - /** - * @property {boolean} desktop - Is running on a desktop? - * @default - */ - this.desktop = false; - - /** - * @property {boolean} iOS - Is running on iOS? - * @default - */ - this.iOS = false; - - /** - * @property {number} iOSVersion - If running in iOS this will contain the major version number. - * @default - */ - this.iOSVersion = 0; - - /** - * @property {boolean} cocoonJS - Is the game running under CocoonJS? - * @default - */ - this.cocoonJS = false; - - /** - * @property {boolean} cocoonJSApp - Is this game running with CocoonJS.App? - * @default - */ - this.cocoonJSApp = false; - - /** - * @property {boolean} cordova - Is the game running under Apache Cordova? - * @default - */ - this.cordova = false; - - /** - * @property {boolean} node - Is the game running under Node.js? - * @default - */ - this.node = false; - - /** - * @property {boolean} nodeWebkit - Is the game running under Node-Webkit? - * @default - */ - this.nodeWebkit = false; - - /** - * @property {boolean} electron - Is the game running under GitHub Electron? - * @default - */ - this.electron = false; - - /** - * @property {boolean} ejecta - Is the game running under Ejecta? - * @default - */ - this.ejecta = false; - - /** - * @property {boolean} crosswalk - Is the game running under the Intel Crosswalk XDK? - * @default - */ - this.crosswalk = false; - - /** - * @property {boolean} android - Is running on android? - * @default - */ - this.android = false; - - /** - * @property {boolean} chromeOS - Is running on chromeOS? - * @default - */ - this.chromeOS = false; - - /** - * @property {boolean} linux - Is running on linux? - * @default - */ - this.linux = false; - - /** - * @property {boolean} macOS - Is running on macOS? - * @default - */ - this.macOS = false; - - /** - * @property {boolean} windows - Is running on windows? - * @default - */ - this.windows = false; - - /** - * @property {boolean} windowsPhone - Is running on a Windows Phone? - * @default - */ - this.windowsPhone = false; - - // Features - - /** - * @property {boolean} canvas - Is canvas available? - * @default - */ - this.canvas = false; - - /** - * @property {?boolean} canvasBitBltShift - True if canvas supports a 'copy' bitblt onto itself when the source and destination regions overlap. - * @default - */ - this.canvasBitBltShift = null; - - /** - * @property {boolean} webGL - Is webGL available? - * @default - */ - this.webGL = false; - - /** - * @property {boolean} file - Is file available? - * @default - */ - this.file = false; - - /** - * @property {boolean} fileSystem - Is fileSystem available? - * @default - */ - this.fileSystem = false; - - /** - * @property {boolean} localStorage - Is localStorage available? - * @default - */ - this.localStorage = false; - - /** - * @property {boolean} worker - Is worker available? - * @default - */ - this.worker = false; - - /** - * @property {boolean} css3D - Is css3D available? - * @default - */ - this.css3D = false; - - /** - * @property {boolean} pointerLock - Is Pointer Lock available? - * @default - */ - this.pointerLock = false; - - /** - * @property {boolean} typedArray - Does the browser support TypedArrays? - * @default - */ - this.typedArray = false; - - /** - * @property {boolean} vibration - Does the device support the Vibration API? - * @default - */ - this.vibration = false; - - /** - * @property {boolean} getUserMedia - Does the device support the getUserMedia API? - * @default - */ - this.getUserMedia = true; - - /** - * @property {boolean} quirksMode - Is the browser running in strict mode (false) or quirks mode? (true) - * @default - */ - this.quirksMode = false; - - // Input - - /** - * @property {boolean} touch - Is touch available? - * @default - */ - this.touch = false; - - /** - * @property {boolean} mspointer - Is mspointer available? - * @default - */ - this.mspointer = false; - - /** - * @property {?string} wheelType - The newest type of Wheel/Scroll event supported: 'wheel', 'mousewheel', 'DOMMouseScroll' - * @default - * @protected - */ - this.wheelEvent = null; - - // Browser - - /** - * @property {boolean} arora - Set to true if running in Arora. - * @default - */ - this.arora = false; - - /** - * @property {boolean} chrome - Set to true if running in Chrome. - * @default - */ - this.chrome = false; - - /** - * @property {number} chromeVersion - If running in Chrome this will contain the major version number. - * @default - */ - this.chromeVersion = 0; - - /** - * @property {boolean} epiphany - Set to true if running in Epiphany. - * @default - */ - this.epiphany = false; - - /** - * @property {boolean} firefox - Set to true if running in Firefox. - * @default - */ - this.firefox = false; - - /** - * @property {number} firefoxVersion - If running in Firefox this will contain the major version number. - * @default - */ - this.firefoxVersion = 0; - - /** - * @property {boolean} ie - Set to true if running in Internet Explorer. - * @default - */ - this.ie = false; - - /** - * @property {number} ieVersion - If running in Internet Explorer this will contain the major version number. Beyond IE10 you should use Device.trident and Device.tridentVersion. - * @default - */ - this.ieVersion = 0; - - /** - * @property {boolean} trident - Set to true if running a Trident version of Internet Explorer (IE11+) - * @default - */ - this.trident = false; - - /** - * @property {number} tridentVersion - If running in Internet Explorer 11 this will contain the major version number. See {@link http://msdn.microsoft.com/en-us/library/ie/ms537503(v=vs.85).aspx} - * @default - */ - this.tridentVersion = 0; - - /** - * @property {boolean} edge - Set to true if running in Microsoft Edge browser. - * @default - */ - this.edge = false; - - /** - * @property {boolean} mobileSafari - Set to true if running in Mobile Safari. - * @default - */ - this.mobileSafari = false; - - /** - * @property {boolean} midori - Set to true if running in Midori. - * @default - */ - this.midori = false; - - /** - * @property {boolean} opera - Set to true if running in Opera. - * @default - */ - this.opera = false; - - /** - * @property {boolean} safari - Set to true if running in Safari. - * @default - */ - this.safari = false; - - /** - * @property {number} safariVersion - If running in Safari this will contain the major version number. - * @default - */ - this.safariVersion = 0; - - /** - * @property {boolean} webApp - Set to true if running as a WebApp, i.e. within a WebView - * @default - */ - this.webApp = false; - - /** - * @property {boolean} silk - Set to true if running in the Silk browser (as used on the Amazon Kindle) - * @default - */ - this.silk = false; - - // Audio - - /** - * @property {boolean} audioData - Are Audio tags available? - * @default - */ - this.audioData = false; - - /** - * @property {boolean} webAudio - Is the WebAudio API available? - * @default - */ - this.webAudio = false; - - /** - * @property {boolean} ogg - Can this device play ogg files? - * @default - */ - this.ogg = false; - - /** - * @property {boolean} opus - Can this device play opus files? - * @default - */ - this.opus = false; - - /** - * @property {boolean} mp3 - Can this device play mp3 files? - * @default - */ - this.mp3 = false; - - /** - * @property {boolean} wav - Can this device play wav files? - * @default - */ - this.wav = false; - - /** - * Can this device play m4a files? - * @property {boolean} m4a - True if this device can play m4a files. - * @default - */ - this.m4a = false; - - /** - * @property {boolean} webm - Can this device play webm files? - * @default - */ - this.webm = false; - - /** - * @property {boolean} dolby - Can this device play EC-3 Dolby Digital Plus files? - * @default - */ - this.dolby = false; - - // Video - - /** - * @property {boolean} oggVideo - Can this device play ogg video files? - * @default - */ - this.oggVideo = false; - - /** - * @property {boolean} h264Video - Can this device play h264 mp4 video files? - * @default - */ - this.h264Video = false; - - /** - * @property {boolean} mp4Video - Can this device play h264 mp4 video files? - * @default - */ - this.mp4Video = false; - - /** - * @property {boolean} webmVideo - Can this device play webm video files? - * @default - */ - this.webmVideo = false; - - /** - * @property {boolean} vp9Video - Can this device play vp9 video files? - * @default - */ - this.vp9Video = false; - - /** - * @property {boolean} hlsVideo - Can this device play hls video files? - * @default - */ - this.hlsVideo = false; - - // Device - - /** - * @property {boolean} iPhone - Is running on iPhone? - * @default - */ - this.iPhone = false; - - /** - * @property {boolean} iPhone4 - Is running on iPhone4? - * @default - */ - this.iPhone4 = false; - - /** - * @property {boolean} iPad - Is running on iPad? - * @default - */ - this.iPad = false; - - // Device features - - /** - * @property {number} pixelRatio - PixelRatio of the host device? - * @default - */ - this.pixelRatio = 0; - - /** - * @property {boolean} littleEndian - Is the device big or little endian? (only detected if the browser supports TypedArrays) - * @default - */ - this.littleEndian = false; - - /** - * @property {boolean} LITTLE_ENDIAN - Same value as `littleEndian`. - * @default - */ - this.LITTLE_ENDIAN = false; - - /** - * @property {boolean} support32bit - Does the device context support 32bit pixel manipulation using array buffer views? - * @default - */ - this.support32bit = false; - - /** - * @property {boolean} fullscreen - Does the browser support the Full Screen API? - * @default - */ - this.fullscreen = false; - - /** - * @property {string} requestFullscreen - If the browser supports the Full Screen API this holds the call you need to use to activate it. - * @default - */ - this.requestFullscreen = ''; - - /** - * @property {string} cancelFullscreen - If the browser supports the Full Screen API this holds the call you need to use to cancel it. - * @default - */ - this.cancelFullscreen = ''; - - /** - * @property {boolean} fullscreenKeyboard - Does the browser support access to the Keyboard during Full Screen mode? - * @default - */ - this.fullscreenKeyboard = false; - -}; - -// Device is really a singleton/static entity; instantiate it -// and add new methods directly sans-prototype. -Phaser.Device = new Phaser.Device(); - -/** -* This signal is dispatched after device initialization occurs but before any of the ready -* callbacks (see {@link Phaser.Device.whenReady whenReady}) have been invoked. -* -* Local "patching" for a particular device can/should be done in this event. -* -* _Note_: This signal is removed after the device has been readied; if a handler has not been -* added _before_ `new Phaser.Game(..)` it is probably too late. -* -* @type {?Phaser.Signal} -* @static -*/ -Phaser.Device.onInitialized = new Phaser.Signal(); - -/** -* Add a device-ready handler and ensure the device ready sequence is started. -* -* Phaser.Device will _not_ activate or initialize until at least one `whenReady` handler is added, -* which is normally done automatically be calling `new Phaser.Game(..)`. -* -* The handler is invoked when the device is considered "ready", which may be immediately -* if the device is already "ready". See {@link Phaser.Device#deviceReadyAt deviceReadyAt}. -* -* @method -* @param {function} handler - Callback to invoke when the device is ready. It is invoked with the given context the Phaser.Device object is supplied as the first argument. -* @param {object} [context] - Context in which to invoke the handler -* @param {boolean} [nonPrimer=false] - If true the device ready check will not be started. -*/ -Phaser.Device.whenReady = function (callback, context, nonPrimer) { - - var readyCheck = this._readyCheck; - - if (this.deviceReadyAt || !readyCheck) - { - callback.call(context, this); - } - else if (readyCheck._monitor || nonPrimer) - { - readyCheck._queue = readyCheck._queue || []; - readyCheck._queue.push([callback, context]); - } - else - { - readyCheck._monitor = readyCheck.bind(this); - readyCheck._queue = readyCheck._queue || []; - readyCheck._queue.push([callback, context]); - - var cordova = typeof window.cordova !== 'undefined'; - var cocoonJS = navigator['isCocoonJS']; - - if (document.readyState === 'complete' || document.readyState === 'interactive') - { - // Why is there an additional timeout here? - window.setTimeout(readyCheck._monitor, 0); - } - else if (cordova && !cocoonJS) - { - // Ref. http://docs.phonegap.com/en/3.5.0/cordova_events_events.md.html#deviceready - // Cordova, but NOT Cocoon? - document.addEventListener('deviceready', readyCheck._monitor, false); - } - else - { - document.addEventListener('DOMContentLoaded', readyCheck._monitor, false); - window.addEventListener('load', readyCheck._monitor, false); - } - } - -}; - -/** -* Internal method used for checking when the device is ready. -* This function is removed from Phaser.Device when the device becomes ready. -* -* @method -* @private -*/ -Phaser.Device._readyCheck = function () { - - var readyCheck = this._readyCheck; - - if (!document.body) - { - window.setTimeout(readyCheck._monitor, 20); - } - else if (!this.deviceReadyAt) - { - this.deviceReadyAt = Date.now(); - - document.removeEventListener('deviceready', readyCheck._monitor); - document.removeEventListener('DOMContentLoaded', readyCheck._monitor); - window.removeEventListener('load', readyCheck._monitor); - - this._initialize(); - this.initialized = true; - - this.onInitialized.dispatch(this); - - var item; - while ((item = readyCheck._queue.shift())) - { - var callback = item[0]; - var context = item[1]; - callback.call(context, this); - } - - // Remove no longer useful methods and properties. - this._readyCheck = null; - this._initialize = null; - this.onInitialized = null; - } - -}; - -/** -* Internal method to initialize the capability checks. -* This function is removed from Phaser.Device once the device is initialized. -* -* @method -* @private -*/ -Phaser.Device._initialize = function () { - - var device = this; - - /** - * Check which OS is game running on. - */ - function _checkOS () { - - var ua = navigator.userAgent; - - if (/Playstation Vita/.test(ua)) - { - device.vita = true; - } - else if (/Kindle/.test(ua) || /\bKF[A-Z][A-Z]+/.test(ua) || /Silk.*Mobile Safari/.test(ua)) - { - device.kindle = true; - // This will NOT detect early generations of Kindle Fire, I think there is no reliable way... - // E.g. "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true" - } - else if (/Android/.test(ua)) - { - device.android = true; - } - else if (/CrOS/.test(ua)) - { - device.chromeOS = true; - } - else if (/iP[ao]d|iPhone/i.test(ua)) - { - device.iOS = true; - (navigator.appVersion).match(/OS (\d+)/); - device.iOSVersion = parseInt(RegExp.$1, 10); - } - else if (/Linux/.test(ua)) - { - device.linux = true; - } - else if (/Mac OS/.test(ua)) - { - device.macOS = true; - } - else if (/Windows/.test(ua)) - { - device.windows = true; - } - - if (/Windows Phone/i.test(ua) || /IEMobile/i.test(ua)) - { - device.android = false; - device.iOS = false; - device.macOS = false; - device.windows = true; - device.windowsPhone = true; - } - - var silk = /Silk/.test(ua); // detected in browsers - - if (device.windows || device.macOS || (device.linux && !silk) || device.chromeOS) - { - device.desktop = true; - } - - // Windows Phone / Table reset - if (device.windowsPhone || ((/Windows NT/i.test(ua)) && (/Touch/i.test(ua)))) - { - device.desktop = false; - } - - } - - /** - * Check HTML5 features of the host environment. - */ - function _checkFeatures () { - - device.canvas = !!window['CanvasRenderingContext2D'] || device.cocoonJS; - - try { - device.localStorage = !!localStorage.getItem; - } catch (error) { - device.localStorage = false; - } - - device.file = !!window['File'] && !!window['FileReader'] && !!window['FileList'] && !!window['Blob']; - device.fileSystem = !!window['requestFileSystem']; - - device.webGL = ( function () { try { var canvas = document.createElement( 'canvas' ); /*Force screencanvas to false*/ canvas.screencanvas = false; return !! window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ); } catch( e ) { return false; } } )(); - device.webGL = !!device.webGL; - - device.worker = !!window['Worker']; - - device.pointerLock = 'pointerLockElement' in document || 'mozPointerLockElement' in document || 'webkitPointerLockElement' in document; - - device.quirksMode = (document.compatMode === 'CSS1Compat') ? false : true; - - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia; - - window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL; - - device.getUserMedia = device.getUserMedia && !!navigator.getUserMedia && !!window.URL; - - // Older versions of firefox (< 21) apparently claim support but user media does not actually work - if (device.firefox && device.firefoxVersion < 21) - { - device.getUserMedia = false; - } - - // TODO: replace canvasBitBltShift detection with actual feature check - - // Excludes iOS versions as they generally wrap UIWebView (eg. Safari WebKit) and it - // is safer to not try and use the fast copy-over method. - if (!device.iOS && (device.ie || device.firefox || device.chrome)) - { - device.canvasBitBltShift = true; - } - - // Known not to work - if (device.safari || device.mobileSafari) - { - device.canvasBitBltShift = false; - } - - } - - /** - * Checks/configures various input. - */ - function _checkInput () { - - if ('ontouchstart' in document.documentElement || (window.navigator.maxTouchPoints && window.navigator.maxTouchPoints >= 1)) - { - device.touch = true; - } - - if (window.navigator.msPointerEnabled || window.navigator.pointerEnabled) - { - device.mspointer = true; - } - - if (!device.cocoonJS) - { - // See https://developer.mozilla.org/en-US/docs/Web/Events/wheel - if ('onwheel' in window || (device.ie && 'WheelEvent' in window)) - { - // DOM3 Wheel Event: FF 17+, IE 9+, Chrome 31+, Safari 7+ - device.wheelEvent = 'wheel'; - } - else if ('onmousewheel' in window) - { - // Non-FF legacy: IE 6-9, Chrome 1-31, Safari 5-7. - device.wheelEvent = 'mousewheel'; - } - else if (device.firefox && 'MouseScrollEvent' in window) - { - // FF prior to 17. This should probably be scrubbed. - device.wheelEvent = 'DOMMouseScroll'; - } - } - - } - - /** - * Checks for support of the Full Screen API. - */ - function _checkFullScreenSupport () { - - var fs = [ - 'requestFullscreen', - 'requestFullScreen', - 'webkitRequestFullscreen', - 'webkitRequestFullScreen', - 'msRequestFullscreen', - 'msRequestFullScreen', - 'mozRequestFullScreen', - 'mozRequestFullscreen' - ]; - - var element = document.createElement('div'); - - for (var i = 0; i < fs.length; i++) - { - if (element[fs[i]]) - { - device.fullscreen = true; - device.requestFullscreen = fs[i]; - break; - } - } - - var cfs = [ - 'cancelFullScreen', - 'exitFullscreen', - 'webkitCancelFullScreen', - 'webkitExitFullscreen', - 'msCancelFullScreen', - 'msExitFullscreen', - 'mozCancelFullScreen', - 'mozExitFullscreen' - ]; - - if (device.fullscreen) - { - for (var i = 0; i < cfs.length; i++) - { - if (document[cfs[i]]) - { - device.cancelFullscreen = cfs[i]; - break; - } - } - } - - // Keyboard Input? - if (window['Element'] && Element['ALLOW_KEYBOARD_INPUT']) - { - device.fullscreenKeyboard = true; - } - - } - - /** - * Check what browser is game running in. - */ - function _checkBrowser () { - - var ua = navigator.userAgent; - - if (/Arora/.test(ua)) - { - device.arora = true; - } - else if (/Edge\/\d+/.test(ua)) - { - device.edge = true; - } - else if (/Chrome\/(\d+)/.test(ua) && !device.windowsPhone) - { - device.chrome = true; - device.chromeVersion = parseInt(RegExp.$1, 10); - } - else if (/Epiphany/.test(ua)) - { - device.epiphany = true; - } - else if (/Firefox\D+(\d+)/.test(ua)) - { - device.firefox = true; - device.firefoxVersion = parseInt(RegExp.$1, 10); - } - else if (/AppleWebKit/.test(ua) && device.iOS) - { - device.mobileSafari = true; - } - else if (/MSIE (\d+\.\d+);/.test(ua)) - { - device.ie = true; - device.ieVersion = parseInt(RegExp.$1, 10); - } - else if (/Midori/.test(ua)) - { - device.midori = true; - } - else if (/Opera/.test(ua)) - { - device.opera = true; - } - else if (/Safari\/(\d+)/.test(ua) && !device.windowsPhone) - { - device.safari = true; - - if (/Version\/(\d+)\./.test(ua)) - { - device.safariVersion = parseInt(RegExp.$1, 10); - } - } - else if (/Trident\/(\d+\.\d+)(.*)rv:(\d+\.\d+)/.test(ua)) - { - device.ie = true; - device.trident = true; - device.tridentVersion = parseInt(RegExp.$1, 10); - device.ieVersion = parseInt(RegExp.$3, 10); - } - - // Silk gets its own if clause because its ua also contains 'Safari' - if (/Silk/.test(ua)) - { - device.silk = true; - } - - // WebApp mode in iOS - if (navigator['standalone']) - { - device.webApp = true; - } - - if (typeof window.cordova !== "undefined") - { - device.cordova = true; - } - - if (typeof process !== "undefined" && typeof require !== "undefined") - { - device.node = true; - } - - if (device.node && typeof process.versions === 'object') - { - device.nodeWebkit = !!process.versions['node-webkit']; - - device.electron = !!process.versions.electron; - } - - if (navigator['isCocoonJS']) - { - device.cocoonJS = true; - } - - if (device.cocoonJS) - { - try { - device.cocoonJSApp = (typeof CocoonJS !== "undefined"); - } - catch(error) - { - device.cocoonJSApp = false; - } - } - - if (typeof window.ejecta !== "undefined") - { - device.ejecta = true; - } - - if (/Crosswalk/.test(ua)) - { - device.crosswalk = true; - } - - } - - /** - * Check video support. - */ - function _checkVideo () { - - var videoElement = document.createElement("video"); - var result = false; - - try { - if (result = !!videoElement.canPlayType) - { - if (videoElement.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, '')) - { - device.oggVideo = true; - } - - if (videoElement.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, '')) - { - // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546 - device.h264Video = true; - device.mp4Video = true; - } - - if (videoElement.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, '')) - { - device.webmVideo = true; - } - - if (videoElement.canPlayType('video/webm; codecs="vp9"').replace(/^no$/, '')) - { - device.vp9Video = true; - } - - if (videoElement.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/, '')) - { - device.hlsVideo = true; - } - } - } catch (e) {} - } - - /** - * Check audio support. - */ - function _checkAudio () { - - device.audioData = !!(window['Audio']); - device.webAudio = !!(window['AudioContext'] || window['webkitAudioContext']); - var audioElement = document.createElement('audio'); - var result = false; - - try { - if (result = !!audioElement.canPlayType) - { - if (audioElement.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, '')) - { - device.ogg = true; - } - - if (audioElement.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, '') || audioElement.canPlayType('audio/opus;').replace(/^no$/, '')) - { - device.opus = true; - } - - if (audioElement.canPlayType('audio/mpeg;').replace(/^no$/, '')) - { - device.mp3 = true; - } - - // Mimetypes accepted: - // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements - // bit.ly/iphoneoscodecs - if (audioElement.canPlayType('audio/wav; codecs="1"').replace(/^no$/, '')) - { - device.wav = true; - } - - if (audioElement.canPlayType('audio/x-m4a;') || audioElement.canPlayType('audio/aac;').replace(/^no$/, '')) - { - device.m4a = true; - } - - if (audioElement.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, '')) - { - device.webm = true; - } - - if (audioElement.canPlayType('audio/mp4;codecs="ec-3"') !== '') - { - if (device.edge) - { - device.dolby = true; - } - else if (device.safari && device.safariVersion >= 9) - { - if (/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)) - { - var major = parseInt(RegExp.$1, 10); - var minor = parseInt(RegExp.$2, 10); - - if ((major === 10 && minor >= 11) || major > 10) - { - device.dolby = true; - } - } - } - } - } - } catch (e) { - } - - } - - /** - * Check PixelRatio, iOS device, Vibration API, ArrayBuffers and endianess. - */ - function _checkDevice () { - - device.pixelRatio = window['devicePixelRatio'] || 1; - device.iPhone = navigator.userAgent.toLowerCase().indexOf('iphone') != -1; - device.iPhone4 = (device.pixelRatio == 2 && device.iPhone); - device.iPad = navigator.userAgent.toLowerCase().indexOf('ipad') != -1; - - if (typeof Int8Array !== 'undefined') - { - device.typedArray = true; - } - else - { - device.typedArray = false; - } - - if (typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint32Array !== 'undefined') - { - device.littleEndian = _checkIsLittleEndian(); - device.LITTLE_ENDIAN = device.littleEndian; - } - - device.support32bit = (typeof ArrayBuffer !== "undefined" && typeof Uint8ClampedArray !== "undefined" && typeof Int32Array !== "undefined" && device.littleEndian !== null && _checkIsUint8ClampedImageData()); - - navigator.vibrate = navigator.vibrate || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate; - - if (navigator.vibrate) - { - device.vibration = true; - } - - } - - /** - * Check Little or Big Endian system. - * - * @author Matt DesLauriers (@mattdesl) - */ - function _checkIsLittleEndian () { - - var a = new ArrayBuffer(4); - var b = new Uint8Array(a); - var c = new Uint32Array(a); - - b[0] = 0xa1; - b[1] = 0xb2; - b[2] = 0xc3; - b[3] = 0xd4; - - if (c[0] == 0xd4c3b2a1) - { - return true; - } - - if (c[0] == 0xa1b2c3d4) - { - return false; - } - else - { - // Could not determine endianness - return null; - } - - } - - /** - * Test to see if ImageData uses CanvasPixelArray or Uint8ClampedArray. - * - * @author Matt DesLauriers (@mattdesl) - */ - function _checkIsUint8ClampedImageData () { - - if (Uint8ClampedArray === undefined) - { - return false; - } - - var elem = PIXI.CanvasPool.create(this, 1, 1); - var ctx = elem.getContext('2d'); - - if (!ctx) - { - return false; - } - - var image = ctx.createImageData(1, 1); - - PIXI.CanvasPool.remove(this); - - return image.data instanceof Uint8ClampedArray; - - } - - /** - * Check whether the host environment support 3D CSS. - */ - function _checkCSS3D () { - - var el = document.createElement('p'); - var has3d; - var transforms = { - 'webkitTransform': '-webkit-transform', - 'OTransform': '-o-transform', - 'msTransform': '-ms-transform', - 'MozTransform': '-moz-transform', - 'transform': 'transform' - }; - - // Add it to the body to get the computed style. - document.body.insertBefore(el, null); - - for (var t in transforms) - { - if (el.style[t] !== undefined) - { - el.style[t] = "translate3d(1px,1px,1px)"; - has3d = window.getComputedStyle(el).getPropertyValue(transforms[t]); - } - } - - document.body.removeChild(el); - device.css3D = (has3d !== undefined && has3d.length > 0 && has3d !== "none"); - - } - - // Run the checks - _checkOS(); - _checkBrowser(); - _checkAudio(); - _checkVideo(); - _checkCSS3D(); - _checkDevice(); - _checkFeatures(); - _checkFullScreenSupport(); - _checkInput(); - -}; - -/** -* Check whether the host environment can play audio. -* -* @method canPlayAudio -* @memberof Phaser.Device.prototype -* @param {string} type - One of 'mp3, 'ogg', 'm4a', 'wav', 'webm' or 'opus'. -* @return {boolean} True if the given file type is supported by the browser, otherwise false. -*/ -Phaser.Device.canPlayAudio = function (type) { - - if (type === 'mp3' && this.mp3) - { - return true; - } - else if (type === 'ogg' && (this.ogg || this.opus)) - { - return true; - } - else if (type === 'm4a' && this.m4a) - { - return true; - } - else if (type === 'opus' && this.opus) - { - return true; - } - else if (type === 'wav' && this.wav) - { - return true; - } - else if (type === 'webm' && this.webm) - { - return true; - } - else if (type === 'mp4' && this.dolby) - { - return true; - } - - return false; - -}; - -/** -* Check whether the host environment can play video files. -* -* @method canPlayVideo -* @memberof Phaser.Device.prototype -* @param {string} type - One of 'mp4, 'ogg', 'webm' or 'mpeg'. -* @return {boolean} True if the given file type is supported by the browser, otherwise false. -*/ -Phaser.Device.canPlayVideo = function (type) { - - if (type === 'webm' && (this.webmVideo || this.vp9Video)) - { - return true; - } - else if (type === 'mp4' && (this.mp4Video || this.h264Video)) - { - return true; - } - else if ((type === 'ogg' || type === 'ogv') && this.oggVideo) - { - return true; - } - else if (type === 'mpeg' && this.hlsVideo) - { - return true; - } - - return false; - -}; - -/** -* Check whether the console is open. -* Note that this only works in Firefox with Firebug and earlier versions of Chrome. -* It used to work in Chrome, but then they removed the ability: {@link http://src.chromium.org/viewvc/blink?view=revision&revision=151136} -* -* @method isConsoleOpen -* @memberof Phaser.Device.prototype -*/ -Phaser.Device.isConsoleOpen = function () { - - if (window.console && window.console['firebug']) - { - return true; - } - - if (window.console) - { - console.profile(); - console.profileEnd(); - - if (console.clear) - { - console.clear(); - } - - if (console['profiles']) - { - return console['profiles'].length > 0; - } - } - - return false; - -}; - -/** -* Detect if the host is a an Android Stock browser. -* This is available before the device "ready" event. -* -* Authors might want to scale down on effects and switch to the CANVAS rendering method on those devices. -* -* @example -* var defaultRenderingMode = Phaser.Device.isAndroidStockBrowser() ? Phaser.CANVAS : Phaser.AUTO; -* -* @method isAndroidStockBrowser -* @memberof Phaser.Device.prototype -*/ -Phaser.Device.isAndroidStockBrowser = function () { - - var matches = window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/); - return matches && matches[1] < 537; - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Canvas class handles everything related to creating the `canvas` DOM tag that Phaser will use, -* including styles, offset and aspect ratio. -* -* @class Phaser.Canvas -* @static -*/ -Phaser.Canvas = { - - /** - * Creates a `canvas` DOM element. The element is not automatically added to the document. - * - * @method Phaser.Canvas.create - * @param {object} parent - The object that will own the canvas that is created. - * @param {number} [width=256] - The width of the canvas element. - * @param {number} [height=256] - The height of the canvas element.. - * @param {string} [id=(none)] - If specified, and not the empty string, this will be set as the ID of the canvas element. Otherwise no ID will be set. - * @param {boolean} [skipPool=false] - If `true` the canvas will not be placed in the CanvasPool global. - * @return {HTMLCanvasElement} The newly created canvas element. - */ - create: function (parent, width, height, id, skipPool) { - - width = width || 256; - height = height || 256; - - var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); - - if (typeof id === 'string' && id !== '') - { - canvas.id = id; - } - - canvas.width = width; - canvas.height = height; - canvas.style.display = 'block'; - - return canvas; - - }, - - /** - * Sets the background color behind the canvas. This changes the canvas style property. - * - * @method Phaser.Canvas.setBackgroundColor - * @param {HTMLCanvasElement} canvas - The canvas to set the background color on. - * @param {string} [color='rgb(0,0,0)'] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. - * @return {HTMLCanvasElement} Returns the source canvas. - */ - setBackgroundColor: function (canvas, color) { - - color = color || 'rgb(0,0,0)'; - - canvas.style.backgroundColor = color; - - return canvas; - - }, - - /** - * Sets the touch-action property on the canvas style. Can be used to disable default browser touch actions. - * - * @method Phaser.Canvas.setTouchAction - * @param {HTMLCanvasElement} canvas - The canvas to set the touch action on. - * @param {string} [value] - The touch action to set. Defaults to 'none'. - * @return {HTMLCanvasElement} The source canvas. - */ - setTouchAction: function (canvas, value) { - - value = value || 'none'; - - canvas.style.msTouchAction = value; - canvas.style['ms-touch-action'] = value; - canvas.style['touch-action'] = value; - - return canvas; - - }, - - /** - * Sets the user-select property on the canvas style. Can be used to disable default browser selection actions. - * - * @method Phaser.Canvas.setUserSelect - * @param {HTMLCanvasElement} canvas - The canvas to set the touch action on. - * @param {string} [value] - The touch action to set. Defaults to 'none'. - * @return {HTMLCanvasElement} The source canvas. - */ - setUserSelect: function (canvas, value) { - - value = value || 'none'; - - canvas.style['-webkit-touch-callout'] = value; - canvas.style['-webkit-user-select'] = value; - canvas.style['-khtml-user-select'] = value; - canvas.style['-moz-user-select'] = value; - canvas.style['-ms-user-select'] = value; - canvas.style['user-select'] = value; - canvas.style['-webkit-tap-highlight-color'] = 'rgba(0, 0, 0, 0)'; - - return canvas; - - }, - - /** - * Adds the given canvas element to the DOM. The canvas will be added as a child of the given parent. - * If no parent is given it will be added as a child of the document.body. - * - * @method Phaser.Canvas.addToDOM - * @param {HTMLCanvasElement} canvas - The canvas to be added to the DOM. - * @param {string|HTMLElement} parent - The DOM element to add the canvas to. - * @param {boolean} [overflowHidden=true] - If set to true it will add the overflow='hidden' style to the parent DOM element. - * @return {HTMLCanvasElement} Returns the source canvas. - */ - addToDOM: function (canvas, parent, overflowHidden) { - - var target; - - if (overflowHidden === undefined) { overflowHidden = true; } - - if (parent) - { - if (typeof parent === 'string') - { - // hopefully an element ID - target = document.getElementById(parent); - } - else if (typeof parent === 'object' && parent.nodeType === 1) - { - // quick test for a HTMLelement - target = parent; - } - } - - // Fallback, covers an invalid ID and a non HTMLelement object - if (!target) - { - target = document.body; - } - - if (overflowHidden && target.style) - { - target.style.overflow = 'hidden'; - } - - target.appendChild(canvas); - - return canvas; - - }, - - /** - * Removes the given canvas element from the DOM. - * - * @method Phaser.Canvas.removeFromDOM - * @param {HTMLCanvasElement} canvas - The canvas to be removed from the DOM. - */ - removeFromDOM: function (canvas) { - - if (canvas.parentNode) - { - canvas.parentNode.removeChild(canvas); - } - - }, - - /** - * Sets the transform of the given canvas to the matrix values provided. - * - * @method Phaser.Canvas.setTransform - * @param {CanvasRenderingContext2D} context - The context to set the transform on. - * @param {number} translateX - The value to translate horizontally by. - * @param {number} translateY - The value to translate vertically by. - * @param {number} scaleX - The value to scale horizontally by. - * @param {number} scaleY - The value to scale vertically by. - * @param {number} skewX - The value to skew horizontaly by. - * @param {number} skewY - The value to skew vertically by. - * @return {CanvasRenderingContext2D} Returns the source context. - */ - setTransform: function (context, translateX, translateY, scaleX, scaleY, skewX, skewY) { - - context.setTransform(scaleX, skewX, skewY, scaleY, translateX, translateY); - - return context; - - }, - - /** - * Sets the Image Smoothing property on the given context. Set to false to disable image smoothing. - * By default browsers have image smoothing enabled, which isn't always what you visually want, especially - * when using pixel art in a game. Note that this sets the property on the context itself, so that any image - * drawn to the context will be affected. This sets the property across all current browsers but support is - * patchy on earlier browsers, especially on mobile. - * - * @method Phaser.Canvas.setSmoothingEnabled - * @param {CanvasRenderingContext2D} context - The context to enable or disable the image smoothing on. - * @param {boolean} value - If set to true it will enable image smoothing, false will disable it. - * @return {CanvasRenderingContext2D} Returns the source context. - */ - setSmoothingEnabled: function (context, value) { - - var s = Phaser.Canvas.getSmoothingPrefix(context); - - if (s) - { - context[s] = value; - } - - return context; - - }, - - /** - * Gets the Smoothing Enabled vendor prefix being used on the given context, or null if not set. - * - * @method Phaser.Canvas.getSmoothingPrefix - * @param {CanvasRenderingContext2D} context - The context to enable or disable the image smoothing on. - * @return {string|null} Returns the smoothingEnabled vendor prefix, or null if not set on the context. - */ - getSmoothingPrefix: function (context) { - - var vendor = [ 'i', 'webkitI', 'msI', 'mozI', 'oI' ]; - - for (var prefix in vendor) - { - var s = vendor[prefix] + 'mageSmoothingEnabled'; - - if (s in context) - { - return s; - } - } - - return null; - - }, - - /** - * Returns `true` if the given context has image smoothing enabled, otherwise returns `false`. - * - * @method Phaser.Canvas.getSmoothingEnabled - * @param {CanvasRenderingContext2D} context - The context to check for smoothing on. - * @return {boolean} True if the given context has image smoothing enabled, otherwise false. - */ - getSmoothingEnabled: function (context) { - - var s = Phaser.Canvas.getSmoothingPrefix(context); - - if (s) - { - return context[s]; - } - - }, - - /** - * Sets the CSS image-rendering property on the given canvas to be 'crisp' (aka 'optimize contrast' on webkit). - * Note that if this doesn't given the desired result then see the setSmoothingEnabled. - * - * @method Phaser.Canvas.setImageRenderingCrisp - * @param {HTMLCanvasElement} canvas - The canvas to set image-rendering crisp on. - * @return {HTMLCanvasElement} Returns the source canvas. - */ - setImageRenderingCrisp: function (canvas) { - - var types = [ 'optimizeSpeed', 'crisp-edges', '-moz-crisp-edges', '-webkit-optimize-contrast', 'optimize-contrast', 'pixelated' ]; - - for (var i = 0; i < types.length; i++) - { - canvas.style['image-rendering'] = types[i]; - } - - canvas.style.msInterpolationMode = 'nearest-neighbor'; - - return canvas; - - }, - - /** - * Sets the CSS image-rendering property on the given canvas to be 'bicubic' (aka 'auto'). - * Note that if this doesn't given the desired result then see the CanvasUtils.setSmoothingEnabled method. - * - * @method Phaser.Canvas.setImageRenderingBicubic - * @param {HTMLCanvasElement} canvas The canvas to set image-rendering bicubic on. - * @return {HTMLCanvasElement} Returns the source canvas. - */ - setImageRenderingBicubic: function (canvas) { - - canvas.style['image-rendering'] = 'auto'; - canvas.style.msInterpolationMode = 'bicubic'; - - return canvas; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Abstracts away the use of RAF or setTimeOut for the core game update loop. -* -* @class Phaser.RequestAnimationFrame -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {boolean} [forceSetTimeOut=false] - Tell Phaser to use setTimeOut even if raf is available. -*/ -Phaser.RequestAnimationFrame = function(game, forceSetTimeOut) { - - if (forceSetTimeOut === undefined) { forceSetTimeOut = false; } - - /** - * @property {Phaser.Game} game - The currently running game. - */ - this.game = game; - - /** - * @property {boolean} isRunning - true if RequestAnimationFrame is running, otherwise false. - * @default - */ - this.isRunning = false; - - /** - * @property {boolean} forceSetTimeOut - Tell Phaser to use setTimeOut even if raf is available. - */ - this.forceSetTimeOut = forceSetTimeOut; - - var vendors = [ - 'ms', - 'moz', - 'webkit', - 'o' - ]; - - for (var x = 0; x < vendors.length && !window.requestAnimationFrame; x++) - { - window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; - window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame']; - } - - /** - * @property {boolean} _isSetTimeOut - true if the browser is using setTimeout instead of raf. - * @private - */ - this._isSetTimeOut = false; - - /** - * @property {function} _onLoop - The function called by the update. - * @private - */ - this._onLoop = null; - - /** - * @property {number} _timeOutID - The callback ID used when calling cancel. - * @private - */ - this._timeOutID = null; - -}; - -Phaser.RequestAnimationFrame.prototype = { - - /** - * Starts the requestAnimationFrame running or setTimeout if unavailable in browser - * @method Phaser.RequestAnimationFrame#start - */ - start: function () { - - this.isRunning = true; - - var _this = this; - - if (!window.requestAnimationFrame || this.forceSetTimeOut) - { - this._isSetTimeOut = true; - - this._onLoop = function () { - return _this.updateSetTimeout(); - }; - - this._timeOutID = window.setTimeout(this._onLoop, 0); - } - else - { - this._isSetTimeOut = false; - - this._onLoop = function (time) { - return _this.updateRAF(time); - }; - - this._timeOutID = window.requestAnimationFrame(this._onLoop); - } - - }, - - /** - * The update method for the requestAnimationFrame - * @method Phaser.RequestAnimationFrame#updateRAF - */ - updateRAF: function (rafTime) { - - if (this.isRunning) - { - // floor the rafTime to make it equivalent to the Date.now() provided by updateSetTimeout (just below) - this.game.update(Math.floor(rafTime)); - - this._timeOutID = window.requestAnimationFrame(this._onLoop); - } - - }, - - /** - * The update method for the setTimeout. - * @method Phaser.RequestAnimationFrame#updateSetTimeout - */ - updateSetTimeout: function () { - - if (this.isRunning) - { - this.game.update(Date.now()); - - this._timeOutID = window.setTimeout(this._onLoop, this.game.time.timeToCall); - } - - }, - - /** - * Stops the requestAnimationFrame from running. - * @method Phaser.RequestAnimationFrame#stop - */ - stop: function () { - - if (this._isSetTimeOut) - { - clearTimeout(this._timeOutID); - } - else - { - window.cancelAnimationFrame(this._timeOutID); - } - - this.isRunning = false; - - }, - - /** - * Is the browser using setTimeout? - * @method Phaser.RequestAnimationFrame#isSetTimeOut - * @return {boolean} - */ - isSetTimeOut: function () { - return this._isSetTimeOut; - }, - - /** - * Is the browser using requestAnimationFrame? - * @method Phaser.RequestAnimationFrame#isRAF - * @return {boolean} - */ - isRAF: function () { - return (this._isSetTimeOut === false); - } - -}; - -Phaser.RequestAnimationFrame.prototype.constructor = Phaser.RequestAnimationFrame; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A collection of useful mathematical functions. -* -* These are normally accessed through `game.math`. -* -* @class Phaser.Math -* @static -* @see {@link Phaser.Utils} -* @see {@link Phaser.ArrayUtils} -*/ -Phaser.Math = { - - /** - * Twice PI. - * @property {number} Phaser.Math#PI2 - * @default ~6.283 - */ - PI2: Math.PI * 2, - - /** - * Returns a number between the `min` and `max` values. - * - * @method Phaser.Math#between - * @param {number} min - The minimum value. Must be positive, and less than 'max'. - * @param {number} max - The maximum value. Must be position, and greater than 'min'. - * @return {number} A value between the range min to max. - */ - between: function (min, max) { - - return Math.floor(Math.random() * (max - min + 1) + min); - - }, - - /** - * Two number are fuzzyEqual if their difference is less than epsilon. - * - * @method Phaser.Math#fuzzyEqual - * @param {number} a - The first number to compare. - * @param {number} b - The second number to compare. - * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) - * @return {boolean} True if |a-b|b+epsilon - */ - fuzzyGreaterThan: function (a, b, epsilon) { - - if (epsilon === undefined) { epsilon = 0.0001; } - - return a > b - epsilon; - - }, - - /** - * Applies a fuzzy ceil to the given value. - * - * @method Phaser.Math#fuzzyCeil - * @param {number} val - The value to ceil. - * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) - * @return {number} ceiling(val-epsilon) - */ - fuzzyCeil: function (val, epsilon) { - - if (epsilon === undefined) { epsilon = 0.0001; } - - return Math.ceil(val - epsilon); - - }, - - /** - * Applies a fuzzy floor to the given value. - * - * @method Phaser.Math#fuzzyFloor - * @param {number} val - The value to floor. - * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) - * @return {number} floor(val+epsilon) - */ - fuzzyFloor: function (val, epsilon) { - - if (epsilon === undefined) { epsilon = 0.0001; } - - return Math.floor(val + epsilon); - - }, - - /** - * Averages all values passed to the function and returns the result. - * - * @method Phaser.Math#average - * @params {...number} The numbers to average - * @return {number} The average of all given values. - */ - average: function () { - - var sum = 0; - var len = arguments.length; - - for (var i = 0; i < len; i++) - { - sum += (+arguments[i]); - } - - return sum / len; - - }, - - /** - * @method Phaser.Math#shear - * @param {number} n - * @return {number} n mod 1 - */ - shear: function (n) { - - return n % 1; - - }, - - /** - * Snap a value to nearest grid slice, using rounding. - * - * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10 whereas 14 will snap to 15. - * - * @method Phaser.Math#snapTo - * @param {number} input - The value to snap. - * @param {number} gap - The interval gap of the grid. - * @param {number} [start=0] - Optional starting offset for gap. - * @return {number} The snapped value. - */ - snapTo: function (input, gap, start) { - - if (start === undefined) { start = 0; } - - if (gap === 0) { - return input; - } - - input -= start; - input = gap * Math.round(input / gap); - - return start + input; - - }, - - /** - * Snap a value to nearest grid slice, using floor. - * - * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. - * As will 14 snap to 10... but 16 will snap to 15. - * - * @method Phaser.Math#snapToFloor - * @param {number} input - The value to snap. - * @param {number} gap - The interval gap of the grid. - * @param {number} [start=0] - Optional starting offset for gap. - * @return {number} The snapped value. - */ - snapToFloor: function (input, gap, start) { - - if (start === undefined) { start = 0; } - - if (gap === 0) { - return input; - } - - input -= start; - input = gap * Math.floor(input / gap); - - return start + input; - - }, - - /** - * Snap a value to nearest grid slice, using ceil. - * - * Example: if you have an interval gap of 5 and a position of 12... you will snap to 15. - * As will 14 will snap to 15... but 16 will snap to 20. - * - * @method Phaser.Math#snapToCeil - * @param {number} input - The value to snap. - * @param {number} gap - The interval gap of the grid. - * @param {number} [start=0] - Optional starting offset for gap. - * @return {number} The snapped value. - */ - snapToCeil: function (input, gap, start) { - - if (start === undefined) { start = 0; } - - if (gap === 0) { - return input; - } - - input -= start; - input = gap * Math.ceil(input / gap); - - return start + input; - - }, - - /** - * Round to some place comparative to a `base`, default is 10 for decimal place. - * The `place` is represented by the power applied to `base` to get that place. - * - * e.g. 2000/7 ~= 285.714285714285714285714 ~= (bin)100011101.1011011011011011 - * - * roundTo(2000/7,3) === 0 - * roundTo(2000/7,2) == 300 - * roundTo(2000/7,1) == 290 - * roundTo(2000/7,0) == 286 - * roundTo(2000/7,-1) == 285.7 - * roundTo(2000/7,-2) == 285.71 - * roundTo(2000/7,-3) == 285.714 - * roundTo(2000/7,-4) == 285.7143 - * roundTo(2000/7,-5) == 285.71429 - * - * roundTo(2000/7,3,2) == 288 -- 100100000 - * roundTo(2000/7,2,2) == 284 -- 100011100 - * roundTo(2000/7,1,2) == 286 -- 100011110 - * roundTo(2000/7,0,2) == 286 -- 100011110 - * roundTo(2000/7,-1,2) == 285.5 -- 100011101.1 - * roundTo(2000/7,-2,2) == 285.75 -- 100011101.11 - * roundTo(2000/7,-3,2) == 285.75 -- 100011101.11 - * roundTo(2000/7,-4,2) == 285.6875 -- 100011101.1011 - * roundTo(2000/7,-5,2) == 285.71875 -- 100011101.10111 - * - * Note what occurs when we round to the 3rd space (8ths place), 100100000, this is to be assumed - * because we are rounding 100011.1011011011011011 which rounds up. - * - * @method Phaser.Math#roundTo - * @param {number} value - The value to round. - * @param {number} [place=0] - The place to round to. - * @param {number} [base=10] - The base to round in. Default is 10 for decimal. - * @return {number} The rounded value. - */ - roundTo: function (value, place, base) { - - if (place === undefined) { place = 0; } - if (base === undefined) { base = 10; } - - var p = Math.pow(base, -place); - - return Math.round(value * p) / p; - - }, - - /** - * Floors to some place comparative to a `base`, default is 10 for decimal place. - * The `place` is represented by the power applied to `base` to get that place. - * - * @method Phaser.Math#floorTo - * @param {number} value - The value to round. - * @param {number} [place=0] - The place to round to. - * @param {number} [base=10] - The base to round in. Default is 10 for decimal. - * @return {number} The rounded value. - */ - floorTo: function (value, place, base) { - - if (place === undefined) { place = 0; } - if (base === undefined) { base = 10; } - - var p = Math.pow(base, -place); - - return Math.floor(value * p) / p; - - }, - - /** - * Ceils to some place comparative to a `base`, default is 10 for decimal place. - * The `place` is represented by the power applied to `base` to get that place. - * - * @method Phaser.Math#ceilTo - * @param {number} value - The value to round. - * @param {number} [place=0] - The place to round to. - * @param {number} [base=10] - The base to round in. Default is 10 for decimal. - * @return {number} The rounded value. - */ - ceilTo: function (value, place, base) { - - if (place === undefined) { place = 0; } - if (base === undefined) { base = 10; } - - var p = Math.pow(base, -place); - - return Math.ceil(value * p) / p; - - }, - - /** - * Find the angle of a segment from (x1, y1) -> (x2, y2). - * - * @method Phaser.Math#angleBetween - * @param {number} x1 - The x coordinate of the first value. - * @param {number} y1 - The y coordinate of the first value. - * @param {number} x2 - The x coordinate of the second value. - * @param {number} y2 - The y coordinate of the second value. - * @return {number} The angle, in radians. - */ - angleBetween: function (x1, y1, x2, y2) { - - return Math.atan2(y2 - y1, x2 - x1); - - }, - - /** - * Find the angle of a segment from (x1, y1) -> (x2, y2). - * - * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels - * down the screen. - * - * @method Phaser.Math#angleBetweenY - * @param {number} x1 - The x coordinate of the first value. - * @param {number} y1 - The y coordinate of the first value. - * @param {number} x2 - The x coordinate of the second value. - * @param {number} y2 - The y coordinate of the second value. - * @return {number} The angle, in radians. - */ - angleBetweenY: function (x1, y1, x2, y2) { - - return Math.atan2(x2 - x1, y2 - y1); - - }, - - /** - * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). - * - * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - The first point. - * @param {Phaser.Point} point2 - The second point. - * @return {number} The angle between the two points, in radians. - */ - angleBetweenPoints: function (point1, point2) { - - return Math.atan2(point2.y - point1.y, point2.x - point1.x); - - }, - - /** - * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). - * @method Phaser.Math#angleBetweenPointsY - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. - */ - angleBetweenPointsY: function (point1, point2) { - - return Math.atan2(point2.x - point1.x, point2.y - point1.y); - - }, - - /** - * Reverses an angle. - * @method Phaser.Math#reverseAngle - * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} The reverse angle, in radians. - */ - reverseAngle: function (angleRad) { - - return this.normalizeAngle(angleRad + Math.PI, true); - - }, - - /** - * Normalizes an angle to the [0,2pi) range. - * @method Phaser.Math#normalizeAngle - * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} The angle, fit within the [0,2pi] range, in radians. - */ - normalizeAngle: function (angleRad) { - - angleRad = angleRad % (2 * Math.PI); - return angleRad >= 0 ? angleRad : angleRad + 2 * Math.PI; - - }, - - /** - * Adds the given amount to the value, but never lets the value go over the specified maximum. - * - * @method Phaser.Math#maxAdd - * @param {number} value - The value to add the amount to. - * @param {number} amount - The amount to add to the value. - * @param {number} max - The maximum the value is allowed to be. - * @return {number} The new value. - */ - maxAdd: function (value, amount, max) { - - return Math.min(value + amount, max); - - }, - - /** - * Subtracts the given amount from the value, but never lets the value go below the specified minimum. - * - * @method Phaser.Math#minSub - * @param {number} value - The base value. - * @param {number} amount - The amount to subtract from the base value. - * @param {number} min - The minimum the value is allowed to be. - * @return {number} The new value. - */ - minSub: function (value, amount, min) { - - return Math.max(value - amount, min); - - }, - - /** - * Ensures that the value always stays between min and max, by wrapping the value around. - * - * If `max` is not larger than `min` the result is 0. - * - * @method Phaser.Math#wrap - * @param {number} value - The value to wrap. - * @param {number} min - The minimum the value is allowed to be. - * @param {number} max - The maximum the value is allowed to be, should be larger than `min`. - * @return {number} The wrapped value. - */ - wrap: function (value, min, max) { - - var range = max - min; - - if (range <= 0) - { - return 0; - } - - var result = (value - min) % range; - - if (result < 0) - { - result += range; - } - - return result + min; - - }, - - /** - * Adds value to amount and ensures that the result always stays between 0 and max, by wrapping the value around. - * - * Values _must_ be positive integers, and are passed through Math.abs. See {@link Phaser.Math#wrap} for an alternative. - * - * @method Phaser.Math#wrapValue - * @param {number} value - The value to add the amount to. - * @param {number} amount - The amount to add to the value. - * @param {number} max - The maximum the value is allowed to be. - * @return {number} The wrapped value. - */ - wrapValue: function (value, amount, max) { - - var diff; - value = Math.abs(value); - amount = Math.abs(amount); - max = Math.abs(max); - diff = (value + amount) % max; - - return diff; - - }, - - /** - * Returns true if the number given is odd. - * - * @method Phaser.Math#isOdd - * @param {integer} n - The number to check. - * @return {boolean} True if the given number is odd. False if the given number is even. - */ - isOdd: function (n) { - - // Does not work with extremely large values - return !!(n & 1); - - }, - - /** - * Returns true if the number given is even. - * - * @method Phaser.Math#isEven - * @param {integer} n - The number to check. - * @return {boolean} True if the given number is even. False if the given number is odd. - */ - isEven: function (n) { - - // Does not work with extremely large values - return !(n & 1); - - }, - - /** - * Variation of Math.min that can be passed either an array of numbers or the numbers as parameters. - * - * Prefer the standard `Math.min` function when appropriate. - * - * @method Phaser.Math#min - * @return {number} The lowest value from those given. - * @see {@link http://jsperf.com/math-s-min-max-vs-homemade} - */ - min: function () { - - if (arguments.length === 1 && typeof arguments[0] === 'object') - { - var data = arguments[0]; - } - else - { - var data = arguments; - } - - for (var i = 1, min = 0, len = data.length; i < len; i++) - { - if (data[i] < data[min]) - { - min = i; - } - } - - return data[min]; - - }, - - /** - * Variation of Math.max that can be passed either an array of numbers or the numbers as parameters. - * - * Prefer the standard `Math.max` function when appropriate. - * - * @method Phaser.Math#max - * @return {number} The largest value from those given. - * @see {@link http://jsperf.com/math-s-min-max-vs-homemade} - */ - max: function () { - - if (arguments.length === 1 && typeof arguments[0] === 'object') - { - var data = arguments[0]; - } - else - { - var data = arguments; - } - - for (var i = 1, max = 0, len = data.length; i < len; i++) - { - if (data[i] > data[max]) - { - max = i; - } - } - - return data[max]; - - }, - - /** - * Variation of Math.min that can be passed a property and either an array of objects or the objects as parameters. - * It will find the lowest matching property value from the given objects. - * - * @method Phaser.Math#minProperty - * @return {number} The lowest value from those given. - */ - minProperty: function (property) { - - if (arguments.length === 2 && typeof arguments[1] === 'object') - { - var data = arguments[1]; - } - else - { - var data = arguments.slice(1); - } - - for (var i = 1, min = 0, len = data.length; i < len; i++) - { - if (data[i][property] < data[min][property]) - { - min = i; - } - } - - return data[min][property]; - - }, - - /** - * Variation of Math.max that can be passed a property and either an array of objects or the objects as parameters. - * It will find the largest matching property value from the given objects. - * - * @method Phaser.Math#maxProperty - * @return {number} The largest value from those given. - */ - maxProperty: function (property) { - - if (arguments.length === 2 && typeof arguments[1] === 'object') - { - var data = arguments[1]; - } - else - { - var data = arguments.slice(1); - } - - for (var i = 1, max = 0, len = data.length; i < len; i++) - { - if (data[i][property] > data[max][property]) - { - max = i; - } - } - - return data[max][property]; - - }, - - /** - * Keeps an angle value between -180 and +180; or -PI and PI if radians. - * - * @method Phaser.Math#wrapAngle - * @param {number} angle - The angle value to wrap - * @param {boolean} [radians=false] - Set to `true` if the angle is given in radians, otherwise degrees is expected. - * @return {number} The new angle value; will be the same as the input angle if it was within bounds. - */ - wrapAngle: function (angle, radians) { - - return radians ? this.wrap(angle, -Math.PI, Math.PI) : this.wrap(angle, -180, 180); - - }, - - /** - * A Linear Interpolation Method, mostly used by Phaser.Tween. - * - * @method Phaser.Math#linearInterpolation - * @param {Array} v - The input array of values to interpolate between. - * @param {number} k - The percentage of interpolation, between 0 and 1. - * @return {number} The interpolated value - */ - linearInterpolation: function (v, k) { - - var m = v.length - 1; - var f = m * k; - var i = Math.floor(f); - - if (k < 0) - { - return this.linear(v[0], v[1], f); - } - - if (k > 1) - { - return this.linear(v[m], v[m - 1], m - f); - } - - return this.linear(v[i], v[i + 1 > m ? m : i + 1], f - i); - - }, - - /** - * A Bezier Interpolation Method, mostly used by Phaser.Tween. - * - * @method Phaser.Math#bezierInterpolation - * @param {Array} v - The input array of values to interpolate between. - * @param {number} k - The percentage of interpolation, between 0 and 1. - * @return {number} The interpolated value - */ - bezierInterpolation: function (v, k) { - - var b = 0; - var n = v.length - 1; - - for (var i = 0; i <= n; i++) - { - b += Math.pow(1 - k, n - i) * Math.pow(k, i) * v[i] * this.bernstein(n, i); - } - - return b; - - }, - - /** - * A Catmull Rom Interpolation Method, mostly used by Phaser.Tween. - * - * @method Phaser.Math#catmullRomInterpolation - * @param {Array} v - The input array of values to interpolate between. - * @param {number} k - The percentage of interpolation, between 0 and 1. - * @return {number} The interpolated value - */ - catmullRomInterpolation: function (v, k) { - - var m = v.length - 1; - var f = m * k; - var i = Math.floor(f); - - if (v[0] === v[m]) - { - if (k < 0) - { - i = Math.floor(f = m * (1 + k)); - } - - return this.catmullRom(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i); - } - else - { - if (k < 0) - { - return v[0] - (this.catmullRom(v[0], v[0], v[1], v[1], -f) - v[0]); - } - - if (k > 1) - { - return v[m] - (this.catmullRom(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]); - } - - return this.catmullRom(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i); - } - - }, - - /** - * Calculates a linear (interpolation) value over t. - * - * @method Phaser.Math#linear - * @param {number} p0 - * @param {number} p1 - * @param {number} t - A value between 0 and 1. - * @return {number} - */ - linear: function (p0, p1, t) { - - return (p1 - p0) * t + p0; - - }, - - /** - * @method Phaser.Math#bernstein - * @protected - * @param {number} n - * @param {number} i - * @return {number} - */ - bernstein: function (n, i) { - - return this.factorial(n) / this.factorial(i) / this.factorial(n - i); - - }, - - /** - * @method Phaser.Math#factorial - * @param {number} value - the number you want to evaluate - * @return {number} - */ - factorial: function (value) { - - if (value === 0) - { - return 1; - } - - var res = value; - - while(--value) - { - res *= value; - } - - return res; - - }, - - /** - * Calculates a catmum rom value. - * - * @method Phaser.Math#catmullRom - * @protected - * @param {number} p0 - * @param {number} p1 - * @param {number} p2 - * @param {number} p3 - * @param {number} t - * @return {number} - */ - catmullRom: function (p0, p1, p2, p3, t) { - - var v0 = (p2 - p0) * 0.5, v1 = (p3 - p1) * 0.5, t2 = t * t, t3 = t * t2; - - return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1; - - }, - - /** - * The absolute difference between two values. - * - * @method Phaser.Math#difference - * @param {number} a - The first value to check. - * @param {number} b - The second value to check. - * @return {number} The absolute difference between the two values. - */ - difference: function (a, b) { - - return Math.abs(a - b); - - }, - - /** - * Round to the next whole number _away_ from zero. - * - * @method Phaser.Math#roundAwayFromZero - * @param {number} value - Any number. - * @return {integer} The rounded value of that number. - */ - roundAwayFromZero: function (value) { - - // "Opposite" of truncate. - return (value > 0) ? Math.ceil(value) : Math.floor(value); - - }, - - /** - * Generate a sine and cosine table simultaneously and extremely quickly. - * The parameters allow you to specify the length, amplitude and frequency of the wave. - * This generator is fast enough to be used in real-time. - * Code based on research by Franky of scene.at - * - * @method Phaser.Math#sinCosGenerator - * @param {number} length - The length of the wave - * @param {number} sinAmplitude - The amplitude to apply to the sine table (default 1.0) if you need values between say -+ 125 then give 125 as the value - * @param {number} cosAmplitude - The amplitude to apply to the cosine table (default 1.0) if you need values between say -+ 125 then give 125 as the value - * @param {number} frequency - The frequency of the sine and cosine table data - * @return {{sin:number[], cos:number[]}} Returns the table data. - */ - sinCosGenerator: function (length, sinAmplitude, cosAmplitude, frequency) { - - if (sinAmplitude === undefined) { sinAmplitude = 1.0; } - if (cosAmplitude === undefined) { cosAmplitude = 1.0; } - if (frequency === undefined) { frequency = 1.0; } - - var sin = sinAmplitude; - var cos = cosAmplitude; - var frq = frequency * Math.PI / length; - - var cosTable = []; - var sinTable = []; - - for (var c = 0; c < length; c++) { - - cos -= sin * frq; - sin += cos * frq; - - cosTable[c] = cos; - sinTable[c] = sin; - - } - - return { sin: sinTable, cos: cosTable, length: length }; - - }, - - /** - * Returns the euclidian distance between the two given set of coordinates. - * - * @method Phaser.Math#distance - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * @return {number} The distance between the two sets of coordinates. - */ - distance: function (x1, y1, x2, y2) { - - var dx = x1 - x2; - var dy = y1 - y2; - - return Math.sqrt(dx * dx + dy * dy); - - }, - - /** - * Returns the euclidean distance squared between the two given set of - * coordinates (cuts out a square root operation before returning). - * - * @method Phaser.Math#distanceSq - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * @return {number} The distance squared between the two sets of coordinates. - */ - distanceSq: function (x1, y1, x2, y2) { - - var dx = x1 - x2; - var dy = y1 - y2; - - return dx * dx + dy * dy; - - }, - - /** - * Returns the distance between the two given set of coordinates at the power given. - * - * @method Phaser.Math#distancePow - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * @param {number} [pow=2] - * @return {number} The distance between the two sets of coordinates. - */ - distancePow: function (x1, y1, x2, y2, pow) { - - if (pow === undefined) { pow = 2; } - - return Math.sqrt(Math.pow(x2 - x1, pow) + Math.pow(y2 - y1, pow)); - - }, - - /** - * Force a value within the boundaries by clamping it to the range `min`, `max`. - * - * @method Phaser.Math#clamp - * @param {float} v - The value to be clamped. - * @param {float} min - The minimum bounds. - * @param {float} max - The maximum bounds. - * @return {number} The clamped value. - */ - clamp: function (v, min, max) { - - if (v < min) - { - return min; - } - else if (max < v) - { - return max; - } - else - { - return v; - } - - }, - - /** - * Clamp `x` to the range `[a, Infinity)`. - * Roughly the same as `Math.max(x, a)`, except for NaN handling. - * - * @method Phaser.Math#clampBottom - * @param {number} x - * @param {number} a - * @return {number} - */ - clampBottom: function (x, a) { - - return x < a ? a : x; - - }, - - /** - * Checks if two values are within the given tolerance of each other. - * - * @method Phaser.Math#within - * @param {number} a - The first number to check - * @param {number} b - The second number to check - * @param {number} tolerance - The tolerance. Anything equal to or less than this is considered within the range. - * @return {boolean} True if a is <= tolerance of b. - * @see {@link Phaser.Math.fuzzyEqual} - */ - within: function (a, b, tolerance) { - - return (Math.abs(a - b) <= tolerance); - - }, - - /** - * Linear mapping from range to range - * - * @method Phaser.Math#mapLinear - * @param {number} x - The value to map - * @param {number} a1 - First endpoint of the range - * @param {number} a2 - Final endpoint of the range - * @param {number} b1 - First endpoint of the range - * @param {number} b2 - Final endpoint of the range - * @return {number} - */ - mapLinear: function (x, a1, a2, b1, b2) { - - return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); - - }, - - /** - * Smoothstep function as detailed at http://en.wikipedia.org/wiki/Smoothstep - * - * @method Phaser.Math#smoothstep - * @param {float} x - The input value. - * @param {float} min - The left edge. Should be smaller than the right edge. - * @param {float} max - The right edge. - * @return {float} A value between 0 and 1. - */ - smoothstep: function (x, min, max) { - - // Scale, bias and saturate x to 0..1 range - x = Math.max(0, Math.min(1, (x - min) / (max - min))); - - // Evaluate polynomial - return x * x * (3 - 2 * x); - - }, - - /** - * Smootherstep function as detailed at http://en.wikipedia.org/wiki/Smoothstep - * - * @method Phaser.Math#smootherstep - * @param {float} x - The input value. - * @param {float} min - The left edge. Should be smaller than the right edge. - * @param {float} max - The right edge. - * @return {float} A value between 0 and 1. - */ - smootherstep: function (x, min, max) { - - x = Math.max(0, Math.min(1, (x - min) / (max - min))); - - return x * x * x * (x * (x * 6 - 15) + 10); - - }, - - /** - * A value representing the sign of the value: -1 for negative, +1 for positive, 0 if value is 0. - * - * This works differently from `Math.sign` for values of NaN and -0, etc. - * - * @method Phaser.Math#sign - * @param {number} x - * @return {integer} An integer in {-1, 0, 1} - */ - sign: function (x) { - - return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); - - }, - - /** - * Work out what percentage value `a` is of value `b` using the given base. - * - * @method Phaser.Math#percent - * @param {number} a - The value to work out the percentage for. - * @param {number} b - The value you wish to get the percentage of. - * @param {number} [base=0] - The base value. - * @return {number} The percentage a is of b, between 0 and 1. - */ - percent: function (a, b, base) { - - if (base === undefined) { base = 0; } - - if (a > b || base > b) - { - return 1; - } - else if (a < base || base > a) - { - return 0; - } - else - { - return (a - base) / b; - } - - } - -}; - -var degreeToRadiansFactor = Math.PI / 180; -var radianToDegreesFactor = 180 / Math.PI; - -/** -* Convert degrees to radians. -* -* @method Phaser.Math#degToRad -* @param {number} degrees - Angle in degrees. -* @return {number} Angle in radians. -*/ -Phaser.Math.degToRad = function degToRad (degrees) { - return degrees * degreeToRadiansFactor; -}; - -/** -* Convert radians to degrees. -* -* @method Phaser.Math#radToDeg -* @param {number} radians - Angle in radians. -* @return {number} Angle in degrees -*/ -Phaser.Math.radToDeg = function radToDeg (radians) { - return radians * radianToDegreesFactor; -}; - -/* jshint noempty: false */ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* An extremely useful repeatable random data generator. -* -* Based on Nonsense by Josh Faul https://github.com/jocafa/Nonsense. -* -* The random number genererator is based on the Alea PRNG, but is modified. -* - https://github.com/coverslide/node-alea -* - https://github.com/nquinlan/better-random-numbers-for-javascript-mirror -* - http://baagoe.org/en/wiki/Better_random_numbers_for_javascript (original, perm. 404) -* -* @class Phaser.RandomDataGenerator -* @constructor -* @param {any[]|string} [seeds] - An array of values to use as the seed, or a generator state (from {#state}). -*/ -Phaser.RandomDataGenerator = function (seeds) { - - if (seeds === undefined) { seeds = []; } - - /** - * @property {number} c - Internal var. - * @private - */ - this.c = 1; - - /** - * @property {number} s0 - Internal var. - * @private - */ - this.s0 = 0; - - /** - * @property {number} s1 - Internal var. - * @private - */ - this.s1 = 0; - - /** - * @property {number} s2 - Internal var. - * @private - */ - this.s2 = 0; - - if (typeof seeds === 'string') - { - this.state(seeds); - } - else - { - this.sow(seeds); - } - -}; - -Phaser.RandomDataGenerator.prototype = { - - /** - * Private random helper. - * - * @method Phaser.RandomDataGenerator#rnd - * @private - * @return {number} - */ - rnd: function () { - - var t = 2091639 * this.s0 + this.c * 2.3283064365386963e-10; // 2^-32 - - this.c = t | 0; - this.s0 = this.s1; - this.s1 = this.s2; - this.s2 = t - this.c; - - return this.s2; - }, - - /** - * Reset the seed of the random data generator. - * - * _Note_: the seed array is only processed up to the first `undefined` (or `null`) value, should such be present. - * - * @method Phaser.RandomDataGenerator#sow - * @param {any[]} seeds - The array of seeds: the `toString()` of each value is used. - */ - sow: function (seeds) { - - // Always reset to default seed - this.s0 = this.hash(' '); - this.s1 = this.hash(this.s0); - this.s2 = this.hash(this.s1); - this.c = 1; - - if (!seeds) - { - return; - } - - // Apply any seeds - for (var i = 0; i < seeds.length && (seeds[i] != null); i++) - { - var seed = seeds[i]; - - this.s0 -= this.hash(seed); - this.s0 += ~~(this.s0 < 0); - this.s1 -= this.hash(seed); - this.s1 += ~~(this.s1 < 0); - this.s2 -= this.hash(seed); - this.s2 += ~~(this.s2 < 0); - } - - }, - - /** - * Internal method that creates a seed hash. - * - * @method Phaser.RandomDataGenerator#hash - * @private - * @param {any} data - * @return {number} hashed value. - */ - hash: function (data) { - - var h, i, n; - n = 0xefc8249d; - data = data.toString(); - - for (i = 0; i < data.length; i++) { - n += data.charCodeAt(i); - h = 0.02519603282416938 * n; - n = h >>> 0; - h -= n; - h *= n; - n = h >>> 0; - h -= n; - n += h * 0x100000000;// 2^32 - } - - return (n >>> 0) * 2.3283064365386963e-10;// 2^-32 - - }, - - /** - * Returns a random integer between 0 and 2^32. - * - * @method Phaser.RandomDataGenerator#integer - * @return {number} A random integer between 0 and 2^32. - */ - integer: function() { - - return this.rnd.apply(this) * 0x100000000;// 2^32 - - }, - - /** - * Returns a random real number between 0 and 1. - * - * @method Phaser.RandomDataGenerator#frac - * @return {number} A random real number between 0 and 1. - */ - frac: function() { - - return this.rnd.apply(this) + (this.rnd.apply(this) * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53 - - }, - - /** - * Returns a random real number between 0 and 2^32. - * - * @method Phaser.RandomDataGenerator#real - * @return {number} A random real number between 0 and 2^32. - */ - real: function() { - - return this.integer() + this.frac(); - - }, - - /** - * Returns a random integer between and including min and max. - * - * @method Phaser.RandomDataGenerator#integerInRange - * @param {number} min - The minimum value in the range. - * @param {number} max - The maximum value in the range. - * @return {number} A random number between min and max. - */ - integerInRange: function (min, max) { - - return Math.floor(this.realInRange(0, max - min + 1) + min); - - }, - - /** - * Returns a random integer between and including min and max. - * This method is an alias for RandomDataGenerator.integerInRange. - * - * @method Phaser.RandomDataGenerator#between - * @param {number} min - The minimum value in the range. - * @param {number} max - The maximum value in the range. - * @return {number} A random number between min and max. - */ - between: function (min, max) { - - return this.integerInRange(min, max); - - }, - - /** - * Returns a random real number between min and max. - * - * @method Phaser.RandomDataGenerator#realInRange - * @param {number} min - The minimum value in the range. - * @param {number} max - The maximum value in the range. - * @return {number} A random number between min and max. - */ - realInRange: function (min, max) { - - return this.frac() * (max - min) + min; - - }, - - /** - * Returns a random real number between -1 and 1. - * - * @method Phaser.RandomDataGenerator#normal - * @return {number} A random real number between -1 and 1. - */ - normal: function () { - - return 1 - 2 * this.frac(); - - }, - - /** - * Returns a valid RFC4122 version4 ID hex string from https://gist.github.com/1308368 - * - * @method Phaser.RandomDataGenerator#uuid - * @return {string} A valid RFC4122 version4 ID hex string - */ - uuid: function () { - - var a = ''; - var b = ''; - - for (b = a = ''; a++ < 36; b +=~a % 5 | a * 3&4 ? (a^15 ? 8^this.frac() * (a^20 ? 16 : 4) : 4).toString(16) : '-') - { - } - - return b; - - }, - - /** - * Returns a random member of `array`. - * - * @method Phaser.RandomDataGenerator#pick - * @param {Array} ary - An Array to pick a random member of. - * @return {any} A random member of the array. - */ - pick: function (ary) { - - return ary[this.integerInRange(0, ary.length - 1)]; - - }, - - /** - * Returns a sign to be used with multiplication operator. - * - * @method Phaser.RandomDataGenerator#sign - * @return {number} -1 or +1. - */ - sign: function () { - - return this.pick([-1, 1]); - - }, - - /** - * Returns a random member of `array`, favoring the earlier entries. - * - * @method Phaser.RandomDataGenerator#weightedPick - * @param {Array} ary - An Array to pick a random member of. - * @return {any} A random member of the array. - */ - weightedPick: function (ary) { - - return ary[~~(Math.pow(this.frac(), 2) * (ary.length - 1) + 0.5)]; - - }, - - /** - * Returns a random timestamp between min and max, or between the beginning of 2000 and the end of 2020 if min and max aren't specified. - * - * @method Phaser.RandomDataGenerator#timestamp - * @param {number} min - The minimum value in the range. - * @param {number} max - The maximum value in the range. - * @return {number} A random timestamp between min and max. - */ - timestamp: function (min, max) { - - return this.realInRange(min || 946684800000, max || 1577862000000); - - }, - - /** - * Returns a random angle between -180 and 180. - * - * @method Phaser.RandomDataGenerator#angle - * @return {number} A random number between -180 and 180. - */ - angle: function() { - - return this.integerInRange(-180, 180); - - }, - - /** - * Gets or Sets the state of the generator. This allows you to retain the values - * that the generator is using between games, i.e. in a game save file. - * - * To seed this generator with a previously saved state you can pass it as the - * `seed` value in your game config, or call this method directly after Phaser has booted. - * - * Call this method with no parameters to return the current state. - * - * If providing a state it should match the same format that this method - * returns, which is a string with a header `!rnd` followed by the `c`, - * `s0`, `s1` and `s2` values respectively, each comma-delimited. - * - * @method Phaser.RandomDataGenerator#state - * @param {string} [state] - Generator state to be set. - * @return {string} The current state of the generator. - */ - state: function (state) { - - if (typeof state === 'string' && state.match(/^!rnd/)) - { - state = state.split(','); - - this.c = parseFloat(state[1]); - this.s0 = parseFloat(state[2]); - this.s1 = parseFloat(state[3]); - this.s2 = parseFloat(state[4]); - } - - return ['!rnd', this.c, this.s0, this.s1, this.s2].join(','); - - } - -}; - -Phaser.RandomDataGenerator.prototype.constructor = Phaser.RandomDataGenerator; - -/** - * @author Timo Hausmann - * @author Richard Davey - * @copyright 2016 Photon Storm Ltd. - * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} - */ - -/** -* A QuadTree implementation. The original code was a conversion of the Java code posted to GameDevTuts. -* However I've tweaked it massively to add node indexing, removed lots of temp. var creation and significantly increased performance as a result. -* Original version at https://github.com/timohausmann/quadtree-js/ -* -* @class Phaser.QuadTree -* @constructor -* @param {number} x - The top left coordinate of the quadtree. -* @param {number} y - The top left coordinate of the quadtree. -* @param {number} width - The width of the quadtree in pixels. -* @param {number} height - The height of the quadtree in pixels. -* @param {number} [maxObjects=10] - The maximum number of objects per node. -* @param {number} [maxLevels=4] - The maximum number of levels to iterate to. -* @param {number} [level=0] - Which level is this? -*/ -Phaser.QuadTree = function(x, y, width, height, maxObjects, maxLevels, level) { - - /** - * @property {number} maxObjects - The maximum number of objects per node. - * @default - */ - this.maxObjects = 10; - - /** - * @property {number} maxLevels - The maximum number of levels to break down to. - * @default - */ - this.maxLevels = 4; - - /** - * @property {number} level - The current level. - */ - this.level = 0; - - /** - * @property {object} bounds - Object that contains the quadtree bounds. - */ - this.bounds = {}; - - /** - * @property {array} objects - Array of quadtree children. - */ - this.objects = []; - - /** - * @property {array} nodes - Array of associated child nodes. - */ - this.nodes = []; - - /** - * @property {array} _empty - Internal empty array. - * @private - */ - this._empty = []; - - this.reset(x, y, width, height, maxObjects, maxLevels, level); - -}; - -Phaser.QuadTree.prototype = { - - /** - * Resets the QuadTree. - * - * @method Phaser.QuadTree#reset - * @param {number} x - The top left coordinate of the quadtree. - * @param {number} y - The top left coordinate of the quadtree. - * @param {number} width - The width of the quadtree in pixels. - * @param {number} height - The height of the quadtree in pixels. - * @param {number} [maxObjects=10] - The maximum number of objects per node. - * @param {number} [maxLevels=4] - The maximum number of levels to iterate to. - * @param {number} [level=0] - Which level is this? - */ - reset: function (x, y, width, height, maxObjects, maxLevels, level) { - - this.maxObjects = maxObjects || 10; - this.maxLevels = maxLevels || 4; - this.level = level || 0; - - this.bounds = { - x: Math.round(x), - y: Math.round(y), - width: width, - height: height, - subWidth: Math.floor(width / 2), - subHeight: Math.floor(height / 2), - right: Math.round(x) + Math.floor(width / 2), - bottom: Math.round(y) + Math.floor(height / 2) - }; - - this.objects.length = 0; - this.nodes.length = 0; - - }, - - /** - * Populates this quadtree with the children of the given Group. In order to be added the child must exist and have a body property. - * - * @method Phaser.QuadTree#populate - * @param {Phaser.Group} group - The Group to add to the quadtree. - */ - populate: function (group) { - - group.forEach(this.populateHandler, this, true); - - }, - - /** - * Handler for the populate method. - * - * @method Phaser.QuadTree#populateHandler - * @param {Phaser.Sprite|object} sprite - The Sprite to check. - */ - populateHandler: function (sprite) { - - if (sprite.body && sprite.exists) - { - this.insert(sprite.body); - } - - }, - - /** - * Split the node into 4 subnodes - * - * @method Phaser.QuadTree#split - */ - split: function () { - - // top right node - this.nodes[0] = new Phaser.QuadTree(this.bounds.right, this.bounds.y, this.bounds.subWidth, this.bounds.subHeight, this.maxObjects, this.maxLevels, (this.level + 1)); - - // top left node - this.nodes[1] = new Phaser.QuadTree(this.bounds.x, this.bounds.y, this.bounds.subWidth, this.bounds.subHeight, this.maxObjects, this.maxLevels, (this.level + 1)); - - // bottom left node - this.nodes[2] = new Phaser.QuadTree(this.bounds.x, this.bounds.bottom, this.bounds.subWidth, this.bounds.subHeight, this.maxObjects, this.maxLevels, (this.level + 1)); - - // bottom right node - this.nodes[3] = new Phaser.QuadTree(this.bounds.right, this.bounds.bottom, this.bounds.subWidth, this.bounds.subHeight, this.maxObjects, this.maxLevels, (this.level + 1)); - - }, - - /** - * Insert the object into the node. If the node exceeds the capacity, it will split and add all objects to their corresponding subnodes. - * - * @method Phaser.QuadTree#insert - * @param {Phaser.Physics.Arcade.Body|object} body - The Body object to insert into the quadtree. Can be any object so long as it exposes x, y, right and bottom properties. - */ - insert: function (body) { - - var i = 0; - var index; - - // if we have subnodes ... - if (this.nodes[0] != null) - { - index = this.getIndex(body); - - if (index !== -1) - { - this.nodes[index].insert(body); - return; - } - } - - this.objects.push(body); - - if (this.objects.length > this.maxObjects && this.level < this.maxLevels) - { - // Split if we don't already have subnodes - if (this.nodes[0] == null) - { - this.split(); - } - - // Add objects to subnodes - while (i < this.objects.length) - { - index = this.getIndex(this.objects[i]); - - if (index !== -1) - { - // this is expensive - see what we can do about it - this.nodes[index].insert(this.objects.splice(i, 1)[0]); - } - else - { - i++; - } - } - } - - }, - - /** - * Determine which node the object belongs to. - * - * @method Phaser.QuadTree#getIndex - * @param {Phaser.Rectangle|object} rect - The bounds in which to check. - * @return {number} index - Index of the subnode (0-3), or -1 if rect cannot completely fit within a subnode and is part of the parent node. - */ - getIndex: function (rect) { - - // default is that rect doesn't fit, i.e. it straddles the internal quadrants - var index = -1; - - if (rect.x < this.bounds.right && rect.right < this.bounds.right) - { - if (rect.y < this.bounds.bottom && rect.bottom < this.bounds.bottom) - { - // rect fits within the top-left quadrant of this quadtree - index = 1; - } - else if (rect.y > this.bounds.bottom) - { - // rect fits within the bottom-left quadrant of this quadtree - index = 2; - } - } - else if (rect.x > this.bounds.right) - { - // rect can completely fit within the right quadrants - if (rect.y < this.bounds.bottom && rect.bottom < this.bounds.bottom) - { - // rect fits within the top-right quadrant of this quadtree - index = 0; - } - else if (rect.y > this.bounds.bottom) - { - // rect fits within the bottom-right quadrant of this quadtree - index = 3; - } - } - - return index; - - }, - - /** - * Return all objects that could collide with the given Sprite or Rectangle. - * - * @method Phaser.QuadTree#retrieve - * @param {Phaser.Sprite|Phaser.Rectangle} source - The source object to check the QuadTree against. Either a Sprite or Rectangle. - * @return {array} - Array with all detected objects. - */ - retrieve: function (source) { - - if (source instanceof Phaser.Rectangle) - { - var returnObjects = this.objects; - - var index = this.getIndex(source); - } - else - { - if (!source.body) - { - return this._empty; - } - - var returnObjects = this.objects; - - var index = this.getIndex(source.body); - } - - if (this.nodes[0]) - { - // If rect fits into a subnode .. - if (index !== -1) - { - returnObjects = returnObjects.concat(this.nodes[index].retrieve(source)); - } - else - { - // If rect does not fit into a subnode, check it against all subnodes (unrolled for speed) - returnObjects = returnObjects.concat(this.nodes[0].retrieve(source)); - returnObjects = returnObjects.concat(this.nodes[1].retrieve(source)); - returnObjects = returnObjects.concat(this.nodes[2].retrieve(source)); - returnObjects = returnObjects.concat(this.nodes[3].retrieve(source)); - } - } - - return returnObjects; - - }, - - /** - * Clear the quadtree. - * @method Phaser.QuadTree#clear - */ - clear: function () { - - this.objects.length = 0; - - var i = this.nodes.length; - - while (i--) - { - this.nodes[i].clear(); - this.nodes.splice(i, 1); - } - - this.nodes.length = 0; - } - -}; - -Phaser.QuadTree.prototype.constructor = Phaser.QuadTree; - -/** -* Javascript QuadTree -* @version 1.0 -* -* @version 1.3, March 11th 2014 -* @author Richard Davey -* The original code was a conversion of the Java code posted to GameDevTuts. However I've tweaked -* it massively to add node indexing, removed lots of temp. var creation and significantly -* increased performance as a result. -* -* Original version at https://github.com/timohausmann/quadtree-js/ -*/ - -/** -* @copyright © 2012 Timo Hausmann -* -* Permission is hereby granted, free of charge, to any person obtaining -* a copy of this software and associated documentation files (the -* "Software"), to deal in the Software without restriction, including -* without limitation the rights to use, copy, modify, merge, publish, -* distribute, sublicense, and/or sell copies of the Software, and to -* permit persons to whom the Software is furnished to do so, subject to -* the following conditions: -* -* The above copyright notice and this permission notice shall be -* included in all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser.Net handles browser URL related tasks such as checking host names, domain names and query string manipulation. -* -* @class Phaser.Net -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Net = function (game) { - - this.game = game; - -}; - -Phaser.Net.prototype = { - - /** - * Returns the hostname given by the browser. - * - * @method Phaser.Net#getHostName - * @return {string} - */ - getHostName: function () { - - if (window.location && window.location.hostname) { - return window.location.hostname; - } - - return null; - - }, - - /** - * Compares the given domain name against the hostname of the browser containing the game. - * If the domain name is found it returns true. - * You can specify a part of a domain, for example 'google' would match 'google.com', 'google.co.uk', etc. - * Do not include 'http://' at the start. - * - * @method Phaser.Net#checkDomainName - * @param {string} domain - * @return {boolean} true if the given domain fragment can be found in the window.location.hostname - */ - checkDomainName: function (domain) { - return window.location.hostname.indexOf(domain) !== -1; - }, - - /** - * Updates a value on the Query String and returns it in full. - * If the value doesn't already exist it is set. - * If the value exists it is replaced with the new value given. If you don't provide a new value it is removed from the query string. - * Optionally you can redirect to the new url, or just return it as a string. - * - * @method Phaser.Net#updateQueryString - * @param {string} key - The querystring key to update. - * @param {string} value - The new value to be set. If it already exists it will be replaced. - * @param {boolean} redirect - If true the browser will issue a redirect to the url with the new querystring. - * @param {string} url - The URL to modify. If none is given it uses window.location.href. - * @return {string} If redirect is false then the modified url and query string is returned. - */ - updateQueryString: function (key, value, redirect, url) { - - if (redirect === undefined) { redirect = false; } - if (url === undefined || url === '') { url = window.location.href; } - - var output = ''; - var re = new RegExp("([?|&])" + key + "=.*?(&|#|$)(.*)", "gi"); - - if (re.test(url)) - { - if (typeof value !== 'undefined' && value !== null) - { - output = url.replace(re, '$1' + key + "=" + value + '$2$3'); - } - else - { - output = url.replace(re, '$1$3').replace(/(&|\?)$/, ''); - } - } - else - { - if (typeof value !== 'undefined' && value !== null) - { - var separator = url.indexOf('?') !== -1 ? '&' : '?'; - var hash = url.split('#'); - url = hash[0] + separator + key + '=' + value; - - if (hash[1]) { - url += '#' + hash[1]; - } - - output = url; - - } - else - { - output = url; - } - } - - if (redirect) - { - window.location.href = output; - } - else - { - return output; - } - - }, - - /** - * Returns the Query String as an object. - * If you specify a parameter it will return just the value of that parameter, should it exist. - * - * @method Phaser.Net#getQueryString - * @param {string} [parameter=''] - If specified this will return just the value for that key. - * @return {string|object} An object containing the key value pairs found in the query string or just the value if a parameter was given. - */ - getQueryString: function (parameter) { - - if (parameter === undefined) { parameter = ''; } - - var output = {}; - var keyValues = location.search.substring(1).split('&'); - - for (var i in keyValues) - { - var key = keyValues[i].split('='); - - if (key.length > 1) - { - if (parameter && parameter == this.decodeURI(key[0])) - { - return this.decodeURI(key[1]); - } - else - { - output[this.decodeURI(key[0])] = this.decodeURI(key[1]); - } - } - } - - return output; - - }, - - /** - * Takes a Uniform Resource Identifier (URI) component (previously created by encodeURIComponent or by a similar routine) and - * decodes it, replacing \ with spaces in the return. Used internally by the Net classes. - * - * @method Phaser.Net#decodeURI - * @param {string} value - The URI component to be decoded. - * @return {string} The decoded value. - */ - decodeURI: function (value) { - return decodeURIComponent(value.replace(/\+/g, " ")); - } - -}; - -Phaser.Net.prototype.constructor = Phaser.Net; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser.Game has a single instance of the TweenManager through which all Tween objects are created and updated. -* Tweens are hooked into the game clock and pause system, adjusting based on the game state. -* -* TweenManager is based heavily on tween.js by http://soledadpenades.com. -* The difference being that tweens belong to a games instance of TweenManager, rather than to a global TWEEN object. -* It also has callbacks swapped for Signals and a few issues patched with regard to properties and completion errors. -* Please see https://github.com/sole/tween.js for a full list of contributors. -* -* @class Phaser.TweenManager -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.TweenManager = function (game) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * Are all newly created Tweens frame or time based? A frame based tween will use the physics elapsed timer when updating. This means - * it will retain the same consistent frame rate, regardless of the speed of the device. The duration value given should - * be given in frames. - * - * If the Tween uses a time based update (which is the default) then the duration is given in milliseconds. - * In this situation a 2000ms tween will last exactly 2 seconds, regardless of the device and how many visual updates the tween - * has actually been through. For very short tweens you may wish to experiment with a frame based update instead. - * @property {boolean} frameBased - * @default - */ - this.frameBased = false; - - /** - * @property {array} _tweens - All of the currently running tweens. - * @private - */ - this._tweens = []; - - /** - * @property {array} _add - All of the tweens queued to be added in the next update. - * @private - */ - this._add = []; - - this.easeMap = { - - "Power0": Phaser.Easing.Power0, - "Power1": Phaser.Easing.Power1, - "Power2": Phaser.Easing.Power2, - "Power3": Phaser.Easing.Power3, - "Power4": Phaser.Easing.Power4, - - "Linear": Phaser.Easing.Linear.None, - "Quad": Phaser.Easing.Quadratic.Out, - "Cubic": Phaser.Easing.Cubic.Out, - "Quart": Phaser.Easing.Quartic.Out, - "Quint": Phaser.Easing.Quintic.Out, - "Sine": Phaser.Easing.Sinusoidal.Out, - "Expo": Phaser.Easing.Exponential.Out, - "Circ": Phaser.Easing.Circular.Out, - "Elastic": Phaser.Easing.Elastic.Out, - "Back": Phaser.Easing.Back.Out, - "Bounce": Phaser.Easing.Bounce.Out, - - "Quad.easeIn": Phaser.Easing.Quadratic.In, - "Cubic.easeIn": Phaser.Easing.Cubic.In, - "Quart.easeIn": Phaser.Easing.Quartic.In, - "Quint.easeIn": Phaser.Easing.Quintic.In, - "Sine.easeIn": Phaser.Easing.Sinusoidal.In, - "Expo.easeIn": Phaser.Easing.Exponential.In, - "Circ.easeIn": Phaser.Easing.Circular.In, - "Elastic.easeIn": Phaser.Easing.Elastic.In, - "Back.easeIn": Phaser.Easing.Back.In, - "Bounce.easeIn": Phaser.Easing.Bounce.In, - - "Quad.easeOut": Phaser.Easing.Quadratic.Out, - "Cubic.easeOut": Phaser.Easing.Cubic.Out, - "Quart.easeOut": Phaser.Easing.Quartic.Out, - "Quint.easeOut": Phaser.Easing.Quintic.Out, - "Sine.easeOut": Phaser.Easing.Sinusoidal.Out, - "Expo.easeOut": Phaser.Easing.Exponential.Out, - "Circ.easeOut": Phaser.Easing.Circular.Out, - "Elastic.easeOut": Phaser.Easing.Elastic.Out, - "Back.easeOut": Phaser.Easing.Back.Out, - "Bounce.easeOut": Phaser.Easing.Bounce.Out, - - "Quad.easeInOut": Phaser.Easing.Quadratic.InOut, - "Cubic.easeInOut": Phaser.Easing.Cubic.InOut, - "Quart.easeInOut": Phaser.Easing.Quartic.InOut, - "Quint.easeInOut": Phaser.Easing.Quintic.InOut, - "Sine.easeInOut": Phaser.Easing.Sinusoidal.InOut, - "Expo.easeInOut": Phaser.Easing.Exponential.InOut, - "Circ.easeInOut": Phaser.Easing.Circular.InOut, - "Elastic.easeInOut": Phaser.Easing.Elastic.InOut, - "Back.easeInOut": Phaser.Easing.Back.InOut, - "Bounce.easeInOut": Phaser.Easing.Bounce.InOut - - }; - - this.game.onPause.add(this._pauseAll, this); - this.game.onResume.add(this._resumeAll, this); - -}; - -Phaser.TweenManager.prototype = { - - /** - * Get all the tween objects in an array. - * @method Phaser.TweenManager#getAll - * @returns {Phaser.Tween[]} Array with all tween objects. - */ - getAll: function () { - - return this._tweens; - - }, - - /** - * Remove all tweens running and in the queue. Doesn't call any of the tween onComplete events. - * @method Phaser.TweenManager#removeAll - */ - removeAll: function () { - - for (var i = 0; i < this._tweens.length; i++) - { - this._tweens[i].pendingDelete = true; - } - - this._add = []; - - }, - - /** - * Remove all tweens from a specific object, array of objects or Group. - * - * @method Phaser.TweenManager#removeFrom - * @param {object|object[]|Phaser.Group} obj - The object you want to remove the tweens from. - * @param {boolean} [children=true] - If passing a group, setting this to true will remove the tweens from all of its children instead of the group itself. - */ - removeFrom: function (obj, children) { - - if (children === undefined) { children = true; } - - var i; - var len; - - if (Array.isArray(obj)) - { - for (i = 0, len = obj.length; i < len; i++) - { - this.removeFrom(obj[i]); - } - } - else if (obj.type === Phaser.GROUP && children) - { - for (var i = 0, len = obj.children.length; i < len; i++) - { - this.removeFrom(obj.children[i]); - } - } - else - { - for (i = 0, len = this._tweens.length; i < len; i++) - { - if (obj === this._tweens[i].target) - { - this.remove(this._tweens[i]); - } - } - - for (i = 0, len = this._add.length; i < len; i++) - { - if (obj === this._add[i].target) - { - this.remove(this._add[i]); - } - } - } - - }, - - /** - * Add a new tween into the TweenManager. - * - * @method Phaser.TweenManager#add - * @param {Phaser.Tween} tween - The tween object you want to add. - * @returns {Phaser.Tween} The tween object you added to the manager. - */ - add: function (tween) { - - tween._manager = this; - this._add.push(tween); - - }, - - /** - * Create a tween object for a specific object. The object can be any JavaScript object or Phaser object such as Sprite. - * - * @method Phaser.TweenManager#create - * @param {object} object - Object the tween will be run on. - * @returns {Phaser.Tween} The newly created tween object. - */ - create: function (object) { - - return new Phaser.Tween(object, this.game, this); - - }, - - /** - * Remove a tween from this manager. - * - * @method Phaser.TweenManager#remove - * @param {Phaser.Tween} tween - The tween object you want to remove. - */ - remove: function (tween) { - - var i = this._tweens.indexOf(tween); - - if (i !== -1) - { - this._tweens[i].pendingDelete = true; - } - else - { - i = this._add.indexOf(tween); - - if (i !== -1) - { - this._add[i].pendingDelete = true; - } - } - - }, - - /** - * Update all the tween objects you added to this manager. - * - * @method Phaser.TweenManager#update - * @returns {boolean} Return false if there's no tween to update, otherwise return true. - */ - update: function () { - - var addTweens = this._add.length; - var numTweens = this._tweens.length; - - if (numTweens === 0 && addTweens === 0) - { - return false; - } - - var i = 0; - - while (i < numTweens) - { - if (this._tweens[i].update(this.game.time.time)) - { - i++; - } - else - { - this._tweens.splice(i, 1); - - numTweens--; - } - } - - // If there are any new tweens to be added, do so now - otherwise they can be spliced out of the array before ever running - if (addTweens > 0) - { - this._tweens = this._tweens.concat(this._add); - this._add.length = 0; - } - - return true; - - }, - - /** - * Checks to see if a particular Sprite is currently being tweened. - * - * @method Phaser.TweenManager#isTweening - * @param {object} object - The object to check for tweens against. - * @returns {boolean} Returns true if the object is currently being tweened, false if not. - */ - isTweening: function(object) { - - return this._tweens.some(function(tween) { - return tween.target === object; - }); - - }, - - /** - * Private. Called by game focus loss. Pauses all currently running tweens. - * - * @method Phaser.TweenManager#_pauseAll - * @private - */ - _pauseAll: function () { - - for (var i = this._tweens.length - 1; i >= 0; i--) - { - this._tweens[i]._pause(); - } - - }, - - /** - * Private. Called by game focus loss. Resumes all currently paused tweens. - * - * @method Phaser.TweenManager#_resumeAll - * @private - */ - _resumeAll: function () { - - for (var i = this._tweens.length - 1; i >= 0; i--) - { - this._tweens[i]._resume(); - } - - }, - - /** - * Pauses all currently running tweens. - * - * @method Phaser.TweenManager#pauseAll - */ - pauseAll: function () { - - for (var i = this._tweens.length - 1; i >= 0; i--) - { - this._tweens[i].pause(); - } - - }, - - /** - * Resumes all currently paused tweens. - * - * @method Phaser.TweenManager#resumeAll - */ - resumeAll: function () { - - for (var i = this._tweens.length - 1; i >= 0; i--) - { - this._tweens[i].resume(true); - } - - } - -}; - -Phaser.TweenManager.prototype.constructor = Phaser.TweenManager; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Tween allows you to alter one or more properties of a target object over a defined period of time. -* This can be used for things such as alpha fading Sprites, scaling them or motion. -* Use `Tween.to` or `Tween.from` to set-up the tween values. You can create multiple tweens on the same object -* by calling Tween.to multiple times on the same Tween. Additional tweens specified in this way become "child" tweens and -* are played through in sequence. You can use Tween.timeScale and Tween.reverse to control the playback of this Tween and all of its children. -* -* @class Phaser.Tween -* @constructor -* @param {object} target - The target object, such as a Phaser.Sprite or Phaser.Sprite.scale. -* @param {Phaser.Game} game - Current game instance. -* @param {Phaser.TweenManager} manager - The TweenManager responsible for looking after this Tween. -*/ -Phaser.Tween = function (target, game, manager) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {object} target - The target object, such as a Phaser.Sprite or property like Phaser.Sprite.scale. - */ - this.target = target; - - /** - * @property {Phaser.TweenManager} manager - Reference to the TweenManager responsible for updating this Tween. - */ - this.manager = manager; - - /** - * @property {Array} timeline - An Array of TweenData objects that comprise the different parts of this Tween. - */ - this.timeline = []; - - /** - * If set to `true` the current tween will play in reverse. - * If the tween hasn't yet started this has no effect. - * If there are child tweens then all child tweens will play in reverse from the current point. - * @property {boolean} reverse - * @default - */ - this.reverse = false; - - /** - * The speed at which the tweens will run. A value of 1 means it will match the game frame rate. 0.5 will run at half the frame rate. 2 at double the frame rate, etc. - * If a tweens duration is 1 second but timeScale is 0.5 then it will take 2 seconds to complete. - * - * @property {number} timeScale - * @default - */ - this.timeScale = 1; - - /** - * @property {number} repeatCounter - If the Tween and any child tweens are set to repeat this contains the current repeat count. - */ - this.repeatCounter = 0; - - /** - * @property {boolean} pendingDelete - True if this Tween is ready to be deleted by the TweenManager. - * @default - * @readonly - */ - this.pendingDelete = false; - - /** - * The onStart event is fired when the Tween begins. If there is a delay before the tween starts then onStart fires after the delay is finished. - * It will be sent 2 parameters: the target object and this tween. - * @property {Phaser.Signal} onStart - */ - this.onStart = new Phaser.Signal(); - - /** - * The onLoop event is fired if the Tween, or any child tweens loop. - * It will be sent 2 parameters: the target object and this tween. - * - * @property {Phaser.Signal} onLoop - */ - this.onLoop = new Phaser.Signal(); - - /** - * The onRepeat event is fired if the Tween and all of its children repeats. If this tween has no children this will never be fired. - * It will be sent 2 parameters: the target object and this tween. - * @property {Phaser.Signal} onRepeat - */ - this.onRepeat = new Phaser.Signal(); - - /** - * The onChildComplete event is fired when the Tween or any of its children completes. - * Fires every time a child completes unless a child is set to repeat forever. - * It will be sent 2 parameters: the target object and this tween. - * @property {Phaser.Signal} onChildComplete - */ - this.onChildComplete = new Phaser.Signal(); - - /** - * The onComplete event is fired when the Tween and all of its children completes. Does not fire if the Tween is set to loop or repeatAll(-1). - * It will be sent 2 parameters: the target object and this tween. - * @property {Phaser.Signal} onComplete - */ - this.onComplete = new Phaser.Signal(); - - /** - * @property {boolean} isRunning - If the tween is running this is set to true, otherwise false. Tweens that are in a delayed state or waiting to start are considered as being running. - * @default - */ - this.isRunning = false; - - /** - * @property {number} current - The current Tween child being run. - * @default - * @readonly - */ - this.current = 0; - - /** - * @property {object} properties - Target property cache used when building the child data values. - */ - this.properties = {}; - - /** - * @property {Phaser.Tween} chainedTween - If this Tween is chained to another this holds a reference to it. - */ - this.chainedTween = null; - - /** - * @property {boolean} isPaused - Is this Tween paused or not? - * @default - */ - this.isPaused = false; - - /** - * Is this Tween frame or time based? A frame based tween will use the physics elapsed timer when updating. This means - * it will retain the same consistent frame rate, regardless of the speed of the device. The duration value given should - * be given in frames. - * - * If the Tween uses a time based update (which is the default) then the duration is given in milliseconds. - * In this situation a 2000ms tween will last exactly 2 seconds, regardless of the device and how many visual updates the tween - * has actually been through. For very short tweens you may wish to experiment with a frame based update instead. - * - * The default value is whatever you've set in TweenManager.frameBased. - * - * @property {boolean} frameBased - * @default - */ - this.frameBased = manager.frameBased; - - /** - * @property {function} _onUpdateCallback - An onUpdate callback. - * @private - * @default null - */ - this._onUpdateCallback = null; - - /** - * @property {object} _onUpdateCallbackContext - The context in which to call the onUpdate callback. - * @private - * @default null - */ - this._onUpdateCallbackContext = null; - - /** - * @property {number} _pausedTime - Private pause timer. - * @private - * @default - */ - this._pausedTime = 0; - - /** - * @property {boolean} _codePaused - Was the Tween paused by code or by Game focus loss? - * @private - */ - this._codePaused = false; - - /** - * @property {boolean} _hasStarted - Internal var to track if the Tween has started yet or not. - * @private - */ - this._hasStarted = false; -}; - -Phaser.Tween.prototype = { - - /** - * Sets this tween to be a `to` tween on the properties given. A `to` tween starts at the current value and tweens to the destination value given. - * For example a Sprite with an `x` coordinate of 100 could be tweened to `x` 200 by giving a properties object of `{ x: 200 }`. - * The ease function allows you define the rate of change. You can pass either a function such as Phaser.Easing.Circular.Out or a string such as "Circ". - * ".easeIn", ".easeOut" and "easeInOut" variants are all supported for all ease types. - * - * @method Phaser.Tween#to - * @param {object} properties - An object containing the properties you want to tween, such as `Sprite.x` or `Sound.volume`. Given as a JavaScript object. - * @param {number} [duration=1000] - Duration of this tween in ms. Or if `Tween.frameBased` is true this represents the number of frames that should elapse. - * @param {function|string} [ease=null] - Easing function. If not set it will default to Phaser.Easing.Default, which is Phaser.Easing.Linear.None by default but can be over-ridden. - * @param {boolean} [autoStart=false] - Set to `true` to allow this tween to start automatically. Otherwise call Tween.start(). - * @param {number} [delay=0] - Delay before this tween will start in milliseconds. Defaults to 0, no delay. - * @param {number} [repeat=0] - Should the tween automatically restart once complete? If you want it to run forever set as -1. This only effects this individual tween, not any chained tweens. - * @param {boolean} [yoyo=false] - A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. - * @return {Phaser.Tween} This Tween object. - */ - to: function (properties, duration, ease, autoStart, delay, repeat, yoyo) { - - if (duration === undefined || duration <= 0) { duration = 1000; } - if (ease === undefined || ease === null) { ease = Phaser.Easing.Default; } - if (autoStart === undefined) { autoStart = false; } - if (delay === undefined) { delay = 0; } - if (repeat === undefined) { repeat = 0; } - if (yoyo === undefined) { yoyo = false; } - - if (typeof ease === 'string' && this.manager.easeMap[ease]) - { - ease = this.manager.easeMap[ease]; - } - - if (this.isRunning) - { - console.warn('Phaser.Tween.to cannot be called after Tween.start'); - return this; - } - - this.timeline.push(new Phaser.TweenData(this).to(properties, duration, ease, delay, repeat, yoyo)); - - if (autoStart) - { - this.start(); - } - - return this; - - }, - - /** - * Sets this tween to be a `from` tween on the properties given. A `from` tween sets the target to the destination value and tweens to its current value. - * For example a Sprite with an `x` coordinate of 100 tweened from `x` 500 would be set to `x` 500 and then tweened to `x` 100 by giving a properties object of `{ x: 500 }`. - * The ease function allows you define the rate of change. You can pass either a function such as Phaser.Easing.Circular.Out or a string such as "Circ". - * ".easeIn", ".easeOut" and "easeInOut" variants are all supported for all ease types. - * - * @method Phaser.Tween#from - * @param {object} properties - An object containing the properties you want to tween., such as `Sprite.x` or `Sound.volume`. Given as a JavaScript object. - * @param {number} [duration=1000] - Duration of this tween in ms. Or if `Tween.frameBased` is true this represents the number of frames that should elapse. - * @param {function|string} [ease=null] - Easing function. If not set it will default to Phaser.Easing.Default, which is Phaser.Easing.Linear.None by default but can be over-ridden. - * @param {boolean} [autoStart=false] - Set to `true` to allow this tween to start automatically. Otherwise call Tween.start(). - * @param {number} [delay=0] - Delay before this tween will start in milliseconds. Defaults to 0, no delay. - * @param {number} [repeat=0] - Should the tween automatically restart once complete? If you want it to run forever set as -1. This only effects this individual tween, not any chained tweens. - * @param {boolean} [yoyo=false] - A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. - * @return {Phaser.Tween} This Tween object. - */ - from: function (properties, duration, ease, autoStart, delay, repeat, yoyo) { - - if (duration === undefined) { duration = 1000; } - if (ease === undefined || ease === null) { ease = Phaser.Easing.Default; } - if (autoStart === undefined) { autoStart = false; } - if (delay === undefined) { delay = 0; } - if (repeat === undefined) { repeat = 0; } - if (yoyo === undefined) { yoyo = false; } - - if (typeof ease === 'string' && this.manager.easeMap[ease]) - { - ease = this.manager.easeMap[ease]; - } - - if (this.isRunning) - { - console.warn('Phaser.Tween.from cannot be called after Tween.start'); - return this; - } - - this.timeline.push(new Phaser.TweenData(this).from(properties, duration, ease, delay, repeat, yoyo)); - - if (autoStart) - { - this.start(); - } - - return this; - - }, - - /** - * Starts the tween running. Can also be called by the autoStart parameter of `Tween.to` or `Tween.from`. - * This sets the `Tween.isRunning` property to `true` and dispatches a `Tween.onStart` signal. - * If the Tween has a delay set then nothing will start tweening until the delay has expired. - * - * @method Phaser.Tween#start - * @param {number} [index=0] - If this Tween contains child tweens you can specify which one to start from. The default is zero, i.e. the first tween created. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - start: function (index) { - - if (index === undefined) { index = 0; } - - if (this.game === null || this.target === null || this.timeline.length === 0 || this.isRunning) - { - return this; - } - - // Populate the tween data - for (var i = 0; i < this.timeline.length; i++) - { - // Build our master property list with the starting values - for (var property in this.timeline[i].vEnd) - { - this.properties[property] = this.target[property] || 0; - - if (!Array.isArray(this.properties[property])) - { - // Ensures we're using numbers, not strings - this.properties[property] *= 1.0; - } - } - } - - for (var i = 0; i < this.timeline.length; i++) - { - this.timeline[i].loadValues(); - } - - this.manager.add(this); - - this.isRunning = true; - - if (index < 0 || index > this.timeline.length - 1) - { - index = 0; - } - - this.current = index; - - this.timeline[this.current].start(); - - return this; - - }, - - /** - * Stops the tween if running and flags it for deletion from the TweenManager. - * If called directly the `Tween.onComplete` signal is not dispatched and no chained tweens are started unless the complete parameter is set to `true`. - * If you just wish to pause a tween then use Tween.pause instead. - * - * @method Phaser.Tween#stop - * @param {boolean} [complete=false] - Set to `true` to dispatch the Tween.onComplete signal. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - stop: function (complete) { - - if (complete === undefined) { complete = false; } - - this.isRunning = false; - - this._onUpdateCallback = null; - this._onUpdateCallbackContext = null; - - if (complete) - { - this.onComplete.dispatch(this.target, this); - this._hasStarted = false; - - if (this.chainedTween) - { - this.chainedTween.start(); - } - } - - this.manager.remove(this); - - return this; - - }, - - /** - * Updates either a single TweenData or all TweenData objects properties to the given value. - * Used internally by methods like Tween.delay, Tween.yoyo, etc. but can also be called directly if you know which property you want to tweak. - * The property is not checked, so if you pass an invalid one you'll generate a run-time error. - * - * @method Phaser.Tween#updateTweenData - * @param {string} property - The property to update. - * @param {number|function} value - The value to set the property to. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the delay on all the children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - updateTweenData: function (property, value, index) { - - if (this.timeline.length === 0) { return this; } - - if (index === undefined) { index = 0; } - - if (index === -1) - { - for (var i = 0; i < this.timeline.length; i++) - { - this.timeline[i][property] = value; - } - } - else - { - this.timeline[index][property] = value; - } - - return this; - - }, - - /** - * Sets the delay in milliseconds before this tween will start. If there are child tweens it sets the delay before the first child starts. - * The delay is invoked as soon as you call `Tween.start`. If the tween is already running this method doesn't do anything for the current active tween. - * If you have not yet called `Tween.to` or `Tween.from` at least once then this method will do nothing, as there are no tweens to delay. - * If you have child tweens and pass -1 as the index value it sets the delay across all of them. - * - * @method Phaser.Tween#delay - * @param {number} duration - The amount of time in ms that the Tween should wait until it begins once started is called. Set to zero to remove any active delay. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the delay on all the children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - delay: function (duration, index) { - - return this.updateTweenData('delay', duration, index); - - }, - - /** - * Sets the number of times this tween will repeat. - * If you have not yet called `Tween.to` or `Tween.from` at least once then this method will do nothing, as there are no tweens to repeat. - * If you have child tweens and pass -1 as the index value it sets the number of times they'll repeat across all of them. - * If you wish to define how many times this Tween and all children will repeat see Tween.repeatAll. - * - * @method Phaser.Tween#repeat - * @param {number} total - How many times a tween should repeat before completing. Set to zero to remove an active repeat. Set to -1 to repeat forever. - * @param {number} [repeat=0] - This is the amount of time to pause (in ms) before the repeat will start. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the repeat value on all the children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - repeat: function (total, repeatDelay, index) { - - if (repeatDelay === undefined) { repeatDelay = 0; } - - this.updateTweenData('repeatCounter', total, index); - - return this.updateTweenData('repeatDelay', repeatDelay, index); - - }, - - /** - * Sets the delay in milliseconds before this tween will repeat itself. - * The repeatDelay is invoked as soon as you call `Tween.start`. If the tween is already running this method doesn't do anything for the current active tween. - * If you have not yet called `Tween.to` or `Tween.from` at least once then this method will do nothing, as there are no tweens to set repeatDelay on. - * If you have child tweens and pass -1 as the index value it sets the repeatDelay across all of them. - * - * @method Phaser.Tween#repeatDelay - * @param {number} duration - The amount of time in ms that the Tween should wait until it repeats or yoyos once start is called. Set to zero to remove any active repeatDelay. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the repeatDelay on all the children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - repeatDelay: function (duration, index) { - - return this.updateTweenData('repeatDelay', duration, index); - - }, - - /** - * A Tween that has yoyo set to true will run through from its starting values to its end values and then play back in reverse from end to start. - * Used in combination with repeat you can create endless loops. - * If you have not yet called `Tween.to` or `Tween.from` at least once then this method will do nothing, as there are no tweens to yoyo. - * If you have child tweens and pass -1 as the index value it sets the yoyo property across all of them. - * If you wish to yoyo this Tween and all of its children then see Tween.yoyoAll. - * - * @method Phaser.Tween#yoyo - * @param {boolean} enable - Set to true to yoyo this tween, or false to disable an already active yoyo. - * @param {number} [yoyoDelay=0] - This is the amount of time to pause (in ms) before the yoyo will start. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set yoyo on all the children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - yoyo: function(enable, yoyoDelay, index) { - - if (yoyoDelay === undefined) { yoyoDelay = 0; } - - this.updateTweenData('yoyo', enable, index); - - return this.updateTweenData('yoyoDelay', yoyoDelay, index); - - }, - - /** - * Sets the delay in milliseconds before this tween will run a yoyo (only applies if yoyo is enabled). - * The repeatDelay is invoked as soon as you call `Tween.start`. If the tween is already running this method doesn't do anything for the current active tween. - * If you have not yet called `Tween.to` or `Tween.from` at least once then this method will do nothing, as there are no tweens to set repeatDelay on. - * If you have child tweens and pass -1 as the index value it sets the repeatDelay across all of them. - * - * @method Phaser.Tween#yoyoDelay - * @param {number} duration - The amount of time in ms that the Tween should wait until it repeats or yoyos once start is called. Set to zero to remove any active yoyoDelay. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the yoyoDelay on all the children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - yoyoDelay: function (duration, index) { - - return this.updateTweenData('yoyoDelay', duration, index); - - }, - - /** - * Set easing function this tween will use, i.e. Phaser.Easing.Linear.None. - * The ease function allows you define the rate of change. You can pass either a function such as Phaser.Easing.Circular.Out or a string such as "Circ". - * ".easeIn", ".easeOut" and "easeInOut" variants are all supported for all ease types. - * If you have child tweens and pass -1 as the index value it sets the easing function defined here across all of them. - * - * @method Phaser.Tween#easing - * @param {function|string} ease - The easing function this tween will use, i.e. Phaser.Easing.Linear.None. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the easing function on all children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - easing: function (ease, index) { - - if (typeof ease === 'string' && this.manager.easeMap[ease]) - { - ease = this.manager.easeMap[ease]; - } - - return this.updateTweenData('easingFunction', ease, index); - - }, - - /** - * Sets the interpolation function the tween will use. By default it uses Phaser.Math.linearInterpolation. - * Also available: Phaser.Math.bezierInterpolation and Phaser.Math.catmullRomInterpolation. - * The interpolation function is only used if the target properties is an array. - * If you have child tweens and pass -1 as the index value and it will set the interpolation function across all of them. - * - * @method Phaser.Tween#interpolation - * @param {function} interpolation - The interpolation function to use (Phaser.Math.linearInterpolation by default) - * @param {object} [context] - The context under which the interpolation function will be run. - * @param {number} [index=0] - If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the interpolation function on all children. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - interpolation: function (interpolation, context, index) { - - if (context === undefined) { context = Phaser.Math; } - - this.updateTweenData('interpolationFunction', interpolation, index); - - return this.updateTweenData('interpolationContext', context, index); - - }, - - /** - * Set how many times this tween and all of its children will repeat. - * A tween (A) with 3 children (B,C,D) with a `repeatAll` value of 2 would play as: ABCDABCD before completing. - * - * @method Phaser.Tween#repeatAll - * @param {number} [total=0] - How many times this tween and all children should repeat before completing. Set to zero to remove an active repeat. Set to -1 to repeat forever. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - repeatAll: function (total) { - - if (total === undefined) { total = 0; } - - this.repeatCounter = total; - - return this; - - }, - - /** - * This method allows you to chain tweens together. Any tween chained to this tween will have its `Tween.start` method called - * as soon as this tween completes. If this tween never completes (i.e. repeatAll or loop is set) then the chain will never progress. - * Note that `Tween.onComplete` will fire when *this* tween completes, not when the whole chain completes. - * For that you should listen to `onComplete` on the final tween in your chain. - * - * If you pass multiple tweens to this method they will be joined into a single long chain. - * For example if this is Tween A and you pass in B, C and D then B will be chained to A, C will be chained to B and D will be chained to C. - * Any previously chained tweens that may have been set will be overwritten. - * - * @method Phaser.Tween#chain - * @param {...Phaser.Tween} tweens - One or more tweens that will be chained to this one. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - chain: function () { - - var i = arguments.length; - - while (i--) - { - if (i > 0) - { - arguments[i - 1].chainedTween = arguments[i]; - } - else - { - this.chainedTween = arguments[i]; - } - } - - return this; - - }, - - /** - * Enables the looping of this tween. The tween will loop forever, and onComplete will never fire. - * - * If `value` is `true` then this is the same as setting `Tween.repeatAll(-1)`. - * If `value` is `false` it is the same as setting `Tween.repeatAll(0)` and will reset the `repeatCounter` to zero. - * - * Usage: - * game.add.tween(p).to({ x: 700 }, 1000, Phaser.Easing.Linear.None, true) - * .to({ y: 300 }, 1000, Phaser.Easing.Linear.None) - * .to({ x: 0 }, 1000, Phaser.Easing.Linear.None) - * .to({ y: 0 }, 1000, Phaser.Easing.Linear.None) - * .loop(); - * @method Phaser.Tween#loop - * @param {boolean} [value=true] - If `true` this tween will loop once it reaches the end. Set to `false` to remove an active loop. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - loop: function (value) { - - if (value === undefined) { value = true; } - - this.repeatCounter = (value) ? -1 : 0; - - return this; - - }, - - /** - * Sets a callback to be fired each time this tween updates. - * - * @method Phaser.Tween#onUpdateCallback - * @param {function} callback - The callback to invoke each time this tween is updated. Set to `null` to remove an already active callback. - * @param {object} callbackContext - The context in which to call the onUpdate callback. - * @return {Phaser.Tween} This tween. Useful for method chaining. - */ - onUpdateCallback: function (callback, callbackContext) { - - this._onUpdateCallback = callback; - this._onUpdateCallbackContext = callbackContext; - - return this; - - }, - - /** - * Pauses the tween. Resume playback with Tween.resume. - * - * @method Phaser.Tween#pause - */ - pause: function () { - - this.isPaused = true; - - this._codePaused = true; - - this._pausedTime = this.game.time.time; - - }, - - /** - * This is called by the core Game loop. Do not call it directly, instead use Tween.pause. - * - * @private - * @method Phaser.Tween#_pause - */ - _pause: function () { - - if (!this._codePaused) - { - this.isPaused = true; - - this._pausedTime = this.game.time.time; - } - - }, - - /** - * Resumes a paused tween. - * - * @method Phaser.Tween#resume - */ - resume: function () { - - if (this.isPaused) - { - this.isPaused = false; - - this._codePaused = false; - - for (var i = 0; i < this.timeline.length; i++) - { - if (!this.timeline[i].isRunning) - { - this.timeline[i].startTime += (this.game.time.time - this._pausedTime); - } - } - } - - }, - - /** - * This is called by the core Game loop. Do not call it directly, instead use Tween.pause. - * @method Phaser.Tween#_resume - * @private - */ - _resume: function () { - - if (this._codePaused) - { - return; - } - else - { - this.resume(); - } - - }, - - /** - * Core tween update function called by the TweenManager. Does not need to be invoked directly. - * - * @method Phaser.Tween#update - * @param {number} time - A timestamp passed in by the TweenManager. - * @return {boolean} false if the tween and all child tweens have completed and should be deleted from the manager, otherwise true (still active). - */ - update: function (time) { - - if (this.pendingDelete || !this.target) - { - return false; - } - - if (this.isPaused) - { - return true; - } - - var status = this.timeline[this.current].update(time); - - if (status === Phaser.TweenData.PENDING) - { - return true; - } - else if (status === Phaser.TweenData.RUNNING) - { - if (!this._hasStarted) - { - this.onStart.dispatch(this.target, this); - this._hasStarted = true; - } - - if (this._onUpdateCallback !== null) - { - this._onUpdateCallback.call(this._onUpdateCallbackContext, this, this.timeline[this.current].value, this.timeline[this.current]); - } - - // In case the update callback modifies this tween - return this.isRunning; - } - else if (status === Phaser.TweenData.LOOPED) - { - if (this.timeline[this.current].repeatCounter === -1) - { - this.onLoop.dispatch(this.target, this); - } - else - { - this.onRepeat.dispatch(this.target, this); - } - - return true; - } - else if (status === Phaser.TweenData.COMPLETE) - { - var complete = false; - - // What now? - if (this.reverse) - { - this.current--; - - if (this.current < 0) - { - this.current = this.timeline.length - 1; - complete = true; - } - } - else - { - this.current++; - - if (this.current === this.timeline.length) - { - this.current = 0; - complete = true; - } - } - - if (complete) - { - // We've reached the start or end of the child tweens (depending on Tween.reverse), should we repeat it? - if (this.repeatCounter === -1) - { - this.timeline[this.current].start(); - this.onLoop.dispatch(this.target, this); - return true; - } - else if (this.repeatCounter > 0) - { - this.repeatCounter--; - - this.timeline[this.current].start(); - this.onRepeat.dispatch(this.target, this); - return true; - } - else - { - // No more repeats and no more children, so we're done - this.isRunning = false; - this.onComplete.dispatch(this.target, this); - this._hasStarted = false; - - if (this.chainedTween) - { - this.chainedTween.start(); - } - - return false; - } - } - else - { - // We've still got some children to go - this.onChildComplete.dispatch(this.target, this); - this.timeline[this.current].start(); - return true; - } - } - - }, - - /** - * This will generate an array populated with the tweened object values from start to end. - * It works by running the tween simulation at the given frame rate based on the values set-up in Tween.to and Tween.from. - * It ignores delay and repeat counts and any chained tweens, but does include child tweens. - * Just one play through of the tween data is returned, including yoyo if set. - * - * @method Phaser.Tween#generateData - * @param {number} [frameRate=60] - The speed in frames per second that the data should be generated at. The higher the value, the larger the array it creates. - * @param {array} [data] - If given the generated data will be appended to this array, otherwise a new array will be returned. - * @return {array} An array of tweened values. - */ - generateData: function (frameRate, data) { - - if (this.game === null || this.target === null) - { - return null; - } - - if (frameRate === undefined) { frameRate = 60; } - if (data === undefined) { data = []; } - - // Populate the tween data - for (var i = 0; i < this.timeline.length; i++) - { - // Build our master property list with the starting values - for (var property in this.timeline[i].vEnd) - { - this.properties[property] = this.target[property] || 0; - - if (!Array.isArray(this.properties[property])) - { - // Ensures we're using numbers, not strings - this.properties[property] *= 1.0; - } - } - } - - for (var i = 0; i < this.timeline.length; i++) - { - this.timeline[i].loadValues(); - } - - for (var i = 0; i < this.timeline.length; i++) - { - data = data.concat(this.timeline[i].generateData(frameRate)); - } - - return data; - - } - -}; - -/** -* @name Phaser.Tween#totalDuration -* @property {Phaser.TweenData} totalDuration - Gets the total duration of this Tween, including all child tweens, in milliseconds. -*/ -Object.defineProperty(Phaser.Tween.prototype, 'totalDuration', { - - get: function () { - - var total = 0; - - for (var i = 0; i < this.timeline.length; i++) - { - total += this.timeline[i].duration; - } - - return total; - - } - -}); - -Phaser.Tween.prototype.constructor = Phaser.Tween; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Phaser.Tween contains at least one TweenData object. It contains all of the tween data values, such as the -* starting and ending values, the ease function, interpolation and duration. The Tween acts as a timeline manager for -* TweenData objects and can contain multiple TweenData objects. -* -* @class Phaser.TweenData -* @constructor -* @param {Phaser.Tween} parent - The Tween that owns this TweenData object. -*/ -Phaser.TweenData = function (parent) { - - /** - * @property {Phaser.Tween} parent - The Tween which owns this TweenData. - */ - this.parent = parent; - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = parent.game; - - /** - * @property {object} vStart - An object containing the values at the start of the tween. - * @private - */ - this.vStart = {}; - - /** - * @property {object} vStartCache - Cached starting values. - * @private - */ - this.vStartCache = {}; - - /** - * @property {object} vEnd - An object containing the values at the end of the tween. - * @private - */ - this.vEnd = {}; - - /** - * @property {object} vEndCache - Cached ending values. - * @private - */ - this.vEndCache = {}; - - /** - * @property {number} duration - The duration of the tween in ms. - * @default - */ - this.duration = 1000; - - /** - * @property {number} percent - A value between 0 and 1 that represents how far through the duration this tween is. - * @readonly - */ - this.percent = 0; - - /** - * @property {number} value - The current calculated value. - * @readonly - */ - this.value = 0; - - /** - * @property {number} repeatCounter - If the Tween is set to repeat this contains the current repeat count. - */ - this.repeatCounter = 0; - - /** - * @property {number} repeatDelay - The amount of time in ms between repeats of this tween. - */ - this.repeatDelay = 0; - - /** - * @property {number} repeatTotal - The total number of times this Tween will repeat. - * @readonly - */ - this.repeatTotal = 0; - - /** - * @property {boolean} interpolate - True if the Tween will use interpolation (i.e. is an Array to Array tween) - * @default - */ - this.interpolate = false; - - /** - * @property {boolean} yoyo - True if the Tween is set to yoyo, otherwise false. - * @default - */ - this.yoyo = false; - - /** - * @property {number} yoyoDelay - The amount of time in ms between yoyos of this tween. - */ - this.yoyoDelay = 0; - - /** - * @property {boolean} inReverse - When a Tween is yoyoing this value holds if it's currently playing forwards (false) or in reverse (true). - * @default - */ - this.inReverse = false; - - /** - * @property {number} delay - The amount to delay by until the Tween starts (in ms). Only applies to the start, use repeatDelay to handle repeats. - * @default - */ - this.delay = 0; - - /** - * @property {number} dt - Current time value. - */ - this.dt = 0; - - /** - * @property {number} startTime - The time the Tween started or null if it hasn't yet started. - */ - this.startTime = null; - - /** - * @property {function} easingFunction - The easing function used for the Tween. - * @default Phaser.Easing.Default - */ - this.easingFunction = Phaser.Easing.Default; - - /** - * @property {function} interpolationFunction - The interpolation function used for the Tween. - * @default Phaser.Math.linearInterpolation - */ - this.interpolationFunction = Phaser.Math.linearInterpolation; - - /** - * @property {object} interpolationContext - The interpolation function context used for the Tween. - * @default Phaser.Math - */ - this.interpolationContext = Phaser.Math; - - /** - * @property {boolean} isRunning - If the tween is running this is set to `true`. Unless Phaser.Tween a TweenData that is waiting for a delay to expire is *not* considered as running. - * @default - */ - this.isRunning = false; - - /** - * @property {boolean} isFrom - Is this a from tween or a to tween? - * @default - */ - this.isFrom = false; - -}; - -/** -* @constant -* @type {number} -*/ -Phaser.TweenData.PENDING = 0; - -/** -* @constant -* @type {number} -*/ -Phaser.TweenData.RUNNING = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.TweenData.LOOPED = 2; - -/** -* @constant -* @type {number} -*/ -Phaser.TweenData.COMPLETE = 3; - -Phaser.TweenData.prototype = { - - /** - * Sets this tween to be a `to` tween on the properties given. A `to` tween starts at the current value and tweens to the destination value given. - * For example a Sprite with an `x` coordinate of 100 could be tweened to `x` 200 by giving a properties object of `{ x: 200 }`. - * - * @method Phaser.TweenData#to - * @param {object} properties - The properties you want to tween, such as `Sprite.x` or `Sound.volume`. Given as a JavaScript object. - * @param {number} [duration=1000] - Duration of this tween in ms. - * @param {function} [ease=null] - Easing function. If not set it will default to Phaser.Easing.Default, which is Phaser.Easing.Linear.None by default but can be over-ridden at will. - * @param {number} [delay=0] - Delay before this tween will start, defaults to 0 (no delay). Value given is in ms. - * @param {number} [repeat=0] - Should the tween automatically restart once complete? If you want it to run forever set as -1. This ignores any chained tweens. - * @param {boolean} [yoyo=false] - A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. - * @return {Phaser.TweenData} This Tween object. - */ - to: function (properties, duration, ease, delay, repeat, yoyo) { - - this.vEnd = properties; - this.duration = duration; - this.easingFunction = ease; - this.delay = delay; - this.repeatTotal = repeat; - this.yoyo = yoyo; - - this.isFrom = false; - - return this; - - }, - - /** - * Sets this tween to be a `from` tween on the properties given. A `from` tween sets the target to the destination value and tweens to its current value. - * For example a Sprite with an `x` coordinate of 100 tweened from `x` 500 would be set to `x` 500 and then tweened to `x` 100 by giving a properties object of `{ x: 500 }`. - * - * @method Phaser.TweenData#from - * @param {object} properties - The properties you want to tween, such as `Sprite.x` or `Sound.volume`. Given as a JavaScript object. - * @param {number} [duration=1000] - Duration of this tween in ms. - * @param {function} [ease=null] - Easing function. If not set it will default to Phaser.Easing.Default, which is Phaser.Easing.Linear.None by default but can be over-ridden at will. - * @param {number} [delay=0] - Delay before this tween will start, defaults to 0 (no delay). Value given is in ms. - * @param {number} [repeat=0] - Should the tween automatically restart once complete? If you want it to run forever set as -1. This ignores any chained tweens. - * @param {boolean} [yoyo=false] - A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. - * @return {Phaser.TweenData} This Tween object. - */ - from: function (properties, duration, ease, delay, repeat, yoyo) { - - this.vEnd = properties; - this.duration = duration; - this.easingFunction = ease; - this.delay = delay; - this.repeatTotal = repeat; - this.yoyo = yoyo; - - this.isFrom = true; - - return this; - - }, - - /** - * Starts the Tween running. - * - * @method Phaser.TweenData#start - * @return {Phaser.TweenData} This Tween object. - */ - start: function () { - - this.startTime = this.game.time.time + this.delay; - - if (this.parent.reverse) - { - this.dt = this.duration; - } - else - { - this.dt = 0; - } - - if (this.delay > 0) - { - this.isRunning = false; - } - else - { - this.isRunning = true; - } - - if (this.isFrom) - { - // Reverse them all and instant set them - for (var property in this.vStartCache) - { - this.vStart[property] = this.vEndCache[property]; - this.vEnd[property] = this.vStartCache[property]; - this.parent.target[property] = this.vStart[property]; - } - } - - this.value = 0; - this.yoyoCounter = 0; - this.repeatCounter = this.repeatTotal; - - return this; - - }, - - /** - * Loads the values from the target object into this Tween. - * - * @private - * @method Phaser.TweenData#loadValues - * @return {Phaser.TweenData} This Tween object. - */ - loadValues: function () { - - for (var property in this.parent.properties) - { - // Load the property from the parent object - this.vStart[property] = this.parent.properties[property]; - - // Check if an Array was provided as property value - if (Array.isArray(this.vEnd[property])) - { - if (this.vEnd[property].length === 0) - { - continue; - } - - if (this.percent === 0) - { - // Put the start value at the beginning of the array - // but we only want to do this once, if the Tween hasn't run before - this.vEnd[property] = [this.vStart[property]].concat(this.vEnd[property]); - } - } - - if (typeof this.vEnd[property] !== 'undefined') - { - if (typeof this.vEnd[property] === 'string') - { - // Parses relative end values with start as base (e.g.: +10, -3) - this.vEnd[property] = this.vStart[property] + parseFloat(this.vEnd[property], 10); - } - - this.parent.properties[property] = this.vEnd[property]; - } - else - { - // Null tween - this.vEnd[property] = this.vStart[property]; - } - - this.vStartCache[property] = this.vStart[property]; - this.vEndCache[property] = this.vEnd[property]; - } - - return this; - - }, - - /** - * Updates this Tween. This is called automatically by Phaser.Tween. - * - * @protected - * @method Phaser.TweenData#update - * @param {number} time - A timestamp passed in by the Tween parent. - * @return {number} The current status of this Tween. One of the Phaser.TweenData constants: PENDING, RUNNING, LOOPED or COMPLETE. - */ - update: function (time) { - - if (!this.isRunning) - { - if (time >= this.startTime) - { - this.isRunning = true; - } - else - { - return Phaser.TweenData.PENDING; - } - } - else - { - // Is Running, but is waiting to repeat - if (time < this.startTime) - { - return Phaser.TweenData.RUNNING; - } - } - - var ms = (this.parent.frameBased) ? this.game.time.physicsElapsedMS : this.game.time.elapsedMS; - - if (this.parent.reverse) - { - this.dt -= ms * this.parent.timeScale; - this.dt = Math.max(this.dt, 0); - } - else - { - this.dt += ms * this.parent.timeScale; - this.dt = Math.min(this.dt, this.duration); - } - - this.percent = this.dt / this.duration; - - this.value = this.easingFunction(this.percent); - - for (var property in this.vEnd) - { - var start = this.vStart[property]; - var end = this.vEnd[property]; - - if (Array.isArray(end)) - { - this.parent.target[property] = this.interpolationFunction.call(this.interpolationContext, end, this.value); - } - else - { - this.parent.target[property] = start + ((end - start) * this.value); - } - } - - if ((!this.parent.reverse && this.percent === 1) || (this.parent.reverse && this.percent === 0)) - { - return this.repeat(); - } - - return Phaser.TweenData.RUNNING; - - }, - - /** - * This will generate an array populated with the tweened object values from start to end. - * It works by running the tween simulation at the given frame rate based on the values set-up in Tween.to and Tween.from. - * Just one play through of the tween data is returned, including yoyo if set. - * - * @method Phaser.TweenData#generateData - * @param {number} [frameRate=60] - The speed in frames per second that the data should be generated at. The higher the value, the larger the array it creates. - * @return {array} An array of tweened values. - */ - generateData: function (frameRate) { - - if (this.parent.reverse) - { - this.dt = this.duration; - } - else - { - this.dt = 0; - } - - var data = []; - var complete = false; - var fps = (1 / frameRate) * 1000; - - do - { - if (this.parent.reverse) - { - this.dt -= fps; - this.dt = Math.max(this.dt, 0); - } - else - { - this.dt += fps; - this.dt = Math.min(this.dt, this.duration); - } - - this.percent = this.dt / this.duration; - - this.value = this.easingFunction(this.percent); - - var blob = {}; - - for (var property in this.vEnd) - { - var start = this.vStart[property]; - var end = this.vEnd[property]; - - if (Array.isArray(end)) - { - blob[property] = this.interpolationFunction(end, this.value); - } - else - { - blob[property] = start + ((end - start) * this.value); - } - } - - data.push(blob); - - if ((!this.parent.reverse && this.percent === 1) || (this.parent.reverse && this.percent === 0)) - { - complete = true; - } - - } while (!complete); - - if (this.yoyo) - { - var reversed = data.slice(); - reversed.reverse(); - data = data.concat(reversed); - } - - return data; - - }, - - /** - * Checks if this Tween is meant to repeat or yoyo and handles doing so. - * - * @private - * @method Phaser.TweenData#repeat - * @return {number} Either Phaser.TweenData.LOOPED or Phaser.TweenData.COMPLETE. - */ - repeat: function () { - - // If not a yoyo and repeatCounter = 0 then we're done - if (this.yoyo) - { - // We're already in reverse mode, which means the yoyo has finished and there's no repeats, so end - if (this.inReverse && this.repeatCounter === 0) - { - // Restore the properties - for (var property in this.vStartCache) - { - this.vStart[property] = this.vStartCache[property]; - this.vEnd[property] = this.vEndCache[property]; - } - - this.inReverse = false; - - return Phaser.TweenData.COMPLETE; - } - - this.inReverse = !this.inReverse; - } - else - { - if (this.repeatCounter === 0) - { - return Phaser.TweenData.COMPLETE; - } - } - - if (this.inReverse) - { - // If inReverse we're going from vEnd to vStartCache - for (var property in this.vStartCache) - { - this.vStart[property] = this.vEndCache[property]; - this.vEnd[property] = this.vStartCache[property]; - } - } - else - { - // If not inReverse we're just repopulating the cache again - for (var property in this.vStartCache) - { - this.vStart[property] = this.vStartCache[property]; - this.vEnd[property] = this.vEndCache[property]; - } - - // -1 means repeat forever, otherwise decrement the repeatCounter - // We only decrement this counter if the tween isn't doing a yoyo, as that doesn't count towards the repeat total - if (this.repeatCounter > 0) - { - this.repeatCounter--; - } - } - - this.startTime = this.game.time.time; - - if (this.yoyo && this.inReverse) - { - this.startTime += this.yoyoDelay; - } - else if (!this.inReverse) - { - this.startTime += this.repeatDelay; - } - - if (this.parent.reverse) - { - this.dt = this.duration; - } - else - { - this.dt = 0; - } - - return Phaser.TweenData.LOOPED; - - } - -}; - -Phaser.TweenData.prototype.constructor = Phaser.TweenData; - -/* jshint curly: false */ - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A collection of easing methods defining ease-in and ease-out curves. -* -* @class Phaser.Easing -*/ -Phaser.Easing = { - - /** - * Linear easing. - * - * @class Phaser.Easing.Linear - */ - Linear: { - - /** - * Linear Easing (no variation). - * - * @method Phaser.Easing.Linear#None - * @param {number} k - The value to be tweened. - * @returns {number} k. - */ - None: function ( k ) { - - return k; - - } - - }, - - /** - * Quadratic easing. - * - * @class Phaser.Easing.Quadratic - */ - Quadratic: { - - /** - * Ease-in. - * - * @method Phaser.Easing.Quadratic#In - * @param {number} k - The value to be tweened. - * @returns {number} k^2. - */ - In: function ( k ) { - - return k * k; - - }, - - /** - * Ease-out. - * - * @method Phaser.Easing.Quadratic#Out - * @param {number} k - The value to be tweened. - * @returns {number} k* (2-k). - */ - Out: function ( k ) { - - return k * ( 2 - k ); - - }, - - /** - * Ease-in/out. - * - * @method Phaser.Easing.Quadratic#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if ( ( k *= 2 ) < 1 ) return 0.5 * k * k; - return - 0.5 * ( --k * ( k - 2 ) - 1 ); - - } - - }, - - /** - * Cubic easing. - * - * @class Phaser.Easing.Cubic - */ - Cubic: { - - /** - * Cubic ease-in. - * - * @method Phaser.Easing.Cubic#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - return k * k * k; - - }, - - /** - * Cubic ease-out. - * - * @method Phaser.Easing.Cubic#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - return --k * k * k + 1; - - }, - - /** - * Cubic ease-in/out. - * - * @method Phaser.Easing.Cubic#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if ( ( k *= 2 ) < 1 ) return 0.5 * k * k * k; - return 0.5 * ( ( k -= 2 ) * k * k + 2 ); - - } - - }, - - /** - * Quartic easing. - * - * @class Phaser.Easing.Quartic - */ - Quartic: { - - /** - * Quartic ease-in. - * - * @method Phaser.Easing.Quartic#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - return k * k * k * k; - - }, - - /** - * Quartic ease-out. - * - * @method Phaser.Easing.Quartic#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - return 1 - ( --k * k * k * k ); - - }, - - /** - * Quartic ease-in/out. - * - * @method Phaser.Easing.Quartic#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if ( ( k *= 2 ) < 1) return 0.5 * k * k * k * k; - return - 0.5 * ( ( k -= 2 ) * k * k * k - 2 ); - - } - - }, - - /** - * Quintic easing. - * - * @class Phaser.Easing.Quintic - */ - Quintic: { - - /** - * Quintic ease-in. - * - * @method Phaser.Easing.Quintic#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - return k * k * k * k * k; - - }, - - /** - * Quintic ease-out. - * - * @method Phaser.Easing.Quintic#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - return --k * k * k * k * k + 1; - - }, - - /** - * Quintic ease-in/out. - * - * @method Phaser.Easing.Quintic#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if ( ( k *= 2 ) < 1 ) return 0.5 * k * k * k * k * k; - return 0.5 * ( ( k -= 2 ) * k * k * k * k + 2 ); - - } - - }, - - /** - * Sinusoidal easing. - * - * @class Phaser.Easing.Sinusoidal - */ - Sinusoidal: { - - /** - * Sinusoidal ease-in. - * - * @method Phaser.Easing.Sinusoidal#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - if (k === 0) return 0; - if (k === 1) return 1; - return 1 - Math.cos( k * Math.PI / 2 ); - - }, - - /** - * Sinusoidal ease-out. - * - * @method Phaser.Easing.Sinusoidal#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - if (k === 0) return 0; - if (k === 1) return 1; - return Math.sin( k * Math.PI / 2 ); - - }, - - /** - * Sinusoidal ease-in/out. - * - * @method Phaser.Easing.Sinusoidal#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if (k === 0) return 0; - if (k === 1) return 1; - return 0.5 * ( 1 - Math.cos( Math.PI * k ) ); - - } - - }, - - /** - * Exponential easing. - * - * @class Phaser.Easing.Exponential - */ - Exponential: { - - /** - * Exponential ease-in. - * - * @method Phaser.Easing.Exponential#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - return k === 0 ? 0 : Math.pow( 1024, k - 1 ); - - }, - - /** - * Exponential ease-out. - * - * @method Phaser.Easing.Exponential#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - return k === 1 ? 1 : 1 - Math.pow( 2, - 10 * k ); - - }, - - /** - * Exponential ease-in/out. - * - * @method Phaser.Easing.Exponential#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if ( k === 0 ) return 0; - if ( k === 1 ) return 1; - if ( ( k *= 2 ) < 1 ) return 0.5 * Math.pow( 1024, k - 1 ); - return 0.5 * ( - Math.pow( 2, - 10 * ( k - 1 ) ) + 2 ); - - } - - }, - - /** - * Circular easing. - * - * @class Phaser.Easing.Circular - */ - Circular: { - - /** - * Circular ease-in. - * - * @method Phaser.Easing.Circular#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - return 1 - Math.sqrt( 1 - k * k ); - - }, - - /** - * Circular ease-out. - * - * @method Phaser.Easing.Circular#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - return Math.sqrt( 1 - ( --k * k ) ); - - }, - - /** - * Circular ease-in/out. - * - * @method Phaser.Easing.Circular#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if ( ( k *= 2 ) < 1) return - 0.5 * ( Math.sqrt( 1 - k * k) - 1); - return 0.5 * ( Math.sqrt( 1 - ( k -= 2) * k) + 1); - - } - - }, - - /** - * Elastic easing. - * - * @class Phaser.Easing.Elastic - */ - Elastic: { - - /** - * Elastic ease-in. - * - * @method Phaser.Easing.Elastic#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - var s, a = 0.1, p = 0.4; - if ( k === 0 ) return 0; - if ( k === 1 ) return 1; - if ( !a || a < 1 ) { a = 1; s = p / 4; } - else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI ); - return - ( a * Math.pow( 2, 10 * ( k -= 1 ) ) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) ); - - }, - - /** - * Elastic ease-out. - * - * @method Phaser.Easing.Elastic#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - var s, a = 0.1, p = 0.4; - if ( k === 0 ) return 0; - if ( k === 1 ) return 1; - if ( !a || a < 1 ) { a = 1; s = p / 4; } - else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI ); - return ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 ); - - }, - - /** - * Elastic ease-in/out. - * - * @method Phaser.Easing.Elastic#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - var s, a = 0.1, p = 0.4; - if ( k === 0 ) return 0; - if ( k === 1 ) return 1; - if ( !a || a < 1 ) { a = 1; s = p / 4; } - else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI ); - if ( ( k *= 2 ) < 1 ) return - 0.5 * ( a * Math.pow( 2, 10 * ( k -= 1 ) ) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) ); - return a * Math.pow( 2, -10 * ( k -= 1 ) ) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) * 0.5 + 1; - - } - - }, - - /** - * Back easing. - * - * @class Phaser.Easing.Back - */ - Back: { - - /** - * Back ease-in. - * - * @method Phaser.Easing.Back#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - var s = 1.70158; - return k * k * ( ( s + 1 ) * k - s ); - - }, - - /** - * Back ease-out. - * - * @method Phaser.Easing.Back#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - var s = 1.70158; - return --k * k * ( ( s + 1 ) * k + s ) + 1; - - }, - - /** - * Back ease-in/out. - * - * @method Phaser.Easing.Back#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - var s = 1.70158 * 1.525; - if ( ( k *= 2 ) < 1 ) return 0.5 * ( k * k * ( ( s + 1 ) * k - s ) ); - return 0.5 * ( ( k -= 2 ) * k * ( ( s + 1 ) * k + s ) + 2 ); - - } - - }, - - /** - * Bounce easing. - * - * @class Phaser.Easing.Bounce - */ - Bounce: { - - /** - * Bounce ease-in. - * - * @method Phaser.Easing.Bounce#In - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - In: function ( k ) { - - return 1 - Phaser.Easing.Bounce.Out( 1 - k ); - - }, - - /** - * Bounce ease-out. - * - * @method Phaser.Easing.Bounce#Out - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - Out: function ( k ) { - - if ( k < ( 1 / 2.75 ) ) { - - return 7.5625 * k * k; - - } else if ( k < ( 2 / 2.75 ) ) { - - return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; - - } else if ( k < ( 2.5 / 2.75 ) ) { - - return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; - - } else { - - return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; - - } - - }, - - /** - * Bounce ease-in/out. - * - * @method Phaser.Easing.Bounce#InOut - * @param {number} k - The value to be tweened. - * @returns {number} The tweened value. - */ - InOut: function ( k ) { - - if ( k < 0.5 ) return Phaser.Easing.Bounce.In( k * 2 ) * 0.5; - return Phaser.Easing.Bounce.Out( k * 2 - 1 ) * 0.5 + 0.5; - - } - - } - -}; - -Phaser.Easing.Default = Phaser.Easing.Linear.None; -Phaser.Easing.Power0 = Phaser.Easing.Linear.None; -Phaser.Easing.Power1 = Phaser.Easing.Quadratic.Out; -Phaser.Easing.Power2 = Phaser.Easing.Cubic.Out; -Phaser.Easing.Power3 = Phaser.Easing.Quartic.Out; -Phaser.Easing.Power4 = Phaser.Easing.Quintic.Out; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* This is the core internal game clock. -* -* It manages the elapsed time and calculation of elapsed values, used for game object motion and tweens, -* and also handles the standard Timer pool. -* -* To create a general timed event, use the master {@link Phaser.Timer} accessible through {@link Phaser.Time.events events}. -* -* There are different *types* of time in Phaser: -* -* - ***Game time*** always runs at the speed of time in real life. -* -* Unlike wall-clock time, *game time stops when Phaser is paused*. -* -* Game time is used for {@link Phaser.Timer timer events}. -* -* - ***Physics time*** represents the amount of time given to physics calculations. -* -* *When {@link #slowMotion} is in effect physics time runs slower than game time.* -* Like game time, physics time stops when Phaser is paused. -* -* Physics time is used for physics calculations and {@link Phaser.Tween tweens}. -* -* - {@link https://en.wikipedia.org/wiki/Wall-clock_time ***Wall-clock time***} represents the duration between two events in real life time. -* -* This time is independent of Phaser and always progresses, regardless of if Phaser is paused. -* -* @class Phaser.Time -* @constructor -* @param {Phaser.Game} game A reference to the currently running game. -*/ -Phaser.Time = function (game) { - - /** - * @property {Phaser.Game} game - Local reference to game. - * @protected - */ - this.game = game; - - /** - * The `Date.now()` value when the time was last updated. - * @property {integer} time - * @protected - */ - this.time = 0; - - /** - * The `now` when the previous update occurred. - * @property {number} prevTime - * @protected - */ - this.prevTime = 0; - - /** - * An increasing value representing cumulative milliseconds since an undisclosed epoch. - * - * While this value is in milliseconds and can be used to compute time deltas, - * it must must _not_ be used with `Date.now()` as it may not use the same epoch / starting reference. - * - * The source may either be from a high-res source (eg. if RAF is available) or the standard Date.now; - * the value can only be relied upon within a particular game instance. - * - * @property {number} now - * @protected - */ - this.now = 0; - - /** - * Elapsed time since the last time update, in milliseconds, based on `now`. - * - * This value _may_ include time that the game is paused/inactive. - * - * _Note:_ This is updated only once per game loop - even if multiple logic update steps are done. - * Use {@link Phaser.Timer#physicsTime physicsTime} as a basis of game/logic calculations instead. - * - * @property {number} elapsed - * @see Phaser.Time.time - * @protected - */ - this.elapsed = 0; - - /** - * The time in ms since the last time update, in milliseconds, based on `time`. - * - * This value is corrected for game pauses and will be "about zero" after a game is resumed. - * - * _Note:_ This is updated once per game loop - even if multiple logic update steps are done. - * Use {@link Phaser.Timer#physicsTime physicsTime} as a basis of game/logic calculations instead. - * - * @property {integer} elapsedMS - * @protected - */ - this.elapsedMS = 0; - - /** - * The physics update delta, in fractional seconds. - * - * This should be used as an applicable multiplier by all logic update steps (eg. `preUpdate/postUpdate/update`) - * to ensure consistent game timing. Game/logic timing can drift from real-world time if the system - * is unable to consistently maintain the desired FPS. - * - * With fixed-step updates this is normally equivalent to `1.0 / desiredFps`. - * - * @property {number} physicsElapsed - */ - this.physicsElapsed = 1 / 60; - - /** - * The physics update delta, in milliseconds - equivalent to `physicsElapsed * 1000`. - * - * @property {number} physicsElapsedMS - */ - this.physicsElapsedMS = (1 / 60) * 1000; - - /** - * The desiredFps multiplier as used by Game.update. - * @property {integer} desiredFpsMult - * @protected - */ - this.desiredFpsMult = 1.0 / 60; - - /** - * The desired frame rate of the game. - * - * This is used is used to calculate the physic/logic multiplier and how to apply catch-up logic updates. - * - * @property {number} _desiredFps - * @private - * @default - */ - this._desiredFps = 60; - - /** - * The suggested frame rate for your game, based on an averaged real frame rate. - * This value is only populated if `Time.advancedTiming` is enabled. - * - * _Note:_ This is not available until after a few frames have passed; until then - * it's set to the same value as desiredFps. - * - * @property {number} suggestedFps - * @default - */ - this.suggestedFps = this.desiredFps; - - /** - * Scaling factor to make the game move smoothly in slow motion - * - 1.0 = normal speed - * - 2.0 = half speed - * @property {number} slowMotion - * @default - */ - this.slowMotion = 1.0; - - /** - * If true then advanced profiling, including the fps rate, fps min/max, suggestedFps and msMin/msMax are updated. - * @property {boolean} advancedTiming - * @default - */ - this.advancedTiming = false; - - /** - * Advanced timing result: The number of render frames record in the last second. - * - * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. - * @property {integer} frames - * @readonly - */ - this.frames = 0; - - /** - * Advanced timing result: Frames per second. - * - * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. - * @property {number} fps - * @readonly - */ - this.fps = 0; - - /** - * Advanced timing result: The lowest rate the fps has dropped to. - * - * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. - * This value can be manually reset. - * @property {number} fpsMin - */ - this.fpsMin = 1000; - - /** - * Advanced timing result: The highest rate the fps has reached (usually no higher than 60fps). - * - * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. - * This value can be manually reset. - * @property {number} fpsMax - */ - this.fpsMax = 0; - - /** - * Advanced timing result: The minimum amount of time the game has taken between consecutive frames. - * - * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. - * This value can be manually reset. - * @property {number} msMin - * @default - */ - this.msMin = 1000; - - /** - * Advanced timing result: The maximum amount of time the game has taken between consecutive frames. - * - * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. - * This value can be manually reset. - * @property {number} msMax - */ - this.msMax = 0; - - /** - * Records how long the game was last paused, in milliseconds. - * (This is not updated until the game is resumed.) - * @property {number} pauseDuration - */ - this.pauseDuration = 0; - - /** - * @property {number} timeToCall - The value that setTimeout needs to work out when to next update - * @protected - */ - this.timeToCall = 0; - - /** - * @property {number} timeExpected - The time when the next call is expected when using setTimer to control the update loop - * @protected - */ - this.timeExpected = 0; - - /** - * A {@link Phaser.Timer} object bound to the master clock (this Time object) which events can be added to. - * @property {Phaser.Timer} events - */ - this.events = new Phaser.Timer(this.game, false); - - /** - * @property {number} _frameCount - count the number of calls to time.update since the last suggestedFps was calculated - * @private - */ - this._frameCount = 0; - - /** - * @property {number} _elapsedAcumulator - sum of the elapsed time since the last suggestedFps was calculated - * @private - */ - this._elapsedAccumulator = 0; - - /** - * @property {number} _started - The time at which the Game instance started. - * @private - */ - this._started = 0; - - /** - * @property {number} _timeLastSecond - The time (in ms) that the last second counter ticked over. - * @private - */ - this._timeLastSecond = 0; - - /** - * @property {number} _pauseStarted - The time the game started being paused. - * @private - */ - this._pauseStarted = 0; - - /** - * @property {boolean} _justResumed - Internal value used to recover from the game pause state. - * @private - */ - this._justResumed = false; - - /** - * @property {Phaser.Timer[]} _timers - Internal store of Phaser.Timer objects. - * @private - */ - this._timers = []; - -}; - -Phaser.Time.prototype = { - - /** - * Called automatically by Phaser.Game after boot. Should not be called directly. - * - * @method Phaser.Time#boot - * @protected - */ - boot: function () { - - this._started = Date.now(); - this.time = Date.now(); - this.events.start(); - this.timeExpected = this.time; - - }, - - /** - * Adds an existing Phaser.Timer object to the Timer pool. - * - * @method Phaser.Time#add - * @param {Phaser.Timer} timer - An existing Phaser.Timer object. - * @return {Phaser.Timer} The given Phaser.Timer object. - */ - add: function (timer) { - - this._timers.push(timer); - - return timer; - - }, - - /** - * Creates a new stand-alone Phaser.Timer object. - * - * @method Phaser.Time#create - * @param {boolean} [autoDestroy=true] - A Timer that is set to automatically destroy itself will do so after all of its events have been dispatched (assuming no looping events). - * @return {Phaser.Timer} The Timer object that was created. - */ - create: function (autoDestroy) { - - if (autoDestroy === undefined) { autoDestroy = true; } - - var timer = new Phaser.Timer(this.game, autoDestroy); - - this._timers.push(timer); - - return timer; - - }, - - /** - * Remove all Timer objects, regardless of their state and clears all Timers from the {@link Phaser.Time#events events} timer. - * - * @method Phaser.Time#removeAll - */ - removeAll: function () { - - for (var i = 0; i < this._timers.length; i++) - { - this._timers[i].destroy(); - } - - this._timers = []; - - this.events.removeAll(); - - }, - - /** - * Refreshes the Time.time and Time.elapsedMS properties from the system clock. - * - * @method Phaser.Time#refresh - */ - refresh: function () { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // this.time always holds a Date.now value - this.time = Date.now(); - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - }, - - /** - * Updates the game clock and if enabled the advanced timing data. This is called automatically by Phaser.Game. - * - * @method Phaser.Time#update - * @protected - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - update: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // this.time always holds a Date.now value - this.time = Date.now(); - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - // this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) - this.now = time; - - // elapsed time between previous call and now - this could be a high resolution value - this.elapsed = this.now - this.prevTime; - - if (this.game.raf._isSetTimeOut) - { - // console.log('Time isSet', this._desiredFps, 'te', this.timeExpected, 'time', time); - - // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game - this.timeToCall = Math.floor(Math.max(0, (1000.0 / this._desiredFps) - (this.timeExpected - time))); - - // time when the next call is expected if using timers - this.timeExpected = time + this.timeToCall; - - // console.log('Time expect', this.timeExpected); - } - - if (this.advancedTiming) - { - this.updateAdvancedTiming(); - } - - // Paused but still running? - if (!this.game.paused) - { - // Our internal Phaser.Timer - this.events.update(this.time); - - if (this._timers.length) - { - this.updateTimers(); - } - } - - }, - - /** - * Handles the updating of the Phaser.Timers (if any) - * Called automatically by Time.update. - * - * @method Phaser.Time#updateTimers - * @private - */ - updateTimers: function () { - - // Any game level timers - var i = 0; - var len = this._timers.length; - - while (i < len) - { - if (this._timers[i].update(this.time)) - { - i++; - } - else - { - // Timer requests to be removed - this._timers.splice(i, 1); - len--; - } - } - - }, - - /** - * Handles the updating of the advanced timing values (if enabled) - * Called automatically by Time.update. - * - * @method Phaser.Time#updateAdvancedTiming - * @private - */ - updateAdvancedTiming: function () { - - // count the number of time.update calls - this._frameCount++; - this._elapsedAccumulator += this.elapsed; - - // occasionally recalculate the suggestedFps based on the accumulated elapsed time - if (this._frameCount >= this._desiredFps * 2) - { - // this formula calculates suggestedFps in multiples of 5 fps - this.suggestedFps = Math.floor(200 / (this._elapsedAccumulator / this._frameCount)) * 5; - this._frameCount = 0; - this._elapsedAccumulator = 0; - } - - this.msMin = Math.min(this.msMin, this.elapsed); - this.msMax = Math.max(this.msMax, this.elapsed); - - this.frames++; - - if (this.now > this._timeLastSecond + 1000) - { - this.fps = Math.round((this.frames * 1000) / (this.now - this._timeLastSecond)); - this.fpsMin = Math.min(this.fpsMin, this.fps); - this.fpsMax = Math.max(this.fpsMax, this.fps); - this._timeLastSecond = this.now; - this.frames = 0; - } - - }, - - /** - * Called when the game enters a paused state. - * - * @method Phaser.Time#gamePaused - * @private - */ - gamePaused: function () { - - this._pauseStarted = Date.now(); - - this.events.pause(); - - var i = this._timers.length; - - while (i--) - { - this._timers[i]._pause(); - } - - }, - - /** - * Called when the game resumes from a paused state. - * - * @method Phaser.Time#gameResumed - * @private - */ - gameResumed: function () { - - // Set the parameter which stores Date.now() to make sure it's correct on resume - this.time = Date.now(); - - this.pauseDuration = this.time - this._pauseStarted; - - this.events.resume(); - - var i = this._timers.length; - - while (i--) - { - this._timers[i]._resume(); - } - - }, - - /** - * The number of seconds that have elapsed since the game was started. - * - * @method Phaser.Time#totalElapsedSeconds - * @return {number} The number of seconds that have elapsed since the game was started. - */ - totalElapsedSeconds: function() { - return (this.time - this._started) * 0.001; - }, - - /** - * How long has passed since the given time. - * - * @method Phaser.Time#elapsedSince - * @param {number} since - The time you want to measure against. - * @return {number} The difference between the given time and now. - */ - elapsedSince: function (since) { - return this.time - since; - }, - - /** - * How long has passed since the given time (in seconds). - * - * @method Phaser.Time#elapsedSecondsSince - * @param {number} since - The time you want to measure (in seconds). - * @return {number} Duration between given time and now (in seconds). - */ - elapsedSecondsSince: function (since) { - return (this.time - since) * 0.001; - }, - - /** - * Resets the private _started value to now and removes all currently running Timers. - * - * @method Phaser.Time#reset - */ - reset: function () { - - this._started = this.time; - this.removeAll(); - - } - -}; - -/** -* The desired frame rate of the game. -* -* This is used is used to calculate the physic / logic multiplier and how to apply catch-up logic updates. -* -* @name Phaser.Time#desiredFps -* @property {integer} desiredFps - The desired frame rate of the game. Defaults to 60. -*/ -Object.defineProperty(Phaser.Time.prototype, "desiredFps", { - - get: function () { - - return this._desiredFps; - - }, - - set: function (value) { - - this._desiredFps = value; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps - // because we're using fixed time steps in game.update - this.physicsElapsed = 1 / value; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - this.desiredFpsMult = 1.0 / value; - - } - -}); - -Phaser.Time.prototype.constructor = Phaser.Time; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Timer is a way to create and manage {@link Phaser.TimerEvent timer events} that wait for a specific duration and then run a callback. -* Many different timer events, with individual delays, can be added to the same Timer. -* -* All Timer delays are in milliseconds (there are 1000 ms in 1 second); so a delay value of 250 represents a quarter of a second. -* -* Timers are based on real life time, adjusted for game pause durations. -* That is, *timer events are based on elapsed {@link Phaser.Time game time}* and do *not* take physics time or slow motion into account. -* -* @class Phaser.Timer -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {boolean} [autoDestroy=true] - If true, the timer will automatically destroy itself after all the events have been dispatched (assuming no looping events). -*/ -Phaser.Timer = function (game, autoDestroy) { - - if (autoDestroy === undefined) { autoDestroy = true; } - - /** - * @property {Phaser.Game} game - Local reference to game. - * @protected - */ - this.game = game; - - /** - * True if the Timer is actively running. - * - * Do not modify this boolean - use {@link Phaser.Timer#pause pause} (and {@link Phaser.Timer#resume resume}) to pause the timer. - * @property {boolean} running - * @default - * @readonly - */ - this.running = false; - - /** - * If true, the timer will automatically destroy itself after all the events have been dispatched (assuming no looping events). - * @property {boolean} autoDestroy - */ - this.autoDestroy = autoDestroy; - - /** - * @property {boolean} expired - An expired Timer is one in which all of its events have been dispatched and none are pending. - * @readonly - * @default - */ - this.expired = false; - - /** - * @property {number} elapsed - Elapsed time since the last frame (in ms). - * @protected - */ - this.elapsed = 0; - - /** - * @property {Phaser.TimerEvent[]} events - An array holding all of this timers Phaser.TimerEvent objects. Use the methods add, repeat and loop to populate it. - */ - this.events = []; - - /** - * This signal will be dispatched when this Timer has completed which means that there are no more events in the queue. - * - * The signal is supplied with one argument, `timer`, which is this Timer object. - * - * @property {Phaser.Signal} onComplete - */ - this.onComplete = new Phaser.Signal(); - - /** - * @property {number} nextTick - The time the next tick will occur. - * @readonly - * @protected - */ - this.nextTick = 0; - - /** - * @property {number} timeCap - If the difference in time between two frame updates exceeds this value, the event times are reset to avoid catch-up situations. - */ - this.timeCap = 1000; - - /** - * @property {boolean} paused - The paused state of the Timer. You can pause the timer by calling Timer.pause() and Timer.resume() or by the game pausing. - * @readonly - * @default - */ - this.paused = false; - - /** - * @property {boolean} _codePaused - Was the Timer paused by code or by Game focus loss? - * @private - */ - this._codePaused = false; - - /** - * @property {number} _started - The time at which this Timer instance started running. - * @private - * @default - */ - this._started = 0; - - /** - * @property {number} _pauseStarted - The time the game started being paused. - * @private - */ - this._pauseStarted = 0; - - /** - * @property {number} _pauseTotal - Total paused time. - * @private - */ - this._pauseTotal = 0; - - /** - * @property {number} _now - The current start-time adjusted time. - * @private - */ - this._now = Date.now(); - - /** - * @property {number} _len - Temp. array length variable. - * @private - */ - this._len = 0; - - /** - * @property {number} _marked - Temp. counter variable. - * @private - */ - this._marked = 0; - - /** - * @property {number} _i - Temp. array counter variable. - * @private - */ - this._i = 0; - - /** - * @property {number} _diff - Internal cache var. - * @private - */ - this._diff = 0; - - /** - * @property {number} _newTick - Internal cache var. - * @private - */ - this._newTick = 0; - -}; - -/** -* Number of milliseconds in a minute. -* @constant -* @type {integer} -*/ -Phaser.Timer.MINUTE = 60000; - -/** -* Number of milliseconds in a second. -* @constant -* @type {integer} -*/ -Phaser.Timer.SECOND = 1000; - -/** -* Number of milliseconds in half a second. -* @constant -* @type {integer} -*/ -Phaser.Timer.HALF = 500; - -/** -* Number of milliseconds in a quarter of a second. -* @constant -* @type {integer} -*/ -Phaser.Timer.QUARTER = 250; - -Phaser.Timer.prototype = { - - /** - * Creates a new TimerEvent on this Timer. - * - * Use {@link Phaser.Timer#add}, {@link Phaser.Timer#repeat}, or {@link Phaser.Timer#loop} methods to create a new event. - * - * @method Phaser.Timer#create - * @private - * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. - * @param {boolean} loop - Should the event loop or not? - * @param {number} repeatCount - The number of times the event will repeat. - * @param {function} callback - The callback that will be called when the timer event occurs. - * @param {object} callbackContext - The context in which the callback will be called. - * @param {any[]} arguments - The values to be sent to your callback function when it is called. - * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. - */ - create: function (delay, loop, repeatCount, callback, callbackContext, args) { - - delay = Math.round(delay); - - var tick = delay; - - if (this._now === 0) - { - tick += this.game.time.time; - } - else - { - tick += this._now; - } - - var event = new Phaser.TimerEvent(this, delay, tick, repeatCount, loop, callback, callbackContext, args); - - this.events.push(event); - - this.order(); - - this.expired = false; - - return event; - - }, - - /** - * Adds a new Event to this Timer. - * - * The event will fire after the given amount of `delay` in milliseconds has passed, once the Timer has started running. - * The delay is in relation to when the Timer starts, not the time it was added. If the Timer is already running the delay will be calculated based on the timers current time. - * - * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. - * - * @method Phaser.Timer#add - * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. - * @param {function} callback - The callback that will be called when the timer event occurs. - * @param {object} callbackContext - The context in which the callback will be called. - * @param {...*} arguments - Additional arguments that will be supplied to the callback. - * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. - */ - add: function (delay, callback, callbackContext) { - - return this.create(delay, false, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); - - }, - - /** - * Adds a new TimerEvent that will always play through once and then repeat for the given number of iterations. - * - * The event will fire after the given amount of `delay` in milliseconds has passed, once the Timer has started running. - * The delay is in relation to when the Timer starts, not the time it was added. - * If the Timer is already running the delay will be calculated based on the timers current time. - * - * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. - * - * @method Phaser.Timer#repeat - * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. - * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. - * @param {function} callback - The callback that will be called when the timer event occurs. - * @param {object} callbackContext - The context in which the callback will be called. - * @param {...*} arguments - Additional arguments that will be supplied to the callback. - * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. - */ - repeat: function (delay, repeatCount, callback, callbackContext) { - - return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.slice.call(arguments, 4)); - - }, - - /** - * Adds a new looped Event to this Timer that will repeat forever or until the Timer is stopped. - * - * The event will fire after the given amount of `delay` in milliseconds has passed, once the Timer has started running. - * The delay is in relation to when the Timer starts, not the time it was added. If the Timer is already running the delay will be calculated based on the timers current time. - * - * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. - * - * @method Phaser.Timer#loop - * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. - * @param {function} callback - The callback that will be called when the timer event occurs. - * @param {object} callbackContext - The context in which the callback will be called. - * @param {...*} arguments - Additional arguments that will be supplied to the callback. - * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. - */ - loop: function (delay, callback, callbackContext) { - - return this.create(delay, true, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); - - }, - - /** - * Starts this Timer running. - * @method Phaser.Timer#start - * @param {integer} [delay=0] - The number of milliseconds, in {@link Phaser.Time game time}, that should elapse before the Timer will start. - */ - start: function (delay) { - - if (this.running) - { - return; - } - - this._started = this.game.time.time + (delay || 0); - - this.running = true; - - for (var i = 0; i < this.events.length; i++) - { - this.events[i].tick = this.events[i].delay + this._started; - } - - }, - - /** - * Stops this Timer from running. Does not cause it to be destroyed if autoDestroy is set to true. - * @method Phaser.Timer#stop - * @param {boolean} [clearEvents=true] - If true all the events in Timer will be cleared, otherwise they will remain. - */ - stop: function (clearEvents) { - - this.running = false; - - if (clearEvents === undefined) { clearEvents = true; } - - if (clearEvents) - { - this.events.length = 0; - } - - }, - - /** - * Removes a pending TimerEvent from the queue. - * @param {Phaser.TimerEvent} event - The event to remove from the queue. - * @method Phaser.Timer#remove - */ - remove: function (event) { - - for (var i = 0; i < this.events.length; i++) - { - if (this.events[i] === event) - { - this.events[i].pendingDelete = true; - return true; - } - } - - return false; - - }, - - /** - * Orders the events on this Timer so they are in tick order. - * This is called automatically when new events are created. - * @method Phaser.Timer#order - * @protected - */ - order: function () { - - if (this.events.length > 0) - { - // Sort the events so the one with the lowest tick is first - this.events.sort(this.sortHandler); - - this.nextTick = this.events[0].tick; - } - - }, - - /** - * Sort handler used by Phaser.Timer.order. - * @method Phaser.Timer#sortHandler - * @private - */ - sortHandler: function (a, b) { - - if (a.tick < b.tick) - { - return -1; - } - else if (a.tick > b.tick) - { - return 1; - } - - return 0; - - }, - - /** - * Clears any events from the Timer which have pendingDelete set to true and then resets the private _len and _i values. - * - * @method Phaser.Timer#clearPendingEvents - * @protected - */ - clearPendingEvents: function () { - - this._i = this.events.length; - - while (this._i--) - { - if (this.events[this._i].pendingDelete) - { - this.events.splice(this._i, 1); - } - } - - this._len = this.events.length; - this._i = 0; - - }, - - /** - * The main Timer update event, called automatically by Phaser.Time.update. - * - * @method Phaser.Timer#update - * @protected - * @param {number} time - The time from the core game clock. - * @return {boolean} True if there are still events waiting to be dispatched, otherwise false if this Timer can be destroyed. - */ - update: function (time) { - - if (this.paused) - { - return true; - } - - this.elapsed = time - this._now; - this._now = time; - - // spike-dislike - if (this.elapsed > this.timeCap) - { - // For some reason the time between now and the last time the game was updated was larger than our timeCap. - // This can happen if the Stage.disableVisibilityChange is true and you swap tabs, which makes the raf pause. - // In this case we need to adjust the TimerEvents and nextTick. - this.adjustEvents(time - this.elapsed); - } - - this._marked = 0; - - // Clears events marked for deletion and resets _len and _i to 0. - this.clearPendingEvents(); - - if (this.running && this._now >= this.nextTick && this._len > 0) - { - while (this._i < this._len && this.running) - { - if (this._now >= this.events[this._i].tick && !this.events[this._i].pendingDelete) - { - // (now + delay) - (time difference from last tick to now) - this._newTick = (this._now + this.events[this._i].delay) - (this._now - this.events[this._i].tick); - - if (this._newTick < 0) - { - this._newTick = this._now + this.events[this._i].delay; - } - - if (this.events[this._i].loop === true) - { - this.events[this._i].tick = this._newTick; - this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); - } - else if (this.events[this._i].repeatCount > 0) - { - this.events[this._i].repeatCount--; - this.events[this._i].tick = this._newTick; - this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); - } - else - { - this._marked++; - this.events[this._i].pendingDelete = true; - this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); - } - - this._i++; - } - else - { - break; - } - } - - // Are there any events left? - if (this.events.length > this._marked) - { - this.order(); - } - else - { - this.expired = true; - this.onComplete.dispatch(this); - } - } - - if (this.expired && this.autoDestroy) - { - return false; - } - else - { - return true; - } - - }, - - /** - * Pauses the Timer and all events in the queue. - * @method Phaser.Timer#pause - */ - pause: function () { - - if (!this.running) - { - return; - } - - this._codePaused = true; - - if (this.paused) - { - return; - } - - this._pauseStarted = this.game.time.time; - - this.paused = true; - - }, - - /** - * Internal pause/resume control - user code should use Timer.pause instead. - * @method Phaser.Timer#_pause - * @private - */ - _pause: function () { - - if (this.paused || !this.running) - { - return; - } - - this._pauseStarted = this.game.time.time; - - this.paused = true; - - }, - - /** - * Adjusts the time of all pending events and the nextTick by the given baseTime. - * - * @method Phaser.Timer#adjustEvents - * @protected - */ - adjustEvents: function (baseTime) { - - for (var i = 0; i < this.events.length; i++) - { - if (!this.events[i].pendingDelete) - { - // Work out how long there would have been from when the game paused until the events next tick - var t = this.events[i].tick - baseTime; - - if (t < 0) - { - t = 0; - } - - // Add the difference on to the time now - this.events[i].tick = this._now + t; - } - } - - var d = this.nextTick - baseTime; - - if (d < 0) - { - this.nextTick = this._now; - } - else - { - this.nextTick = this._now + d; - } - - }, - - /** - * Resumes the Timer and updates all pending events. - * - * @method Phaser.Timer#resume - */ - resume: function () { - - if (!this.paused) - { - return; - } - - var now = this.game.time.time; - this._pauseTotal += now - this._now; - this._now = now; - - this.adjustEvents(this._pauseStarted); - - this.paused = false; - this._codePaused = false; - - }, - - /** - * Internal pause/resume control - user code should use Timer.resume instead. - * @method Phaser.Timer#_resume - * @private - */ - _resume: function () { - - if (this._codePaused) - { - return; - } - else - { - this.resume(); - } - - }, - - /** - * Removes all Events from this Timer and all callbacks linked to onComplete, but leaves the Timer running. - * The onComplete callbacks won't be called. - * - * @method Phaser.Timer#removeAll - */ - removeAll: function () { - - this.onComplete.removeAll(); - this.events.length = 0; - this._len = 0; - this._i = 0; - - }, - - /** - * Destroys this Timer. Any pending Events are not dispatched. - * The onComplete callbacks won't be called. - * - * @method Phaser.Timer#destroy - */ - destroy: function () { - - this.onComplete.removeAll(); - this.running = false; - this.events = []; - this._len = 0; - this._i = 0; - - } - -}; - -/** -* @name Phaser.Timer#next -* @property {number} next - The time at which the next event will occur. -* @readonly -*/ -Object.defineProperty(Phaser.Timer.prototype, "next", { - - get: function () { - return this.nextTick; - } - -}); - -/** -* @name Phaser.Timer#duration -* @property {number} duration - The duration in ms remaining until the next event will occur. -* @readonly -*/ -Object.defineProperty(Phaser.Timer.prototype, "duration", { - - get: function () { - - if (this.running && this.nextTick > this._now) - { - return this.nextTick - this._now; - } - else - { - return 0; - } - - } - -}); - -/** -* @name Phaser.Timer#length -* @property {number} length - The number of pending events in the queue. -* @readonly -*/ -Object.defineProperty(Phaser.Timer.prototype, "length", { - - get: function () { - return this.events.length; - } - -}); - -/** -* @name Phaser.Timer#ms -* @property {number} ms - The duration in milliseconds that this Timer has been running for. -* @readonly -*/ -Object.defineProperty(Phaser.Timer.prototype, "ms", { - - get: function () { - - if (this.running) - { - return this._now - this._started - this._pauseTotal; - } - else - { - return 0; - } - - } - -}); - -/** -* @name Phaser.Timer#seconds -* @property {number} seconds - The duration in seconds that this Timer has been running for. -* @readonly -*/ -Object.defineProperty(Phaser.Timer.prototype, "seconds", { - - get: function () { - - if (this.running) - { - return this.ms * 0.001; - } - else - { - return 0; - } - - } - -}); - -Phaser.Timer.prototype.constructor = Phaser.Timer; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A TimerEvent is a single event that is processed by a Phaser.Timer. -* -* It consists of a delay, which is a value in milliseconds after which the event will fire. -* When the event fires it calls a specific callback with the specified arguments. -* -* TimerEvents are removed by their parent timer once finished firing or repeating. -* -* Use {@link Phaser.Timer#add}, {@link Phaser.Timer#repeat}, or {@link Phaser.Timer#loop} methods to create a new event. -* -* @class Phaser.TimerEvent -* @constructor -* @param {Phaser.Timer} timer - The Timer object that this TimerEvent belongs to. -* @param {number} delay - The delay in ms at which this TimerEvent fires. -* @param {number} tick - The tick is the next game clock time that this event will fire at. -* @param {number} repeatCount - If this TimerEvent repeats it will do so this many times. -* @param {boolean} loop - True if this TimerEvent loops, otherwise false. -* @param {function} callback - The callback that will be called when the TimerEvent occurs. -* @param {object} callbackContext - The context in which the callback will be called. -* @param {any[]} arguments - Additional arguments to be passed to the callback. -*/ -Phaser.TimerEvent = function (timer, delay, tick, repeatCount, loop, callback, callbackContext, args) { - - /** - * @property {Phaser.Timer} timer - The Timer object that this TimerEvent belongs to. - * @protected - * @readonly - */ - this.timer = timer; - - /** - * @property {number} delay - The delay in ms at which this TimerEvent fires. - */ - this.delay = delay; - - /** - * @property {number} tick - The tick is the next game clock time that this event will fire at. - */ - this.tick = tick; - - /** - * @property {number} repeatCount - If this TimerEvent repeats it will do so this many times. - */ - this.repeatCount = repeatCount - 1; - - /** - * @property {boolean} loop - True if this TimerEvent loops, otherwise false. - */ - this.loop = loop; - - /** - * @property {function} callback - The callback that will be called when the TimerEvent occurs. - */ - this.callback = callback; - - /** - * @property {object} callbackContext - The context in which the callback will be called. - */ - this.callbackContext = callbackContext; - - /** - * @property {any[]} arguments - Additional arguments to be passed to the callback. - */ - this.args = args; - - /** - * @property {boolean} pendingDelete - A flag that controls if the TimerEvent is pending deletion. - * @protected - */ - this.pendingDelete = false; - -}; - -Phaser.TimerEvent.prototype.constructor = Phaser.TimerEvent; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Animation Manager is used to add, play and update Phaser Animations. -* Any Game Object such as Phaser.Sprite that supports animation contains a single AnimationManager instance. -* -* @class Phaser.AnimationManager -* @constructor -* @param {Phaser.Sprite} sprite - A reference to the Game Object that owns this AnimationManager. -*/ -Phaser.AnimationManager = function (sprite) { - - /** - * @property {Phaser.Sprite} sprite - A reference to the parent Sprite that owns this AnimationManager. - */ - this.sprite = sprite; - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = sprite.game; - - /** - * The currently displayed Frame of animation, if any. - * This property is only set once an Animation starts playing. Until that point it remains set as `null`. - * - * @property {Phaser.Frame} currentFrame - * @default - */ - this.currentFrame = null; - - /** - * @property {Phaser.Animation} currentAnim - The currently displayed animation, if any. - * @default - */ - this.currentAnim = null; - - /** - * @property {boolean} updateIfVisible - Should the animation data continue to update even if the Sprite.visible is set to false. - * @default - */ - this.updateIfVisible = true; - - /** - * @property {boolean} isLoaded - Set to true once animation data has been loaded. - * @default - */ - this.isLoaded = false; - - /** - * @property {Phaser.FrameData} _frameData - A temp. var for holding the currently playing Animations FrameData. - * @private - * @default - */ - this._frameData = null; - - /** - * @property {object} _anims - An internal object that stores all of the Animation instances. - * @private - */ - this._anims = {}; - - /** - * @property {object} _outputFrames - An internal object to help avoid gc. - * @private - */ - this._outputFrames = []; - -}; - -Phaser.AnimationManager.prototype = { - - /** - * Loads FrameData into the internal temporary vars and resets the frame index to zero. - * This is called automatically when a new Sprite is created. - * - * @method Phaser.AnimationManager#loadFrameData - * @private - * @param {Phaser.FrameData} frameData - The FrameData set to load. - * @param {string|number} frame - The frame to default to. - * @return {boolean} Returns `true` if the frame data was loaded successfully, otherwise `false` - */ - loadFrameData: function (frameData, frame) { - - if (frameData === undefined) - { - return false; - } - - if (this.isLoaded) - { - // We need to update the frameData that the animations are using - for (var anim in this._anims) - { - this._anims[anim].updateFrameData(frameData); - } - } - - this._frameData = frameData; - - if (frame === undefined || frame === null) - { - this.frame = 0; - } - else - { - if (typeof frame === 'string') - { - this.frameName = frame; - } - else - { - this.frame = frame; - } - } - - this.isLoaded = true; - - return true; - }, - - /** - * Loads FrameData into the internal temporary vars and resets the frame index to zero. - * This is called automatically when a new Sprite is created. - * - * @method Phaser.AnimationManager#copyFrameData - * @private - * @param {Phaser.FrameData} frameData - The FrameData set to load. - * @param {string|number} frame - The frame to default to. - * @return {boolean} Returns `true` if the frame data was loaded successfully, otherwise `false` - */ - copyFrameData: function (frameData, frame) { - - this._frameData = frameData.clone(); - - if (this.isLoaded) - { - // We need to update the frameData that the animations are using - for (var anim in this._anims) - { - this._anims[anim].updateFrameData(this._frameData); - } - } - - if (frame === undefined || frame === null) - { - this.frame = 0; - } - else - { - if (typeof frame === 'string') - { - this.frameName = frame; - } - else - { - this.frame = frame; - } - } - - this.isLoaded = true; - - return true; - }, - - /** - * Adds a new animation under the given key. Optionally set the frames, frame rate and loop. - * Animations added in this way are played back with the play function. - * - * @method Phaser.AnimationManager#add - * @param {string} name - The unique (within this Sprite) name for the animation, i.e. "run", "fire", "walk". - * @param {Array} [frames=null] - An array of numbers/strings that correspond to the frames to add to this animation and in which order. e.g. [1, 2, 3] or ['run0', 'run1', run2]). If null then all frames will be used. - * @param {number} [frameRate=60] - The speed at which the animation should play. The speed is given in frames per second. - * @param {boolean} [loop=false] - Whether or not the animation is looped or just plays once. - * @param {boolean} [useNumericIndex=true] - Are the given frames using numeric indexes (default) or strings? - * @return {Phaser.Animation} The Animation object that was created. - */ - add: function (name, frames, frameRate, loop, useNumericIndex) { - - frames = frames || []; - frameRate = frameRate || 60; - - if (loop === undefined) { loop = false; } - - // If they didn't set the useNumericIndex then let's at least try and guess it - if (useNumericIndex === undefined) - { - if (frames && typeof frames[0] === 'number') - { - useNumericIndex = true; - } - else - { - useNumericIndex = false; - } - } - - this._outputFrames = []; - - this._frameData.getFrameIndexes(frames, useNumericIndex, this._outputFrames); - - this._anims[name] = new Phaser.Animation(this.game, this.sprite, name, this._frameData, this._outputFrames, frameRate, loop); - - this.currentAnim = this._anims[name]; - - // This shouldn't be set until the Animation is played, surely? - // this.currentFrame = this.currentAnim.currentFrame; - - if (this.sprite.tilingTexture) - { - this.sprite.refreshTexture = true; - } - - return this._anims[name]; - - }, - - /** - * Check whether the frames in the given array are valid and exist. - * - * @method Phaser.AnimationManager#validateFrames - * @param {Array} frames - An array of frames to be validated. - * @param {boolean} [useNumericIndex=true] - Validate the frames based on their numeric index (true) or string index (false) - * @return {boolean} True if all given Frames are valid, otherwise false. - */ - validateFrames: function (frames, useNumericIndex) { - - if (useNumericIndex === undefined) { useNumericIndex = true; } - - for (var i = 0; i < frames.length; i++) - { - if (useNumericIndex === true) - { - if (frames[i] > this._frameData.total) - { - return false; - } - } - else - { - if (this._frameData.checkFrameName(frames[i]) === false) - { - return false; - } - } - } - - return true; - - }, - - /** - * Play an animation based on the given key. The animation should previously have been added via `animations.add` - * - * If the requested animation is already playing this request will be ignored. - * If you need to reset an already running animation do so directly on the Animation object itself. - * - * @method Phaser.AnimationManager#play - * @param {string} name - The name of the animation to be played, e.g. "fire", "walk", "jump". - * @param {number} [frameRate=null] - The framerate to play the animation at. The speed is given in frames per second. If not provided the previously set frameRate of the Animation is used. - * @param {boolean} [loop=false] - Should the animation be looped after playback. If not provided the previously set loop value of the Animation is used. - * @param {boolean} [killOnComplete=false] - If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. - * @return {Phaser.Animation} A reference to playing Animation instance. - */ - play: function (name, frameRate, loop, killOnComplete) { - - if (this._anims[name]) - { - if (this.currentAnim === this._anims[name]) - { - if (this.currentAnim.isPlaying === false) - { - this.currentAnim.paused = false; - return this.currentAnim.play(frameRate, loop, killOnComplete); - } - - return this.currentAnim; - } - else - { - if (this.currentAnim && this.currentAnim.isPlaying) - { - this.currentAnim.stop(); - } - - this.currentAnim = this._anims[name]; - this.currentAnim.paused = false; - this.currentFrame = this.currentAnim.currentFrame; - return this.currentAnim.play(frameRate, loop, killOnComplete); - } - } - - }, - - /** - * Stop playback of an animation. If a name is given that specific animation is stopped, otherwise the current animation is stopped. - * The currentAnim property of the AnimationManager is automatically set to the animation given. - * - * @method Phaser.AnimationManager#stop - * @param {string} [name=null] - The name of the animation to be stopped, e.g. "fire". If none is given the currently running animation is stopped. - * @param {boolean} [resetFrame=false] - When the animation is stopped should the currentFrame be set to the first frame of the animation (true) or paused on the last frame displayed (false) - */ - stop: function (name, resetFrame) { - - if (resetFrame === undefined) { resetFrame = false; } - - if (this.currentAnim && (typeof name !== 'string' || name === this.currentAnim.name)) - { - this.currentAnim.stop(resetFrame); - } - - }, - - /** - * The main update function is called by the Sprites update loop. It's responsible for updating animation frames and firing related events. - * - * @method Phaser.AnimationManager#update - * @protected - * @return {boolean} True if a new animation frame has been set, otherwise false. - */ - update: function () { - - if (this.updateIfVisible && !this.sprite.visible) - { - return false; - } - - if (this.currentAnim && this.currentAnim.update()) - { - this.currentFrame = this.currentAnim.currentFrame; - return true; - } - - return false; - - }, - - /** - * Advances by the given number of frames in the current animation, taking the loop value into consideration. - * - * @method Phaser.AnimationManager#next - * @param {number} [quantity=1] - The number of frames to advance. - */ - next: function (quantity) { - - if (this.currentAnim) - { - this.currentAnim.next(quantity); - this.currentFrame = this.currentAnim.currentFrame; - } - - }, - - /** - * Moves backwards the given number of frames in the current animation, taking the loop value into consideration. - * - * @method Phaser.AnimationManager#previous - * @param {number} [quantity=1] - The number of frames to move back. - */ - previous: function (quantity) { - - if (this.currentAnim) - { - this.currentAnim.previous(quantity); - this.currentFrame = this.currentAnim.currentFrame; - } - - }, - - /** - * Returns an animation that was previously added by name. - * - * @method Phaser.AnimationManager#getAnimation - * @param {string} name - The name of the animation to be returned, e.g. "fire". - * @return {Phaser.Animation} The Animation instance, if found, otherwise null. - */ - getAnimation: function (name) { - - if (typeof name === 'string') - { - if (this._anims[name]) - { - return this._anims[name]; - } - } - - return null; - - }, - - /** - * Refreshes the current frame data back to the parent Sprite and also resets the texture data. - * - * @method Phaser.AnimationManager#refreshFrame - */ - refreshFrame: function () { - - // TODO - // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); - - }, - - /** - * Destroys all references this AnimationManager contains. - * Iterates through the list of animations stored in this manager and calls destroy on each of them. - * - * @method Phaser.AnimationManager#destroy - */ - destroy: function () { - - var anim = null; - - for (var anim in this._anims) - { - if (this._anims.hasOwnProperty(anim)) - { - this._anims[anim].destroy(); - } - } - - this._anims = {}; - this._outputFrames = []; - this._frameData = null; - this.currentAnim = null; - this.currentFrame = null; - this.sprite = null; - this.game = null; - - } - -}; - -Phaser.AnimationManager.prototype.constructor = Phaser.AnimationManager; - -/** -* @name Phaser.AnimationManager#frameData -* @property {Phaser.FrameData} frameData - The current animations FrameData. -* @readonly -*/ -Object.defineProperty(Phaser.AnimationManager.prototype, 'frameData', { - - get: function () { - return this._frameData; - } - -}); - -/** -* @name Phaser.AnimationManager#frameTotal -* @property {number} frameTotal - The total number of frames in the currently loaded FrameData, or -1 if no FrameData is loaded. -* @readonly -*/ -Object.defineProperty(Phaser.AnimationManager.prototype, 'frameTotal', { - - get: function () { - - return this._frameData.total; - } - -}); - -/** -* @name Phaser.AnimationManager#paused -* @property {boolean} paused - Gets and sets the paused state of the current animation. -*/ -Object.defineProperty(Phaser.AnimationManager.prototype, 'paused', { - - get: function () { - - return this.currentAnim.isPaused; - - }, - - set: function (value) { - - this.currentAnim.paused = value; - - } - -}); - -/** -* @name Phaser.AnimationManager#name -* @property {string} name - Gets the current animation name, if set. -*/ -Object.defineProperty(Phaser.AnimationManager.prototype, 'name', { - - get: function () { - - if (this.currentAnim) - { - return this.currentAnim.name; - } - - } - -}); - -/** -* @name Phaser.AnimationManager#frame -* @property {number} frame - Gets or sets the current frame index and updates the Texture Cache for display. -*/ -Object.defineProperty(Phaser.AnimationManager.prototype, 'frame', { - - get: function () { - - if (this.currentFrame) - { - return this.currentFrame.index; - } - - }, - - set: function (value) { - - if (typeof value === 'number' && this._frameData && this._frameData.getFrame(value) !== null) - { - this.currentFrame = this._frameData.getFrame(value); - - if (this.currentFrame) - { - this.sprite.setFrame(this.currentFrame); - } - } - - } - -}); - -/** -* @name Phaser.AnimationManager#frameName -* @property {string} frameName - Gets or sets the current frame name and updates the Texture Cache for display. -*/ -Object.defineProperty(Phaser.AnimationManager.prototype, 'frameName', { - - get: function () { - - if (this.currentFrame) - { - return this.currentFrame.name; - } - - }, - - set: function (value) { - - if (typeof value === 'string' && this._frameData && this._frameData.getFrameByName(value) !== null) - { - this.currentFrame = this._frameData.getFrameByName(value); - - if (this.currentFrame) - { - this._frameIndex = this.currentFrame.index; - - this.sprite.setFrame(this.currentFrame); - } - } - else - { - console.warn('Cannot set frameName: ' + value); - } - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* An Animation instance contains a single animation and the controls to play it. -* -* It is created by the AnimationManager, consists of Animation.Frame objects and belongs to a single Game Object such as a Sprite. -* -* @class Phaser.Animation -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {Phaser.Sprite} parent - A reference to the owner of this Animation. -* @param {string} name - The unique name for this animation, used in playback commands. -* @param {Phaser.FrameData} frameData - The FrameData object that contains all frames used by this Animation. -* @param {number[]|string[]} frames - An array of numbers or strings indicating which frames to play in which order. -* @param {number} [frameRate=60] - The speed at which the animation should play. The speed is given in frames per second. -* @param {boolean} [loop=false] - Whether or not the animation is looped or just plays once. -*/ -Phaser.Animation = function (game, parent, name, frameData, frames, frameRate, loop) { - - if (loop === undefined) { loop = false; } - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.Sprite} _parent - A reference to the parent Sprite that owns this Animation. - * @private - */ - this._parent = parent; - - /** - * @property {Phaser.FrameData} _frameData - The FrameData the Animation uses. - * @private - */ - this._frameData = frameData; - - /** - * @property {string} name - The user defined name given to this Animation. - */ - this.name = name; - - /** - * @property {array} _frames - * @private - */ - this._frames = []; - this._frames = this._frames.concat(frames); - - /** - * @property {number} delay - The delay in ms between each frame of the Animation, based on the given frameRate. - */ - this.delay = 1000 / frameRate; - - /** - * @property {boolean} loop - The loop state of the Animation. - */ - this.loop = loop; - - /** - * @property {number} loopCount - The number of times the animation has looped since it was last started. - */ - this.loopCount = 0; - - /** - * @property {boolean} killOnComplete - Should the parent of this Animation be killed when the animation completes? - * @default - */ - this.killOnComplete = false; - - /** - * @property {boolean} isFinished - The finished state of the Animation. Set to true once playback completes, false during playback. - * @default - */ - this.isFinished = false; - - /** - * @property {boolean} isPlaying - The playing state of the Animation. Set to false once playback completes, true during playback. - * @default - */ - this.isPlaying = false; - - /** - * @property {boolean} isPaused - The paused state of the Animation. - * @default - */ - this.isPaused = false; - - /** - * @property {boolean} _pauseStartTime - The time the animation paused. - * @private - * @default - */ - this._pauseStartTime = 0; - - /** - * @property {number} _frameIndex - * @private - * @default - */ - this._frameIndex = 0; - - /** - * @property {number} _frameDiff - * @private - * @default - */ - this._frameDiff = 0; - - /** - * @property {number} _frameSkip - * @private - * @default - */ - this._frameSkip = 1; - - /** - * @property {Phaser.Frame} currentFrame - The currently displayed frame of the Animation. - */ - this.currentFrame = this._frameData.getFrame(this._frames[this._frameIndex]); - - /** - * @property {Phaser.Signal} onStart - This event is dispatched when this Animation starts playback. - */ - this.onStart = new Phaser.Signal(); - - /** - * This event is dispatched when the Animation changes frame. - * By default this event is disabled due to its intensive nature. Enable it with: `Animation.enableUpdate = true`. - * Note that the event is only dispatched with the current frame. In a low-FPS environment Animations - * will automatically frame-skip to try and claw back time, so do not base your code on expecting to - * receive a perfectly sequential set of frames from this event. - * @property {Phaser.Signal|null} onUpdate - * @default - */ - this.onUpdate = null; - - /** - * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onLoop instead. - */ - this.onComplete = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onLoop - This event is dispatched when this Animation loops. - */ - this.onLoop = new Phaser.Signal(); - - /** - * @property {boolean} isReversed - Indicates if the animation will play backwards. - * @default - */ - this.isReversed = false; - - // Set-up some event listeners - this.game.onPause.add(this.onPause, this); - this.game.onResume.add(this.onResume, this); - -}; - -Phaser.Animation.prototype = { - - /** - * Plays this animation. - * - * @method Phaser.Animation#play - * @param {number} [frameRate=null] - The framerate to play the animation at. The speed is given in frames per second. If not provided the previously set frameRate of the Animation is used. - * @param {boolean} [loop=false] - Should the animation be looped after playback. If not provided the previously set loop value of the Animation is used. - * @param {boolean} [killOnComplete=false] - If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. - * @return {Phaser.Animation} - A reference to this Animation instance. - */ - play: function (frameRate, loop, killOnComplete) { - - if (typeof frameRate === 'number') - { - // If they set a new frame rate then use it, otherwise use the one set on creation - this.delay = 1000 / frameRate; - } - - if (typeof loop === 'boolean') - { - // If they set a new loop value then use it, otherwise use the one set on creation - this.loop = loop; - } - - if (typeof killOnComplete !== 'undefined') - { - // Remove the parent sprite once the animation has finished? - this.killOnComplete = killOnComplete; - } - - this.isPlaying = true; - this.isFinished = false; - this.paused = false; - this.loopCount = 0; - - this._timeLastFrame = this.game.time.time; - this._timeNextFrame = this.game.time.time + this.delay; - - this._frameIndex = this.isReversed ? this._frames.length - 1 : 0; - this.updateCurrentFrame(false, true); - - this._parent.events.onAnimationStart$dispatch(this._parent, this); - - this.onStart.dispatch(this._parent, this); - - this._parent.animations.currentAnim = this; - this._parent.animations.currentFrame = this.currentFrame; - - return this; - - }, - - /** - * Sets this animation back to the first frame and restarts the animation. - * - * @method Phaser.Animation#restart - */ - restart: function () { - - this.isPlaying = true; - this.isFinished = false; - this.paused = false; - this.loopCount = 0; - - this._timeLastFrame = this.game.time.time; - this._timeNextFrame = this.game.time.time + this.delay; - - this._frameIndex = 0; - - this.currentFrame = this._frameData.getFrame(this._frames[this._frameIndex]); - - this._parent.setFrame(this.currentFrame); - - this._parent.animations.currentAnim = this; - this._parent.animations.currentFrame = this.currentFrame; - - this.onStart.dispatch(this._parent, this); - - }, - - /** - * Reverses the animation direction - * - * @method Phaser.Animation#reverse - * @return {Phaser.Animation} The animation instance. - * */ - reverse: function () { - this.reversed = !this.reversed; - - return this; - }, - - /** - * Reverses the animation direction for the current/next animation only - * Once the onComplete event is called this method will be called again and revert - * the reversed state. - * - * @method Phaser.Animation#reverseOnce - * @return {Phaser.Animation} The animation instance. - * */ - reverseOnce: function () { - this.onComplete.addOnce(this.reverse.bind(this)); - - return this.reverse(); - }, - - /** - * Sets this animations playback to a given frame with the given ID. - * - * @method Phaser.Animation#setFrame - * @param {string|number} [frameId] - The identifier of the frame to set. Can be the name of the frame, the sprite index of the frame, or the animation-local frame index. - * @param {boolean} [useLocalFrameIndex=false] - If you provide a number for frameId, should it use the numeric indexes of the frameData, or the 0-indexed frame index local to the animation. - */ - setFrame: function(frameId, useLocalFrameIndex) { - - var frameIndex; - - if (useLocalFrameIndex === undefined) - { - useLocalFrameIndex = false; - } - - // Find the index to the desired frame. - if (typeof frameId === "string") - { - for (var i = 0; i < this._frames.length; i++) - { - if (this._frameData.getFrame(this._frames[i]).name === frameId) - { - frameIndex = i; - } - } - } - else if (typeof frameId === "number") - { - if (useLocalFrameIndex) - { - frameIndex = frameId; - } - else - { - for (var i = 0; i < this._frames.length; i++) - { - if (this._frames[i] === frameId) - { - frameIndex = i; - } - } - } - } - - if (frameIndex) - { - // Set the current frame index to the found index. Subtract 1 so that it animates to the desired frame on update. - this._frameIndex = frameIndex - 1; - - // Make the animation update at next update - this._timeNextFrame = this.game.time.time; - - this.update(); - } - - }, - - /** - * Stops playback of this animation and set it to a finished state. If a resetFrame is provided it will stop playback and set frame to the first in the animation. - * If `dispatchComplete` is true it will dispatch the complete events, otherwise they'll be ignored. - * - * @method Phaser.Animation#stop - * @param {boolean} [resetFrame=false] - If true after the animation stops the currentFrame value will be set to the first frame in this animation. - * @param {boolean} [dispatchComplete=false] - Dispatch the Animation.onComplete and parent.onAnimationComplete events? - */ - stop: function (resetFrame, dispatchComplete) { - - if (resetFrame === undefined) { resetFrame = false; } - if (dispatchComplete === undefined) { dispatchComplete = false; } - - this.isPlaying = false; - this.isFinished = true; - this.paused = false; - - if (resetFrame) - { - this.currentFrame = this._frameData.getFrame(this._frames[0]); - this._parent.setFrame(this.currentFrame); - } - - if (dispatchComplete) - { - this._parent.events.onAnimationComplete$dispatch(this._parent, this); - this.onComplete.dispatch(this._parent, this); - } - - }, - - /** - * Called when the Game enters a paused state. - * - * @method Phaser.Animation#onPause - */ - onPause: function () { - - if (this.isPlaying) - { - this._frameDiff = this._timeNextFrame - this.game.time.time; - } - - }, - - /** - * Called when the Game resumes from a paused state. - * - * @method Phaser.Animation#onResume - */ - onResume: function () { - - if (this.isPlaying) - { - this._timeNextFrame = this.game.time.time + this._frameDiff; - } - - }, - - /** - * Updates this animation. Called automatically by the AnimationManager. - * - * @method Phaser.Animation#update - */ - update: function () { - - if (this.isPaused) - { - return false; - } - - if (this.isPlaying && this.game.time.time >= this._timeNextFrame) - { - this._frameSkip = 1; - - // Lagging? - this._frameDiff = this.game.time.time - this._timeNextFrame; - - this._timeLastFrame = this.game.time.time; - - if (this._frameDiff > this.delay) - { - // We need to skip a frame, work out how many - this._frameSkip = Math.floor(this._frameDiff / this.delay); - this._frameDiff -= (this._frameSkip * this.delay); - } - - // And what's left now? - this._timeNextFrame = this.game.time.time + (this.delay - this._frameDiff); - - if (this.isReversed){ - this._frameIndex -= this._frameSkip; - }else{ - this._frameIndex += this._frameSkip; - } - - if (!this.isReversed && this._frameIndex >= this._frames.length || this.isReversed && this._frameIndex <= -1) - { - if (this.loop) - { - // Update current state before event callback - this._frameIndex = Math.abs(this._frameIndex) % this._frames.length; - - if (this.isReversed){ - this._frameIndex = this._frames.length - 1 - this._frameIndex; - } - - this.currentFrame = this._frameData.getFrame(this._frames[this._frameIndex]); - - // Instead of calling updateCurrentFrame we do it here instead - if (this.currentFrame) - { - this._parent.setFrame(this.currentFrame); - } - - this.loopCount++; - this._parent.events.onAnimationLoop$dispatch(this._parent, this); - this.onLoop.dispatch(this._parent, this); - - if (this.onUpdate) - { - this.onUpdate.dispatch(this, this.currentFrame); - - // False if the animation was destroyed from within a callback - return !!this._frameData; - } - else - { - return true; - } - } - else - { - this.complete(); - return false; - } - } - else - { - return this.updateCurrentFrame(true); - } - } - - return false; - - }, - - /** - * Changes the currentFrame per the _frameIndex, updates the display state, - * and triggers the update signal. - * - * Returns true if the current frame update was 'successful', false otherwise. - * - * @method Phaser.Animation#updateCurrentFrame - * @private - * @param {boolean} signalUpdate - If true the `Animation.onUpdate` signal will be dispatched. - * @param {boolean} fromPlay - Was this call made from the playing of a new animation? - * @return {boolean} True if the current frame was updated, otherwise false. - */ - updateCurrentFrame: function (signalUpdate, fromPlay) { - - if (fromPlay === undefined) { fromPlay = false; } - - if (!this._frameData) - { - // The animation is already destroyed, probably from a callback - return false; - } - - // Previous index - var idx = this.currentFrame.index; - - this.currentFrame = this._frameData.getFrame(this._frames[this._frameIndex]); - - if (this.currentFrame && (fromPlay || (!fromPlay && idx !== this.currentFrame.index))) - { - this._parent.setFrame(this.currentFrame); - } - - if (this.onUpdate && signalUpdate) - { - this.onUpdate.dispatch(this, this.currentFrame); - - // False if the animation was destroyed from within a callback - return !!this._frameData; - } - else - { - return true; - } - - }, - - /** - * Advances by the given number of frames in the Animation, taking the loop value into consideration. - * - * @method Phaser.Animation#next - * @param {number} [quantity=1] - The number of frames to advance. - */ - next: function (quantity) { - - if (quantity === undefined) { quantity = 1; } - - var frame = this._frameIndex + quantity; - - if (frame >= this._frames.length) - { - if (this.loop) - { - frame %= this._frames.length; - } - else - { - frame = this._frames.length - 1; - } - } - - if (frame !== this._frameIndex) - { - this._frameIndex = frame; - this.updateCurrentFrame(true); - } - - }, - - /** - * Moves backwards the given number of frames in the Animation, taking the loop value into consideration. - * - * @method Phaser.Animation#previous - * @param {number} [quantity=1] - The number of frames to move back. - */ - previous: function (quantity) { - - if (quantity === undefined) { quantity = 1; } - - var frame = this._frameIndex - quantity; - - if (frame < 0) - { - if (this.loop) - { - frame = this._frames.length + frame; - } - else - { - frame++; - } - } - - if (frame !== this._frameIndex) - { - this._frameIndex = frame; - this.updateCurrentFrame(true); - } - - }, - - /** - * Changes the FrameData object this Animation is using. - * - * @method Phaser.Animation#updateFrameData - * @param {Phaser.FrameData} frameData - The FrameData object that contains all frames used by this Animation. - */ - updateFrameData: function (frameData) { - - this._frameData = frameData; - this.currentFrame = this._frameData ? this._frameData.getFrame(this._frames[this._frameIndex % this._frames.length]) : null; - - }, - - /** - * Cleans up this animation ready for deletion. Nulls all values and references. - * - * @method Phaser.Animation#destroy - */ - destroy: function () { - - if (!this._frameData) - { - // Already destroyed - return; - } - - this.game.onPause.remove(this.onPause, this); - this.game.onResume.remove(this.onResume, this); - - this.game = null; - this._parent = null; - this._frames = null; - this._frameData = null; - this.currentFrame = null; - this.isPlaying = false; - - this.onStart.dispose(); - this.onLoop.dispose(); - this.onComplete.dispose(); - - if (this.onUpdate) - { - this.onUpdate.dispose(); - } - - }, - - /** - * Called internally when the animation finishes playback. - * Sets the isPlaying and isFinished states and dispatches the onAnimationComplete event if it exists on the parent and local onComplete event. - * - * @method Phaser.Animation#complete - */ - complete: function () { - - this._frameIndex = this._frames.length - 1; - this.currentFrame = this._frameData.getFrame(this._frames[this._frameIndex]); - - this.isPlaying = false; - this.isFinished = true; - this.paused = false; - - this._parent.events.onAnimationComplete$dispatch(this._parent, this); - - this.onComplete.dispatch(this._parent, this); - - if (this.killOnComplete) - { - this._parent.kill(); - } - - } - -}; - -Phaser.Animation.prototype.constructor = Phaser.Animation; - -/** -* @name Phaser.Animation#paused -* @property {boolean} paused - Gets and sets the paused state of this Animation. -*/ -Object.defineProperty(Phaser.Animation.prototype, 'paused', { - - get: function () { - - return this.isPaused; - - }, - - set: function (value) { - - this.isPaused = value; - - if (value) - { - // Paused - this._pauseStartTime = this.game.time.time; - } - else - { - // Un-paused - if (this.isPlaying) - { - this._timeNextFrame = this.game.time.time + this.delay; - } - } - - } - -}); - -/** -* @name Phaser.Animation#reversed -* @property {boolean} reversed - Gets and sets the isReversed state of this Animation. -*/ -Object.defineProperty(Phaser.Animation.prototype, 'reversed', { - - get: function () { - - return this.isReversed; - - }, - - set: function (value) { - - this.isReversed = value; - - } - -}); - -/** -* @name Phaser.Animation#frameTotal -* @property {number} frameTotal - The total number of frames in the currently loaded FrameData, or -1 if no FrameData is loaded. -* @readonly -*/ -Object.defineProperty(Phaser.Animation.prototype, 'frameTotal', { - - get: function () { - return this._frames.length; - } - -}); - -/** -* @name Phaser.Animation#frame -* @property {number} frame - Gets or sets the current frame index and updates the Texture Cache for display. -*/ -Object.defineProperty(Phaser.Animation.prototype, 'frame', { - - get: function () { - - if (this.currentFrame !== null) - { - return this.currentFrame.index; - } - else - { - return this._frameIndex; - } - - }, - - set: function (value) { - - this.currentFrame = this._frameData.getFrame(this._frames[value]); - - if (this.currentFrame !== null) - { - this._frameIndex = value; - this._parent.setFrame(this.currentFrame); - - if (this.onUpdate) - { - this.onUpdate.dispatch(this, this.currentFrame); - } - } - - } - -}); - -/** -* @name Phaser.Animation#speed -* @property {number} speed - Gets or sets the current speed of the animation in frames per second. Changing this in a playing animation will take effect from the next frame. Minimum value is 1. -*/ -Object.defineProperty(Phaser.Animation.prototype, 'speed', { - - get: function () { - - return Math.round(1000 / this.delay); - - }, - - set: function (value) { - - if (value >= 1) - { - this.delay = 1000 / value; - } - - } - -}); - -/** -* @name Phaser.Animation#enableUpdate -* @property {boolean} enableUpdate - Gets or sets if this animation will dispatch the onUpdate events upon changing frame. -*/ -Object.defineProperty(Phaser.Animation.prototype, 'enableUpdate', { - - get: function () { - - return (this.onUpdate !== null); - - }, - - set: function (value) { - - if (value && this.onUpdate === null) - { - this.onUpdate = new Phaser.Signal(); - } - else if (!value && this.onUpdate !== null) - { - this.onUpdate.dispose(); - this.onUpdate = null; - } - - } - -}); - -/** -* Really handy function for when you are creating arrays of animation data but it's using frame names and not numbers. -* For example imagine you've got 30 frames named: 'explosion_0001-large' to 'explosion_0030-large' -* You could use this function to generate those by doing: Phaser.Animation.generateFrameNames('explosion_', 1, 30, '-large', 4); -* -* @method Phaser.Animation.generateFrameNames -* @static -* @param {string} prefix - The start of the filename. If the filename was 'explosion_0001-large' the prefix would be 'explosion_'. -* @param {number} start - The number to start sequentially counting from. If your frames are named 'explosion_0001' to 'explosion_0034' the start is 1. -* @param {number} stop - The number to count to. If your frames are named 'explosion_0001' to 'explosion_0034' the stop value is 34. -* @param {string} [suffix=''] - The end of the filename. If the filename was 'explosion_0001-large' the prefix would be '-large'. -* @param {number} [zeroPad=0] - The number of zeros to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. -* @return {string[]} An array of framenames. -*/ -Phaser.Animation.generateFrameNames = function (prefix, start, stop, suffix, zeroPad) { - - if (suffix === undefined) { suffix = ''; } - - var output = []; - var frame = ''; - - if (start < stop) - { - for (var i = start; i <= stop; i++) - { - if (typeof zeroPad === 'number') - { - // str, len, pad, dir - frame = Phaser.Utils.pad(i.toString(), zeroPad, '0', 1); - } - else - { - frame = i.toString(); - } - - frame = prefix + frame + suffix; - - output.push(frame); - } - } - else - { - for (var i = start; i >= stop; i--) - { - if (typeof zeroPad === 'number') - { - // str, len, pad, dir - frame = Phaser.Utils.pad(i.toString(), zeroPad, '0', 1); - } - else - { - frame = i.toString(); - } - - frame = prefix + frame + suffix; - - output.push(frame); - } - } - - return output; - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Frame is a single frame of an animation and is part of a FrameData collection. -* -* @class Phaser.Frame -* @constructor -* @param {number} index - The index of this Frame within the FrameData set it is being added to. -* @param {number} x - X position of the frame within the texture image. -* @param {number} y - Y position of the frame within the texture image. -* @param {number} width - Width of the frame within the texture image. -* @param {number} height - Height of the frame within the texture image. -* @param {string} name - The name of the frame. In Texture Atlas data this is usually set to the filename. -*/ -Phaser.Frame = function (index, x, y, width, height, name) { - - /** - * @property {number} index - The index of this Frame within the FrameData set it is being added to. - */ - this.index = index; - - /** - * @property {number} x - X position within the image to cut from. - */ - this.x = x; - - /** - * @property {number} y - Y position within the image to cut from. - */ - this.y = y; - - /** - * @property {number} width - Width of the frame. - */ - this.width = width; - - /** - * @property {number} height - Height of the frame. - */ - this.height = height; - - /** - * @property {string} name - Useful for Texture Atlas files (is set to the filename value). - */ - this.name = name; - - /** - * @property {number} centerX - Center X position within the image to cut from. - */ - this.centerX = Math.floor(width / 2); - - /** - * @property {number} centerY - Center Y position within the image to cut from. - */ - this.centerY = Math.floor(height / 2); - - /** - * @property {number} distance - The distance from the top left to the bottom-right of this Frame. - */ - this.distance = Phaser.Math.distance(0, 0, width, height); - - /** - * @property {boolean} rotated - Rotated? (not yet implemented) - * @default - */ - this.rotated = false; - - /** - * @property {string} rotationDirection - Either 'cw' or 'ccw', rotation is always 90 degrees. - * @default 'cw' - */ - this.rotationDirection = 'cw'; - - /** - * @property {boolean} trimmed - Was it trimmed when packed? - * @default - */ - this.trimmed = false; - - /** - * @property {number} sourceSizeW - Width of the original sprite before it was trimmed. - */ - this.sourceSizeW = width; - - /** - * @property {number} sourceSizeH - Height of the original sprite before it was trimmed. - */ - this.sourceSizeH = height; - - /** - * @property {number} spriteSourceSizeX - X position of the trimmed sprite inside original sprite. - * @default - */ - this.spriteSourceSizeX = 0; - - /** - * @property {number} spriteSourceSizeY - Y position of the trimmed sprite inside original sprite. - * @default - */ - this.spriteSourceSizeY = 0; - - /** - * @property {number} spriteSourceSizeW - Width of the trimmed sprite. - * @default - */ - this.spriteSourceSizeW = 0; - - /** - * @property {number} spriteSourceSizeH - Height of the trimmed sprite. - * @default - */ - this.spriteSourceSizeH = 0; - - /** - * @property {number} right - The right of the Frame (x + width). - */ - this.right = this.x + this.width; - - /** - * @property {number} bottom - The bottom of the frame (y + height). - */ - this.bottom = this.y + this.height; - -}; - -Phaser.Frame.prototype = { - - /** - * Adjusts of all the Frame properties based on the given width and height values. - * - * @method Phaser.Frame#resize - * @param {integer} width - The new width of the Frame. - * @param {integer} height - The new height of the Frame. - */ - resize: function (width, height) { - - this.width = width; - this.height = height; - this.centerX = Math.floor(width / 2); - this.centerY = Math.floor(height / 2); - this.distance = Phaser.Math.distance(0, 0, width, height); - this.sourceSizeW = width; - this.sourceSizeH = height; - this.right = this.x + width; - this.bottom = this.y + height; - - }, - - /** - * If the frame was trimmed when added to the Texture Atlas this records the trim and source data. - * - * @method Phaser.Frame#setTrim - * @param {boolean} trimmed - If this frame was trimmed or not. - * @param {number} actualWidth - The width of the frame before being trimmed. - * @param {number} actualHeight - The height of the frame before being trimmed. - * @param {number} destX - The destination X position of the trimmed frame for display. - * @param {number} destY - The destination Y position of the trimmed frame for display. - * @param {number} destWidth - The destination width of the trimmed frame for display. - * @param {number} destHeight - The destination height of the trimmed frame for display. - */ - setTrim: function (trimmed, actualWidth, actualHeight, destX, destY, destWidth, destHeight) { - - this.trimmed = trimmed; - - if (trimmed) - { - this.sourceSizeW = actualWidth; - this.sourceSizeH = actualHeight; - this.centerX = Math.floor(actualWidth / 2); - this.centerY = Math.floor(actualHeight / 2); - this.spriteSourceSizeX = destX; - this.spriteSourceSizeY = destY; - this.spriteSourceSizeW = destWidth; - this.spriteSourceSizeH = destHeight; - } - - }, - - /** - * Clones this Frame into a new Phaser.Frame object and returns it. - * Note that all properties are cloned, including the name, index and UUID. - * - * @method Phaser.Frame#clone - * @return {Phaser.Frame} An exact copy of this Frame object. - */ - clone: function () { - - var output = new Phaser.Frame(this.index, this.x, this.y, this.width, this.height, this.name); - - for (var prop in this) - { - if (this.hasOwnProperty(prop)) - { - output[prop] = this[prop]; - } - } - - return output; - - }, - - /** - * Returns a Rectangle set to the dimensions of this Frame. - * - * @method Phaser.Frame#getRect - * @param {Phaser.Rectangle} [out] - A rectangle to copy the frame dimensions to. - * @return {Phaser.Rectangle} A rectangle. - */ - getRect: function (out) { - - if (out === undefined) - { - out = new Phaser.Rectangle(this.x, this.y, this.width, this.height); - } - else - { - out.setTo(this.x, this.y, this.width, this.height); - } - - return out; - - } - -}; - -Phaser.Frame.prototype.constructor = Phaser.Frame; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* FrameData is a container for Frame objects, which are the internal representation of animation data in Phaser. -* -* @class Phaser.FrameData -* @constructor -*/ -Phaser.FrameData = function () { - - /** - * @property {Array} _frames - Local array of frames. - * @private - */ - this._frames = []; - - /** - * @property {Array} _frameNames - Local array of frame names for name to index conversions. - * @private - */ - this._frameNames = []; - -}; - -Phaser.FrameData.prototype = { - - /** - * Adds a new Frame to this FrameData collection. Typically called by the Animation.Parser and not directly. - * - * @method Phaser.FrameData#addFrame - * @param {Phaser.Frame} frame - The frame to add to this FrameData set. - * @return {Phaser.Frame} The frame that was just added. - */ - addFrame: function (frame) { - - frame.index = this._frames.length; - - this._frames.push(frame); - - if (frame.name !== '') - { - this._frameNames[frame.name] = frame.index; - } - - return frame; - - }, - - /** - * Get a Frame by its numerical index. - * - * @method Phaser.FrameData#getFrame - * @param {number} index - The index of the frame you want to get. - * @return {Phaser.Frame} The frame, if found. - */ - getFrame: function (index) { - - if (index >= this._frames.length) - { - index = 0; - } - - return this._frames[index]; - - }, - - /** - * Get a Frame by its frame name. - * - * @method Phaser.FrameData#getFrameByName - * @param {string} name - The name of the frame you want to get. - * @return {Phaser.Frame} The frame, if found. - */ - getFrameByName: function (name) { - - if (typeof this._frameNames[name] === 'number') - { - return this._frames[this._frameNames[name]]; - } - - return null; - - }, - - /** - * Check if there is a Frame with the given name. - * - * @method Phaser.FrameData#checkFrameName - * @param {string} name - The name of the frame you want to check. - * @return {boolean} True if the frame is found, otherwise false. - */ - checkFrameName: function (name) { - - if (this._frameNames[name] == null) - { - return false; - } - - return true; - - }, - - /** - * Makes a copy of this FrameData including copies (not references) to all of the Frames it contains. - * - * @method Phaser.FrameData#clone - * @return {Phaser.FrameData} A clone of this object, including clones of the Frame objects it contains. - */ - clone: function () { - - var output = new Phaser.FrameData(); - - // No input array, so we loop through all frames - for (var i = 0; i < this._frames.length; i++) - { - output._frames.push(this._frames[i].clone()); - } - - for (var p in this._frameNames) - { - if (this._frameNames.hasOwnProperty(p)) - { - output._frameNames.push(this._frameNames[p]); - } - } - - return output; - - }, - - /** - * Returns a range of frames based on the given start and end frame indexes and returns them in an Array. - * - * @method Phaser.FrameData#getFrameRange - * @param {number} start - The starting frame index. - * @param {number} end - The ending frame index. - * @param {Array} [output] - If given the results will be appended to the end of this array otherwise a new array will be created. - * @return {Array} An array of Frames between the start and end index values, or an empty array if none were found. - */ - getFrameRange: function (start, end, output) { - - if (output === undefined) { output = []; } - - for (var i = start; i <= end; i++) - { - output.push(this._frames[i]); - } - - return output; - - }, - - /** - * Returns all of the Frames in this FrameData set where the frame index is found in the input array. - * The frames are returned in the output array, or if none is provided in a new Array object. - * - * @method Phaser.FrameData#getFrames - * @param {Array} [frames] - An Array containing the indexes of the frames to retrieve. If the array is empty or undefined then all frames in the FrameData are returned. - * @param {boolean} [useNumericIndex=true] - Are the given frames using numeric indexes (default) or strings? (false) - * @param {Array} [output] - If given the results will be appended to the end of this array otherwise a new array will be created. - * @return {Array} An array of all Frames in this FrameData set matching the given names or IDs. - */ - getFrames: function (frames, useNumericIndex, output) { - - if (useNumericIndex === undefined) { useNumericIndex = true; } - if (output === undefined) { output = []; } - - if (frames === undefined || frames.length === 0) - { - // No input array, so we loop through all frames - for (var i = 0; i < this._frames.length; i++) - { - // We only need the indexes - output.push(this._frames[i]); - } - } - else - { - // Input array given, loop through that instead - for (var i = 0; i < frames.length; i++) - { - // Does the input array contain names or indexes? - if (useNumericIndex) - { - // The actual frame - output.push(this.getFrame(frames[i])); - } - else - { - // The actual frame - output.push(this.getFrameByName(frames[i])); - } - } - } - - return output; - - }, - - /** - * Returns all of the Frame indexes in this FrameData set. - * The frames indexes are returned in the output array, or if none is provided in a new Array object. - * - * @method Phaser.FrameData#getFrameIndexes - * @param {Array} [frames] - An Array containing the indexes of the frames to retrieve. If undefined or the array is empty then all frames in the FrameData are returned. - * @param {boolean} [useNumericIndex=true] - Are the given frames using numeric indexes (default) or strings? (false) - * @param {Array} [output] - If given the results will be appended to the end of this array otherwise a new array will be created. - * @return {Array} An array of all Frame indexes matching the given names or IDs. - */ - getFrameIndexes: function (frames, useNumericIndex, output) { - - if (useNumericIndex === undefined) { useNumericIndex = true; } - if (output === undefined) { output = []; } - - if (frames === undefined || frames.length === 0) - { - // No frames array, so we loop through all frames - for (var i = 0; i < this._frames.length; i++) - { - output.push(this._frames[i].index); - } - } - else - { - // Input array given, loop through that instead - for (var i = 0; i < frames.length; i++) - { - // Does the frames array contain names or indexes? - if (useNumericIndex && this._frames[frames[i]]) - { - output.push(this._frames[frames[i]].index); - } - else - { - if (this.getFrameByName(frames[i])) - { - output.push(this.getFrameByName(frames[i]).index); - } - } - } - } - - return output; - - }, - - /** - * Destroys this FrameData collection by nulling the _frames and _frameNames arrays. - * - * @method Phaser.FrameData#destroy - */ - destroy: function () { - - this._frames = null; - this._frameNames = null; - - } - -}; - -Phaser.FrameData.prototype.constructor = Phaser.FrameData; - -/** -* @name Phaser.FrameData#total -* @property {number} total - The total number of frames in this FrameData set. -* @readonly -*/ -Object.defineProperty(Phaser.FrameData.prototype, "total", { - - get: function () { - return this._frames.length; - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Responsible for parsing sprite sheet and JSON data into the internal FrameData format that Phaser uses for animations. -* -* @class Phaser.AnimationParser -* @static -*/ -Phaser.AnimationParser = { - - /** - * Parse a Sprite Sheet and extract the animation frame data from it. - * - * @method Phaser.AnimationParser.spriteSheet - * @param {Phaser.Game} game - A reference to the currently running game. - * @param {string|Image} key - The Game.Cache asset key of the Sprite Sheet image or an actual HTML Image element. - * @param {number} frameWidth - The fixed width of each frame of the animation. - * @param {number} frameHeight - The fixed height of each frame of the animation. - * @param {number} [frameMax=-1] - The total number of animation frames to extract from the Sprite Sheet. The default value of -1 means "extract all frames". - * @param {number} [margin=0] - If the frames have been drawn with a margin, specify the amount here. - * @param {number} [spacing=0] - If the frames have been drawn with spacing between them, specify the amount here. - * @return {Phaser.FrameData} A FrameData object containing the parsed frames. - */ - spriteSheet: function (game, key, frameWidth, frameHeight, frameMax, margin, spacing) { - - var img = key; - - if (typeof key === 'string') - { - img = game.cache.getImage(key); - } - - if (img === null) - { - return null; - } - - var width = img.width; - var height = img.height; - - if (frameWidth <= 0) - { - frameWidth = Math.floor(-width / Math.min(-1, frameWidth)); - } - - if (frameHeight <= 0) - { - frameHeight = Math.floor(-height / Math.min(-1, frameHeight)); - } - - var row = Math.floor((width - margin) / (frameWidth + spacing)); - var column = Math.floor((height - margin) / (frameHeight + spacing)); - var total = row * column; - - if (frameMax !== -1) - { - total = frameMax; - } - - // Zero or smaller than frame sizes? - if (width === 0 || height === 0 || width < frameWidth || height < frameHeight || total === 0) - { - console.warn("Phaser.AnimationParser.spriteSheet: '" + key + "'s width/height zero or width/height < given frameWidth/frameHeight"); - return null; - } - - // Let's create some frames then - var data = new Phaser.FrameData(); - var x = margin; - var y = margin; - - for (var i = 0; i < total; i++) - { - data.addFrame(new Phaser.Frame(i, x, y, frameWidth, frameHeight, '')); - - x += frameWidth + spacing; - - if (x + frameWidth > width) - { - x = margin; - y += frameHeight + spacing; - } - } - - return data; - - }, - - /** - * Parse the JSON data and extract the animation frame data from it. - * - * @method Phaser.AnimationParser.JSONData - * @param {Phaser.Game} game - A reference to the currently running game. - * @param {object} json - The JSON data from the Texture Atlas. Must be in Array format. - * @return {Phaser.FrameData} A FrameData object containing the parsed frames. - */ - JSONData: function (game, json) { - - // Malformed? - if (!json['frames']) - { - console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"); - console.log(json); - return; - } - - // Let's create some frames then - var data = new Phaser.FrameData(); - - // By this stage frames is a fully parsed array - var frames = json['frames']; - var newFrame; - - for (var i = 0; i < frames.length; i++) - { - newFrame = data.addFrame(new Phaser.Frame( - i, - frames[i].frame.x, - frames[i].frame.y, - frames[i].frame.w, - frames[i].frame.h, - frames[i].filename - )); - - if (frames[i].trimmed) - { - newFrame.setTrim( - frames[i].trimmed, - frames[i].sourceSize.w, - frames[i].sourceSize.h, - frames[i].spriteSourceSize.x, - frames[i].spriteSourceSize.y, - frames[i].spriteSourceSize.w, - frames[i].spriteSourceSize.h - ); - } - } - - return data; - - }, - - /** - * Parse the JSON data and extract the animation frame data from it. - * - * @method Phaser.AnimationParser.JSONDataPyxel - * @param {Phaser.Game} game - A reference to the currently running game. - * @param {object} json - The JSON data from the Texture Atlas. Must be in Pyxel JSON format. - * @return {Phaser.FrameData} A FrameData object containing the parsed frames. - */ - JSONDataPyxel: function (game, json) { - - // Malformed? There are a few keys to check here. - var signature = ['layers', 'tilewidth','tileheight','tileswide', 'tileshigh']; - - signature.forEach( function(key) { - if (!json[key]) - { - console.warn("Phaser.AnimationParser.JSONDataPyxel: Invalid Pyxel Tilemap JSON given, missing '" + key + "' key."); - console.log(json); - return; - } - }); - - // For this purpose, I only care about parsing tilemaps with a single layer. - if(json['layers'].length != 1) { - console.warn("Phaser.AnimationParser.JSONDataPyxel: Too many layers, this parser only supports flat Tilemaps."); - console.log(json); - return; - } - - var data = new Phaser.FrameData(); - - var tileheight = json['tileheight']; - var tilewidth = json['tilewidth']; - - var frames = json['layers'][0]['tiles']; - var newFrame; - - for (var i = 0; i < frames.length; i++) - { - newFrame = data.addFrame(new Phaser.Frame( - i, - frames[i].x, - frames[i].y, - tilewidth, - tileheight, - "frame_" + i // No names are included in pyxel tilemap data. - )); - - // No trim data is included. - newFrame.setTrim(false); - } - - return data; - - }, - - /** - * Parse the JSON data and extract the animation frame data from it. - * - * @method Phaser.AnimationParser.JSONDataHash - * @param {Phaser.Game} game - A reference to the currently running game. - * @param {object} json - The JSON data from the Texture Atlas. Must be in JSON Hash format. - * @return {Phaser.FrameData} A FrameData object containing the parsed frames. - */ - JSONDataHash: function (game, json) { - - // Malformed? - if (!json['frames']) - { - console.warn("Phaser.AnimationParser.JSONDataHash: Invalid Texture Atlas JSON given, missing 'frames' object"); - console.log(json); - return; - } - - // Let's create some frames then - var data = new Phaser.FrameData(); - - // By this stage frames is a fully parsed array - var frames = json['frames']; - var newFrame; - var i = 0; - - for (var key in frames) - { - newFrame = data.addFrame(new Phaser.Frame( - i, - frames[key].frame.x, - frames[key].frame.y, - frames[key].frame.w, - frames[key].frame.h, - key - )); - - if (frames[key].trimmed) - { - newFrame.setTrim( - frames[key].trimmed, - frames[key].sourceSize.w, - frames[key].sourceSize.h, - frames[key].spriteSourceSize.x, - frames[key].spriteSourceSize.y, - frames[key].spriteSourceSize.w, - frames[key].spriteSourceSize.h - ); - } - - i++; - } - - return data; - - }, - - /** - * Parse the XML data and extract the animation frame data from it. - * - * @method Phaser.AnimationParser.XMLData - * @param {Phaser.Game} game - A reference to the currently running game. - * @param {object} xml - The XML data from the Texture Atlas. Must be in Starling XML format. - * @return {Phaser.FrameData} A FrameData object containing the parsed frames. - */ - XMLData: function (game, xml) { - - // Malformed? - if (!xml.getElementsByTagName('TextureAtlas')) - { - console.warn("Phaser.AnimationParser.XMLData: Invalid Texture Atlas XML given, missing tag"); - return; - } - - // Let's create some frames then - var data = new Phaser.FrameData(); - var frames = xml.getElementsByTagName('SubTexture'); - var newFrame; - - var name; - var frame; - var x; - var y; - var width; - var height; - var frameX; - var frameY; - var frameWidth; - var frameHeight; - - for (var i = 0; i < frames.length; i++) - { - frame = frames[i].attributes; - - name = frame.name.value; - x = parseInt(frame.x.value, 10); - y = parseInt(frame.y.value, 10); - width = parseInt(frame.width.value, 10); - height = parseInt(frame.height.value, 10); - - frameX = null; - frameY = null; - - if (frame.frameX) - { - frameX = Math.abs(parseInt(frame.frameX.value, 10)); - frameY = Math.abs(parseInt(frame.frameY.value, 10)); - frameWidth = parseInt(frame.frameWidth.value, 10); - frameHeight = parseInt(frame.frameHeight.value, 10); - } - - newFrame = data.addFrame(new Phaser.Frame(i, x, y, width, height, name)); - - // Trimmed? - if (frameX !== null || frameY !== null) - { - newFrame.setTrim(true, width, height, frameX, frameY, frameWidth, frameHeight); - } - } - - return data; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser has one single cache in which it stores all assets. -* -* The cache is split up into sections, such as images, sounds, video, json, etc. All assets are stored using -* a unique string-based key as their identifier. Assets stored in different areas of the cache can have the -* same key, for example 'playerWalking' could be used as the key for both a sprite sheet and an audio file, -* because they are unique data types. -* -* The cache is automatically populated by the Phaser.Loader. When you use the loader to pull in external assets -* such as images they are automatically placed into their respective cache. Most common Game Objects, such as -* Sprites and Videos automatically query the cache to extract the assets they need on instantiation. -* -* You can access the cache from within a State via `this.cache`. From here you can call any public method it has, -* including adding new entries to it, deleting them or querying them. -* -* Understand that almost without exception when you get an item from the cache it will return a reference to the -* item stored in the cache, not a copy of it. Therefore if you retrieve an item and then modify it, the original -* object in the cache will also be updated, even if you don't put it back into the cache again. -* -* By default when you change State the cache is _not_ cleared, although there is an option to clear it should -* your game require it. In a typical game set-up the cache is populated once after the main game has loaded and -* then used as an asset store. -* -* @class Phaser.Cache -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Cache = function (game) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * Automatically resolve resource URLs to absolute paths for use with the Cache.getURL method. - * @property {boolean} autoResolveURL - */ - this.autoResolveURL = false; - - /** - * The main cache object into which all resources are placed. - * @property {object} _cache - * @private - */ - this._cache = { - canvas: {}, - image: {}, - texture: {}, - sound: {}, - video: {}, - text: {}, - json: {}, - xml: {}, - physics: {}, - tilemap: {}, - binary: {}, - bitmapData: {}, - bitmapFont: {}, - shader: {}, - renderTexture: {} - }; - - /** - * @property {object} _urlMap - Maps URLs to resources. - * @private - */ - this._urlMap = {}; - - /** - * @property {Image} _urlResolver - Used to resolve URLs to the absolute path. - * @private - */ - this._urlResolver = new Image(); - - /** - * @property {string} _urlTemp - Temporary variable to hold a resolved url. - * @private - */ - this._urlTemp = null; - - /** - * @property {Phaser.Signal} onSoundUnlock - This event is dispatched when the sound system is unlocked via a touch event on cellular devices. - */ - this.onSoundUnlock = new Phaser.Signal(); - - /** - * @property {array} _cacheMap - Const to cache object look-up array. - * @private - */ - this._cacheMap = []; - - this._cacheMap[Phaser.Cache.CANVAS] = this._cache.canvas; - this._cacheMap[Phaser.Cache.IMAGE] = this._cache.image; - this._cacheMap[Phaser.Cache.TEXTURE] = this._cache.texture; - this._cacheMap[Phaser.Cache.SOUND] = this._cache.sound; - this._cacheMap[Phaser.Cache.TEXT] = this._cache.text; - this._cacheMap[Phaser.Cache.PHYSICS] = this._cache.physics; - this._cacheMap[Phaser.Cache.TILEMAP] = this._cache.tilemap; - this._cacheMap[Phaser.Cache.BINARY] = this._cache.binary; - this._cacheMap[Phaser.Cache.BITMAPDATA] = this._cache.bitmapData; - this._cacheMap[Phaser.Cache.BITMAPFONT] = this._cache.bitmapFont; - this._cacheMap[Phaser.Cache.JSON] = this._cache.json; - this._cacheMap[Phaser.Cache.XML] = this._cache.xml; - this._cacheMap[Phaser.Cache.VIDEO] = this._cache.video; - this._cacheMap[Phaser.Cache.SHADER] = this._cache.shader; - this._cacheMap[Phaser.Cache.RENDER_TEXTURE] = this._cache.renderTexture; - - this.addDefaultImage(); - this.addMissingImage(); - -}; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.CANVAS = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.IMAGE = 2; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.TEXTURE = 3; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.SOUND = 4; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.TEXT = 5; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.PHYSICS = 6; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.TILEMAP = 7; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.BINARY = 8; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.BITMAPDATA = 9; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.BITMAPFONT = 10; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.JSON = 11; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.XML = 12; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.VIDEO = 13; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.SHADER = 14; - -/** -* @constant -* @type {number} -*/ -Phaser.Cache.RENDER_TEXTURE = 15; - -/** -* The default image used for a texture when no other is specified. -* @constant -* @type {PIXI.Texture} -*/ -Phaser.Cache.DEFAULT = null; - -/** -* The default image used for a texture when the source image is missing. -* @constant -* @type {PIXI.Texture} -*/ -Phaser.Cache.MISSING = null; - -Phaser.Cache.prototype = { - - ////////////////// - // Add Methods // - ////////////////// - - /** - * Add a new canvas object in to the cache. - * - * @method Phaser.Cache#addCanvas - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {HTMLCanvasElement} canvas - The Canvas DOM element. - * @param {CanvasRenderingContext2D} [context] - The context of the canvas element. If not specified it will default go `getContext('2d')`. - */ - addCanvas: function (key, canvas, context) { - - if (context === undefined) { context = canvas.getContext('2d'); } - - this._cache.canvas[key] = { canvas: canvas, context: context }; - - }, - - /** - * Adds an Image file into the Cache. The file must have already been loaded, typically via Phaser.Loader, but can also have been loaded into the DOM. - * If an image already exists in the cache with the same key then it is removed and destroyed, and the new image inserted in its place. - * - * @method Phaser.Cache#addImage - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra image data. - * @return {object} The full image object that was added to the cache. - */ - addImage: function (key, url, data) { - - if (this.checkImageKey(key)) - { - this.removeImage(key); - } - - var img = { - key: key, - url: url, - data: data, - base: new PIXI.BaseTexture(data), - frame: new Phaser.Frame(0, 0, 0, data.width, data.height, key), - frameData: new Phaser.FrameData() - }; - - img.frameData.addFrame(new Phaser.Frame(0, 0, 0, data.width, data.height, url)); - - this._cache.image[key] = img; - - this._resolveURL(url, img); - - if (key === '__default') - { - Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); - } - else if (key === '__missing') - { - Phaser.Cache.MISSING = new PIXI.Texture(img.base); - } - - return img; - - }, - - /** - * Adds a default image to be used in special cases such as WebGL Filters. - * It uses the special reserved key of `__default`. - * This method is called automatically when the Cache is created. - * This image is skipped when `Cache.destroy` is called due to its internal requirements. - * - * @method Phaser.Cache#addDefaultImage - * @protected - */ - addDefaultImage: function () { - - var img = new Image(); - - img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAABVJREFUeF7NwIEAAAAAgKD9qdeocAMAoAABm3DkcAAAAABJRU5ErkJggg=="; - - var obj = this.addImage('__default', null, img); - - // Because we don't want to invalidate the sprite batch for an invisible texture - obj.base.skipRender = true; - - // Make it easily available within the rest of Phaser / Pixi - Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); - - }, - - /** - * Adds an image to be used when a key is wrong / missing. - * It uses the special reserved key of `__missing`. - * This method is called automatically when the Cache is created. - * This image is skipped when `Cache.destroy` is called due to its internal requirements. - * - * @method Phaser.Cache#addMissingImage - * @protected - */ - addMissingImage: function () { - - var img = new Image(); - - img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUeNq01ssOwyAMRFG46v//Mt1ESmgh+DFmE2GPOBARKb2NVjo+17PXLD8a1+pl5+A+wSgFygymWYHBb0FtsKhJDdZlncG2IzJ4ayoMDv20wTmSMzClEgbWYNTAkQ0Z+OJ+A/eWnAaR9+oxCF4Os0H8htsMUp+pwcgBBiMNnAwF8GqIgL2hAzaGFFgZauDPKABmowZ4GL369/0rwACp2yA/ttmvsQAAAABJRU5ErkJggg=="; - - var obj = this.addImage('__missing', null, img); - - // Make it easily available within the rest of Phaser / Pixi - Phaser.Cache.MISSING = new PIXI.Texture(obj.base); - - }, - - /** - * Adds a Sound file into the Cache. The file must have already been loaded, typically via Phaser.Loader. - * - * @method Phaser.Cache#addSound - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra sound data. - * @param {boolean} webAudio - True if the file is using web audio. - * @param {boolean} audioTag - True if the file is using legacy HTML audio. - */ - addSound: function (key, url, data, webAudio, audioTag) { - - if (webAudio === undefined) { webAudio = true; audioTag = false; } - if (audioTag === undefined) { webAudio = false; audioTag = true; } - - var decoded = false; - - if (audioTag) - { - decoded = true; - } - - this._cache.sound[key] = { - url: url, - data: data, - isDecoding: false, - decoded: decoded, - webAudio: webAudio, - audioTag: audioTag, - locked: this.game.sound.touchLocked - }; - - this._resolveURL(url, this._cache.sound[key]); - - }, - - /** - * Add a new text data. - * - * @method Phaser.Cache#addText - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra text data. - */ - addText: function (key, url, data) { - - this._cache.text[key] = { url: url, data: data }; - - this._resolveURL(url, this._cache.text[key]); - - }, - - /** - * Add a new physics data object to the Cache. - * - * @method Phaser.Cache#addPhysicsData - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} JSONData - The physics data object (a JSON file). - * @param {number} format - The format of the physics data. - */ - addPhysicsData: function (key, url, JSONData, format) { - - this._cache.physics[key] = { url: url, data: JSONData, format: format }; - - this._resolveURL(url, this._cache.physics[key]); - - }, - - /** - * Add a new tilemap to the Cache. - * - * @method Phaser.Cache#addTilemap - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} mapData - The tilemap data object (either a CSV or JSON file). - * @param {number} format - The format of the tilemap data. - */ - addTilemap: function (key, url, mapData, format) { - - this._cache.tilemap[key] = { url: url, data: mapData, format: format }; - - this._resolveURL(url, this._cache.tilemap[key]); - - }, - - /** - * Add a binary object in to the cache. - * - * @method Phaser.Cache#addBinary - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {object} binaryData - The binary object to be added to the cache. - */ - addBinary: function (key, binaryData) { - - this._cache.binary[key] = binaryData; - - }, - - /** - * Add a BitmapData object to the cache. - * - * @method Phaser.Cache#addBitmapData - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {Phaser.BitmapData} bitmapData - The BitmapData object to be addded to the cache. - * @param {Phaser.FrameData|null} [frameData=(auto create)] - Optional FrameData set associated with the given BitmapData. If not specified (or `undefined`) a new FrameData object is created containing the Bitmap's Frame. If `null` is supplied then no FrameData will be created. - * @return {Phaser.BitmapData} The BitmapData object to be addded to the cache. - */ - addBitmapData: function (key, bitmapData, frameData) { - - bitmapData.key = key; - - if (frameData === undefined) - { - frameData = new Phaser.FrameData(); - frameData.addFrame(bitmapData.textureFrame); - } - - this._cache.bitmapData[key] = { data: bitmapData, frameData: frameData }; - - return bitmapData; - - }, - - /** - * Add a new Bitmap Font to the Cache. - * - * @method Phaser.Cache#addBitmapFont - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra font data. - * @param {object} atlasData - Texture atlas frames data. - * @param {string} [atlasType='xml'] - The format of the texture atlas ( 'json' or 'xml' ). - * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. - * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. - */ - addBitmapFont: function (key, url, data, atlasData, atlasType, xSpacing, ySpacing) { - - var obj = { - url: url, - data: data, - font: null, - base: new PIXI.BaseTexture(data) - }; - - if (xSpacing === undefined) { xSpacing = 0; } - if (ySpacing === undefined) { ySpacing = 0; } - - if (atlasType === 'json') - { - obj.font = Phaser.LoaderParser.jsonBitmapFont(atlasData, obj.base, xSpacing, ySpacing); - } - else - { - obj.font = Phaser.LoaderParser.xmlBitmapFont(atlasData, obj.base, xSpacing, ySpacing); - } - - this._cache.bitmapFont[key] = obj; - - this._resolveURL(url, obj); - - }, - - /** - * Add a new json object into the cache. - * - * @method Phaser.Cache#addJSON - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra json data. - */ - addJSON: function (key, url, data) { - - this._cache.json[key] = { url: url, data: data }; - - this._resolveURL(url, this._cache.json[key]); - - }, - - /** - * Add a new xml object into the cache. - * - * @method Phaser.Cache#addXML - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra text data. - */ - addXML: function (key, url, data) { - - this._cache.xml[key] = { url: url, data: data }; - - this._resolveURL(url, this._cache.xml[key]); - - }, - - /** - * Adds a Video file into the Cache. The file must have already been loaded, typically via Phaser.Loader. - * - * @method Phaser.Cache#addVideo - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra video data. - * @param {boolean} isBlob - True if the file was preloaded via xhr and the data parameter is a Blob. false if a Video tag was created instead. - */ - addVideo: function (key, url, data, isBlob) { - - this._cache.video[key] = { url: url, data: data, isBlob: isBlob, locked: true }; - - this._resolveURL(url, this._cache.video[key]); - - }, - - /** - * Adds a Fragment Shader in to the Cache. The file must have already been loaded, typically via Phaser.Loader. - * - * @method Phaser.Cache#addShader - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra shader data. - */ - addShader: function (key, url, data) { - - this._cache.shader[key] = { url: url, data: data }; - - this._resolveURL(url, this._cache.shader[key]); - - }, - - /** - * Add a new Phaser.RenderTexture in to the cache. - * - * @method Phaser.Cache#addRenderTexture - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {Phaser.RenderTexture} texture - The texture to use as the base of the RenderTexture. - */ - addRenderTexture: function (key, texture) { - - this._cache.renderTexture[key] = { texture: texture, frame: new Phaser.Frame(0, 0, 0, texture.width, texture.height, '', '') }; - - }, - - /** - * Add a new sprite sheet in to the cache. - * - * @method Phaser.Cache#addSpriteSheet - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra sprite sheet data. - * @param {number} frameWidth - Width of the sprite sheet. - * @param {number} frameHeight - Height of the sprite sheet. - * @param {number} [frameMax=-1] - How many frames stored in the sprite sheet. If -1 then it divides the whole sheet evenly. - * @param {number} [margin=0] - If the frames have been drawn with a margin, specify the amount here. - * @param {number} [spacing=0] - If the frames have been drawn with spacing between them, specify the amount here. - */ - addSpriteSheet: function (key, url, data, frameWidth, frameHeight, frameMax, margin, spacing) { - - if (frameMax === undefined) { frameMax = -1; } - if (margin === undefined) { margin = 0; } - if (spacing === undefined) { spacing = 0; } - - var obj = { - key: key, - url: url, - data: data, - frameWidth: frameWidth, - frameHeight: frameHeight, - margin: margin, - spacing: spacing, - base: new PIXI.BaseTexture(data), - frameData: Phaser.AnimationParser.spriteSheet(this.game, data, frameWidth, frameHeight, frameMax, margin, spacing) - }; - - this._cache.image[key] = obj; - - this._resolveURL(url, obj); - - }, - - /** - * Add a new texture atlas to the Cache. - * - * @method Phaser.Cache#addTextureAtlas - * @param {string} key - The key that this asset will be stored in the cache under. This should be unique within this cache. - * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. - * @param {object} data - Extra texture atlas data. - * @param {object} atlasData - Texture atlas frames data. - * @param {number} format - The format of the texture atlas. - */ - addTextureAtlas: function (key, url, data, atlasData, format) { - - var obj = { - key: key, - url: url, - data: data, - base: new PIXI.BaseTexture(data) - }; - - if (format === Phaser.Loader.TEXTURE_ATLAS_XML_STARLING) - { - obj.frameData = Phaser.AnimationParser.XMLData(this.game, atlasData, key); - } - else if (format === Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) - { - obj.frameData = Phaser.AnimationParser.JSONDataPyxel(this.game, atlasData, key); - } - else - { - // Let's just work it out from the frames array - if (Array.isArray(atlasData.frames)) - { - obj.frameData = Phaser.AnimationParser.JSONData(this.game, atlasData, key); - } - else - { - obj.frameData = Phaser.AnimationParser.JSONDataHash(this.game, atlasData, key); - } - } - - this._cache.image[key] = obj; - - this._resolveURL(url, obj); - - }, - - //////////////////////////// - // Sound Related Methods // - //////////////////////////// - - /** - * Reload a Sound file from the server. - * - * @method Phaser.Cache#reloadSound - * @param {string} key - The key of the asset within the cache. - */ - reloadSound: function (key) { - - var _this = this; - - var sound = this.getSound(key); - - if (sound) - { - sound.data.src = sound.url; - - sound.data.addEventListener('canplaythrough', function () { - return _this.reloadSoundComplete(key); - }, false); - - sound.data.load(); - } - - }, - - /** - * Fires the onSoundUnlock event when the sound has completed reloading. - * - * @method Phaser.Cache#reloadSoundComplete - * @param {string} key - The key of the asset within the cache. - */ - reloadSoundComplete: function (key) { - - var sound = this.getSound(key); - - if (sound) - { - sound.locked = false; - this.onSoundUnlock.dispatch(key); - } - - }, - - /** - * Updates the sound object in the cache. - * - * @method Phaser.Cache#updateSound - * @param {string} key - The key of the asset within the cache. - */ - updateSound: function (key, property, value) { - - var sound = this.getSound(key); - - if (sound) - { - sound[property] = value; - } - - }, - - /** - * Add a new decoded sound. - * - * @method Phaser.Cache#decodedSound - * @param {string} key - The key of the asset within the cache. - * @param {object} data - Extra sound data. - */ - decodedSound: function (key, data) { - - var sound = this.getSound(key); - - sound.data = data; - sound.decoded = true; - sound.isDecoding = false; - - }, - - /** - * Check if the given sound has finished decoding. - * - * @method Phaser.Cache#isSoundDecoded - * @param {string} key - The key of the asset within the cache. - * @return {boolean} The decoded state of the Sound object. - */ - isSoundDecoded: function (key) { - - var sound = this.getItem(key, Phaser.Cache.SOUND, 'isSoundDecoded'); - - if (sound) - { - return sound.decoded; - } - - }, - - /** - * Check if the given sound is ready for playback. - * A sound is considered ready when it has finished decoding and the device is no longer touch locked. - * - * @method Phaser.Cache#isSoundReady - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the sound is decoded and the device is not touch locked. - */ - isSoundReady: function (key) { - - var sound = this.getItem(key, Phaser.Cache.SOUND, 'isSoundDecoded'); - - if (sound) - { - return (sound.decoded && !this.game.sound.touchLocked); - } - - }, - - //////////////////////// - // Check Key Methods // - //////////////////////// - - /** - * Checks if a key for the given cache object type exists. - * - * @method Phaser.Cache#checkKey - * @param {integer} cache - The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists, otherwise false. - */ - checkKey: function (cache, key) { - - if (this._cacheMap[cache][key]) - { - return true; - } - - return false; - - }, - - /** - * Checks if the given URL has been loaded into the Cache. - * This method will only work if Cache.autoResolveURL was set to `true` before any preloading took place. - * The method will make a DOM src call to the URL given, so please be aware of this for certain file types, such as Sound files on Firefox - * which may cause double-load instances. - * - * @method Phaser.Cache#checkURL - * @param {string} url - The url to check for in the cache. - * @return {boolean} True if the url exists, otherwise false. - */ - checkURL: function (url) { - - if (this._urlMap[this._resolveURL(url)]) - { - return true; - } - - return false; - - }, - - /** - * Checks if the given key exists in the Canvas Cache. - * - * @method Phaser.Cache#checkCanvasKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkCanvasKey: function (key) { - - return this.checkKey(Phaser.Cache.CANVAS, key); - - }, - - /** - * Checks if the given key exists in the Image Cache. Note that this also includes Texture Atlases, Sprite Sheets and Retro Fonts. - * - * @method Phaser.Cache#checkImageKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkImageKey: function (key) { - - return this.checkKey(Phaser.Cache.IMAGE, key); - - }, - - /** - * Checks if the given key exists in the Texture Cache. - * - * @method Phaser.Cache#checkTextureKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkTextureKey: function (key) { - - return this.checkKey(Phaser.Cache.TEXTURE, key); - - }, - - /** - * Checks if the given key exists in the Sound Cache. - * - * @method Phaser.Cache#checkSoundKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkSoundKey: function (key) { - - return this.checkKey(Phaser.Cache.SOUND, key); - - }, - - /** - * Checks if the given key exists in the Text Cache. - * - * @method Phaser.Cache#checkTextKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkTextKey: function (key) { - - return this.checkKey(Phaser.Cache.TEXT, key); - - }, - - /** - * Checks if the given key exists in the Physics Cache. - * - * @method Phaser.Cache#checkPhysicsKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkPhysicsKey: function (key) { - - return this.checkKey(Phaser.Cache.PHYSICS, key); - - }, - - /** - * Checks if the given key exists in the Tilemap Cache. - * - * @method Phaser.Cache#checkTilemapKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkTilemapKey: function (key) { - - return this.checkKey(Phaser.Cache.TILEMAP, key); - - }, - - /** - * Checks if the given key exists in the Binary Cache. - * - * @method Phaser.Cache#checkBinaryKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkBinaryKey: function (key) { - - return this.checkKey(Phaser.Cache.BINARY, key); - - }, - - /** - * Checks if the given key exists in the BitmapData Cache. - * - * @method Phaser.Cache#checkBitmapDataKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkBitmapDataKey: function (key) { - - return this.checkKey(Phaser.Cache.BITMAPDATA, key); - - }, - - /** - * Checks if the given key exists in the BitmapFont Cache. - * - * @method Phaser.Cache#checkBitmapFontKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkBitmapFontKey: function (key) { - - return this.checkKey(Phaser.Cache.BITMAPFONT, key); - - }, - - /** - * Checks if the given key exists in the JSON Cache. - * - * @method Phaser.Cache#checkJSONKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkJSONKey: function (key) { - - return this.checkKey(Phaser.Cache.JSON, key); - - }, - - /** - * Checks if the given key exists in the XML Cache. - * - * @method Phaser.Cache#checkXMLKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkXMLKey: function (key) { - - return this.checkKey(Phaser.Cache.XML, key); - - }, - - /** - * Checks if the given key exists in the Video Cache. - * - * @method Phaser.Cache#checkVideoKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkVideoKey: function (key) { - - return this.checkKey(Phaser.Cache.VIDEO, key); - - }, - - /** - * Checks if the given key exists in the Fragment Shader Cache. - * - * @method Phaser.Cache#checkShaderKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkShaderKey: function (key) { - - return this.checkKey(Phaser.Cache.SHADER, key); - - }, - - /** - * Checks if the given key exists in the Render Texture Cache. - * - * @method Phaser.Cache#checkRenderTextureKey - * @param {string} key - The key of the asset within the cache. - * @return {boolean} True if the key exists in the cache, otherwise false. - */ - checkRenderTextureKey: function (key) { - - return this.checkKey(Phaser.Cache.RENDER_TEXTURE, key); - - }, - - //////////////// - // Get Items // - //////////////// - - /** - * Get an item from a cache based on the given key and property. - * - * This method is mostly used internally by other Cache methods such as `getImage` but is exposed - * publicly for your own use as well. - * - * @method Phaser.Cache#getItem - * @param {string} key - The key of the asset within the cache. - * @param {integer} cache - The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - * @param {string} [method] - The string name of the method calling getItem. Can be empty, in which case no console warning is output. - * @param {string} [property] - If you require a specific property from the cache item, specify it here. - * @return {object} The cached item if found, otherwise `null`. If the key is invalid and `method` is set then a console.warn is output. - */ - getItem: function (key, cache, method, property) { - - if (!this.checkKey(cache, key)) - { - if (method) - { - console.warn('Phaser.Cache.' + method + ': Key "' + key + '" not found in Cache.'); - } - } - else - { - if (property === undefined) - { - return this._cacheMap[cache][key]; - } - else - { - return this._cacheMap[cache][key][property]; - } - } - - return null; - - }, - - /** - * Gets a Canvas object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getCanvas - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {object} The canvas object or `null` if no item could be found matching the given key. - */ - getCanvas: function (key) { - - return this.getItem(key, Phaser.Cache.CANVAS, 'getCanvas', 'canvas'); - - }, - - /** - * Gets a Image object from the cache. This returns a DOM Image object, not a Phaser.Image object. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * Only the Image cache is searched, which covers images loaded via Loader.image, Sprite Sheets and Texture Atlases. - * - * If you need the image used by a bitmap font or similar then please use those respective 'get' methods. - * - * @method Phaser.Cache#getImage - * @param {string} [key] - The key of the asset to retrieve from the cache. If not given or null it will return a default image. If given but not found in the cache it will throw a warning and return the missing image. - * @param {boolean} [full=false] - If true the full image object will be returned, if false just the HTML Image object is returned. - * @return {Image} The Image object if found in the Cache, otherwise `null`. If `full` was true then a JavaScript object is returned. - */ - getImage: function (key, full) { - - if (key === undefined || key === null) - { - key = '__default'; - } - - if (full === undefined) { full = false; } - - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getImage'); - - if (img === null) - { - img = this.getItem('__missing', Phaser.Cache.IMAGE, 'getImage'); - } - - if (full) - { - return img; - } - else - { - return img.data; - } - - }, - - /** - * Get a single texture frame by key. - * - * You'd only do this to get the default Frame created for a non-atlas / spritesheet image. - * - * @method Phaser.Cache#getTextureFrame - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {Phaser.Frame} The frame data. - */ - getTextureFrame: function (key) { - - return this.getItem(key, Phaser.Cache.TEXTURE, 'getTextureFrame', 'frame'); - - }, - - /** - * Gets a Phaser.Sound object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getSound - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {Phaser.Sound} The sound object. - */ - getSound: function (key) { - - return this.getItem(key, Phaser.Cache.SOUND, 'getSound'); - - }, - - /** - * Gets a raw Sound data object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getSoundData - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {object} The sound data. - */ - getSoundData: function (key) { - - return this.getItem(key, Phaser.Cache.SOUND, 'getSoundData', 'data'); - - }, - - /** - * Gets a Text object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getText - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {object} The text data. - */ - getText: function (key) { - - return this.getItem(key, Phaser.Cache.TEXT, 'getText', 'data'); - - }, - - /** - * Gets a Physics Data object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * You can get either the entire data set, a single object or a single fixture of an object from it. - * - * @method Phaser.Cache#getPhysicsData - * @param {string} key - The key of the asset to retrieve from the cache. - * @param {string} [object=null] - If specified it will return just the physics object that is part of the given key, if null it will return them all. - * @param {string} fixtureKey - Fixture key of fixture inside an object. This key can be set per fixture with the Phaser Exporter. - * @return {object} The requested physics object data if found. - */ - getPhysicsData: function (key, object, fixtureKey) { - - var data = this.getItem(key, Phaser.Cache.PHYSICS, 'getPhysicsData', 'data'); - - if (data === null || object === undefined || object === null) - { - return data; - } - else - { - if (data[object]) - { - var fixtures = data[object]; - - // Try to find a fixture by its fixture key if given - if (fixtures && fixtureKey) - { - for (var fixture in fixtures) - { - // This contains the fixture data of a polygon or a circle - fixture = fixtures[fixture]; - - // Test the key - if (fixture.fixtureKey === fixtureKey) - { - return fixture; - } - } - - // We did not find the requested fixture - console.warn('Phaser.Cache.getPhysicsData: Could not find given fixtureKey: "' + fixtureKey + ' in ' + key + '"'); - } - else - { - return fixtures; - } - } - else - { - console.warn('Phaser.Cache.getPhysicsData: Invalid key/object: "' + key + ' / ' + object + '"'); - } - } - - return null; - - }, - - /** - * Gets a raw Tilemap data object from the cache. This will be in either CSV or JSON format. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getTilemapData - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {object} The raw tilemap data in CSV or JSON format. - */ - getTilemapData: function (key) { - - return this.getItem(key, Phaser.Cache.TILEMAP, 'getTilemapData'); - - }, - - /** - * Gets a binary object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getBinary - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {object} The binary data object. - */ - getBinary: function (key) { - - return this.getItem(key, Phaser.Cache.BINARY, 'getBinary'); - - }, - - /** - * Gets a BitmapData object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getBitmapData - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {Phaser.BitmapData} The requested BitmapData object if found, or null if not. - */ - getBitmapData: function (key) { - - return this.getItem(key, Phaser.Cache.BITMAPDATA, 'getBitmapData', 'data'); - - }, - - /** - * Gets a Bitmap Font object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getBitmapFont - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {Phaser.BitmapFont} The requested BitmapFont object if found, or null if not. - */ - getBitmapFont: function (key) { - - return this.getItem(key, Phaser.Cache.BITMAPFONT, 'getBitmapFont'); - - }, - - /** - * Gets a JSON object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * You can either return the object by reference (the default), or return a clone - * of it by setting the `clone` argument to `true`. - * - * @method Phaser.Cache#getJSON - * @param {string} key - The key of the asset to retrieve from the cache. - * @param {boolean} [clone=false] - Return a clone of the original object (true) or a reference to it? (false) - * @return {object} The JSON object, or an Array if the key points to an Array property. If the property wasn't found, it returns null. - */ - getJSON: function (key, clone) { - - var data = this.getItem(key, Phaser.Cache.JSON, 'getJSON', 'data'); - - if (data) - { - if (clone) - { - return Phaser.Utils.extend(true, Array.isArray(data) ? [] : {}, data); - } - else - { - return data; - } - } - else - { - return null; - } - - }, - - /** - * Gets an XML object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getXML - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {object} The XML object. - */ - getXML: function (key) { - - return this.getItem(key, Phaser.Cache.XML, 'getXML', 'data'); - - }, - - /** - * Gets a Phaser.Video object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getVideo - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {Phaser.Video} The video object. - */ - getVideo: function (key) { - - return this.getItem(key, Phaser.Cache.VIDEO, 'getVideo'); - - }, - - /** - * Gets a fragment shader object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getShader - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {string} The shader object. - */ - getShader: function (key) { - - return this.getItem(key, Phaser.Cache.SHADER, 'getShader', 'data'); - - }, - - /** - * Gets a RenderTexture object from the cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getRenderTexture - * @param {string} key - The key of the asset to retrieve from the cache. - * @return {Object} The object with Phaser.RenderTexture and Phaser.Frame. - */ - getRenderTexture: function (key) { - - return this.getItem(key, Phaser.Cache.RENDER_TEXTURE, 'getRenderTexture'); - - }, - - //////////////////////////// - // Frame Related Methods // - //////////////////////////// - - /** - * Gets a PIXI.BaseTexture by key from the given Cache. - * - * @method Phaser.Cache#getBaseTexture - * @param {string} key - Asset key of the image for which you want the BaseTexture for. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search for the item in. - * @return {PIXI.BaseTexture} The BaseTexture object. - */ - getBaseTexture: function (key, cache) { - - if (cache === undefined) { cache = Phaser.Cache.IMAGE; } - - return this.getItem(key, cache, 'getBaseTexture', 'base'); - - }, - - /** - * Get a single frame by key. You'd only do this to get the default Frame created for a non-atlas/spritesheet image. - * - * @method Phaser.Cache#getFrame - * @param {string} key - Asset key of the frame data to retrieve from the Cache. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search for the item in. - * @return {Phaser.Frame} The frame data. - */ - getFrame: function (key, cache) { - - if (cache === undefined) { cache = Phaser.Cache.IMAGE; } - - return this.getItem(key, cache, 'getFrame', 'frame'); - - }, - - /** - * Get the total number of frames contained in the FrameData object specified by the given key. - * - * @method Phaser.Cache#getFrameCount - * @param {string} key - Asset key of the FrameData you want. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search for the item in. - * @return {number} Then number of frames. 0 if the image is not found. - */ - getFrameCount: function (key, cache) { - - var data = this.getFrameData(key, cache); - - if (data) - { - return data.total; - } - else - { - return 0; - } - - }, - - /** - * Gets a Phaser.FrameData object from the Image Cache. - * - * The object is looked-up based on the key given. - * - * Note: If the object cannot be found a `console.warn` message is displayed. - * - * @method Phaser.Cache#getFrameData - * @param {string} key - Asset key of the frame data to retrieve from the Cache. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search for the item in. - * @return {Phaser.FrameData} The frame data. - */ - getFrameData: function (key, cache) { - - if (cache === undefined) { cache = Phaser.Cache.IMAGE; } - - return this.getItem(key, cache, 'getFrameData', 'frameData'); - - }, - - /** - * Check if the FrameData for the given key exists in the Image Cache. - * - * @method Phaser.Cache#hasFrameData - * @param {string} key - Asset key of the frame data to retrieve from the Cache. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search for the item in. - * @return {boolean} True if the given key has frameData in the cache, otherwise false. - */ - hasFrameData: function (key, cache) { - - if (cache === undefined) { cache = Phaser.Cache.IMAGE; } - - return (this.getItem(key, cache, '', 'frameData') !== null); - - }, - - /** - * Replaces a set of frameData with a new Phaser.FrameData object. - * - * @method Phaser.Cache#updateFrameData - * @param {string} key - The unique key by which you will reference this object. - * @param {number} frameData - The new FrameData. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - */ - updateFrameData: function (key, frameData, cache) { - - if (cache === undefined) { cache = Phaser.Cache.IMAGE; } - - if (this._cacheMap[cache][key]) - { - this._cacheMap[cache][key].frameData = frameData; - } - - }, - - /** - * Get a single frame out of a frameData set by key. - * - * @method Phaser.Cache#getFrameByIndex - * @param {string} key - Asset key of the frame data to retrieve from the Cache. - * @param {number} index - The index of the frame you want to get. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - * @return {Phaser.Frame} The frame object. - */ - getFrameByIndex: function (key, index, cache) { - - var data = this.getFrameData(key, cache); - - if (data) - { - return data.getFrame(index); - } - else - { - return null; - } - - }, - - /** - * Get a single frame out of a frameData set by key. - * - * @method Phaser.Cache#getFrameByName - * @param {string} key - Asset key of the frame data to retrieve from the Cache. - * @param {string} name - The name of the frame you want to get. - * @param {integer} [cache=Phaser.Cache.IMAGE] - The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - * @return {Phaser.Frame} The frame object. - */ - getFrameByName: function (key, name, cache) { - - var data = this.getFrameData(key, cache); - - if (data) - { - return data.getFrameByName(name); - } - else - { - return null; - } - - }, - - /** - * Get a cached object by the URL. - * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. - * Be aware that every call to this function makes a DOM src query, so use carefully and double-check for implications in your target browsers/devices. - * - * @method Phaser.Cache#getURL - * @param {string} url - The url for the object loaded to get from the cache. - * @return {object} The cached object. - */ - getURL: function (url) { - - var url = this._resolveURL(url); - - if (url) - { - return this._urlMap[url]; - } - else - { - console.warn('Phaser.Cache.getUrl: Invalid url: "' + url + '" or Cache.autoResolveURL was false'); - return null; - } - - }, - - /** - * Gets all keys used in the requested Cache. - * - * @method Phaser.Cache#getKeys - * @param {integer} [cache=Phaser.Cache.IMAGE] - The Cache you wish to get the keys from. Can be any of the Cache consts such as `Phaser.Cache.IMAGE`, `Phaser.Cache.SOUND` etc. - * @return {Array} The array of keys in the requested cache. - */ - getKeys: function (cache) { - - if (cache === undefined) { cache = Phaser.Cache.IMAGE; } - - var out = []; - - if (this._cacheMap[cache]) - { - for (var key in this._cacheMap[cache]) - { - if (key !== '__default' && key !== '__missing') - { - out.push(key); - } - } - } - - return out; - - }, - - ///////////////////// - // Remove Methods // - ///////////////////// - - /** - * Removes a canvas from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeCanvas - * @param {string} key - Key of the asset you want to remove. - */ - removeCanvas: function (key) { - - delete this._cache.canvas[key]; - - }, - - /** - * Removes an image from the cache. - * - * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. - * - * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeImage - * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? - */ - removeImage: function (key, destroyBaseTexture) { - - if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } - - var img = this.getImage(key, true); - - if (destroyBaseTexture && img.base) - { - img.base.destroy(); - } - - delete this._cache.image[key]; - - }, - - /** - * Removes a sound from the cache. - * - * If any `Phaser.Sound` objects use the audio file in the cache that you remove with this method, they will - * _automatically_ destroy themselves. If you wish to have full control over when Sounds are destroyed then - * you must finish your house-keeping and destroy them all yourself first, before calling this method. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeSound - * @param {string} key - Key of the asset you want to remove. - */ - removeSound: function (key) { - - delete this._cache.sound[key]; - - }, - - /** - * Removes a text file from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeText - * @param {string} key - Key of the asset you want to remove. - */ - removeText: function (key) { - - delete this._cache.text[key]; - - }, - - /** - * Removes a physics data file from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removePhysics - * @param {string} key - Key of the asset you want to remove. - */ - removePhysics: function (key) { - - delete this._cache.physics[key]; - - }, - - /** - * Removes a tilemap from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeTilemap - * @param {string} key - Key of the asset you want to remove. - */ - removeTilemap: function (key) { - - delete this._cache.tilemap[key]; - - }, - - /** - * Removes a binary file from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeBinary - * @param {string} key - Key of the asset you want to remove. - */ - removeBinary: function (key) { - - delete this._cache.binary[key]; - - }, - - /** - * Removes a bitmap data from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeBitmapData - * @param {string} key - Key of the asset you want to remove. - */ - removeBitmapData: function (key) { - - delete this._cache.bitmapData[key]; - - }, - - /** - * Removes a bitmap font from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeBitmapFont - * @param {string} key - Key of the asset you want to remove. - */ - removeBitmapFont: function (key) { - - delete this._cache.bitmapFont[key]; - - }, - - /** - * Removes a json object from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeJSON - * @param {string} key - Key of the asset you want to remove. - */ - removeJSON: function (key) { - - delete this._cache.json[key]; - - }, - - /** - * Removes a xml object from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeXML - * @param {string} key - Key of the asset you want to remove. - */ - removeXML: function (key) { - - delete this._cache.xml[key]; - - }, - - /** - * Removes a video from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeVideo - * @param {string} key - Key of the asset you want to remove. - */ - removeVideo: function (key) { - - delete this._cache.video[key]; - - }, - - /** - * Removes a shader from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeShader - * @param {string} key - Key of the asset you want to remove. - */ - removeShader: function (key) { - - delete this._cache.shader[key]; - - }, - - /** - * Removes a Render Texture from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeRenderTexture - * @param {string} key - Key of the asset you want to remove. - */ - removeRenderTexture: function (key) { - - delete this._cache.renderTexture[key]; - - }, - - /** - * Removes a Sprite Sheet from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeSpriteSheet - * @param {string} key - Key of the asset you want to remove. - */ - removeSpriteSheet: function (key) { - - delete this._cache.spriteSheet[key]; - - }, - - /** - * Removes a Texture Atlas from the cache. - * - * Note that this only removes it from the Phaser.Cache. If you still have references to the data elsewhere - * then it will persist in memory. - * - * @method Phaser.Cache#removeTextureAtlas - * @param {string} key - Key of the asset you want to remove. - */ - removeTextureAtlas: function (key) { - - delete this._cache.atlas[key]; - - }, - - /** - * Empties out all of the GL Textures from Images stored in the cache. - * This is called automatically when the WebGL context is lost and then restored. - * - * @method Phaser.Cache#clearGLTextures - * @protected - */ - clearGLTextures: function () { - - for (var key in this._cache.image) - { - this._cache.image[key].base._glTextures = []; - } - - }, - - /** - * Resolves a URL to its absolute form and stores it in Cache._urlMap as long as Cache.autoResolveURL is set to `true`. - * This is then looked-up by the Cache.getURL and Cache.checkURL calls. - * - * @method Phaser.Cache#_resolveURL - * @private - * @param {string} url - The URL to resolve. This is appended to Loader.baseURL. - * @param {object} [data] - The data associated with the URL to be stored to the URL Map. - * @return {string} The resolved URL. - */ - _resolveURL: function (url, data) { - - if (!this.autoResolveURL) - { - return null; - } - - this._urlResolver.src = this.game.load.baseURL + url; - - this._urlTemp = this._urlResolver.src; - - // Ensure no request is actually made - this._urlResolver.src = ''; - - // Record the URL to the map - if (data) - { - this._urlMap[this._urlTemp] = data; - } - - return this._urlTemp; - - }, - - /** - * Clears the cache. Removes every local cache object reference. - * If an object in the cache has a `destroy` method it will also be called. - * - * @method Phaser.Cache#destroy - */ - destroy: function () { - - for (var i = 0; i < this._cacheMap.length; i++) - { - var cache = this._cacheMap[i]; - - for (var key in cache) - { - if (key !== '__default' && key !== '__missing') - { - if (cache[key]['destroy']) - { - cache[key].destroy(); - } - - delete cache[key]; - } - } - } - - this._urlMap = null; - this._urlResolver = null; - this._urlTemp = null; - - } - -}; - -Phaser.Cache.prototype.constructor = Phaser.Cache; - -/* jshint wsh:true */ -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Loader handles loading all external content such as Images, Sounds, Texture Atlases and data files. -* -* The loader uses a combination of tag loading (eg. Image elements) and XHR and provides progress and completion callbacks. -* -* Parallel loading (see {@link #enableParallel}) is supported and enabled by default. -* Load-before behavior of parallel resources is controlled by synchronization points as discussed in {@link #withSyncPoint}. -* -* Texture Atlases can be created with tools such as [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) and -* [Shoebox](http://renderhjs.net/shoebox/) -* -* @class Phaser.Loader -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Loader = function (game) { - - /** - * Local reference to game. - * @property {Phaser.Game} game - * @protected - */ - this.game = game; - - /** - * Local reference to the Phaser.Cache. - * @property {Phaser.Cache} cache - * @protected - */ - this.cache = game.cache; - - /** - * If true all calls to Loader.reset will be ignored. Useful if you need to create a load queue before swapping to a preloader state. - * @property {boolean} resetLocked - * @default - */ - this.resetLocked = false; - - /** - * True if the Loader is in the process of loading the queue. - * @property {boolean} isLoading - * @default - */ - this.isLoading = false; - - /** - * True if all assets in the queue have finished loading. - * @property {boolean} hasLoaded - * @default - */ - this.hasLoaded = false; - - /** - * You can optionally link a progress sprite with {@link Phaser.Loader#setPreloadSprite setPreloadSprite}. - * - * This property is an object containing: sprite, rect, direction, width and height - * - * @property {?object} preloadSprite - * @protected - */ - this.preloadSprite = null; - - /** - * The crossOrigin value applied to loaded images. Very often this needs to be set to 'anonymous'. - * @property {boolean|string} crossOrigin - * @default - */ - this.crossOrigin = false; - - /** - * If you want to append a URL before the path of any asset you can set this here. - * Useful if allowing the asset base url to be configured outside of the game code. - * The string _must_ end with a "/". - * - * @property {string} baseURL - */ - this.baseURL = ''; - - /** - * The value of `path`, if set, is placed before any _relative_ file path given. For example: - * - * `load.path = "images/sprites/"; - * load.image("ball", "ball.png"); - * load.image("tree", "level1/oaktree.png"); - * load.image("boom", "http://server.com/explode.png");` - * - * Would load the `ball` file from `images/sprites/ball.png` and the tree from - * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL - * given as it's an absolute URL. - * - * Please note that the path is added before the filename but *after* the baseURL (if set.) - * - * The string _must_ end with a "/". - * - * @property {string} path - */ - this.path = ''; - - /** - * Used to map the application mime-types to to the Accept header in XHR requests. - * If you don't require these mappings, or they cause problems on your server, then - * remove them from the headers object and the XHR request will not try to use them. - * @property {object} headers - * @default - */ - this.headers = { - json: "application/json", - xml: "application/xml" - }; - - /** - * This event is dispatched when the loading process starts: before the first file has been requested, - * but after all the initial packs have been loaded. - * - * @property {Phaser.Signal} onLoadStart - */ - this.onLoadStart = new Phaser.Signal(); - - /** - * This event is dispatched when the final file in the load queue has either loaded or failed. - * - * @property {Phaser.Signal} onLoadComplete - */ - this.onLoadComplete = new Phaser.Signal(); - - /** - * This event is dispatched when an asset pack has either loaded or failed to load. - * - * This is called when the asset pack manifest file has loaded and successfully added its contents to the loader queue. - * - * Params: `(pack key, success?, total packs loaded, total packs)` - * - * @property {Phaser.Signal} onPackComplete - */ - this.onPackComplete = new Phaser.Signal(); - - /** - * This event is dispatched immediately before a file starts loading. - * It's possible the file may fail (eg. download error, invalid format) after this event is sent. - * - * Params: `(progress, file key, file url)` - * - * @property {Phaser.Signal} onFileStart - */ - this.onFileStart = new Phaser.Signal(); - - /** - * This event is dispatched when a file has either loaded or failed to load. - * - * Any function bound to this will receive the following parameters: - * - * progress, file key, success?, total loaded files, total files - * - * Where progress is a number between 1 and 100 (inclusive) representing the percentage of the load. - * - * @property {Phaser.Signal} onFileComplete - */ - this.onFileComplete = new Phaser.Signal(); - - /** - * This event is dispatched when a file (or pack) errors as a result of the load request. - * - * For files it will be triggered before `onFileComplete`. For packs it will be triggered before `onPackComplete`. - * - * Params: `(file key, file)` - * - * @property {Phaser.Signal} onFileError - */ - this.onFileError = new Phaser.Signal(); - - /** - * If true and if the browser supports XDomainRequest, it will be used in preference for XHR. - * - * This is only relevant for IE 9 and should _only_ be enabled for IE 9 clients when required by the server/CDN. - * - * @property {boolean} useXDomainRequest - * @deprecated This is only relevant for IE 9. - */ - this.useXDomainRequest = false; - - /** - * @private - * @property {boolean} _warnedAboutXDomainRequest - Control number of warnings for using XDR outside of IE 9. - */ - this._warnedAboutXDomainRequest = false; - - /** - * If true (the default) then parallel downloading will be enabled. - * - * To disable all parallel downloads this must be set to false prior to any resource being loaded. - * - * @property {boolean} enableParallel - */ - this.enableParallel = true; - - /** - * The number of concurrent / parallel resources to try and fetch at once. - * - * Many current browsers limit 6 requests per domain; this is slightly conservative. - * - * @property {integer} maxParallelDownloads - * @protected - */ - this.maxParallelDownloads = 4; - - /** - * A counter: if more than zero, files will be automatically added as a synchronization point. - * @property {integer} _withSyncPointDepth; - */ - this._withSyncPointDepth = 0; - - /** - * Contains all the information for asset files (including packs) to load. - * - * File/assets are only removed from the list after all loading completes. - * - * @property {file[]} _fileList - * @private - */ - this._fileList = []; - - /** - * Inflight files (or packs) that are being fetched/processed. - * - * This means that if there are any files in the flight queue there should still be processing - * going on; it should only be empty before or after loading. - * - * The files in the queue may have additional properties added to them, - * including `requestObject` which is normally the associated XHR. - * - * @property {file[]} _flightQueue - * @private - */ - this._flightQueue = []; - - /** - * The offset into the fileList past all the complete (loaded or error) entries. - * - * @property {integer} _processingHead - * @private - */ - this._processingHead = 0; - - /** - * True when the first file (not pack) has loading started. - * This used to to control dispatching `onLoadStart` which happens after any initial packs are loaded. - * - * @property {boolean} _initialPacksLoaded - * @private - */ - this._fileLoadStarted = false; - - /** - * Total packs seen - adjusted when a pack is added. - * @property {integer} _totalPackCount - * @private - */ - this._totalPackCount = 0; - - /** - * Total files seen - adjusted when a file is added. - * @property {integer} _totalFileCount - * @private - */ - this._totalFileCount = 0; - - /** - * Total packs loaded - adjusted just prior to `onPackComplete`. - * @property {integer} _loadedPackCount - * @private - */ - this._loadedPackCount = 0; - - /** - * Total files loaded - adjusted just prior to `onFileComplete`. - * @property {integer} _loadedFileCount - * @private - */ - this._loadedFileCount = 0; - -}; - -/** -* @constant -* @type {number} -*/ -Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY = 0; - -/** -* @constant -* @type {number} -*/ -Phaser.Loader.TEXTURE_ATLAS_JSON_HASH = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.Loader.TEXTURE_ATLAS_XML_STARLING = 2; - -/** -* @constant -* @type {number} -*/ -Phaser.Loader.PHYSICS_LIME_CORONA_JSON = 3; - -/** -* @constant -* @type {number} -*/ -Phaser.Loader.PHYSICS_PHASER_JSON = 4; - -/** -* @constant -* @type {number} -*/ -Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL = 5; - -Phaser.Loader.prototype = { - - /** - * Set a Sprite to be a "preload" sprite by passing it to this method. - * - * A "preload" sprite will have its width or height crop adjusted based on the percentage of the loader in real-time. - * This allows you to easily make loading bars for games. - * - * The sprite will automatically be made visible when calling this. - * - * @method Phaser.Loader#setPreloadSprite - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite or image that will be cropped during the load. - * @param {number} [direction=0] - A value of zero means the sprite will be cropped horizontally, a value of 1 means its will be cropped vertically. - */ - setPreloadSprite: function (sprite, direction) { - - direction = direction || 0; - - this.preloadSprite = { sprite: sprite, direction: direction, width: sprite.width, height: sprite.height, rect: null }; - - if (direction === 0) - { - // Horizontal rect - this.preloadSprite.rect = new Phaser.Rectangle(0, 0, 1, sprite.height); - } - else - { - // Vertical rect - this.preloadSprite.rect = new Phaser.Rectangle(0, 0, sprite.width, 1); - } - - sprite.crop(this.preloadSprite.rect); - - sprite.visible = true; - - }, - - /** - * Called automatically by ScaleManager when the game resizes in RESIZE scalemode. - * - * This can be used to adjust the preloading sprite size, eg. - * - * @method Phaser.Loader#resize - * @protected - */ - resize: function () { - - if (this.preloadSprite && this.preloadSprite.height !== this.preloadSprite.sprite.height) - { - this.preloadSprite.rect.height = this.preloadSprite.sprite.height; - } - - }, - - /** - * Check whether a file/asset with a specific key is queued to be loaded. - * - * To access a loaded asset use Phaser.Cache, eg. {@link Phaser.Cache#checkImageKey} - * - * @method Phaser.Loader#checkKeyExists - * @param {string} type - The type asset you want to check. - * @param {string} key - Key of the asset you want to check. - * @return {boolean} Return true if exists, otherwise return false. - */ - checkKeyExists: function (type, key) { - - return this.getAssetIndex(type, key) > -1; - - }, - - /** - * Get the queue-index of the file/asset with a specific key. - * - * Only assets in the download file queue will be found. - * - * @method Phaser.Loader#getAssetIndex - * @param {string} type - The type asset you want to check. - * @param {string} key - Key of the asset you want to check. - * @return {number} The index of this key in the filelist, or -1 if not found. - * The index may change and should only be used immediately following this call - */ - getAssetIndex: function (type, key) { - - var bestFound = -1; - - for (var i = 0; i < this._fileList.length; i++) - { - var file = this._fileList[i]; - - if (file.type === type && file.key === key) - { - bestFound = i; - - // An already loaded/loading file may be superceded. - if (!file.loaded && !file.loading) - { - break; - } - } - } - - return bestFound; - - }, - - /** - * Find a file/asset with a specific key. - * - * Only assets in the download file queue will be found. - * - * @method Phaser.Loader#getAsset - * @param {string} type - The type asset you want to check. - * @param {string} key - Key of the asset you want to check. - * @return {any} Returns an object if found that has 2 properties: `index` and `file`; otherwise a non-true value is returned. - * The index may change and should only be used immediately following this call. - */ - getAsset: function (type, key) { - - var fileIndex = this.getAssetIndex(type, key); - - if (fileIndex > -1) - { - return { index: fileIndex, file: this._fileList[fileIndex] }; - } - - return false; - - }, - - /** - * Reset the loader and clear any queued assets. If `Loader.resetLocked` is true this operation will abort. - * - * This will abort any loading and clear any queued assets. - * - * Optionally you can clear any associated events. - * - * @method Phaser.Loader#reset - * @protected - * @param {boolean} [hard=false] - If true then the preload sprite and other artifacts may also be cleared. - * @param {boolean} [clearEvents=false] - If true then the all Loader signals will have removeAll called on them. - */ - reset: function (hard, clearEvents) { - - if (clearEvents === undefined) { clearEvents = false; } - - if (this.resetLocked) - { - return; - } - - if (hard) - { - this.preloadSprite = null; - } - - this.isLoading = false; - - this._processingHead = 0; - this._fileList.length = 0; - this._flightQueue.length = 0; - - this._fileLoadStarted = false; - this._totalFileCount = 0; - this._totalPackCount = 0; - this._loadedPackCount = 0; - this._loadedFileCount = 0; - - if (clearEvents) - { - this.onLoadStart.removeAll(); - this.onLoadComplete.removeAll(); - this.onPackComplete.removeAll(); - this.onFileStart.removeAll(); - this.onFileComplete.removeAll(); - this.onFileError.removeAll(); - } - - }, - - /** - * Internal function that adds a new entry to the file list. Do not call directly. - * - * @method Phaser.Loader#addToFileList - * @protected - * @param {string} type - The type of resource to add to the list (image, audio, xml, etc). - * @param {string} key - The unique Cache ID key of this resource. - * @param {string} [url] - The URL the asset will be loaded from. - * @param {object} [properties=(none)] - Any additional properties needed to load the file. These are added directly to the added file object and overwrite any defaults. - * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. - * @param {string} [extension] - If no URL is given the Loader will sometimes auto-generate the URL based on the key, using this as the extension. - * @return {Phaser.Loader} This instance of the Phaser Loader. - */ - addToFileList: function (type, key, url, properties, overwrite, extension) { - - if (overwrite === undefined) { overwrite = false; } - - if (key === undefined || key === '') - { - console.warn("Phaser.Loader: Invalid or no key given of type " + type); - return this; - } - - if (url === undefined || url === null) - { - if (extension) - { - url = key + extension; - } - else - { - console.warn("Phaser.Loader: No URL given for file type: " + type + " key: " + key); - return this; - } - } - - var file = { - type: type, - key: key, - path: this.path, - url: url, - syncPoint: this._withSyncPointDepth > 0, - data: null, - loading: false, - loaded: false, - error: false - }; - - if (properties) - { - for (var prop in properties) - { - file[prop] = properties[prop]; - } - } - - var fileIndex = this.getAssetIndex(type, key); - - if (overwrite && fileIndex > -1) - { - var currentFile = this._fileList[fileIndex]; - - if (!currentFile.loading && !currentFile.loaded) - { - this._fileList[fileIndex] = file; - } - else - { - this._fileList.push(file); - this._totalFileCount++; - } - } - else if (fileIndex === -1) - { - this._fileList.push(file); - this._totalFileCount++; - } - - return this; - - }, - - /** - * Internal function that replaces an existing entry in the file list with a new one. Do not call directly. - * - * @method Phaser.Loader#replaceInFileList - * @protected - * @param {string} type - The type of resource to add to the list (image, audio, xml, etc). - * @param {string} key - The unique Cache ID key of this resource. - * @param {string} url - The URL the asset will be loaded from. - * @param {object} properties - Any additional properties needed to load the file. - */ - replaceInFileList: function (type, key, url, properties) { - - return this.addToFileList(type, key, url, properties, true); - - }, - - /** - * Add a JSON resource pack ('packfile') to the Loader. - * - * A packfile is a JSON file that contains a list of assets to the be loaded. - * Please see the example 'loader/asset pack' in the Phaser Examples repository. - * - * Packs are always put before the first non-pack file that is not loaded / loading. - * - * This means that all packs added before any loading has started are added to the front - * of the file queue, in the order added. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * The URL of the packfile can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * @method Phaser.Loader#pack - * @param {string} key - Unique asset key of this resource pack. - * @param {string} [url] - URL of the Asset Pack JSON file. If you wish to pass a json object instead set this to null and pass the object as the data parameter. - * @param {object} [data] - The Asset Pack JSON data. Use this to pass in a json data object rather than loading it from a URL. TODO - * @param {object} [callbackContext=(loader)] - Some Loader operations, like Binary and Script require a context for their callbacks. Pass the context here. - * @return {Phaser.Loader} This Loader instance. - */ - pack: function (key, url, data, callbackContext) { - - if (url === undefined) { url = null; } - if (data === undefined) { data = null; } - if (callbackContext === undefined) { callbackContext = null; } - - if (!url && !data) - { - console.warn('Phaser.Loader.pack - Both url and data are null. One must be set.'); - - return this; - } - - var pack = { - type: 'packfile', - key: key, - url: url, - path: this.path, - syncPoint: true, - data: null, - loading: false, - loaded: false, - error: false, - callbackContext: callbackContext - }; - - // A data object has been given - if (data) - { - if (typeof data === 'string') - { - data = JSON.parse(data); - } - - pack.data = data || {}; - - // Already consider 'loaded' - pack.loaded = true; - } - - // Add before first non-pack/no-loaded ~ last pack from start prior to loading - // (Read one past for splice-to-end) - for (var i = 0; i < this._fileList.length + 1; i++) - { - var file = this._fileList[i]; - - if (!file || (!file.loaded && !file.loading && file.type !== 'packfile')) - { - this._fileList.splice(i, 0, pack); - this._totalPackCount++; - break; - } - } - - return this; - - }, - - /** - * Adds an Image to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the image via `Cache.getImage(key)` - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. - * If you do not desire this action then provide a URL. - * - * @method Phaser.Loader#image - * @param {string} key - Unique asset key of this image file. - * @param {string} [url] - URL of an image file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". - * @param {boolean} [overwrite=false] - If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. - * @return {Phaser.Loader} This Loader instance. - */ - image: function (key, url, overwrite) { - - return this.addToFileList('image', key, url, undefined, overwrite, '.png'); - - }, - - /** - * Adds an array of images to the current load queue. - * - * It works by passing each element of the array to the Loader.image method. - * - * The files are **not** loaded immediately after calling this method. The files are added to the queue ready to be loaded when the loader starts. - * - * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * - * The keys must be unique Strings. They are used to add the files to the Phaser.Cache upon successful load. - * - * Retrieve the images via `Cache.getImage(key)` - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. - * If you do not desire this action then provide a URL. - * - * @method Phaser.Loader#images - * @param {array} keys - An array of unique asset keys of the image files. - * @param {array} [urls] - Optional array of URLs. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". If provided the URLs array length must match the keys array length. - * @return {Phaser.Loader} This Loader instance. - */ - images: function (keys, urls) { - - if (Array.isArray(urls)) - { - for (var i = 0; i < keys.length; i++) - { - this.image(keys[i], urls[i]); - } - } - else - { - for (var i = 0; i < keys.length; i++) - { - this.image(keys[i]); - } - } - - return this; - - }, - - /** - * Adds a Text file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getText(key)` - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.txt". It will always add `.txt` as the extension. - * If you do not desire this action then provide a URL. - * - * @method Phaser.Loader#text - * @param {string} key - Unique asset key of the text file. - * @param {string} [url] - URL of the text file. If undefined or `null` the url will be set to `.txt`, i.e. if `key` was "alien" then the URL will be "alien.txt". - * @param {boolean} [overwrite=false] - If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. - * @return {Phaser.Loader} This Loader instance. - */ - text: function (key, url, overwrite) { - - return this.addToFileList('text', key, url, undefined, overwrite, '.txt'); - - }, - - /** - * Adds a JSON file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. - * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.json". It will always add `.json` as the extension. - * If you do not desire this action then provide a URL. - * - * @method Phaser.Loader#json - * @param {string} key - Unique asset key of the json file. - * @param {string} [url] - URL of the JSON file. If undefined or `null` the url will be set to `.json`, i.e. if `key` was "alien" then the URL will be "alien.json". - * @param {boolean} [overwrite=false] - If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. - * @return {Phaser.Loader} This Loader instance. - */ - json: function (key, url, overwrite) { - - return this.addToFileList('json', key, url, undefined, overwrite, '.json'); - - }, - - /** - * Adds a fragment shader file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getShader(key)`. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "blur" - * and no URL is given then the Loader will set the URL to be "blur.frag". It will always add `.frag` as the extension. - * If you do not desire this action then provide a URL. - * - * @method Phaser.Loader#shader - * @param {string} key - Unique asset key of the fragment file. - * @param {string} [url] - URL of the fragment file. If undefined or `null` the url will be set to `.frag`, i.e. if `key` was "blur" then the URL will be "blur.frag". - * @param {boolean} [overwrite=false] - If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. - * @return {Phaser.Loader} This Loader instance. - */ - shader: function (key, url, overwrite) { - - return this.addToFileList('shader', key, url, undefined, overwrite, '.frag'); - - }, - - /** - * Adds an XML file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getXML(key)`. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.xml". It will always add `.xml` as the extension. - * If you do not desire this action then provide a URL. - * - * @method Phaser.Loader#xml - * @param {string} key - Unique asset key of the xml file. - * @param {string} [url] - URL of the XML file. If undefined or `null` the url will be set to `.xml`, i.e. if `key` was "alien" then the URL will be "alien.xml". - * @param {boolean} [overwrite=false] - If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. - * @return {Phaser.Loader} This Loader instance. - */ - xml: function (key, url, overwrite) { - - return this.addToFileList('xml', key, url, undefined, overwrite, '.xml'); - - }, - - /** - * Adds a JavaScript file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.js". It will always add `.js` as the extension. - * If you do not desire this action then provide a URL. - * - * Upon successful load the JavaScript is automatically turned into a script tag and executed, so be careful what you load! - * - * A callback, which will be invoked as the script tag has been created, can also be specified. - * The callback must return relevant `data`. - * - * @method Phaser.Loader#script - * @param {string} key - Unique asset key of the script file. - * @param {string} [url] - URL of the JavaScript file. If undefined or `null` the url will be set to `.js`, i.e. if `key` was "alien" then the URL will be "alien.js". - * @param {function} [callback=(none)] - Optional callback that will be called after the script tag has loaded, so you can perform additional processing. - * @param {object} [callbackContext=(loader)] - The context under which the callback will be applied. If not specified it will use the Phaser Loader as the context. - * @return {Phaser.Loader} This Loader instance. - */ - script: function (key, url, callback, callbackContext) { - - if (callback === undefined) { callback = false; } - - if (callback !== false && callbackContext === undefined) { callbackContext = this; } - - return this.addToFileList('script', key, url, { syncPoint: true, callback: callback, callbackContext: callbackContext }, false, '.js'); - - }, - - /** - * Adds a binary file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getBinary(key)`. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.bin". It will always add `.bin` as the extension. - * If you do not desire this action then provide a URL. - * - * It will be loaded via xhr with a responseType of "arraybuffer". You can specify an optional callback to process the file after load. - * When the callback is called it will be passed 2 parameters: the key of the file and the file data. - * - * WARNING: If a callback is specified the data will be set to whatever it returns. Always return the data object, even if you didn't modify it. - * - * @method Phaser.Loader#binary - * @param {string} key - Unique asset key of the binary file. - * @param {string} [url] - URL of the binary file. If undefined or `null` the url will be set to `.bin`, i.e. if `key` was "alien" then the URL will be "alien.bin". - * @param {function} [callback=(none)] - Optional callback that will be passed the file after loading, so you can perform additional processing on it. - * @param {object} [callbackContext] - The context under which the callback will be applied. If not specified it will use the callback itself as the context. - * @return {Phaser.Loader} This Loader instance. - */ - binary: function (key, url, callback, callbackContext) { - - if (callback === undefined) { callback = false; } - - // Why is the default callback context the ..callback? - if (callback !== false && callbackContext === undefined) { callbackContext = callback; } - - return this.addToFileList('binary', key, url, { callback: callback, callbackContext: callbackContext }, false, '.bin'); - - }, - - /** - * Adds a Sprite Sheet to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * To clarify the terminology that Phaser uses: A Sprite Sheet is an image containing frames, usually of an animation, that are all equal - * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. - * Sometimes (outside of Phaser) the term "sprite sheet" is used to refer to a texture atlas. - * A Texture Atlas works by packing together images as best it can, using whatever frame sizes it likes, often with cropping and trimming - * the frames in the process. Software such as Texture Packer, Flash CC or Shoebox all generate texture atlases, not sprite sheets. - * If you've got an atlas then use `Loader.atlas` instead. - * - * The key must be a unique String. It is used to add the image to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getImage(key)`. Sprite sheets, being image based, live in the same Cache as all other Images. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" - * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. - * If you do not desire this action then provide a URL. - * - * @method Phaser.Loader#spritesheet - * @param {string} key - Unique asset key of the sheet file. - * @param {string} url - URL of the sprite sheet file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". - * @param {number} frameWidth - Width in pixels of a single frame in the sprite sheet. - * @param {number} frameHeight - Height in pixels of a single frame in the sprite sheet. - * @param {number} [frameMax=-1] - How many frames in this sprite sheet. If not specified it will divide the whole image into frames. - * @param {number} [margin=0] - If the frames have been drawn with a margin, specify the amount here. - * @param {number} [spacing=0] - If the frames have been drawn with spacing between them, specify the amount here. - * @return {Phaser.Loader} This Loader instance. - */ - spritesheet: function (key, url, frameWidth, frameHeight, frameMax, margin, spacing) { - - if (frameMax === undefined) { frameMax = -1; } - if (margin === undefined) { margin = 0; } - if (spacing === undefined) { spacing = 0; } - - return this.addToFileList('spritesheet', key, url, { frameWidth: frameWidth, frameHeight: frameHeight, frameMax: frameMax, margin: margin, spacing: spacing }, false, '.png'); - - }, - - /** - * Adds an audio file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getSound(key)`. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * Mobile warning: There are some mobile devices (certain iPad 2 and iPad Mini revisions) that cannot play 48000 Hz audio. - * When they try to play the audio becomes extremely distorted and buzzes, eventually crashing the sound system. - * The solution is to use a lower encoding rate such as 44100 Hz. - * - * @method Phaser.Loader#audio - * @param {string} key - Unique asset key of the audio file. - * @param {string|string[]|object[]} urls - Either a single string or an array of URIs or pairs of `{uri: .., type: ..}`. - * If an array is specified then the first URI (or URI + mime pair) that is device-compatible will be selected. - * For example: `"jump.mp3"`, `['jump.mp3', 'jump.ogg', 'jump.m4a']`, or `[{uri: "data:", type: 'opus'}, 'fallback.mp3']`. - * BLOB and DATA URIs can be used but only support automatic detection when used in the pair form; otherwise the format must be manually checked before adding the resource. - * @param {boolean} [autoDecode=true] - When using Web Audio the audio files can either be decoded at load time or run-time. - * Audio files can't be played until they are decoded and, if specified, this enables immediate decoding. Decoding is a non-blocking async process, however it consumes huge amounts of CPU time on mobiles especially. - * @return {Phaser.Loader} This Loader instance. - */ - audio: function (key, urls, autoDecode) { - - if (this.game.sound.noAudio) - { - return this; - } - - if (autoDecode === undefined) { autoDecode = true; } - - if (typeof urls === 'string') - { - urls = [urls]; - } - - return this.addToFileList('audio', key, urls, { buffer: null, autoDecode: autoDecode }); - - }, - - /** - * Adds an audio sprite file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Audio Sprites are a combination of audio files and a JSON configuration. - * - * The JSON follows the format of that created by https://github.com/tonistiigi/audiosprite - * - * Retrieve the file via `Cache.getSoundData(key)`. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * @method Phaser.Loader#audiosprite - * @param {string} key - Unique asset key of the audio file. - * @param {Array|string} urls - An array containing the URLs of the audio files, i.e.: [ 'audiosprite.mp3', 'audiosprite.ogg', 'audiosprite.m4a' ] or a single string containing just one URL. - * @param {string} [jsonURL=null] - The URL of the audiosprite configuration JSON object. If you wish to pass the data directly set this parameter to null. - * @param {string|object} [jsonData=null] - A JSON object or string containing the audiosprite configuration data. This is ignored if jsonURL is not null. - * @param {boolean} [autoDecode=true] - When using Web Audio the audio files can either be decoded at load time or run-time. - * Audio files can't be played until they are decoded and, if specified, this enables immediate decoding. Decoding is a non-blocking async process, however it consumes huge amounts of CPU time on mobiles especially. - * @return {Phaser.Loader} This Loader instance. - */ - audioSprite: function (key, urls, jsonURL, jsonData, autoDecode) { - - if (this.game.sound.noAudio) - { - return this; - } - - if (jsonURL === undefined) { jsonURL = null; } - if (jsonData === undefined) { jsonData = null; } - if (autoDecode === undefined) { autoDecode = true; } - - this.audio(key, urls, autoDecode); - - if (jsonURL) - { - this.json(key + '-audioatlas', jsonURL); - } - else if (jsonData) - { - if (typeof jsonData === 'string') - { - jsonData = JSON.parse(jsonData); - } - - this.cache.addJSON(key + '-audioatlas', '', jsonData); - } - else - { - console.warn('Phaser.Loader.audiosprite - You must specify either a jsonURL or provide a jsonData object'); - } - - return this; - - }, - - /** - * A legacy alias for Loader.audioSprite. Please see that method for documentation. - * - * @method Phaser.Loader#audiosprite - * @param {string} key - Unique asset key of the audio file. - * @param {Array|string} urls - An array containing the URLs of the audio files, i.e.: [ 'audiosprite.mp3', 'audiosprite.ogg', 'audiosprite.m4a' ] or a single string containing just one URL. - * @param {string} [jsonURL=null] - The URL of the audiosprite configuration JSON object. If you wish to pass the data directly set this parameter to null. - * @param {string|object} [jsonData=null] - A JSON object or string containing the audiosprite configuration data. This is ignored if jsonURL is not null. - * @param {boolean} [autoDecode=true] - When using Web Audio the audio files can either be decoded at load time or run-time. - * Audio files can't be played until they are decoded and, if specified, this enables immediate decoding. Decoding is a non-blocking async process, however it consumes huge amounts of CPU time on mobiles especially. - * @return {Phaser.Loader} This Loader instance. - */ - audiosprite: function (key, urls, jsonURL, jsonData, autoDecode) { - - return this.audioSprite(key, urls, jsonURL, jsonData, autoDecode); - - }, - - /** - * Adds a video file to the current load queue. - * - * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getVideo(key)`. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * You don't need to preload a video in order to play it in your game. See `Video.createVideoFromURL` for details. - * - * @method Phaser.Loader#video - * @param {string} key - Unique asset key of the video file. - * @param {string|string[]|object[]} urls - Either a single string or an array of URIs or pairs of `{uri: .., type: ..}`. - * If an array is specified then the first URI (or URI + mime pair) that is device-compatible will be selected. - * For example: `"boom.mp4"`, `['boom.mp4', 'boom.ogg', 'boom.webm']`, or `[{uri: "data:", type: 'opus'}, 'fallback.mp4']`. - * BLOB and DATA URIs can be used but only support automatic detection when used in the pair form; otherwise the format must be manually checked before adding the resource. - * @param {string} [loadEvent='canplaythrough'] - This sets the Video source event to listen for before the load is considered complete. - * 'canplaythrough' implies the video has downloaded enough, and bandwidth is high enough that it can be played to completion. - * 'canplay' implies the video has downloaded enough to start playing, but not necessarily to finish. - * 'loadeddata' just makes sure that the video meta data and first frame have downloaded. Phaser uses this value automatically if the - * browser is detected as being Firefox and no `loadEvent` is given, otherwise it defaults to `canplaythrough`. - * @param {boolean} [asBlob=false] - Video files can either be loaded via the creation of a video element which has its src property set. - * Or they can be loaded via xhr, stored as binary data in memory and then converted to a Blob. This isn't supported in IE9 or Android 2. - * If you need to have the same video playing at different times across multiple Sprites then you need to load it as a Blob. - * @return {Phaser.Loader} This Loader instance. - */ - video: function (key, urls, loadEvent, asBlob) { - - if (loadEvent === undefined) - { - if (this.game.device.firefox) - { - loadEvent = 'loadeddata'; - } - else - { - loadEvent = 'canplaythrough'; - } - } - - if (asBlob === undefined) { asBlob = false; } - - if (typeof urls === 'string') - { - urls = [urls]; - } - - return this.addToFileList('video', key, urls, { buffer: null, asBlob: asBlob, loadEvent: loadEvent }); - - }, - - /** - * Adds a Tile Map data file to the current load queue. - * - * You can choose to either load the data externally, by providing a URL to a json file. - * Or you can pass in a JSON object or String via the `data` parameter. - * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * - * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getTilemapData(key)`. JSON files are automatically parsed upon load. - * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. - * For example if the key is "level1" and no URL or data is given then the Loader will set the URL to be "level1.json". - * If you set the format to be Tilemap.CSV it will set the URL to be "level1.csv" instead. - * - * If you do not desire this action then provide a URL or data object. - * - * @method Phaser.Loader#tilemap - * @param {string} key - Unique asset key of the tilemap data. - * @param {string} [url] - URL of the tile map file. If undefined or `null` and no data is given the url will be set to `.json`, i.e. if `key` was "level1" then the URL will be "level1.json". - * @param {object|string} [data] - An optional JSON data object. If given then the url is ignored and this JSON object is used for map data instead. - * @param {number} [format=Phaser.Tilemap.CSV] - The format of the map data. Either Phaser.Tilemap.CSV or Phaser.Tilemap.TILED_JSON. - * @return {Phaser.Loader} This Loader instance. - */ - tilemap: function (key, url, data, format) { - - if (url === undefined) { url = null; } - if (data === undefined) { data = null; } - if (format === undefined) { format = Phaser.Tilemap.CSV; } - - if (!url && !data) - { - if (format === Phaser.Tilemap.CSV) - { - url = key + '.csv'; - } - else - { - url = key + '.json'; - } - } - - // A map data object has been given - if (data) - { - switch (format) - { - // A csv string or object has been given - case Phaser.Tilemap.CSV: - break; - - // A json string or object has been given - case Phaser.Tilemap.TILED_JSON: - - if (typeof data === 'string') - { - data = JSON.parse(data); - } - break; - } - - this.cache.addTilemap(key, null, data, format); - } - else - { - this.addToFileList('tilemap', key, url, { format: format }); - } - - return this; - - }, - - /** - * Adds a physics data file to the current load queue. - * - * The data must be in `Lime + Corona` JSON format. [Physics Editor](https://www.codeandweb.com) by code'n'web exports in this format natively. - * - * You can choose to either load the data externally, by providing a URL to a json file. - * Or you can pass in a JSON object or String via the `data` parameter. - * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * - * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. - * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * - * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. - * For example if the key is "alien" and no URL or data is given then the Loader will set the URL to be "alien.json". - * It will always use `.json` as the extension. - * - * If you do not desire this action then provide a URL or data object. - * - * @method Phaser.Loader#physics - * @param {string} key - Unique asset key of the physics json data. - * @param {string} [url] - URL of the physics data file. If undefined or `null` and no data is given the url will be set to `.json`, i.e. if `key` was "alien" then the URL will be "alien.json". - * @param {object|string} [data] - An optional JSON data object. If given then the url is ignored and this JSON object is used for physics data instead. - * @param {string} [format=Phaser.Physics.LIME_CORONA_JSON] - The format of the physics data. - * @return {Phaser.Loader} This Loader instance. - */ - physics: function (key, url, data, format) { - - if (url === undefined) { url = null; } - if (data === undefined) { data = null; } - if (format === undefined) { format = Phaser.Physics.LIME_CORONA_JSON; } - - if (!url && !data) - { - url = key + '.json'; - } - - // A map data object has been given - if (data) - { - if (typeof data === 'string') - { - data = JSON.parse(data); - } - - this.cache.addPhysicsData(key, null, data, format); - } - else - { - this.addToFileList('physics', key, url, { format: format }); - } - - return this; - - }, - - /** - * Adds Bitmap Font files to the current load queue. - * - * To create the Bitmap Font files you can use: - * - * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ - * Glyph Designer (OS X, commercial): http://www.71squared.com/en/glyphdesigner - * Littera (Web-based, free): http://kvazars.com/littera/ - * - * You can choose to either load the data externally, by providing a URL to an xml file. - * Or you can pass in an XML object or String via the `xmlData` parameter. - * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * - * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getBitmapFont(key)`. XML files are automatically parsed upon load. - * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * - * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the textureURL isn't specified then the Loader will take the key and create a filename from that. - * For example if the key is "megaFont" and textureURL is null then the Loader will set the URL to be "megaFont.png". - * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will - * set the atlasURL to be the key. For example if the key is "megaFont" the atlasURL will be set to "megaFont.xml". - * - * If you do not desire this action then provide URLs and / or a data object. - * - * @method Phaser.Loader#bitmapFont - * @param {string} key - Unique asset key of the bitmap font. - * @param {string} textureURL - URL of the Bitmap Font texture file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "megaFont" then the URL will be "megaFont.png". - * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). If undefined or `null` AND `atlasData` is null, the url will be set to `.xml`, i.e. if `key` was "megaFont" then the URL will be "megaFont.xml". - * @param {object} atlasData - An optional Bitmap Font atlas in string form (stringified xml/json). - * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. - * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. - * @return {Phaser.Loader} This Loader instance. - */ - bitmapFont: function (key, textureURL, atlasURL, atlasData, xSpacing, ySpacing) { - - if (textureURL === undefined || textureURL === null) - { - textureURL = key + '.png'; - } - - if (atlasURL === undefined) { atlasURL = null; } - if (atlasData === undefined) { atlasData = null; } - - if (atlasURL === null && atlasData === null) - { - atlasURL = key + '.xml'; - } - - if (xSpacing === undefined) { xSpacing = 0; } - if (ySpacing === undefined) { ySpacing = 0; } - - // A URL to a json/xml atlas has been given - if (atlasURL) - { - this.addToFileList('bitmapfont', key, textureURL, { atlasURL: atlasURL, xSpacing: xSpacing, ySpacing: ySpacing }); - } - else - { - // A stringified xml/json atlas has been given - if (typeof atlasData === 'string') - { - var json, xml; - - try - { - json = JSON.parse(atlasData); - } - catch ( e ) - { - xml = this.parseXml(atlasData); - } - - if (!xml && !json) - { - throw new Error("Phaser.Loader. Invalid Bitmap Font atlas given"); - } - - this.addToFileList('bitmapfont', key, textureURL, { atlasURL: null, atlasData: json || xml, - atlasType: (!!json ? 'json' : 'xml'), xSpacing: xSpacing, ySpacing: ySpacing }); - } - } - - return this; - - }, - - /** - * Adds a Texture Atlas file to the current load queue. - * - * Unlike `Loader.atlasJSONHash` this call expects the atlas data to be in a JSON Array format. - * - * To create the Texture Atlas you can use tools such as: - * - * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) - * [Shoebox](http://renderhjs.net/shoebox/) - * - * If using Texture Packer we recommend you enable "Trim sprite names". - * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * - * You can choose to either load the data externally, by providing a URL to a json file. - * Or you can pass in a JSON object or String via the `atlasData` parameter. - * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * - * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. - * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * - * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the textureURL isn't specified then the Loader will take the key and create a filename from that. - * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". - * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will - * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * - * If you do not desire this action then provide URLs and / or a data object. - * - * @method Phaser.Loader#atlasJSONArray - * @param {string} key - Unique asset key of the texture atlas file. - * @param {string} [textureURL] - URL of the texture atlas image file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". - * @param {string} [atlasURL] - URL of the texture atlas data file. If undefined or `null` and no atlasData is given, the url will be set to `.json`, i.e. if `key` was "alien" then the URL will be "alien.json". - * @param {object} [atlasData] - A JSON data object. You don't need this if the data is being loaded from a URL. - * @return {Phaser.Loader} This Loader instance. - */ - atlasJSONArray: function (key, textureURL, atlasURL, atlasData) { - - return this.atlas(key, textureURL, atlasURL, atlasData, Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY); - - }, - - /** - * Adds a Texture Atlas file to the current load queue. - * - * Unlike `Loader.atlas` this call expects the atlas data to be in a JSON Hash format. - * - * To create the Texture Atlas you can use tools such as: - * - * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) - * [Shoebox](http://renderhjs.net/shoebox/) - * - * If using Texture Packer we recommend you enable "Trim sprite names". - * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * - * You can choose to either load the data externally, by providing a URL to a json file. - * Or you can pass in a JSON object or String via the `atlasData` parameter. - * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * - * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. - * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * - * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the textureURL isn't specified then the Loader will take the key and create a filename from that. - * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". - * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will - * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * - * If you do not desire this action then provide URLs and / or a data object. - * - * @method Phaser.Loader#atlasJSONHash - * @param {string} key - Unique asset key of the texture atlas file. - * @param {string} [textureURL] - URL of the texture atlas image file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". - * @param {string} [atlasURL] - URL of the texture atlas data file. If undefined or `null` and no atlasData is given, the url will be set to `.json`, i.e. if `key` was "alien" then the URL will be "alien.json". - * @param {object} [atlasData] - A JSON data object. You don't need this if the data is being loaded from a URL. - * @return {Phaser.Loader} This Loader instance. - */ - atlasJSONHash: function (key, textureURL, atlasURL, atlasData) { - - return this.atlas(key, textureURL, atlasURL, atlasData, Phaser.Loader.TEXTURE_ATLAS_JSON_HASH); - - }, - - /** - * Adds a Texture Atlas file to the current load queue. - * - * This call expects the atlas data to be in the Starling XML data format. - * - * To create the Texture Atlas you can use tools such as: - * - * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) - * [Shoebox](http://renderhjs.net/shoebox/) - * - * If using Texture Packer we recommend you enable "Trim sprite names". - * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * - * You can choose to either load the data externally, by providing a URL to an xml file. - * Or you can pass in an XML object or String via the `atlasData` parameter. - * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * - * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getImage(key)`. XML files are automatically parsed upon load. - * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * - * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the textureURL isn't specified then the Loader will take the key and create a filename from that. - * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". - * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will - * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.xml". - * - * If you do not desire this action then provide URLs and / or a data object. - * - * @method Phaser.Loader#atlasXML - * @param {string} key - Unique asset key of the texture atlas file. - * @param {string} [textureURL] - URL of the texture atlas image file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". - * @param {string} [atlasURL] - URL of the texture atlas data file. If undefined or `null` and no atlasData is given, the url will be set to `.json`, i.e. if `key` was "alien" then the URL will be "alien.xml". - * @param {object} [atlasData] - An XML data object. You don't need this if the data is being loaded from a URL. - * @return {Phaser.Loader} This Loader instance. - */ - atlasXML: function (key, textureURL, atlasURL, atlasData) { - - if (atlasURL === undefined) { atlasURL = null; } - if (atlasData === undefined) { atlasData = null; } - - if (!atlasURL && !atlasData) - { - atlasURL = key + '.xml'; - } - - return this.atlas(key, textureURL, atlasURL, atlasData, Phaser.Loader.TEXTURE_ATLAS_XML_STARLING); - - }, - - /** - * Adds a Texture Atlas file to the current load queue. - * - * To create the Texture Atlas you can use tools such as: - * - * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) - * [Shoebox](http://renderhjs.net/shoebox/) - * - * If using Texture Packer we recommend you enable "Trim sprite names". - * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * - * You can choose to either load the data externally, by providing a URL to a json file. - * Or you can pass in a JSON object or String via the `atlasData` parameter. - * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * - * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * - * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * - * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. - * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * - * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * - * If the textureURL isn't specified then the Loader will take the key and create a filename from that. - * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". - * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will - * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * - * If you do not desire this action then provide URLs and / or a data object. - * - * @method Phaser.Loader#atlas - * @param {string} key - Unique asset key of the texture atlas file. - * @param {string} [textureURL] - URL of the texture atlas image file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". - * @param {string} [atlasURL] - URL of the texture atlas data file. If undefined or `null` and no atlasData is given, the url will be set to `.json`, i.e. if `key` was "alien" then the URL will be "alien.json". - * @param {object} [atlasData] - A JSON or XML data object. You don't need this if the data is being loaded from a URL. - * @param {number} [format] - The format of the data. Can be Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY (the default), Phaser.Loader.TEXTURE_ATLAS_JSON_HASH or Phaser.Loader.TEXTURE_ATLAS_XML_STARLING. - * @return {Phaser.Loader} This Loader instance. - */ - atlas: function (key, textureURL, atlasURL, atlasData, format) { - - if (textureURL === undefined || textureURL === null) - { - textureURL = key + '.png'; - } - - if (atlasURL === undefined) { atlasURL = null; } - if (atlasData === undefined) { atlasData = null; } - if (format === undefined) { format = Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY; } - - if (!atlasURL && !atlasData) - { - if (format === Phaser.Loader.TEXTURE_ATLAS_XML_STARLING) - { - atlasURL = key + '.xml'; - } - else - { - atlasURL = key + '.json'; - } - } - - // A URL to a json/xml file has been given - if (atlasURL) - { - this.addToFileList('textureatlas', key, textureURL, { atlasURL: atlasURL, format: format }); - } - else - { - switch (format) - { - // A json string or object has been given - case Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY: - - if (typeof atlasData === 'string') - { - atlasData = JSON.parse(atlasData); - } - break; - - // An xml string or object has been given - case Phaser.Loader.TEXTURE_ATLAS_XML_STARLING: - - if (typeof atlasData === 'string') - { - var xml = this.parseXml(atlasData); - - if (!xml) - { - throw new Error("Phaser.Loader. Invalid Texture Atlas XML given"); - } - - atlasData = xml; - } - break; - } - - this.addToFileList('textureatlas', key, textureURL, { atlasURL: null, atlasData: atlasData, format: format }); - - } - - return this; - - }, - - /** - * Add a synchronization point to the assets/files added within the supplied callback. - * - * A synchronization point denotes that an asset _must_ be completely loaded before - * subsequent assets can be loaded. An asset marked as a sync-point does not need to wait - * for previous assets to load (unless they are sync-points). Resources, such as packs, may still - * be downloaded around sync-points, as long as they do not finalize loading. - * - * @method Phaser.Loader#withSyncPoints - * @param {function} callback - The callback is invoked and is supplied with a single argument: the loader. - * @param {object} [callbackContext=(loader)] - Context for the callback. - * @return {Phaser.Loader} This Loader instance. - */ - withSyncPoint: function (callback, callbackContext) { - - this._withSyncPointDepth++; - - try { - callback.call(callbackContext || this, this); - } finally { - this._withSyncPointDepth--; - } - - return this; - }, - - /** - * Add a synchronization point to a specific file/asset in the load queue. - * - * This has no effect on already loaded assets. - * - * @method Phaser.Loader#addSyncPoint - * @param {string} type - The type of resource to turn into a sync point (image, audio, xml, etc). - * @param {string} key - Key of the file you want to turn into a sync point. - * @return {Phaser.Loader} This Loader instance. - * @see {@link Phaser.Loader#withSyncPoint withSyncPoint} - */ - addSyncPoint: function (type, key) { - - var asset = this.getAsset(type, key); - - if (asset) - { - asset.file.syncPoint = true; - } - - return this; - }, - - /** - * Remove a file/asset from the loading queue. - * - * A file that is loaded or has started loading cannot be removed. - * - * @method Phaser.Loader#removeFile - * @protected - * @param {string} type - The type of resource to add to the list (image, audio, xml, etc). - * @param {string} key - Key of the file you want to remove. - */ - removeFile: function (type, key) { - - var asset = this.getAsset(type, key); - - if (asset) - { - if (!asset.loaded && !asset.loading) - { - this._fileList.splice(asset.index, 1); - } - } - - }, - - /** - * Remove all file loading requests - this is _insufficient_ to stop current loading. Use `reset` instead. - * - * @method Phaser.Loader#removeAll - * @protected - */ - removeAll: function () { - - this._fileList.length = 0; - this._flightQueue.length = 0; - - }, - - /** - * Start loading the assets. Normally you don't need to call this yourself as the StateManager will do so. - * - * @method Phaser.Loader#start - */ - start: function () { - - if (this.isLoading) - { - return; - } - - this.hasLoaded = false; - this.isLoading = true; - - this.updateProgress(); - - this.processLoadQueue(); - - }, - - /** - * Process the next item(s) in the file/asset queue. - * - * Process the queue and start loading enough items to fill up the inflight queue. - * - * If a sync-file is encountered then subsequent asset processing is delayed until it completes. - * The exception to this rule is that packfiles can be downloaded (but not processed) even if - * there appear other sync files (ie. packs) - this enables multiple packfiles to be fetched in parallel. - * such as during the start phaser. - * - * @method Phaser.Loader#processLoadQueue - * @private - */ - processLoadQueue: function () { - - if (!this.isLoading) - { - console.warn('Phaser.Loader - active loading canceled / reset'); - this.finishedLoading(true); - return; - } - - // Empty the flight queue as applicable - for (var i = 0; i < this._flightQueue.length; i++) - { - var file = this._flightQueue[i]; - - if (file.loaded || file.error) - { - this._flightQueue.splice(i, 1); - i--; - - file.loading = false; - file.requestUrl = null; - file.requestObject = null; - - if (file.error) - { - this.onFileError.dispatch(file.key, file); - } - - if (file.type !== 'packfile') - { - this._loadedFileCount++; - this.onFileComplete.dispatch(this.progress, file.key, !file.error, this._loadedFileCount, this._totalFileCount); - } - else if (file.type === 'packfile' && file.error) - { - // Non-error pack files are handled when processing the file queue - this._loadedPackCount++; - this.onPackComplete.dispatch(file.key, !file.error, this._loadedPackCount, this._totalPackCount); - } - - } - } - - // When true further non-pack file downloads are suppressed - var syncblock = false; - - var inflightLimit = this.enableParallel ? Phaser.Math.clamp(this.maxParallelDownloads, 1, 12) : 1; - - for (var i = this._processingHead; i < this._fileList.length; i++) - { - var file = this._fileList[i]; - - // Pack is fetched (ie. has data) and is currently at the start of the process queue. - if (file.type === 'packfile' && !file.error && file.loaded && i === this._processingHead) - { - // Processing the pack / adds more files - this.processPack(file); - - this._loadedPackCount++; - this.onPackComplete.dispatch(file.key, !file.error, this._loadedPackCount, this._totalPackCount); - } - - if (file.loaded || file.error) - { - // Item at the start of file list finished, can skip it in future - if (i === this._processingHead) - { - this._processingHead = i + 1; - } - } - else if (!file.loading && this._flightQueue.length < inflightLimit) - { - // -> not loaded/failed, not loading - if (file.type === 'packfile' && !file.data) - { - // Fetches the pack data: the pack is processed above as it reaches queue-start. - // (Packs do not trigger onLoadStart or onFileStart.) - this._flightQueue.push(file); - file.loading = true; - - this.loadFile(file); - } - else if (!syncblock) - { - if (!this._fileLoadStarted) - { - this._fileLoadStarted = true; - this.onLoadStart.dispatch(); - } - - this._flightQueue.push(file); - file.loading = true; - this.onFileStart.dispatch(this.progress, file.key, file.url); - - this.loadFile(file); - } - } - - if (!file.loaded && file.syncPoint) - { - syncblock = true; - } - - // Stop looking if queue full - or if syncblocked and there are no more packs. - // (As only packs can be loaded around a syncblock) - if (this._flightQueue.length >= inflightLimit || - (syncblock && this._loadedPackCount === this._totalPackCount)) - { - break; - } - } - - this.updateProgress(); - - // True when all items in the queue have been advanced over - // (There should be no inflight items as they are complete - loaded/error.) - if (this._processingHead >= this._fileList.length) - { - this.finishedLoading(); - } - else if (!this._flightQueue.length) - { - // Flight queue is empty but file list is not done being processed. - // This indicates a critical internal error with no known recovery. - console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled"); - - var _this = this; - - setTimeout(function () { - _this.finishedLoading(true); - }, 2000); - } - - }, - - /** - * The loading is all finished. - * - * @method Phaser.Loader#finishedLoading - * @private - * @param {boolean} [abnormal=true] - True if the loading finished abnormally. - */ - finishedLoading: function (abnormal) { - - if (this.hasLoaded) - { - return; - } - - this.hasLoaded = true; - this.isLoading = false; - - // If there were no files make sure to trigger the event anyway, for consistency - if (!abnormal && !this._fileLoadStarted) - { - this._fileLoadStarted = true; - this.onLoadStart.dispatch(); - } - - this.onLoadComplete.dispatch(); - - this.game.state.loadComplete(); - - this.reset(); - - }, - - /** - * Informs the loader that the given file resource has been fetched and processed; - * or such a request has failed. - * - * @method Phaser.Loader#asyncComplete - * @private - * @param {object} file - * @param {string} [error=''] - The error message, if any. No message implies no error. - */ - asyncComplete: function (file, errorMessage) { - - if (errorMessage === undefined) { errorMessage = ''; } - - file.loaded = true; - file.error = !!errorMessage; - - if (errorMessage) - { - file.errorMessage = errorMessage; - - console.warn('Phaser.Loader - ' + file.type + '[' + file.key + ']' + ': ' + errorMessage); - // debugger; - } - - this.processLoadQueue(); - - }, - - /** - * Process pack data. This will usually modify the file list. - * - * @method Phaser.Loader#processPack - * @private - * @param {object} pack - */ - processPack: function (pack) { - - var packData = pack.data[pack.key]; - - if (!packData) - { - console.warn('Phaser.Loader - ' + pack.key + ': pack has data, but not for pack key'); - return; - } - - for (var i = 0; i < packData.length; i++) - { - var file = packData[i]; - - switch (file.type) - { - case "image": - this.image(file.key, file.url, file.overwrite); - break; - - case "text": - this.text(file.key, file.url, file.overwrite); - break; - - case "json": - this.json(file.key, file.url, file.overwrite); - break; - - case "xml": - this.xml(file.key, file.url, file.overwrite); - break; - - case "script": - this.script(file.key, file.url, file.callback, pack.callbackContext || this); - break; - - case "binary": - this.binary(file.key, file.url, file.callback, pack.callbackContext || this); - break; - - case "spritesheet": - this.spritesheet(file.key, file.url, file.frameWidth, file.frameHeight, file.frameMax, file.margin, file.spacing); - break; - - case "video": - this.video(file.key, file.urls); - break; - - case "audio": - this.audio(file.key, file.urls, file.autoDecode); - break; - - case "audiosprite": - this.audiosprite(file.key, file.urls, file.jsonURL, file.jsonData, file.autoDecode); - break; - - case "tilemap": - this.tilemap(file.key, file.url, file.data, Phaser.Tilemap[file.format]); - break; - - case "physics": - this.physics(file.key, file.url, file.data, Phaser.Loader[file.format]); - break; - - case "bitmapFont": - this.bitmapFont(file.key, file.textureURL, file.atlasURL, file.atlasData, file.xSpacing, file.ySpacing); - break; - - case "atlasJSONArray": - this.atlasJSONArray(file.key, file.textureURL, file.atlasURL, file.atlasData); - break; - - case "atlasJSONHash": - this.atlasJSONHash(file.key, file.textureURL, file.atlasURL, file.atlasData); - break; - - case "atlasXML": - this.atlasXML(file.key, file.textureURL, file.atlasURL, file.atlasData); - break; - - case "atlas": - this.atlas(file.key, file.textureURL, file.atlasURL, file.atlasData, Phaser.Loader[file.format]); - break; - - case "shader": - this.shader(file.key, file.url, file.overwrite); - break; - } - } - - }, - - /** - * Transforms the asset URL. - * - * The default implementation prepends the baseURL if the url doesn't begin with http or // - * - * @method Phaser.Loader#transformUrl - * @protected - * @param {string} url - The url to transform. - * @param {object} file - The file object being transformed. - * @return {string} The transformed url. In rare cases where the url isn't specified it will return false instead. - */ - transformUrl: function (url, file) { - - if (!url) - { - return false; - } - - if (url.match(/^(?:blob:|data:|http:\/\/|https:\/\/|\/\/)/)) - { - return url; - } - else - { - return this.baseURL + file.path + url; - } - - }, - - /** - * Start fetching a resource. - * - * All code paths, async or otherwise, from this function must return to `asyncComplete`. - * - * @method Phaser.Loader#loadFile - * @private - * @param {object} file - */ - loadFile: function (file) { - - // Image or Data? - switch (file.type) - { - case 'packfile': - this.xhrLoad(file, this.transformUrl(file.url, file), 'text', this.fileComplete); - break; - - case 'image': - case 'spritesheet': - case 'textureatlas': - case 'bitmapfont': - this.loadImageTag(file); - break; - - case 'audio': - file.url = this.getAudioURL(file.url); - - if (file.url) - { - // WebAudio or Audio Tag? - if (this.game.sound.usingWebAudio) - { - this.xhrLoad(file, this.transformUrl(file.url, file), 'arraybuffer', this.fileComplete); - } - else if (this.game.sound.usingAudioTag) - { - this.loadAudioTag(file); - } - } - else - { - this.fileError(file, null, 'No supported audio URL specified or device does not have audio playback support'); - } - break; - - case 'video': - file.url = this.getVideoURL(file.url); - - if (file.url) - { - if (file.asBlob) - { - this.xhrLoad(file, this.transformUrl(file.url, file), 'blob', this.fileComplete); - } - else - { - this.loadVideoTag(file); - } - } - else - { - this.fileError(file, null, 'No supported video URL specified or device does not have video playback support'); - } - break; - - case 'json': - - this.xhrLoad(file, this.transformUrl(file.url, file), 'text', this.jsonLoadComplete); - break; - - case 'xml': - - this.xhrLoad(file, this.transformUrl(file.url, file), 'text', this.xmlLoadComplete); - break; - - case 'tilemap': - - if (file.format === Phaser.Tilemap.TILED_JSON) - { - this.xhrLoad(file, this.transformUrl(file.url, file), 'text', this.jsonLoadComplete); - } - else if (file.format === Phaser.Tilemap.CSV) - { - this.xhrLoad(file, this.transformUrl(file.url, file), 'text', this.csvLoadComplete); - } - else - { - this.asyncComplete(file, "invalid Tilemap format: " + file.format); - } - break; - - case 'text': - case 'script': - case 'shader': - case 'physics': - this.xhrLoad(file, this.transformUrl(file.url, file), 'text', this.fileComplete); - break; - - case 'binary': - this.xhrLoad(file, this.transformUrl(file.url, file), 'arraybuffer', this.fileComplete); - break; - } - - }, - - /** - * Continue async loading through an Image tag. - * @private - */ - loadImageTag: function (file) { - - var _this = this; - - file.data = new Image(); - file.data.name = file.key; - - if (this.crossOrigin) - { - file.data.crossOrigin = this.crossOrigin; - } - - file.data.onload = function () { - if (file.data.onload) - { - file.data.onload = null; - file.data.onerror = null; - _this.fileComplete(file); - } - }; - - file.data.onerror = function () { - if (file.data.onload) - { - file.data.onload = null; - file.data.onerror = null; - _this.fileError(file); - } - }; - - file.data.src = this.transformUrl(file.url, file); - - // Image is immediately-available/cached - if (file.data.complete && file.data.width && file.data.height) - { - file.data.onload = null; - file.data.onerror = null; - this.fileComplete(file); - } - - }, - - /** - * Continue async loading through a Video tag. - * @private - */ - loadVideoTag: function (file) { - - var _this = this; - - file.data = document.createElement("video"); - file.data.name = file.key; - file.data.controls = false; - file.data.autoplay = false; - - var videoLoadEvent = function () { - - file.data.removeEventListener(file.loadEvent, videoLoadEvent, false); - file.data.onerror = null; - file.data.canplay = true; - Phaser.GAMES[_this.game.id].load.fileComplete(file); - - }; - - file.data.onerror = function () { - file.data.removeEventListener(file.loadEvent, videoLoadEvent, false); - file.data.onerror = null; - file.data.canplay = false; - _this.fileError(file); - }; - - file.data.addEventListener(file.loadEvent, videoLoadEvent, false); - - file.data.src = this.transformUrl(file.url, file); - file.data.load(); - - }, - - /** - * Continue async loading through an Audio tag. - * @private - */ - loadAudioTag: function (file) { - - var _this = this; - - if (this.game.sound.touchLocked) - { - // If audio is locked we can't do this yet, so need to queue this load request. Bum. - file.data = new Audio(); - file.data.name = file.key; - file.data.preload = 'auto'; - file.data.src = this.transformUrl(file.url, file); - - this.fileComplete(file); - } - else - { - file.data = new Audio(); - file.data.name = file.key; - - var playThroughEvent = function () { - file.data.removeEventListener('canplaythrough', playThroughEvent, false); - file.data.onerror = null; - _this.fileComplete(file); - }; - - file.data.onerror = function () { - file.data.removeEventListener('canplaythrough', playThroughEvent, false); - file.data.onerror = null; - _this.fileError(file); - }; - - file.data.preload = 'auto'; - file.data.src = this.transformUrl(file.url, file); - file.data.addEventListener('canplaythrough', playThroughEvent, false); - file.data.load(); - } - - }, - - /** - * Starts the xhr loader. - * - * This is designed specifically to use with asset file processing. - * - * @method Phaser.Loader#xhrLoad - * @private - * @param {object} file - The file/pack to load. - * @param {string} url - The URL of the file. - * @param {string} type - The xhr responseType. - * @param {function} onload - The function to call on success. Invoked in `this` context and supplied with `(file, xhr)` arguments. - * @param {function} [onerror=fileError] The function to call on error. Invoked in `this` context and supplied with `(file, xhr)` arguments. - */ - xhrLoad: function (file, url, type, onload, onerror) { - - if (this.useXDomainRequest && window.XDomainRequest) - { - this.xhrLoadWithXDR(file, url, type, onload, onerror); - return; - } - - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, true); - xhr.responseType = type; - - if (this.headers[file.type]) - { - xhr.setRequestHeader("Accept", this.headers[file.type]); - } - - onerror = onerror || this.fileError; - - var _this = this; - - xhr.onload = function () { - - try { - if (xhr.readyState == 4 && xhr.status >= 400 && xhr.status <= 599) { // Handle HTTP status codes of 4xx and 5xx as errors, even if xhr.onerror was not called. - return onerror.call(_this, file, xhr); - } - else { - return onload.call(_this, file, xhr); - } - } catch (e) { - - // If this was the last file in the queue and an error is thrown in the create method - // then it's caught here, so be sure we don't carry on processing it - - if (!_this.hasLoaded) - { - _this.asyncComplete(file, e.message || 'Exception'); - } - else - { - if (window['console']) - { - console.error(e); - } - } - } - }; - - xhr.onerror = function () { - - try { - - return onerror.call(_this, file, xhr); - - } catch (e) { - - if (!_this.hasLoaded) - { - _this.asyncComplete(file, e.message || 'Exception'); - } - else - { - if (window['console']) - { - console.error(e); - } - } - - } - }; - - file.requestObject = xhr; - file.requestUrl = url; - - xhr.send(); - - }, - - /** - * Starts the xhr loader - using XDomainRequest. - * This should _only_ be used with IE 9. Phaser does not support IE 8 and XDR is deprecated in IE 10. - * - * This is designed specifically to use with asset file processing. - * - * @method Phaser.Loader#xhrLoad - * @private - * @param {object} file - The file/pack to load. - * @param {string} url - The URL of the file. - * @param {string} type - The xhr responseType. - * @param {function} onload - The function to call on success. Invoked in `this` context and supplied with `(file, xhr)` arguments. - * @param {function} [onerror=fileError] The function to call on error. Invoked in `this` context and supplied with `(file, xhr)` arguments. - * @deprecated This is only relevant for IE 9. - */ - xhrLoadWithXDR: function (file, url, type, onload, onerror) { - - // Special IE9 magic .. only - if (!this._warnedAboutXDomainRequest && - (!this.game.device.ie || this.game.device.ieVersion >= 10)) - { - this._warnedAboutXDomainRequest = true; - console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"); - } - - // Ref: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx - var xhr = new window.XDomainRequest(); - xhr.open('GET', url, true); - xhr.responseType = type; - - // XDomainRequest has a few quirks. Occasionally it will abort requests - // A way to avoid this is to make sure ALL callbacks are set even if not used - // More info here: http://stackoverflow.com/questions/15786966/xdomainrequest-aborts-post-on-ie-9 - xhr.timeout = 3000; - - onerror = onerror || this.fileError; - - var _this = this; - - xhr.onerror = function () { - try { - return onerror.call(_this, file, xhr); - } catch (e) { - _this.asyncComplete(file, e.message || 'Exception'); - } - }; - - xhr.ontimeout = function () { - try { - return onerror.call(_this, file, xhr); - } catch (e) { - _this.asyncComplete(file, e.message || 'Exception'); - } - }; - - xhr.onprogress = function() {}; - - xhr.onload = function () { - try { - if (xhr.readyState == 4 && xhr.status >= 400 && xhr.status <= 599) { // Handle HTTP status codes of 4xx and 5xx as errors, even if xhr.onerror was not called. - return onerror.call(_this, file, xhr); - } - else { - return onload.call(_this, file, xhr); - } - return onload.call(_this, file, xhr); - } catch (e) { - _this.asyncComplete(file, e.message || 'Exception'); - } - }; - - file.requestObject = xhr; - file.requestUrl = url; - - // Note: The xdr.send() call is wrapped in a timeout to prevent an issue with the interface where some requests are lost - // if multiple XDomainRequests are being sent at the same time. - setTimeout(function () { - xhr.send(); - }, 0); - - }, - - /** - * Give a bunch of URLs, return the first URL that has an extension this device thinks it can play. - * - * It is assumed that the device can play "blob:" or "data:" URIs - There is no mime-type checking on data URIs. - * - * @method Phaser.Loader#getVideoURL - * @private - * @param {object[]|string[]} urls - See {@link #video} for format. - * @return {string} The URL to try and fetch; or null. - */ - getVideoURL: function (urls) { - - for (var i = 0; i < urls.length; i++) - { - var url = urls[i]; - var videoType; - - if (url.uri) // {uri: .., type: ..} pair - { - videoType = url.type; - url = url.uri; - - if (this.game.device.canPlayVideo(videoType)) - { - return url; - } - } - else - { - // Assume direct-data URI can be played if not in a paired form; select immediately - if (url.indexOf("blob:") === 0 || url.indexOf("data:") === 0) - { - return url; - } - - if (url.indexOf("?") >= 0) // Remove query from URL - { - url = url.substr(0, url.indexOf("?")); - } - - var extension = url.substr((Math.max(0, url.lastIndexOf(".")) || Infinity) + 1); - - videoType = extension.toLowerCase(); - - if (this.game.device.canPlayVideo(videoType)) - { - return urls[i]; - } - } - } - - return null; - - }, - - /** - * Give a bunch of URLs, return the first URL that has an extension this device thinks it can play. - * - * It is assumed that the device can play "blob:" or "data:" URIs - There is no mime-type checking on data URIs. - * - * @method Phaser.Loader#getAudioURL - * @private - * @param {object[]|string[]} urls - See {@link #audio} for format. - * @return {string} The URL to try and fetch; or null. - */ - getAudioURL: function (urls) { - - if (this.game.sound.noAudio) - { - return null; - } - - for (var i = 0; i < urls.length; i++) - { - var url = urls[i]; - var audioType; - - if (url.uri) // {uri: .., type: ..} pair - { - audioType = url.type; - url = url.uri; - - if (this.game.device.canPlayAudio(audioType)) - { - return url; - } - } - else - { - // Assume direct-data URI can be played if not in a paired form; select immediately - if (url.indexOf("blob:") === 0 || url.indexOf("data:") === 0) - { - return url; - } - - if (url.indexOf("?") >= 0) // Remove query from URL - { - url = url.substr(0, url.indexOf("?")); - } - - var extension = url.substr((Math.max(0, url.lastIndexOf(".")) || Infinity) + 1); - - audioType = extension.toLowerCase(); - - if (this.game.device.canPlayAudio(audioType)) - { - return urls[i]; - } - } - } - - return null; - - }, - - /** - * Error occurred when loading a file. - * - * @method Phaser.Loader#fileError - * @private - * @param {object} file - * @param {?XMLHttpRequest} xhr - XHR request, unspecified if loaded via other means (eg. tags) - * @param {string} reason - */ - fileError: function (file, xhr, reason) { - - var url = file.requestUrl || this.transformUrl(file.url, file); - var message = 'error loading asset from URL ' + url; - - if (!reason && xhr) - { - reason = xhr.status; - } - - if (reason) - { - message = message + ' (' + reason + ')'; - } - - this.asyncComplete(file, message); - - }, - - /** - * Called when a file/resources had been downloaded and needs to be processed further. - * - * @method Phaser.Loader#fileComplete - * @private - * @param {object} file - File loaded - * @param {?XMLHttpRequest} xhr - XHR request, unspecified if loaded via other means (eg. tags) - */ - fileComplete: function (file, xhr) { - - var loadNext = true; - - switch (file.type) - { - case 'packfile': - - // Pack data must never be false-ish after it is fetched without error - var data = JSON.parse(xhr.responseText); - file.data = data || {}; - break; - - case 'image': - - this.cache.addImage(file.key, file.url, file.data); - break; - - case 'spritesheet': - - this.cache.addSpriteSheet(file.key, file.url, file.data, file.frameWidth, file.frameHeight, file.frameMax, file.margin, file.spacing); - break; - - case 'textureatlas': - - if (file.atlasURL == null) - { - this.cache.addTextureAtlas(file.key, file.url, file.data, file.atlasData, file.format); - } - else - { - // Load the JSON or XML before carrying on with the next file - loadNext = false; - - if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) - { - this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.jsonLoadComplete); - } - else if (file.format == Phaser.Loader.TEXTURE_ATLAS_XML_STARLING) - { - this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.xmlLoadComplete); - } - else - { - throw new Error("Phaser.Loader. Invalid Texture Atlas format: " + file.format); - } - } - break; - - case 'bitmapfont': - - if (!file.atlasURL) - { - this.cache.addBitmapFont(file.key, file.url, file.data, file.atlasData, file.atlasType, file.xSpacing, file.ySpacing); - } - else - { - // Load the XML before carrying on with the next file - loadNext = false; - this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', function (file, xhr) { - var json; - - try - { - // Try to parse as JSON, if it fails, then it's hopefully XML - json = JSON.parse(xhr.responseText); - } - catch (e) {} - - if (!!json) - { - file.atlasType = 'json'; - this.jsonLoadComplete(file, xhr); - } - else - { - file.atlasType = 'xml'; - this.xmlLoadComplete(file, xhr); - } - }); - } - break; - - case 'video': - - if (file.asBlob) - { - try - { - file.data = xhr.response; - } - catch (e) - { - throw new Error("Phaser.Loader. Unable to parse video file as Blob: " + file.key); - } - } - - this.cache.addVideo(file.key, file.url, file.data, file.asBlob); - break; - - case 'audio': - - if (this.game.sound.usingWebAudio) - { - file.data = xhr.response; - - this.cache.addSound(file.key, file.url, file.data, true, false); - - if (file.autoDecode) - { - this.game.sound.decode(file.key); - } - } - else - { - this.cache.addSound(file.key, file.url, file.data, false, true); - } - break; - - case 'text': - file.data = xhr.responseText; - this.cache.addText(file.key, file.url, file.data); - break; - - case 'shader': - file.data = xhr.responseText; - this.cache.addShader(file.key, file.url, file.data); - break; - - case 'physics': - var data = JSON.parse(xhr.responseText); - this.cache.addPhysicsData(file.key, file.url, data, file.format); - break; - - case 'script': - file.data = document.createElement('script'); - file.data.language = 'javascript'; - file.data.type = 'text/javascript'; - file.data.defer = false; - file.data.text = xhr.responseText; - document.head.appendChild(file.data); - if (file.callback) - { - file.data = file.callback.call(file.callbackContext, file.key, xhr.responseText); - } - break; - - case 'binary': - if (file.callback) - { - file.data = file.callback.call(file.callbackContext, file.key, xhr.response); - } - else - { - file.data = xhr.response; - } - - this.cache.addBinary(file.key, file.data); - - break; - } - - if (loadNext) - { - this.asyncComplete(file); - } - - }, - - /** - * Successfully loaded a JSON file - only used for certain types. - * - * @method Phaser.Loader#jsonLoadComplete - * @private - * @param {object} file - File associated with this request - * @param {XMLHttpRequest} xhr - */ - jsonLoadComplete: function (file, xhr) { - - var data = JSON.parse(xhr.responseText); - - if (file.type === 'tilemap') - { - this.cache.addTilemap(file.key, file.url, data, file.format); - } - else if (file.type === 'bitmapfont') - { - this.cache.addBitmapFont(file.key, file.url, file.data, data, file.atlasType, file.xSpacing, file.ySpacing); - } - else if (file.type === 'json') - { - this.cache.addJSON(file.key, file.url, data); - } - else - { - this.cache.addTextureAtlas(file.key, file.url, file.data, data, file.format); - } - - this.asyncComplete(file); - }, - - /** - * Successfully loaded a CSV file - only used for certain types. - * - * @method Phaser.Loader#csvLoadComplete - * @private - * @param {object} file - File associated with this request - * @param {XMLHttpRequest} xhr - */ - csvLoadComplete: function (file, xhr) { - - var data = xhr.responseText; - - this.cache.addTilemap(file.key, file.url, data, file.format); - - this.asyncComplete(file); - - }, - - /** - * Successfully loaded an XML file - only used for certain types. - * - * @method Phaser.Loader#xmlLoadComplete - * @private - * @param {object} file - File associated with this request - * @param {XMLHttpRequest} xhr - */ - xmlLoadComplete: function (file, xhr) { - - // Always try parsing the content as XML, regardless of actually response type - var data = xhr.responseText; - var xml = this.parseXml(data); - - if (!xml) - { - var responseType = xhr.responseType || xhr.contentType; // contentType for MS-XDomainRequest - console.warn('Phaser.Loader - ' + file.key + ': invalid XML (' + responseType + ')'); - this.asyncComplete(file, "invalid XML"); - return; - } - - if (file.type === 'bitmapfont') - { - this.cache.addBitmapFont(file.key, file.url, file.data, xml, file.atlasType, file.xSpacing, file.ySpacing); - } - else if (file.type === 'textureatlas') - { - this.cache.addTextureAtlas(file.key, file.url, file.data, xml, file.format); - } - else if (file.type === 'xml') - { - this.cache.addXML(file.key, file.url, xml); - } - - this.asyncComplete(file); - - }, - - /** - * Parses string data as XML. - * - * @method Phaser.Loader#parseXml - * @private - * @param {string} data - The XML text to parse - * @return {?XMLDocument} Returns the xml document, or null if such could not parsed to a valid document. - */ - parseXml: function (data) { - - var xml; - - try - { - if (window['DOMParser']) - { - var domparser = new DOMParser(); - xml = domparser.parseFromString(data, "text/xml"); - } - else - { - xml = new ActiveXObject("Microsoft.XMLDOM"); - // Why is this 'false'? - xml.async = 'false'; - xml.loadXML(data); - } - } - catch (e) - { - xml = null; - } - - if (!xml || !xml.documentElement || xml.getElementsByTagName("parsererror").length) - { - return null; - } - else - { - return xml; - } - - }, - - /** - * Update the loading sprite progress. - * - * @method Phaser.Loader#nextFile - * @private - * @param {object} previousFile - * @param {boolean} success - Whether the previous asset loaded successfully or not. - */ - updateProgress: function () { - - if (this.preloadSprite) - { - if (this.preloadSprite.direction === 0) - { - this.preloadSprite.rect.width = Math.floor((this.preloadSprite.width / 100) * this.progress); - } - else - { - this.preloadSprite.rect.height = Math.floor((this.preloadSprite.height / 100) * this.progress); - } - - if (this.preloadSprite.sprite) - { - this.preloadSprite.sprite.updateCrop(); - } - else - { - // We seem to have lost our sprite - maybe it was destroyed? - this.preloadSprite = null; - } - } - - }, - - /** - * Returns the number of files that have already been loaded, even if they errored. - * - * @method Phaser.Loader#totalLoadedFiles - * @protected - * @return {number} The number of files that have already been loaded (even if they errored) - */ - totalLoadedFiles: function () { - - return this._loadedFileCount; - - }, - - /** - * Returns the number of files still waiting to be processed in the load queue. This value decreases as each file in the queue is loaded. - * - * @method Phaser.Loader#totalQueuedFiles - * @protected - * @return {number} The number of files that still remain in the load queue. - */ - totalQueuedFiles: function () { - - return this._totalFileCount - this._loadedFileCount; - - }, - - /** - * Returns the number of asset packs that have already been loaded, even if they errored. - * - * @method Phaser.Loader#totalLoadedPacks - * @protected - * @return {number} The number of asset packs that have already been loaded (even if they errored) - */ - totalLoadedPacks: function () { - - return this._totalPackCount; - - }, - - /** - * Returns the number of asset packs still waiting to be processed in the load queue. This value decreases as each pack in the queue is loaded. - * - * @method Phaser.Loader#totalQueuedPacks - * @protected - * @return {number} The number of asset packs that still remain in the load queue. - */ - totalQueuedPacks: function () { - - return this._totalPackCount - this._loadedPackCount; - - } - -}; - -/** -* The non-rounded load progress value (from 0.0 to 100.0). -* -* A general indicator of the progress. -* It is possible for the progress to decrease, after `onLoadStart`, if more files are dynamically added. -* -* @name Phaser.Loader#progressFloat -* @property {number} -*/ -Object.defineProperty(Phaser.Loader.prototype, "progressFloat", { - - get: function () { - var progress = (this._loadedFileCount / this._totalFileCount) * 100; - return Phaser.Math.clamp(progress || 0, 0, 100); - } - -}); - -/** -* The rounded load progress percentage value (from 0 to 100). See {@link Phaser.Loader#progressFloat}. -* -* @name Phaser.Loader#progress -* @property {integer} -*/ -Object.defineProperty(Phaser.Loader.prototype, "progress", { - - get: function () { - return Math.round(this.progressFloat); - } - -}); - -Phaser.Loader.prototype.constructor = Phaser.Loader; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser.LoaderParser parses data objects from Phaser.Loader that need more preparation before they can be inserted into the Cache. -* -* @class Phaser.LoaderParser -*/ -Phaser.LoaderParser = { - - /** - * Alias for xmlBitmapFont, for backwards compatibility. - * - * @method Phaser.LoaderParser.bitmapFont - * @param {object} xml - XML data you want to parse. - * @param {PIXI.BaseTexture} baseTexture - The BaseTexture this font uses. - * @param {number} [xSpacing=0] - Additional horizontal spacing between the characters. - * @param {number} [ySpacing=0] - Additional vertical spacing between the characters. - * @return {object} The parsed Bitmap Font data. - */ - bitmapFont: function (xml, baseTexture, xSpacing, ySpacing) { - - return this.xmlBitmapFont(xml, baseTexture, xSpacing, ySpacing); - - }, - - /** - * Parse a Bitmap Font from an XML file. - * - * @method Phaser.LoaderParser.xmlBitmapFont - * @param {object} xml - XML data you want to parse. - * @param {PIXI.BaseTexture} baseTexture - The BaseTexture this font uses. - * @param {number} [xSpacing=0] - Additional horizontal spacing between the characters. - * @param {number} [ySpacing=0] - Additional vertical spacing between the characters. - * @return {object} The parsed Bitmap Font data. - */ - xmlBitmapFont: function (xml, baseTexture, xSpacing, ySpacing) { - - var data = {}; - var info = xml.getElementsByTagName('info')[0]; - var common = xml.getElementsByTagName('common')[0]; - - data.font = info.getAttribute('face'); - data.size = parseInt(info.getAttribute('size'), 10); - data.lineHeight = parseInt(common.getAttribute('lineHeight'), 10) + ySpacing; - data.chars = {}; - - var letters = xml.getElementsByTagName('char'); - - for (var i = 0; i < letters.length; i++) - { - var charCode = parseInt(letters[i].getAttribute('id'), 10); - - data.chars[charCode] = { - x: parseInt(letters[i].getAttribute('x'), 10), - y: parseInt(letters[i].getAttribute('y'), 10), - width: parseInt(letters[i].getAttribute('width'), 10), - height: parseInt(letters[i].getAttribute('height'), 10), - xOffset: parseInt(letters[i].getAttribute('xoffset'), 10), - yOffset: parseInt(letters[i].getAttribute('yoffset'), 10), - xAdvance: parseInt(letters[i].getAttribute('xadvance'), 10) + xSpacing, - kerning: {} - }; - } - - var kernings = xml.getElementsByTagName('kerning'); - - for (i = 0; i < kernings.length; i++) - { - var first = parseInt(kernings[i].getAttribute('first'), 10); - var second = parseInt(kernings[i].getAttribute('second'), 10); - var amount = parseInt(kernings[i].getAttribute('amount'), 10); - - data.chars[second].kerning[first] = amount; - } - - return this.finalizeBitmapFont(baseTexture, data); - - }, - - /** - * Parse a Bitmap Font from a JSON file. - * - * @method Phaser.LoaderParser.jsonBitmapFont - * @param {object} json - JSON data you want to parse. - * @param {PIXI.BaseTexture} baseTexture - The BaseTexture this font uses. - * @param {number} [xSpacing=0] - Additional horizontal spacing between the characters. - * @param {number} [ySpacing=0] - Additional vertical spacing between the characters. - * @return {object} The parsed Bitmap Font data. - */ - jsonBitmapFont: function (json, baseTexture, xSpacing, ySpacing) { - - var data = { - font: json.font.info._face, - size: parseInt(json.font.info._size, 10), - lineHeight: parseInt(json.font.common._lineHeight, 10) + ySpacing, - chars: {} - }; - - json.font.chars["char"].forEach( - - function parseChar(letter) { - - var charCode = parseInt(letter._id, 10); - - data.chars[charCode] = { - x: parseInt(letter._x, 10), - y: parseInt(letter._y, 10), - width: parseInt(letter._width, 10), - height: parseInt(letter._height, 10), - xOffset: parseInt(letter._xoffset, 10), - yOffset: parseInt(letter._yoffset, 10), - xAdvance: parseInt(letter._xadvance, 10) + xSpacing, - kerning: {} - }; - } - - ); - - if (json.font.kernings && json.font.kernings.kerning) { - - json.font.kernings.kerning.forEach( - - function parseKerning(kerning) { - - data.chars[kerning._second].kerning[kerning._first] = parseInt(kerning._amount, 10); - - } - - ); - - } - - return this.finalizeBitmapFont(baseTexture, data); - - }, - - /** - * Finalize Bitmap Font parsing. - * - * @method Phaser.LoaderParser.finalizeBitmapFont - * @private - * @param {PIXI.BaseTexture} baseTexture - The BaseTexture this font uses. - * @param {object} bitmapFontData - Pre-parsed bitmap font data. - * @return {object} The parsed Bitmap Font data. - */ - finalizeBitmapFont: function (baseTexture, bitmapFontData) { - - Object.keys(bitmapFontData.chars).forEach( - - function addTexture(charCode) { - - var letter = bitmapFontData.chars[charCode]; - - letter.texture = new PIXI.Texture(baseTexture, new Phaser.Rectangle(letter.x, letter.y, letter.width, letter.height)); - - } - - ); - - return bitmapFontData; - - } -}; - -/** - * @author Jeremy Dowell - * @author Richard Davey - * @copyright 2016 Photon Storm Ltd. - * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} - */ - -/** - * Audio Sprites are a combination of audio files and a JSON configuration. - * The JSON follows the format of that created by https://github.com/tonistiigi/audiosprite - * - * @class Phaser.AudioSprite - * @constructor - * @param {Phaser.Game} game - Reference to the current game instance. - * @param {string} key - Asset key for the sound. - */ -Phaser.AudioSprite = function (game, key) { - - /** - * A reference to the currently running Game. - * @property {Phaser.Game} game - */ - this.game = game; - - /** - * Asset key for the Audio Sprite. - * @property {string} key - */ - this.key = key; - - /** - * JSON audio atlas object. - * @property {object} config - */ - this.config = this.game.cache.getJSON(key + '-audioatlas'); - - /** - * If a sound is set to auto play, this holds the marker key of it. - * @property {string} autoplayKey - */ - this.autoplayKey = null; - - /** - * Is a sound set to autoplay or not? - * @property {boolean} autoplay - * @default - */ - this.autoplay = false; - - /** - * An object containing the Phaser.Sound objects for the Audio Sprite. - * @property {object} sounds - */ - this.sounds = {}; - - for (var k in this.config.spritemap) - { - var marker = this.config.spritemap[k]; - var sound = this.game.add.sound(this.key); - - sound.addMarker(k, marker.start, (marker.end - marker.start), null, marker.loop); - - this.sounds[k] = sound; - } - - if (this.config.autoplay) - { - this.autoplayKey = this.config.autoplay; - this.play(this.autoplayKey); - this.autoplay = this.sounds[this.autoplayKey]; - } - -}; - -Phaser.AudioSprite.prototype = { - - /** - * Play a sound with the given name. - * - * @method Phaser.AudioSprite#play - * @param {string} [marker] - The name of sound to play - * @param {number} [volume=1] - Volume of the sound you want to play. If none is given it will use the volume given to the Sound when it was created (which defaults to 1 if none was specified). - * @return {Phaser.Sound} This sound instance. - */ - play: function (marker, volume) { - - if (volume === undefined) { volume = 1; } - - return this.sounds[marker].play(marker, null, volume); - - }, - - /** - * Stop a sound with the given name. - * - * @method Phaser.AudioSprite#stop - * @param {string} [marker=''] - The name of sound to stop. If none is given it will stop all sounds in the audio sprite. - */ - stop: function (marker) { - - if (!marker) - { - for (var key in this.sounds) - { - this.sounds[key].stop(); - } - } - else - { - this.sounds[marker].stop(); - } - - }, - - /** - * Get a sound with the given name. - * - * @method Phaser.AudioSprite#get - * @param {string} marker - The name of sound to get. - * @return {Phaser.Sound} The sound instance. - */ - get: function(marker) { - - return this.sounds[marker]; - - } - -}; - -Phaser.AudioSprite.prototype.constructor = Phaser.AudioSprite; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Sound class constructor. -* -* @class Phaser.Sound -* @constructor -* @param {Phaser.Game} game - Reference to the current game instance. -* @param {string} key - Asset key for the sound. -* @param {number} [volume=1] - Default value for the volume, between 0 and 1. -* @param {boolean} [loop=false] - Whether or not the sound will loop. -*/ -Phaser.Sound = function (game, key, volume, loop, connect) { - - if (volume === undefined) { volume = 1; } - if (loop === undefined) { loop = false; } - if (connect === undefined) { connect = game.sound.connectToMaster; } - - /** - * A reference to the currently running Game. - * @property {Phaser.Game} game - */ - this.game = game; - - /** - * @property {string} name - Name of the sound. - */ - this.name = key; - - /** - * @property {string} key - Asset key for the sound. - */ - this.key = key; - - /** - * @property {boolean} loop - Whether or not the sound or current sound marker will loop. - */ - this.loop = loop; - - /** - * @property {object} markers - The sound markers. - */ - this.markers = {}; - - /** - * @property {AudioContext} context - Reference to the AudioContext instance. - */ - this.context = null; - - /** - * @property {boolean} autoplay - Boolean indicating whether the sound should start automatically. - */ - this.autoplay = false; - - /** - * @property {number} totalDuration - The total duration of the sound in seconds. - */ - this.totalDuration = 0; - - /** - * @property {number} startTime - The time the Sound starts at (typically 0 unless starting from a marker) - * @default - */ - this.startTime = 0; - - /** - * @property {number} currentTime - The current time the sound is at. - */ - this.currentTime = 0; - - /** - * @property {number} duration - The duration of the current sound marker in seconds. - */ - this.duration = 0; - - /** - * @property {number} durationMS - The duration of the current sound marker in ms. - */ - this.durationMS = 0; - - /** - * @property {number} position - The position of the current sound marker. - */ - this.position = 0; - - /** - * @property {number} stopTime - The time the sound stopped. - */ - this.stopTime = 0; - - /** - * @property {boolean} paused - true if the sound is paused, otherwise false. - * @default - */ - this.paused = false; - - /** - * @property {number} pausedPosition - The position the sound had reached when it was paused. - */ - this.pausedPosition = 0; - - /** - * @property {number} pausedTime - The game time at which the sound was paused. - */ - this.pausedTime = 0; - - /** - * @property {boolean} isPlaying - true if the sound is currently playing, otherwise false. - * @default - */ - this.isPlaying = false; - - /** - * @property {string} currentMarker - The string ID of the currently playing marker, if any. - * @default - */ - this.currentMarker = ''; - - /** - * @property {Phaser.Tween} fadeTween - The tween that fades the audio, set via Sound.fadeIn and Sound.fadeOut. - */ - this.fadeTween = null; - - /** - * @property {boolean} pendingPlayback - true if the sound file is pending playback - * @readonly - */ - this.pendingPlayback = false; - - /** - * @property {boolean} override - if true when you play this sound it will always start from the beginning. - * @default - */ - this.override = false; - - /** - * @property {boolean} allowMultiple - This will allow you to have multiple instances of this Sound playing at once. This is only useful when running under Web Audio, and we recommend you implement a local pooling system to not flood the sound channels. - * @default - */ - this.allowMultiple = false; - - /** - * @property {boolean} usingWebAudio - true if this sound is being played with Web Audio. - * @readonly - */ - this.usingWebAudio = this.game.sound.usingWebAudio; - - /** - * @property {boolean} usingAudioTag - true if the sound is being played via the Audio tag. - */ - this.usingAudioTag = this.game.sound.usingAudioTag; - - /** - * @property {object} externalNode - If defined this Sound won't connect to the SoundManager master gain node, but will instead connect to externalNode. - */ - this.externalNode = null; - - /** - * @property {object} masterGainNode - The master gain node in a Web Audio system. - */ - this.masterGainNode = null; - - /** - * @property {object} gainNode - The gain node in a Web Audio system. - */ - this.gainNode = null; - - /** - * @property {object} _sound - Internal var. - * @private - */ - this._sound = null; - - if (this.usingWebAudio) - { - this.context = this.game.sound.context; - this.masterGainNode = this.game.sound.masterGain; - - if (this.context.createGain === undefined) - { - this.gainNode = this.context.createGainNode(); - } - else - { - this.gainNode = this.context.createGain(); - } - - this.gainNode.gain.value = volume * this.game.sound.volume; - - if (connect) - { - this.gainNode.connect(this.masterGainNode); - } - } - else if (this.usingAudioTag) - { - if (this.game.cache.getSound(key) && this.game.cache.isSoundReady(key)) - { - this._sound = this.game.cache.getSoundData(key); - this.totalDuration = 0; - - if (this._sound.duration) - { - this.totalDuration = this._sound.duration; - } - } - else - { - this.game.cache.onSoundUnlock.add(this.soundHasUnlocked, this); - } - } - - /** - * @property {Phaser.Signal} onDecoded - The onDecoded event is dispatched when the sound has finished decoding (typically for mp3 files) - */ - this.onDecoded = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onPlay - The onPlay event is dispatched each time this sound is played. - */ - this.onPlay = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onPause - The onPause event is dispatched when this sound is paused. - */ - this.onPause = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onResume - The onResume event is dispatched when this sound is resumed from a paused state. - */ - this.onResume = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onLoop - The onLoop event is dispatched when this sound loops during playback. - */ - this.onLoop = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onStop - The onStop event is dispatched when this sound stops playback. - */ - this.onStop = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onMute - The onMute event is dispatched when this sound is muted. - */ - this.onMute = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onMarkerComplete - The onMarkerComplete event is dispatched when a marker within this sound completes playback. - */ - this.onMarkerComplete = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onFadeComplete - The onFadeComplete event is dispatched when this sound finishes fading either in or out. - */ - this.onFadeComplete = new Phaser.Signal(); - - /** - * @property {number} _volume - The global audio volume. A value between 0 (silence) and 1 (full volume). - * @private - */ - this._volume = volume; - - /** - * @property {any} _buffer - Decoded data buffer / Audio tag. - * @private - */ - this._buffer = null; - - /** - * @property {boolean} _muted - Boolean indicating whether the sound is muted or not. - * @private - */ - this._muted = false; - - /** - * @property {number} _tempMarker - Internal marker var. - * @private - */ - this._tempMarker = 0; - - /** - * @property {number} _tempPosition - Internal marker var. - * @private - */ - this._tempPosition = 0; - - /** - * @property {number} _tempVolume - Internal marker var. - * @private - */ - this._tempVolume = 0; - - /** - * @property {number} _tempPause - Internal marker var. - * @private - */ - this._tempPause = 0; - - /** - * @property {number} _muteVolume - Internal cache var. - * @private - */ - this._muteVolume = 0; - - /** - * @property {boolean} _tempLoop - Internal cache var. - * @private - */ - this._tempLoop = 0; - - /** - * @property {boolean} _paused - Was this sound paused via code or a game event? - * @private - */ - this._paused = false; - - /** - * @property {boolean} _onDecodedEventDispatched - Was the onDecoded event dispatched? - * @private - */ - this._onDecodedEventDispatched = false; - -}; - -Phaser.Sound.prototype = { - - /** - * Called automatically when this sound is unlocked. - * @method Phaser.Sound#soundHasUnlocked - * @param {string} key - The Phaser.Cache key of the sound file to check for decoding. - * @protected - */ - soundHasUnlocked: function (key) { - - if (key === this.key) - { - this._sound = this.game.cache.getSoundData(this.key); - this.totalDuration = this._sound.duration; - } - - }, - - /** - * Adds a marker into the current Sound. A marker is represented by a unique key and a start time and duration. - * This allows you to bundle multiple sounds together into a single audio file and use markers to jump between them for playback. - * - * @method Phaser.Sound#addMarker - * @param {string} name - A unique name for this marker, i.e. 'explosion', 'gunshot', etc. - * @param {number} start - The start point of this marker in the audio file, given in seconds. 2.5 = 2500ms, 0.5 = 500ms, etc. - * @param {number} [duration=1] - The duration of the marker in seconds. 2.5 = 2500ms, 0.5 = 500ms, etc. - * @param {number} [volume=1] - The volume the sound will play back at, between 0 (silent) and 1 (full volume). - * @param {boolean} [loop=false] - Sets if the sound will loop or not. - */ - addMarker: function (name, start, duration, volume, loop) { - - if (duration === undefined || duration === null) { duration = 1; } - if (volume === undefined || volume === null) { volume = 1; } - if (loop === undefined) { loop = false; } - - this.markers[name] = { - name: name, - start: start, - stop: start + duration, - volume: volume, - duration: duration, - durationMS: duration * 1000, - loop: loop - }; - - }, - - /** - * Removes a marker from the sound. - * @method Phaser.Sound#removeMarker - * @param {string} name - The key of the marker to remove. - */ - removeMarker: function (name) { - - delete this.markers[name]; - - }, - - /** - * Called automatically by the AudioContext when the sound stops playing. - * Doesn't get called if the sound is set to loop or is a section of an Audio Sprite. - * - * @method Phaser.Sound#onEndedHandler - * @protected - */ - onEndedHandler: function () { - - this._sound.onended = null; - this.isPlaying = false; - this.currentTime = this.durationMS; - this.stop(); - - }, - - /** - * Called automatically by Phaser.SoundManager. - * @method Phaser.Sound#update - * @protected - */ - update: function () { - - if (!this.game.cache.checkSoundKey(this.key)) - { - this.destroy(); - return; - } - - if (this.isDecoded && !this._onDecodedEventDispatched) - { - this.onDecoded.dispatch(this); - this._onDecodedEventDispatched = true; - } - - if (this.pendingPlayback && this.game.cache.isSoundReady(this.key)) - { - this.pendingPlayback = false; - this.play(this._tempMarker, this._tempPosition, this._tempVolume, this._tempLoop); - } - - if (this.isPlaying) - { - this.currentTime = this.game.time.time - this.startTime; - - if (this.currentTime >= this.durationMS) - { - if (this.usingWebAudio) - { - if (this.loop) - { - // won't work with markers, needs to reset the position - this.onLoop.dispatch(this); - - // Gets reset by the play function - this.isPlaying = false; - - if (this.currentMarker === '') - { - this.currentTime = 0; - this.startTime = this.game.time.time; - this.isPlaying = true; // play not called again in this case - } - else - { - this.onMarkerComplete.dispatch(this.currentMarker, this); - this.play(this.currentMarker, 0, this.volume, true, true); - } - } - else - { - // Stop if we're using an audio marker, otherwise we let onended handle it - if (this.currentMarker !== '') - { - this.stop(); - } - } - } - else - { - if (this.loop) - { - this.onLoop.dispatch(this); - - if (this.currentMarker === '') - { - this.currentTime = 0; - this.startTime = this.game.time.time; - } - - // Gets reset by the play function - this.isPlaying = false; - - this.play(this.currentMarker, 0, this.volume, true, true); - } - else - { - this.stop(); - } - } - } - } - }, - - /** - * Loops this entire sound. If you need to loop a section of it then use Sound.play and the marker and loop parameters. - * - * @method Phaser.Sound#loopFull - * @param {number} [volume=1] - Volume of the sound you want to play. If none is given it will use the volume given to the Sound when it was created (which defaults to 1 if none was specified). - * @return {Phaser.Sound} This sound instance. - */ - loopFull: function (volume) { - - this.play(null, 0, volume, true); - - }, - - /** - * Play this sound, or a marked section of it. - * - * @method Phaser.Sound#play - * @param {string} [marker=''] - If you want to play a marker then give the key here, otherwise leave blank to play the full sound. - * @param {number} [position=0] - The starting position to play the sound from - this is ignored if you provide a marker. - * @param {number} [volume=1] - Volume of the sound you want to play. If none is given it will use the volume given to the Sound when it was created (which defaults to 1 if none was specified). - * @param {boolean} [loop=false] - Loop when finished playing? If not using a marker / audio sprite the looping will be done via the WebAudio loop property, otherwise it's time based. - * @param {boolean} [forceRestart=true] - If the sound is already playing you can set forceRestart to restart it from the beginning. - * @return {Phaser.Sound} This sound instance. - */ - play: function (marker, position, volume, loop, forceRestart) { - - if (marker === undefined || marker === false || marker === null) { marker = ''; } - if (forceRestart === undefined) { forceRestart = true; } - - if (this.isPlaying && !this.allowMultiple && !forceRestart && !this.override) - { - // Use Restart instead - return this; - } - - if (this._sound && this.isPlaying && !this.allowMultiple && (this.override || forceRestart)) - { - if (this.usingWebAudio) - { - if (this._sound.stop === undefined) - { - this._sound.noteOff(0); - } - else - { - try { - this._sound.stop(0); - } - catch (e) { - } - } - - if (this.externalNode) - { - this._sound.disconnect(this.externalNode); - } - else if (this.gainNode) - { - this._sound.disconnect(this.gainNode); - } - } - else if (this.usingAudioTag) - { - this._sound.pause(); - this._sound.currentTime = 0; - } - } - - if (marker === '' && Object.keys(this.markers).length > 0) - { - // If they didn't specify a marker but this is an audio sprite, - // we should never play the entire thing - return this; - } - - if (marker !== '') - { - this.currentMarker = marker; - - if (this.markers[marker]) - { - // Playing a marker? Then we default to the marker values - this.position = this.markers[marker].start; - this.volume = this.markers[marker].volume; - this.loop = this.markers[marker].loop; - this.duration = this.markers[marker].duration; - this.durationMS = this.markers[marker].durationMS; - - if (typeof volume !== 'undefined') - { - this.volume = volume; - } - - if (typeof loop !== 'undefined') - { - this.loop = loop; - } - - this._tempMarker = marker; - this._tempPosition = this.position; - this._tempVolume = this.volume; - this._tempLoop = this.loop; - } - else - { - // console.warn("Phaser.Sound.play: audio marker " + marker + " doesn't exist"); - return this; - } - } - else - { - position = position || 0; - - if (volume === undefined) { volume = this._volume; } - if (loop === undefined) { loop = this.loop; } - - this.position = Math.max(0, position); - this.volume = volume; - this.loop = loop; - this.duration = 0; - this.durationMS = 0; - - this._tempMarker = marker; - this._tempPosition = position; - this._tempVolume = volume; - this._tempLoop = loop; - } - - if (this.usingWebAudio) - { - // Does the sound need decoding? - if (this.game.cache.isSoundDecoded(this.key)) - { - this._sound = this.context.createBufferSource(); - - if (this.externalNode) - { - this._sound.connect(this.externalNode); - } - else - { - this._sound.connect(this.gainNode); - } - - this._buffer = this.game.cache.getSoundData(this.key); - this._sound.buffer = this._buffer; - - if (this.loop && marker === '') - { - this._sound.loop = true; - } - - if (!this.loop && marker === '') - { - this._sound.onended = this.onEndedHandler.bind(this); - } - - this.totalDuration = this._sound.buffer.duration; - - if (this.duration === 0) - { - this.duration = this.totalDuration; - this.durationMS = Math.ceil(this.totalDuration * 1000); - } - - // Useful to cache this somewhere perhaps? - if (this._sound.start === undefined) - { - this._sound.noteGrainOn(0, this.position, this.duration); - } - else - { - if (this.loop && marker === '') - { - this._sound.start(0, 0); - } - else - { - this._sound.start(0, this.position, this.duration); - } - } - - this.isPlaying = true; - this.startTime = this.game.time.time; - this.currentTime = 0; - this.stopTime = this.startTime + this.durationMS; - this.onPlay.dispatch(this); - } - else - { - this.pendingPlayback = true; - - if (this.game.cache.getSound(this.key) && this.game.cache.getSound(this.key).isDecoding === false) - { - this.game.sound.decode(this.key, this); - } - } - } - else - { - if (this.game.cache.getSound(this.key) && this.game.cache.getSound(this.key).locked) - { - this.game.cache.reloadSound(this.key); - this.pendingPlayback = true; - } - else - { - if (this._sound && (this.game.device.cocoonJS || this._sound.readyState === 4)) - { - this._sound.play(); - // This doesn't become available until you call play(), wonderful ... - this.totalDuration = this._sound.duration; - - if (this.duration === 0) - { - this.duration = this.totalDuration; - this.durationMS = this.totalDuration * 1000; - } - - this._sound.currentTime = this.position; - this._sound.muted = this._muted; - - if (this._muted || this.game.sound.mute) - { - this._sound.volume = 0; - } - else - { - this._sound.volume = this._volume; - } - - this.isPlaying = true; - this.startTime = this.game.time.time; - this.currentTime = 0; - this.stopTime = this.startTime + this.durationMS; - - this.onPlay.dispatch(this); - } - else - { - this.pendingPlayback = true; - } - } - } - - return this; - - }, - - /** - * Restart the sound, or a marked section of it. - * - * @method Phaser.Sound#restart - * @param {string} [marker=''] - If you want to play a marker then give the key here, otherwise leave blank to play the full sound. - * @param {number} [position=0] - The starting position to play the sound from - this is ignored if you provide a marker. - * @param {number} [volume=1] - Volume of the sound you want to play. - * @param {boolean} [loop=false] - Loop when it finished playing? - */ - restart: function (marker, position, volume, loop) { - - marker = marker || ''; - position = position || 0; - volume = volume || 1; - if (loop === undefined) { loop = false; } - - this.play(marker, position, volume, loop, true); - - }, - - /** - * Pauses the sound. - * - * @method Phaser.Sound#pause - */ - pause: function () { - - if (this.isPlaying && this._sound) - { - this.paused = true; - this.pausedPosition = this.currentTime; - this.pausedTime = this.game.time.time; - this._tempPause = this._sound.currentTime; - this.onPause.dispatch(this); - this.stop(); - } - - }, - - /** - * Resumes the sound. - * - * @method Phaser.Sound#resume - */ - resume: function () { - - if (this.paused && this._sound) - { - if (this.usingWebAudio) - { - var p = Math.max(0, this.position + (this.pausedPosition / 1000)); - - this._sound = this.context.createBufferSource(); - this._sound.buffer = this._buffer; - - if (this.externalNode) - { - this._sound.connect(this.externalNode); - } - else - { - this._sound.connect(this.gainNode); - } - - if (this.loop) - { - this._sound.loop = true; - } - - if (!this.loop && this.currentMarker === '') - { - this._sound.onended = this.onEndedHandler.bind(this); - } - - var duration = this.duration - (this.pausedPosition / 1000); - - if (this._sound.start === undefined) - { - this._sound.noteGrainOn(0, p, duration); - //this._sound.noteOn(0); // the zero is vitally important, crashes iOS6 without it - } - else - { - if (this.loop && this.game.device.chrome) - { - // Handle chrome bug: https://code.google.com/p/chromium/issues/detail?id=457099 - if (this.game.device.chromeVersion === 42) - { - this._sound.start(0); - } - else - { - this._sound.start(0, p); - } - } - else - { - this._sound.start(0, p, duration); - } - } - } - else - { - this._sound.currentTime = this._tempPause; - this._sound.play(); - } - - this.isPlaying = true; - this.paused = false; - this.startTime += (this.game.time.time - this.pausedTime); - this.onResume.dispatch(this); - } - - }, - - /** - * Stop playing this sound. - * - * @method Phaser.Sound#stop - */ - stop: function () { - - if (this.isPlaying && this._sound) - { - if (this.usingWebAudio) - { - if (this._sound.stop === undefined) - { - this._sound.noteOff(0); - } - else - { - try { - this._sound.stop(0); - } - catch (e) - { - // Thanks Android 4.4 - } - } - - if (this.externalNode) - { - this._sound.disconnect(this.externalNode); - } - else if (this.gainNode) - { - this._sound.disconnect(this.gainNode); - } - } - else if (this.usingAudioTag) - { - this._sound.pause(); - this._sound.currentTime = 0; - } - } - - this.pendingPlayback = false; - this.isPlaying = false; - - if (!this.paused) - { - var prevMarker = this.currentMarker; - - if (this.currentMarker !== '') - { - this.onMarkerComplete.dispatch(this.currentMarker, this); - } - - this.currentMarker = ''; - - if (this.fadeTween !== null) - { - this.fadeTween.stop(); - } - - this.onStop.dispatch(this, prevMarker); - } - - }, - - /** - * Starts this sound playing (or restarts it if already doing so) and sets the volume to zero. - * Then increases the volume from 0 to 1 over the duration specified. - * - * At the end of the fade Sound.onFadeComplete is dispatched with this Sound object as the first parameter, - * and the final volume (1) as the second parameter. - * - * @method Phaser.Sound#fadeIn - * @param {number} [duration=1000] - The time in milliseconds over which the Sound should fade in. - * @param {boolean} [loop=false] - Should the Sound be set to loop? Note that this doesn't cause the fade to repeat. - * @param {string} [marker=(current marker)] - The marker to start at; defaults to the current (last played) marker. To start playing from the beginning specify specify a marker of `''`. - */ - fadeIn: function (duration, loop, marker) { - - if (loop === undefined) { loop = false; } - if (marker === undefined) { marker = this.currentMarker; } - - if (this.paused) - { - return; - } - - this.play(marker, 0, 0, loop); - - this.fadeTo(duration, 1); - - }, - - /** - * Decreases the volume of this Sound from its current value to 0 over the duration specified. - * At the end of the fade Sound.onFadeComplete is dispatched with this Sound object as the first parameter, - * and the final volume (0) as the second parameter. - * - * @method Phaser.Sound#fadeOut - * @param {number} [duration=1000] - The time in milliseconds over which the Sound should fade out. - */ - fadeOut: function (duration) { - - this.fadeTo(duration, 0); - - }, - - /** - * Fades the volume of this Sound from its current value to the given volume over the duration specified. - * At the end of the fade Sound.onFadeComplete is dispatched with this Sound object as the first parameter, - * and the final volume (volume) as the second parameter. - * - * @method Phaser.Sound#fadeTo - * @param {number} [duration=1000] - The time in milliseconds during which the Sound should fade out. - * @param {number} [volume] - The volume which the Sound should fade to. This is a value between 0 and 1. - */ - fadeTo: function (duration, volume) { - - if (!this.isPlaying || this.paused || volume === this.volume) - { - return; - } - - if (duration === undefined) { duration = 1000; } - - if (volume === undefined) - { - console.warn("Phaser.Sound.fadeTo: No Volume Specified."); - return; - } - - this.fadeTween = this.game.add.tween(this).to( { volume: volume }, duration, Phaser.Easing.Linear.None, true); - - this.fadeTween.onComplete.add(this.fadeComplete, this); - - }, - - /** - * Internal handler for Sound.fadeIn, Sound.fadeOut and Sound.fadeTo. - * - * @method Phaser.Sound#fadeComplete - * @private - */ - fadeComplete: function () { - - this.onFadeComplete.dispatch(this, this.volume); - - if (this.volume === 0) - { - this.stop(); - } - - }, - - /** - * Called automatically by SoundManager.volume. - * - * Sets the volume of AudioTag Sounds as a percentage of the Global Volume. - * - * You should not normally call this directly. - * - * @method Phaser.Sound#updateGlobalVolume - * @protected - * @param {float} globalVolume - The global SoundManager volume. - */ - updateGlobalVolume: function (globalVolume) { - - // this._volume is the % of the global volume this sound should be played at - - if (this.usingAudioTag && this._sound) - { - this._sound.volume = globalVolume * this._volume; - } - - }, - - /** - * Destroys this sound and all associated events and removes it from the SoundManager. - * - * @method Phaser.Sound#destroy - * @param {boolean} [remove=true] - If true this Sound is automatically removed from the SoundManager. - */ - destroy: function (remove) { - - if (remove === undefined) { remove = true; } - - this.stop(); - - if (remove) - { - this.game.sound.remove(this); - } - else - { - this.markers = {}; - this.context = null; - this._buffer = null; - this.externalNode = null; - - this.onDecoded.dispose(); - this.onPlay.dispose(); - this.onPause.dispose(); - this.onResume.dispose(); - this.onLoop.dispose(); - this.onStop.dispose(); - this.onMute.dispose(); - this.onMarkerComplete.dispose(); - } - - } - -}; - -Phaser.Sound.prototype.constructor = Phaser.Sound; - -/** -* @name Phaser.Sound#isDecoding -* @property {boolean} isDecoding - Returns true if the sound file is still decoding. -* @readonly -*/ -Object.defineProperty(Phaser.Sound.prototype, "isDecoding", { - - get: function () { - return this.game.cache.getSound(this.key).isDecoding; - } - -}); - -/** -* @name Phaser.Sound#isDecoded -* @property {boolean} isDecoded - Returns true if the sound file has decoded. -* @readonly -*/ -Object.defineProperty(Phaser.Sound.prototype, "isDecoded", { - - get: function () { - return this.game.cache.isSoundDecoded(this.key); - } - -}); - -/** -* @name Phaser.Sound#mute -* @property {boolean} mute - Gets or sets the muted state of this sound. -*/ -Object.defineProperty(Phaser.Sound.prototype, "mute", { - - get: function () { - - return (this._muted || this.game.sound.mute); - - }, - - set: function (value) { - - value = value || false; - - if (value === this._muted) - { - return; - } - - if (value) - { - this._muted = true; - this._muteVolume = this._tempVolume; - - if (this.usingWebAudio) - { - this.gainNode.gain.value = 0; - } - else if (this.usingAudioTag && this._sound) - { - this._sound.volume = 0; - } - } - else - { - this._muted = false; - - if (this.usingWebAudio) - { - this.gainNode.gain.value = this._muteVolume; - } - else if (this.usingAudioTag && this._sound) - { - this._sound.volume = this._muteVolume; - } - } - - this.onMute.dispatch(this); - - } - -}); - -/** -* @name Phaser.Sound#volume -* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. -* @readonly -*/ -Object.defineProperty(Phaser.Sound.prototype, "volume", { - - get: function () { - return this._volume; - }, - - set: function (value) { - - // Causes an Index size error in Firefox if you don't clamp the value - if (this.game.device.firefox && this.usingAudioTag) - { - value = this.game.math.clamp(value, 0, 1); - } - - if (this._muted) - { - this._muteVolume = value; - return; - } - - this._tempVolume = value; - this._volume = value; - - if (this.usingWebAudio) - { - this.gainNode.gain.value = value; - } - else if (this.usingAudioTag && this._sound) - { - this._sound.volume = value; - } - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Sound Manager is responsible for playing back audio via either the Legacy HTML Audio tag or via Web Audio if the browser supports it. -* Note: On Firefox 25+ on Linux if you have media.gstreamer disabled in about:config then it cannot play back mp3 or m4a files. -* The audio file type and the encoding of those files are extremely important. Not all browsers can play all audio formats. -* There is a good guide to what's supported here: http://hpr.dogphilosophy.net/test/ -* -* If you are reloading a Phaser Game on a page that never properly refreshes (such as in an AngularJS project) then you will quickly run out -* of AudioContext nodes. If this is the case create a global var called PhaserGlobal on the window object before creating the game. The active -* AudioContext will then be saved to window.PhaserGlobal.audioContext when the Phaser game is destroyed, and re-used when it starts again. -* -* Mobile warning: There are some mobile devices (certain iPad 2 and iPad Mini revisions) that cannot play 48000 Hz audio. -* When they try to play the audio becomes extremely distorted and buzzes, eventually crashing the sound system. -* The solution is to use a lower encoding rate such as 44100 Hz. Sometimes the audio context will -* be created with a sampleRate of 48000. If this happens and audio distorts you should re-create the context. -* -* @class Phaser.SoundManager -* @constructor -* @param {Phaser.Game} game - Reference to the current game instance. -*/ -Phaser.SoundManager = function (game) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * @property {Phaser.Signal} onSoundDecode - The event dispatched when a sound decodes (typically only for mp3 files) - */ - this.onSoundDecode = new Phaser.Signal(); - - /** - * This signal is dispatched whenever the global volume changes. The new volume is passed as the only parameter to your callback. - * @property {Phaser.Signal} onVolumeChange - */ - this.onVolumeChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the SoundManager is globally muted, either directly via game code or as a result of the game pausing. - * @property {Phaser.Signal} onMute - */ - this.onMute = new Phaser.Signal(); - - /** - * This signal is dispatched when the SoundManager is globally un-muted, either directly via game code or as a result of the game resuming from a pause. - * @property {Phaser.Signal} onUnMute - */ - this.onUnMute = new Phaser.Signal(); - - /** - * @property {AudioContext} context - The AudioContext being used for playback. - * @default - */ - this.context = null; - - /** - * @property {boolean} usingWebAudio - True the SoundManager and device are both using Web Audio. - * @readonly - */ - this.usingWebAudio = false; - - /** - * @property {boolean} usingAudioTag - True the SoundManager and device are both using the Audio tag instead of Web Audio. - * @readonly - */ - this.usingAudioTag = false; - - /** - * @property {boolean} noAudio - True if audio been disabled via the PhaserGlobal (useful if you need to use a 3rd party audio library) or the device doesn't support any audio. - * @default - */ - this.noAudio = false; - - /** - * @property {boolean} connectToMaster - Used in conjunction with Sound.externalNode this allows you to stop a Sound node being connected to the SoundManager master gain node. - * @default - */ - this.connectToMaster = true; - - /** - * @property {boolean} touchLocked - true if the audio system is currently locked awaiting a touch event. - * @default - */ - this.touchLocked = false; - - /** - * @property {number} channels - The number of audio channels to use in playback. - * @default - */ - this.channels = 32; - - /** - * Set to true to have all sound muted when the Phaser game pauses (such as on loss of focus), - * or set to false to keep audio playing, regardless of the game pause state. You may need to - * do this should you wish to control audio muting via external DOM buttons or similar. - * @property {boolean} muteOnPause - * @default - */ - this.muteOnPause = true; - - /** - * @property {boolean} _codeMuted - Internal mute tracking var. - * @private - * @default - */ - this._codeMuted = false; - - /** - * @property {boolean} _muted - Internal mute tracking var. - * @private - * @default - */ - this._muted = false; - - /** - * @property {AudioContext} _unlockSource - Internal unlock tracking var. - * @private - * @default - */ - this._unlockSource = null; - - /** - * @property {number} _volume - The global audio volume. A value between 0 (silence) and 1 (full volume). - * @private - * @default - */ - this._volume = 1; - - /** - * @property {array} _sounds - An array containing all the sounds - * @private - */ - this._sounds = []; - - /** - * @property {Phaser.ArraySet} _watchList - An array set containing all the sounds being monitored for decoding status. - * @private - */ - this._watchList = new Phaser.ArraySet(); - - /** - * @property {boolean} _watching - Is the SoundManager monitoring the watchList? - * @private - */ - this._watching = false; - - /** - * @property {function} _watchCallback - The callback to invoke once the watchlist is clear. - * @private - */ - this._watchCallback = null; - - /** - * @property {object} _watchContext - The context in which to call the watchlist callback. - * @private - */ - this._watchContext = null; - -}; - -Phaser.SoundManager.prototype = { - - /** - * Initialises the sound manager. - * @method Phaser.SoundManager#boot - * @protected - */ - boot: function () { - - if (this.game.device.iOS && this.game.device.webAudio === false) - { - this.channels = 1; - } - - // PhaserGlobal overrides - if (window['PhaserGlobal']) - { - // Check to see if all audio playback is disabled (i.e. handled by a 3rd party class) - if (window['PhaserGlobal'].disableAudio === true) - { - this.noAudio = true; - this.touchLocked = false; - return; - } - - // Check if the Web Audio API is disabled (for testing Audio Tag playback during development) - if (window['PhaserGlobal'].disableWebAudio === true) - { - this.usingAudioTag = true; - this.touchLocked = false; - return; - } - } - - if (window['PhaserGlobal'] && window['PhaserGlobal'].audioContext) - { - this.context = window['PhaserGlobal'].audioContext; - } - else - { - if (!!window['AudioContext']) - { - try { - this.context = new window['AudioContext'](); - } catch (error) { - this.context = null; - this.usingWebAudio = false; - this.touchLocked = false; - } - } - else if (!!window['webkitAudioContext']) - { - try { - this.context = new window['webkitAudioContext'](); - } catch (error) { - this.context = null; - this.usingWebAudio = false; - this.touchLocked = false; - } - } - } - - if (this.context === null) - { - // No Web Audio support - how about legacy Audio? - if (window['Audio'] === undefined) - { - this.noAudio = true; - return; - } - else - { - this.usingAudioTag = true; - } - } - else - { - this.usingWebAudio = true; - - if (this.context.createGain === undefined) - { - this.masterGain = this.context.createGainNode(); - } - else - { - this.masterGain = this.context.createGain(); - } - - this.masterGain.gain.value = 1; - this.masterGain.connect(this.context.destination); - } - - if (!this.noAudio) - { - // On mobile we need a native touch event before we can play anything, so capture it here - if (!this.game.device.cocoonJS && this.game.device.iOS || (window['PhaserGlobal'] && window['PhaserGlobal'].fakeiOSTouchLock)) - { - this.setTouchLock(); - } - } - - }, - - /** - * Sets the Input Manager touch callback to be SoundManager.unlock. - * Required for iOS audio device unlocking. Mostly just used internally. - * - * @method Phaser.SoundManager#setTouchLock - */ - setTouchLock: function () { - - if (this.noAudio || (window['PhaserGlobal'] && window['PhaserGlobal'].disableAudio === true)) - { - return; - } - - if (this.game.device.iOSVersion > 8) - { - this.game.input.touch.addTouchLockCallback(this.unlock, this, true); - } - else - { - this.game.input.touch.addTouchLockCallback(this.unlock, this); - } - - this.touchLocked = true; - - }, - - /** - * Enables the audio, usually after the first touch. - * - * @method Phaser.SoundManager#unlock - * @return {boolean} True if the callback should be removed, otherwise false. - */ - unlock: function () { - - if (this.noAudio || !this.touchLocked || this._unlockSource !== null) - { - return true; - } - - // Global override (mostly for Audio Tag testing) - if (this.usingAudioTag) - { - this.touchLocked = false; - this._unlockSource = null; - } - else if (this.usingWebAudio) - { - // Create empty buffer and play it - // The SoundManager.update loop captures the state of it and then resets touchLocked to false - - var buffer = this.context.createBuffer(1, 1, 22050); - this._unlockSource = this.context.createBufferSource(); - this._unlockSource.buffer = buffer; - this._unlockSource.connect(this.context.destination); - - if (this._unlockSource.start === undefined) - { - this._unlockSource.noteOn(0); - } - else - { - this._unlockSource.start(0); - } - } - - // We can remove the event because we've done what we needed (started the unlock sound playing) - return true; - - }, - - /** - * Stops all the sounds in the game. - * - * @method Phaser.SoundManager#stopAll - */ - stopAll: function () { - - if (this.noAudio) - { - return; - } - - for (var i = 0; i < this._sounds.length; i++) - { - if (this._sounds[i]) - { - this._sounds[i].stop(); - } - } - - }, - - /** - * Pauses all the sounds in the game. - * - * @method Phaser.SoundManager#pauseAll - */ - pauseAll: function () { - - if (this.noAudio) - { - return; - } - - for (var i = 0; i < this._sounds.length; i++) - { - if (this._sounds[i]) - { - this._sounds[i].pause(); - } - } - - }, - - /** - * Resumes every sound in the game. - * - * @method Phaser.SoundManager#resumeAll - */ - resumeAll: function () { - - if (this.noAudio) - { - return; - } - - for (var i = 0; i < this._sounds.length; i++) - { - if (this._sounds[i]) - { - this._sounds[i].resume(); - } - } - - }, - - /** - * Decode a sound by its asset key. - * - * @method Phaser.SoundManager#decode - * @param {string} key - Assets key of the sound to be decoded. - * @param {Phaser.Sound} [sound] - Its buffer will be set to decoded data. - */ - decode: function (key, sound) { - - sound = sound || null; - - var soundData = this.game.cache.getSoundData(key); - - if (soundData) - { - if (this.game.cache.isSoundDecoded(key) === false) - { - this.game.cache.updateSound(key, 'isDecoding', true); - - var _this = this; - - try { - this.context.decodeAudioData(soundData, function (buffer) { - - if (buffer) - { - _this.game.cache.decodedSound(key, buffer); - _this.onSoundDecode.dispatch(key, sound); - } - }); - } - catch (e) {} - } - } - - }, - - /** - * This method allows you to give the SoundManager a list of Sound files, or keys, and a callback. - * Once all of the Sound files have finished decoding the callback will be invoked. - * The amount of time spent decoding depends on the codec used and file size. - * If all of the files given have already decoded the callback is triggered immediately. - * - * @method Phaser.SoundManager#setDecodedCallback - * @param {string|array} files - An array containing either Phaser.Sound objects or their key strings as found in the Phaser.Cache. - * @param {Function} callback - The callback which will be invoked once all files have finished decoding. - * @param {Object} callbackContext - The context in which the callback will run. - */ - setDecodedCallback: function (files, callback, callbackContext) { - - if (typeof files === 'string') - { - files = [ files ]; - } - - this._watchList.reset(); - - for (var i = 0; i < files.length; i++) - { - if (files[i] instanceof Phaser.Sound) - { - if (!this.game.cache.isSoundDecoded(files[i].key)) - { - this._watchList.add(files[i].key); - } - } - else if (!this.game.cache.isSoundDecoded(files[i])) - { - this._watchList.add(files[i]); - } - } - - // All decoded already? - if (this._watchList.total === 0) - { - this._watching = false; - callback.call(callbackContext); - } - else - { - this._watching = true; - this._watchCallback = callback; - this._watchContext = callbackContext; - } - - }, - - /** - * Updates every sound in the game, checks for audio unlock on mobile and monitors the decoding watch list. - * - * @method Phaser.SoundManager#update - * @protected - */ - update: function () { - - if (this.noAudio) - { - return; - } - - if (this.touchLocked && this._unlockSource !== null && (this._unlockSource.playbackState === this._unlockSource.PLAYING_STATE || this._unlockSource.playbackState === this._unlockSource.FINISHED_STATE)) - { - this.touchLocked = false; - this._unlockSource = null; - } - - for (var i = 0; i < this._sounds.length; i++) - { - this._sounds[i].update(); - } - - if (this._watching) - { - var key = this._watchList.first; - - while (key) - { - if (this.game.cache.isSoundDecoded(key)) - { - this._watchList.remove(key); - } - - key = this._watchList.next; - } - - if (this._watchList.total === 0) - { - this._watching = false; - this._watchCallback.call(this._watchContext); - } - } - - }, - - /** - * Adds a new Sound into the SoundManager. - * - * @method Phaser.SoundManager#add - * @param {string} key - Asset key for the sound. - * @param {number} [volume=1] - Default value for the volume. - * @param {boolean} [loop=false] - Whether or not the sound will loop. - * @param {boolean} [connect=true] - Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - * @return {Phaser.Sound} The new sound instance. - */ - add: function (key, volume, loop, connect) { - - if (volume === undefined) { volume = 1; } - if (loop === undefined) { loop = false; } - if (connect === undefined) { connect = this.connectToMaster; } - - var sound = new Phaser.Sound(this.game, key, volume, loop, connect); - - this._sounds.push(sound); - - return sound; - - }, - - /** - * Adds a new AudioSprite into the SoundManager. - * - * @method Phaser.SoundManager#addSprite - * @param {string} key - Asset key for the sound. - * @return {Phaser.AudioSprite} The new AudioSprite instance. - */ - addSprite: function(key) { - - var audioSprite = new Phaser.AudioSprite(this.game, key); - - return audioSprite; - - }, - - /** - * Removes a Sound from the SoundManager. The removed Sound is destroyed before removal. - * - * @method Phaser.SoundManager#remove - * @param {Phaser.Sound} sound - The sound object to remove. - * @return {boolean} True if the sound was removed successfully, otherwise false. - */ - remove: function (sound) { - - var i = this._sounds.length; - - while (i--) - { - if (this._sounds[i] === sound) - { - this._sounds[i].destroy(false); - this._sounds.splice(i, 1); - return true; - } - } - - return false; - - }, - - /** - * Removes all Sounds from the SoundManager that have an asset key matching the given value. - * The removed Sounds are destroyed before removal. - * - * @method Phaser.SoundManager#removeByKey - * @param {string} key - The key to match when removing sound objects. - * @return {number} The number of matching sound objects that were removed. - */ - removeByKey: function (key) { - - var i = this._sounds.length; - var removed = 0; - - while (i--) - { - if (this._sounds[i].key === key) - { - this._sounds[i].destroy(false); - this._sounds.splice(i, 1); - removed++; - } - } - - return removed; - - }, - - /** - * Adds a new Sound into the SoundManager and starts it playing. - * - * @method Phaser.SoundManager#play - * @param {string} key - Asset key for the sound. - * @param {number} [volume=1] - Default value for the volume. - * @param {boolean} [loop=false] - Whether or not the sound will loop. - * @return {Phaser.Sound} The new sound instance. - */ - play: function (key, volume, loop) { - - if (this.noAudio) - { - return; - } - - var sound = this.add(key, volume, loop); - - sound.play(); - - return sound; - - }, - - /** - * Internal mute handler called automatically by the SoundManager.mute setter. - * - * @method Phaser.SoundManager#setMute - * @private - */ - setMute: function () { - - if (this._muted) - { - return; - } - - this._muted = true; - - if (this.usingWebAudio) - { - this._muteVolume = this.masterGain.gain.value; - this.masterGain.gain.value = 0; - } - - // Loop through sounds - for (var i = 0; i < this._sounds.length; i++) - { - if (this._sounds[i].usingAudioTag) - { - this._sounds[i].mute = true; - } - } - - this.onMute.dispatch(); - - }, - - /** - * Internal mute handler called automatically by the SoundManager.mute setter. - * - * @method Phaser.SoundManager#unsetMute - * @private - */ - unsetMute: function () { - - if (!this._muted || this._codeMuted) - { - return; - } - - this._muted = false; - - if (this.usingWebAudio) - { - this.masterGain.gain.value = this._muteVolume; - } - - // Loop through sounds - for (var i = 0; i < this._sounds.length; i++) - { - if (this._sounds[i].usingAudioTag) - { - this._sounds[i].mute = false; - } - } - - this.onUnMute.dispatch(); - - }, - - /** - * Stops all the sounds in the game, then destroys them and finally clears up any callbacks. - * - * @method Phaser.SoundManager#destroy - */ - destroy: function () { - - this.stopAll(); - - for (var i = 0; i < this._sounds.length; i++) - { - if (this._sounds[i]) - { - this._sounds[i].destroy(); - } - } - - this._sounds = []; - - this.onSoundDecode.dispose(); - - if (this.context) - { - if (window['PhaserGlobal']) - { - // Store this in the PhaserGlobal window var, if set, to allow for re-use if the game is created again without the page refreshing - window['PhaserGlobal'].audioContext = this.context; - } - else - { - if (this.context.close) - { - this.context.close(); - } - } - } - - } - -}; - -Phaser.SoundManager.prototype.constructor = Phaser.SoundManager; - -/** -* @name Phaser.SoundManager#mute -* @property {boolean} mute - Gets or sets the muted state of the SoundManager. This effects all sounds in the game. -*/ -Object.defineProperty(Phaser.SoundManager.prototype, "mute", { - - get: function () { - - return this._muted; - - }, - - set: function (value) { - - value = value || false; - - if (value) - { - if (this._muted) - { - return; - } - - this._codeMuted = true; - this.setMute(); - } - else - { - if (!this._muted) - { - return; - } - - this._codeMuted = false; - this.unsetMute(); - } - } - -}); - -/** -* @name Phaser.SoundManager#volume -* @property {number} volume - Gets or sets the global volume of the SoundManager, a value between 0 and 1. The value given is clamped to the range 0 to 1. -*/ -Object.defineProperty(Phaser.SoundManager.prototype, "volume", { - - get: function () { - - return this._volume; - - }, - - set: function (value) { - - if (value < 0) - { - value = 0; - } - else if (value > 1) - { - value = 1; - } - - if (this._volume !== value) - { - this._volume = value; - - if (this.usingWebAudio) - { - this.masterGain.gain.value = value; - } - else - { - // Loop through the sound cache and change the volume of all html audio tags - for (var i = 0; i < this._sounds.length; i++) - { - if (this._sounds[i].usingAudioTag) - { - this._sounds[i].updateGlobalVolume(value); - } - } - } - - this.onVolumeChange.dispatch(value); - } - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @classdesc -* The ScaleManager object handles the the scaling, resizing, and alignment of the -* Game size and the game Display canvas. -* -* The Game size is the logical size of the game; the Display canvas has size as an HTML element. -* -* The calculations of these are heavily influenced by the bounding Parent size which is the computed -* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the -* canvas's Parent element play an important role_ in the operation of the ScaleManager. -* -* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. -* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). -* -* Parent and Display canvas containment guidelines: -* -* - Style the Parent element (of the game canvas) to control the Parent size and -* thus the Display canvas's size and layout. -* -* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. -* -* - The Parent element should _not_ apply a padding as this is not accounted for. -* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. -* If you need to add a border, margin or any other CSS around your game container, then use a parent element and -* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. -* -* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as -* they may be updated by the ScaleManager. -* -* @description -* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} -* -* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. -* -* @class -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number|string} width - The width of the game. See above. -* @param {number|string} height - The height of the game. See above. -*/ -Phaser.ScaleManager = function (game, width, height) { - - /** - * A reference to the currently running game. - * @property {Phaser.Game} game - * @protected - * @readonly - */ - this.game = game; - - /** - * Provides access to some cross-device DOM functions. - * @property {Phaser.DOM} dom - * @protected - * @readonly - */ - this.dom = Phaser.DOM; - - /** - * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. - * @property {Phaser.FlexGrid} grid - * @public - */ - this.grid = null; - - /** - * Target width (in pixels) of the Display canvas. - * @property {number} width - * @readonly - */ - this.width = 0; - - /** - * Target height (in pixels) of the Display canvas. - * @property {number} height - * @readonly - */ - this.height = 0; - - /** - * Minimum width the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minWidth - * @readonly - * @protected - */ - this.minWidth = null; - - /** - * Maximum width the canvas should be scaled to (in pixels). - * If null it will scale to whatever width the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxWidth - * @readonly - * @protected - */ - this.maxWidth = null; - - /** - * Minimum height the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minHeight - * @readonly - * @protected - */ - this.minHeight = null; - - /** - * Maximum height the canvas should be scaled to (in pixels). - * If null it will scale to whatever height the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxHeight - * @readonly - * @protected - */ - this.maxHeight = null; - - /** - * The offset coordinates of the Display canvas from the top-left of the browser window. - * The is used internally by Phaser.Pointer (for Input) and possibly other types. - * @property {Phaser.Point} offset - * @readonly - * @protected - */ - this.offset = new Phaser.Point(); - - /** - * If true, the game should only run in a landscape orientation. - * Change with {@link #forceOrientation}. - * @property {boolean} forceLandscape - * @readonly - * @default - * @protected - */ - this.forceLandscape = false; - - /** - * If true, the game should only run in a portrait - * Change with {@link #forceOrientation}. - * @property {boolean} forcePortrait - * @readonly - * @default - * @protected - */ - this.forcePortrait = false; - - /** - * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. - * - * This value is not updated immediately. - * - * @property {boolean} incorrectOrientation - * @readonly - * @protected - */ - this.incorrectOrientation = false; - - /** - * See {@link #pageAlignHorizontally}. - * @property {boolean} _pageAlignHorizontally - * @private - */ - this._pageAlignHorizontally = false; - - /** - * See {@link #pageAlignVertically}. - * @property {boolean} _pageAlignVertically - * @private - */ - this._pageAlignVertically = false; - - /** - * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. - * - * The signal is supplied with the following arguments: - * - `scale` - the ScaleManager object - * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. - * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. - * - * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. - * Thus the following tests can be done: - * - * // The orientation itself changed: - * scale.screenOrientation !== prevOrientation - * // The orientation just became incorrect: - * scale.incorrectOrientation && !wasIncorrect - * - * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation - * correctness changes even if the orientation itself does not change. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onOrientationChange - * @public - */ - this.onOrientationChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} enterIncorrectOrientation - * @public - */ - this.enterIncorrectOrientation = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} leaveIncorrectOrientation - * @public - */ - this.leaveIncorrectOrientation = new Phaser.Signal(); - - /** - * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. - * The target element must have the correct CSS styling and contain the Display canvas. - * - * The elements style will be modified (ie. the width and height might be set to 100%) - * but it will not be added to, removed from, or repositioned within the DOM. - * An attempt is made to restore relevant style changes when fullscreen mode is left. - * - * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. - * - * @property {?DOMElement} fullScreenTarget - * @default - */ - this.fullScreenTarget = null; - - /** - * The fullscreen target, as created by {@link #createFullScreenTarget}. - * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. - * @property {?DOMElement} _createdFullScreenTarget - * @private - */ - this._createdFullScreenTarget = null; - - /** - * This signal is dispatched when fullscreen mode is ready to be initialized but - * before the fullscreen request. - * - * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. - * - * The `targetElement` is the {@link #fullScreenTarget} element, - * if such is assigned, or a new element created by {@link #createFullScreenTarget}. - * - * Custom CSS styling or resets can be applied to `targetElement` as required. - * - * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: - * - After initialization the Display canvas is moved onto the `targetElement` for - * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. - * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. - * - * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. - * - * @property {Phaser.Signal} onFullScreenInit - * @public - */ - this.onFullScreenInit = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine - * if currently running in Fullscreen mode. - * - * @property {Phaser.Signal} onFullScreenChange - * @public - */ - this.onFullScreenChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser fails to enter fullscreen mode; - * or if the device does not support fullscreen mode and `startFullScreen` is invoked. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). - * - * @property {Phaser.Signal} onFullScreenError - * @public - */ - this.onFullScreenError = new Phaser.Signal(); - - /** - * The _last known_ orientation of the screen, as defined in the Window Screen Web API. - * See {@link Phaser.DOM.getScreenOrientation} for possible values. - * - * @property {string} screenOrientation - * @readonly - * @public - */ - this.screenOrientation = this.dom.getScreenOrientation(); - - /** - * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. - * @property {Phaser.Point} scaleFactor - * @readonly - */ - this.scaleFactor = new Phaser.Point(1, 1); - - /** - * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. - * @property {Phaser.Point} scaleFactorInversed - * @readonly - * @protected - */ - this.scaleFactorInversed = new Phaser.Point(1, 1); - - /** - * The Display canvas is aligned by adjusting the margins; the last margins are stored here. - * - * @property {Bounds-like} margin - * @readonly - * @protected - */ - this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; - - /** - * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. - * @property {Phaser.Rectangle} bounds - * @readonly - */ - this.bounds = new Phaser.Rectangle(); - - /** - * The aspect ratio of the scaled Display canvas. - * @property {number} aspectRatio - * @readonly - */ - this.aspectRatio = 0; - - /** - * The aspect ratio of the original game dimensions. - * @property {number} sourceAspectRatio - * @readonly - */ - this.sourceAspectRatio = 0; - - /** - * The native browser events from Fullscreen API changes. - * @property {any} event - * @readonly - * @private - */ - this.event = null; - - /** - * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. - * - * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. - * - If 'visual', the edge will be constrained to the Window / displayed screen area - * - If 'layout', the edge will be constrained to the CSS Layout bounds - * - An invalid value is treated as 'visual' - * - * @member - * @property {string} bottom - * @property {string} right - * @default - */ - this.windowConstraints = { - right: 'layout', - bottom: '' - }; - - /** - * Various compatibility settings. - * A value of "(auto)" indicates the setting is configured based on device and runtime information. - * - * A {@link #refresh} may need to be performed after making changes. - * - * @protected - * - * @property {boolean} [supportsFullScreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) - * - * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. - * - * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. - * - * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. - * - * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. - * The height set varies by device and may either be the height of the window or the viewport. - * - * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. - * - * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. - * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. - * Any other string value (including the empty string) prevents using click trampolines. - * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. - */ - this.compatibility = { - supportsFullScreen: false, - orientationFallback: null, - noMargins: false, - scrollTo: null, - forceMinimumDocumentHeight: false, - canExpandParent: true, - clickTrampoline: '' - }; - - /** - * Scale mode to be used when not in fullscreen. - * @property {number} _scaleMode - * @private - */ - this._scaleMode = Phaser.ScaleManager.NO_SCALE; - - /* - * Scale mode to be used in fullscreen. - * @property {number} _fullScreenScaleMode - * @private - */ - this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; - - /** - * If the parent container of the Game canvas is the browser window itself (i.e. document.body), - * rather than another div, this should set to `true`. - * - * The {@link #parentNode} property is generally ignored while this is in effect. - * - * @property {boolean} parentIsWindow - */ - this.parentIsWindow = false; - - /** - * The _original_ DOM element for the parent of the Display canvas. - * This may be different in fullscreen - see {@link #createFullScreenTarget}. - * - * This should only be changed after moving the Game canvas to a different DOM parent. - * - * @property {?DOMElement} parentNode - */ - this.parentNode = null; - - /** - * The scale of the game in relation to its parent container. - * @property {Phaser.Point} parentScaleFactor - * @readonly - */ - this.parentScaleFactor = new Phaser.Point(1, 1); - - /** - * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). - * Update checks normally happen quicker in response to other events. - * - * @property {integer} trackParentInterval - * @default - * @protected - * @see {@link Phaser.ScaleManager#refresh refresh} - */ - this.trackParentInterval = 2000; - - /** - * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. - * When invoked this is done _after_ the Canvas size/position have been updated. - * - * This signal is _only_ called when a change occurs and a reflow may be required. - * For example, if the canvas does not change sizes because of CSS settings (such as min-width) - * then this signal will _not_ be triggered. - * - * Use this to handle responsive game layout options. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onSizeChange - * @todo Formalize the arguments, if any, supplied to this signal. - */ - this.onSizeChange = new Phaser.Signal(); - - /** - * The callback that will be called each the parent container resizes. - * @property {function} onResize - * @private - */ - this.onResize = null; - - /** - * The context in which the {@link #onResize} callback will be called. - * @property {object} onResizeContext - * @private - */ - this.onResizeContext = null; - - /** - * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. - * @private - */ - this._pendingScaleMode = null; - - /** - * Information saved when fullscreen mode is started. - * @property {?object} _fullScreenRestore - * @private - */ - this._fullScreenRestore = null; - - /** - * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. - * @property {Phaser.Rectangle} _gameSize - * @private - */ - this._gameSize = new Phaser.Rectangle(); - - /** - * The user-supplied scale factor, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleFactor - * @private - */ - this._userScaleFactor = new Phaser.Point(1, 1); - - /** - * The user-supplied scale trim, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleTrim - * @private - */ - this._userScaleTrim = new Phaser.Point(0, 0); - - /** - * The last time the bounds were checked in `preUpdate`. - * @property {number} _lastUpdate - * @private - */ - this._lastUpdate = 0; - - /** - * Size checks updates are delayed according to the throttle. - * The throttle increases to `trackParentInterval` over time and is used to more - * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. - * @property {integer} _updateThrottle - * @private - */ - this._updateThrottle = 0; - - /** - * The minimum throttle allowed until it has slowed down sufficiently. - * @property {integer} _updateThrottleReset - * @private - */ - this._updateThrottleReset = 100; - - /** - * The cached result of the parent (possibly window) bounds; used to invalidate sizing. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._parentBounds = new Phaser.Rectangle(); - - /** - * Temporary bounds used for internal work to cut down on new objects created. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._tempBounds = new Phaser.Rectangle(); - - /** - * The Canvas size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedCanvasSize - * @private - */ - this._lastReportedCanvasSize = new Phaser.Rectangle(); - - /** - * The Game size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedGameSize - * @private - */ - this._lastReportedGameSize = new Phaser.Rectangle(); - - /** - * @property {boolean} _booted - ScaleManager booted state. - * @private - */ - this._booted = false; - - if (game.config) - { - this.parseConfig(game.config); - } - - this.setupScale(width, height); - -}; - -/** -* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.EXACT_FIT = 0; - -/** -* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.NO_SCALE = 1; - -/** -* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.SHOW_ALL = 2; - -/** -* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.RESIZE = 3; - -/** -* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.USER_SCALE = 4; - -Phaser.ScaleManager.prototype = { - - /** - * Start the ScaleManager. - * - * @method Phaser.ScaleManager#boot - * @protected - */ - boot: function () { - - // Configure device-dependent compatibility - - var compat = this.compatibility; - - compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; - - // We can't do anything about the status bars in iPads, web apps or desktops - if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) - { - if (this.game.device.android && !this.game.device.chrome) - { - compat.scrollTo = new Phaser.Point(0, 1); - } - else - { - compat.scrollTo = new Phaser.Point(0, 0); - } - } - - if (this.game.device.desktop) - { - compat.orientationFallback = 'screen'; - compat.clickTrampoline = 'when-not-mouse'; - } - else - { - compat.orientationFallback = ''; - compat.clickTrampoline = ''; - } - - // Configure event listeners - - var _this = this; - - this._orientationChange = function(event) { - return _this.orientationChange(event); - }; - - this._windowResize = function(event) { - return _this.windowResize(event); - }; - - // This does not appear to be on the standards track - window.addEventListener('orientationchange', this._orientationChange, false); - window.addEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - this._fullScreenChange = function(event) { - return _this.fullScreenChange(event); - }; - - this._fullScreenError = function(event) { - return _this.fullScreenError(event); - }; - - document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.addEventListener('fullscreenchange', this._fullScreenChange, false); - - document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.addEventListener('mozfullscreenerror', this._fullScreenError, false); - document.addEventListener('MSFullscreenError', this._fullScreenError, false); - document.addEventListener('fullscreenerror', this._fullScreenError, false); - } - - this.game.onResume.add(this._gameResumed, this); - - // Initialize core bounds - - this.dom.getOffset(this.game.canvas, this.offset); - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - this.setGameSize(this.game.width, this.game.height); - - // Don't use updateOrientationState so events are not fired - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - if (Phaser.FlexGrid) - { - this.grid = new Phaser.FlexGrid(this, this.width, this.height); - } - - this._booted = true; - - if (this._pendingScaleMode !== null) - { - this.scaleMode = this._pendingScaleMode; - this._pendingScaleMode = null; - } - - }, - - /** - * Load configuration settings. - * - * @method Phaser.ScaleManager#parseConfig - * @protected - * @param {object} config - The game configuration object. - */ - parseConfig: function (config) { - - if (config['scaleMode'] !== undefined) - { - if (this._booted) - { - this.scaleMode = config['scaleMode']; - } - else - { - this._pendingScaleMode = config['scaleMode']; - } - } - - if (config['fullScreenScaleMode'] !== undefined) - { - this.fullScreenScaleMode = config['fullScreenScaleMode']; - } - - if (config['fullScreenTarget']) - { - this.fullScreenTarget = config['fullScreenTarget']; - } - - }, - - /** - * Calculates and sets the game dimensions based on the given width and height. - * - * This should _not_ be called when in fullscreen mode. - * - * @method Phaser.ScaleManager#setupScale - * @protected - * @param {number|string} width - The width of the game. - * @param {number|string} height - The height of the game. - */ - setupScale: function (width, height) { - - var target; - var rect = new Phaser.Rectangle(); - - if (this.game.parent !== '') - { - if (typeof this.game.parent === 'string') - { - // hopefully an element ID - target = document.getElementById(this.game.parent); - } - else if (this.game.parent && this.game.parent.nodeType === 1) - { - // quick test for a HTMLelement - target = this.game.parent; - } - } - - // Fallback, covers an invalid ID and a non HTMLelement object - if (!target) - { - // Use the full window - this.parentNode = null; - this.parentIsWindow = true; - - rect.width = this.dom.visualBounds.width; - rect.height = this.dom.visualBounds.height; - - this.offset.set(0, 0); - } - else - { - this.parentNode = target; - this.parentIsWindow = false; - - this.getParentBounds(this._parentBounds); - - rect.width = this._parentBounds.width; - rect.height = this._parentBounds.height; - - this.offset.set(this._parentBounds.x, this._parentBounds.y); - } - - var newWidth = 0; - var newHeight = 0; - - if (typeof width === 'number') - { - newWidth = width; - } - else - { - // Percentage based - this.parentScaleFactor.x = parseInt(width, 10) / 100; - newWidth = rect.width * this.parentScaleFactor.x; - } - - if (typeof height === 'number') - { - newHeight = height; - } - else - { - // Percentage based - this.parentScaleFactor.y = parseInt(height, 10) / 100; - newHeight = rect.height * this.parentScaleFactor.y; - } - - newWidth = Math.floor(newWidth); - newHeight = Math.floor(newHeight); - - this._gameSize.setTo(0, 0, newWidth, newHeight); - - this.updateDimensions(newWidth, newHeight, false); - - }, - - /** - * Invoked when the game is resumed. - * - * @method Phaser.ScaleManager#_gameResumed - * @private - */ - _gameResumed: function () { - - this.queueUpdate(true); - - }, - - /** - * Set the actual Game size. - * Use this instead of directly changing `game.width` or `game.height`. - * - * The actual physical display (Canvas element size) depends on various settings including - * - Scale mode - * - Scaling factor - * - Size of Canvas's parent element or CSS rules such as min-height/max-height; - * - The size of the Window - * - * @method Phaser.ScaleManager#setGameSize - * @public - * @param {integer} width - _Game width_, in pixels. - * @param {integer} height - _Game height_, in pixels. - */ - setGameSize: function (width, height) { - - this._gameSize.setTo(0, 0, width, height); - - if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) - { - this.updateDimensions(width, height, true); - } - - this.queueUpdate(true); - - }, - - /** - * Set a User scaling factor used in the USER_SCALE scaling mode. - * - * The target canvas size is computed by: - * - * canvas.width = (game.width * hScale) - hTrim - * canvas.height = (game.height * vScale) - vTrim - * - * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. - * - * @method Phaser.ScaleManager#setUserScale - * @param {number} hScale - Horizontal scaling factor. - * @param {numer} vScale - Vertical scaling factor. - * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. - * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. - */ - setUserScale: function (hScale, vScale, hTrim, vTrim) { - - this._userScaleFactor.setTo(hScale, vScale); - this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); - this.queueUpdate(true); - - }, - - /** - * Sets the callback that will be invoked before sizing calculations. - * - * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. - * - * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager - * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. - * - * This callback - * - May be invoked even though the parent container or canvas sizes have not changed - * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated - * - Will be invoked from `preUpdate`, _even when_ the game is paused - * - * See {@link #onSizeChange} for a better way of reacting to layout updates. - * - * @method Phaser.ScaleManager#setResizeCallback - * @public - * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. - * @param {object} context - The context in which the callback will be called. - */ - setResizeCallback: function (callback, context) { - - this.onResize = callback; - this.onResizeContext = context; - - }, - - /** - * Signals a resize - IF the canvas or Game size differs from the last signal. - * - * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). - * - * @method Phaser.ScaleManager#signalSizeChange - * @private - */ - signalSizeChange: function () { - - if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || - !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) - { - var width = this.width; - var height = this.height; - - this._lastReportedCanvasSize.setTo(0, 0, width, height); - this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); - - if (this.grid) - { - this.grid.onResize(width, height); - } - - this.onSizeChange.dispatch(this, width, height); - - // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. - if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) - { - this.game.state.resize(width, height); - this.game.load.resize(width, height); - } - } - - }, - - /** - * Set the min and max dimensions for the Display canvas. - * - * _Note:_ The min/max dimensions are only applied in some cases - * - When the device is not in an incorrect orientation; or - * - The scale mode is EXACT_FIT when not in fullscreen - * - * @method Phaser.ScaleManager#setMinMax - * @public - * @param {number} minWidth - The minimum width the game is allowed to scale down to. - * @param {number} minHeight - The minimum height the game is allowed to scale down to. - * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. - * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. - * @todo These values are only sometimes honored. - */ - setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { - - this.minWidth = minWidth; - this.minHeight = minHeight; - - if (typeof maxWidth !== 'undefined') - { - this.maxWidth = maxWidth; - } - - if (typeof maxHeight !== 'undefined') - { - this.maxHeight = maxHeight; - } - - }, - - /** - * The ScaleManager.preUpdate is called automatically by the core Game loop. - * - * @method Phaser.ScaleManager#preUpdate - * @protected - */ - preUpdate: function () { - - if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) - { - return; - } - - var prevThrottle = this._updateThrottle; - this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; - - this.dom.getOffset(this.game.canvas, this.offset); - - var prevWidth = this._parentBounds.width; - var prevHeight = this._parentBounds.height; - var bounds = this.getParentBounds(this._parentBounds); - - var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; - - // Always invalidate on a newly detected orientation change - var orientationChanged = this.updateOrientationState(); - - if (boundsChanged || orientationChanged) - { - if (this.onResize) - { - this.onResize.call(this.onResizeContext, this, bounds); - } - - this.updateLayout(); - - this.signalSizeChange(); - } - - // Next throttle, eg. 25, 50, 100, 200.. - var throttle = this._updateThrottle * 2; - - // Don't let an update be too eager about resetting the throttle. - if (this._updateThrottle < prevThrottle) - { - throttle = Math.min(prevThrottle, this._updateThrottleReset); - } - - this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); - this._lastUpdate = this.game.time.time; - - }, - - /** - * Update method while paused. - * - * @method Phaser.ScaleManager#pauseUpdate - * @private - */ - pauseUpdate: function () { - - this.preUpdate(); - - // Updates at slowest. - this._updateThrottle = this.trackParentInterval; - - }, - - /** - * Update the dimensions taking the parent scaling factor into account. - * - * @method Phaser.ScaleManager#updateDimensions - * @private - * @param {number} width - The new width of the parent container. - * @param {number} height - The new height of the parent container. - * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. - */ - updateDimensions: function (width, height, resize) { - - this.width = width * this.parentScaleFactor.x; - this.height = height * this.parentScaleFactor.y; - - this.game.width = this.width; - this.game.height = this.height; - - this.sourceAspectRatio = this.width / this.height; - this.updateScalingAndBounds(); - - if (resize) - { - // Resize the renderer (which in turn resizes the Display canvas!) - this.game.renderer.resize(this.width, this.height); - - // The Camera can never be smaller than the Game size - this.game.camera.setSize(this.width, this.height); - - // This should only happen if the world is smaller than the new canvas size - this.game.world.resize(this.width, this.height); - } - - }, - - /** - * Update relevant scaling values based on the ScaleManager dimension and game dimensions, - * which should already be set. This does not change {@link #sourceAspectRatio}. - * - * @method Phaser.ScaleManager#updateScalingAndBounds - * @private - */ - updateScalingAndBounds: function () { - - this.scaleFactor.x = this.game.width / this.width; - this.scaleFactor.y = this.game.height / this.height; - - this.scaleFactorInversed.x = this.width / this.game.width; - this.scaleFactorInversed.y = this.height / this.game.height; - - this.aspectRatio = this.width / this.height; - - // This can be invoked in boot pre-canvas - if (this.game.canvas) - { - this.dom.getOffset(this.game.canvas, this.offset); - } - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - // Can be invoked in boot pre-input - if (this.game.input && this.game.input.scale) - { - this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); - } - - }, - - /** - * Force the game to run in only one orientation. - * - * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. - * - * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor - * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the - * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` - * - * @method Phaser.ScaleManager#forceOrientation - * @public - * @param {boolean} forceLandscape - true if the game should run in landscape mode only. - * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. - */ - forceOrientation: function (forceLandscape, forcePortrait) { - - if (forcePortrait === undefined) { forcePortrait = false; } - - this.forceLandscape = forceLandscape; - this.forcePortrait = forcePortrait; - - this.queueUpdate(true); - - }, - - /** - * Classify the orientation, per `getScreenOrientation`. - * - * @method Phaser.ScaleManager#classifyOrientation - * @private - * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. - * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. - */ - classifyOrientation: function (orientation) { - - if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') - { - return 'portrait'; - } - else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') - { - return 'landscape'; - } - else - { - return null; - } - - }, - - /** - * Updates the current orientation and dispatches orientation change events. - * - * @method Phaser.ScaleManager#updateOrientationState - * @private - * @return {boolean} True if the orientation state changed which means a forced update is likely required. - */ - updateOrientationState: function () { - - var previousOrientation = this.screenOrientation; - var previouslyIncorrect = this.incorrectOrientation; - - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || - (this.forcePortrait && !this.isPortrait); - - var changed = previousOrientation !== this.screenOrientation; - var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; - - if (correctnessChanged) - { - if (this.incorrectOrientation) - { - this.enterIncorrectOrientation.dispatch(); - } - else - { - this.leaveIncorrectOrientation.dispatch(); - } - } - - if (changed || correctnessChanged) - { - this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); - } - - return changed || correctnessChanged; - - }, - - /** - * window.orientationchange event handler. - * - * @method Phaser.ScaleManager#orientationChange - * @private - * @param {Event} event - The orientationchange event data. - */ - orientationChange: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * window.resize event handler. - * - * @method Phaser.ScaleManager#windowResize - * @private - * @param {Event} event - The resize event data. - */ - windowResize: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * Scroll to the top - in some environments. See `compatibility.scrollTo`. - * - * @method Phaser.ScaleManager#scrollTop - * @private - */ - scrollTop: function () { - - var scrollTo = this.compatibility.scrollTo; - - if (scrollTo) - { - window.scrollTo(scrollTo.x, scrollTo.y); - } - - }, - - /** - * The "refresh" methods informs the ScaleManager that a layout refresh is required. - * - * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) - * when the browser is resized, the orientation changes, or when there is a detected change - * of the Parent size. Refreshing is also done automatically when public properties, - * such as {@link #scaleMode}, are updated or state-changing methods are invoked. - * - * The "refresh" method _may_ need to be used in a few (rare) situtations when - * - * - a device change event is not correctly detected; or - * - the Parent size changes (and an immediate reflow is desired); or - * - the ScaleManager state is updated by non-standard means; or - * - certain {@link #compatibility} properties are manually changed. - * - * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. - * - * @method Phaser.ScaleManager#refresh - * @public - */ - refresh: function () { - - this.scrollTop(); - this.queueUpdate(true); - - }, - - /** - * Updates the game / canvas position and size. - * - * @method Phaser.ScaleManager#updateLayout - * @private - */ - updateLayout: function () { - - var scaleMode = this.currentScaleMode; - - if (scaleMode === Phaser.ScaleManager.RESIZE) - { - this.reflowGame(); - return; - } - - this.scrollTop(); - - if (this.compatibility.forceMinimumDocumentHeight) - { - // (This came from older code, by why is it here?) - // Set minimum height of content to new window height - document.documentElement.style.minHeight = window.innerHeight + 'px'; - } - - if (this.incorrectOrientation) - { - this.setMaximum(); - } - else - { - if (scaleMode === Phaser.ScaleManager.EXACT_FIT) - { - this.setExactFit(); - } - else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) - { - if (!this.isFullScreen && this.boundingParent && - this.compatibility.canExpandParent) - { - // Try to expand parent out, but choosing maximizing dimensions. - // Then select minimize dimensions which should then honor parent - // maximum bound applications. - this.setShowAll(true); - this.resetCanvas(); - this.setShowAll(); - } - else - { - this.setShowAll(); - } - } - else if (scaleMode === Phaser.ScaleManager.NO_SCALE) - { - this.width = this.game.width; - this.height = this.game.height; - } - else if (scaleMode === Phaser.ScaleManager.USER_SCALE) - { - this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; - this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; - } - } - - if (!this.compatibility.canExpandParent && - (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) - { - var bounds = this.getParentBounds(this._tempBounds); - this.width = Math.min(this.width, bounds.width); - this.height = Math.min(this.height, bounds.height); - } - - // Always truncate / force to integer - this.width = this.width | 0; - this.height = this.height | 0; - - this.reflowCanvas(); - - }, - - /** - * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. - * - * If in fullscreen mode or without parent (see {@link #parentIsWindow}), - * this will be the bounds of the visual viewport itself. - * - * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside - * the viewport then this function may return a smaller than expected size. - * - * Values are rounded to the nearest pixel. - * - * @method Phaser.ScaleManager#getParentBounds - * @protected - * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. - * @return {Phaser.Rectangle} The established parent bounds. - */ - getParentBounds: function (target) { - - var bounds = target || new Phaser.Rectangle(); - var parentNode = this.boundingParent; - var visualBounds = this.dom.visualBounds; - var layoutBounds = this.dom.layoutBounds; - - if (!parentNode) - { - bounds.setTo(0, 0, visualBounds.width, visualBounds.height); - } - else - { - // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect - var clientRect = parentNode.getBoundingClientRect(); - var parentRect = (parentNode.offsetParent) ? parentNode.offsetParent.getBoundingClientRect() : parentNode.getBoundingClientRect(); - - bounds.setTo(clientRect.left - parentRect.left, clientRect.top - parentRect.top, clientRect.width, clientRect.height); - - var wc = this.windowConstraints; - - if (wc.right) - { - var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; - bounds.right = Math.min(bounds.right, windowBounds.width); - } - - if (wc.bottom) - { - var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; - bounds.bottom = Math.min(bounds.bottom, windowBounds.height); - } - } - - bounds.setTo( - Math.round(bounds.x), Math.round(bounds.y), - Math.round(bounds.width), Math.round(bounds.height)); - - return bounds; - - }, - - /** - * Update the canvas position/margins - for alignment within the parent container. - * - * The canvas margins _must_ be reset/cleared prior to invoking this. - * - * @method Phaser.ScaleManager#alignCanvas - * @private - * @param {boolean} horizontal - Align horizontally? - * @param {boolean} vertical - Align vertically? - */ - alignCanvas: function (horizontal, vertical) { - - var parentBounds = this.getParentBounds(this._tempBounds); - var canvas = this.game.canvas; - var margin = this.margin; - - if (horizontal) - { - margin.left = margin.right = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.width < parentBounds.width && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.left - parentBounds.x; - var targetEdge = (parentBounds.width / 2) - (this.width / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - - margin.left = Math.round(offset); - } - - canvas.style.marginLeft = margin.left + 'px'; - - if (margin.left !== 0) - { - margin.right = -(parentBounds.width - canvasBounds.width - margin.left); - canvas.style.marginRight = margin.right + 'px'; - } - } - - if (vertical) - { - margin.top = margin.bottom = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.height < parentBounds.height && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.top - parentBounds.y; - var targetEdge = (parentBounds.height / 2) - (this.height / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - margin.top = Math.round(offset); - } - - canvas.style.marginTop = margin.top + 'px'; - - if (margin.top !== 0) - { - margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); - canvas.style.marginBottom = margin.bottom + 'px'; - } - } - - // Silly backwards compatibility.. - margin.x = margin.left; - margin.y = margin.top; - - }, - - /** - * Updates the Game state / size. - * - * The canvas margins may always be adjusted, even if alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowGame - * @private - */ - reflowGame: function () { - - this.resetCanvas('', ''); - - var bounds = this.getParentBounds(this._tempBounds); - this.updateDimensions(bounds.width, bounds.height, true); - - }, - - /** - * Updates the Display canvas size. - * - * The canvas margins may always be adjusted, even alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowCanvas - * @private - */ - reflowCanvas: function () { - - if (!this.incorrectOrientation) - { - this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); - this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); - } - - this.resetCanvas(); - - if (!this.compatibility.noMargins) - { - if (this.isFullScreen && this._createdFullScreenTarget) - { - this.alignCanvas(true, true); - } - else - { - this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); - } - } - - this.updateScalingAndBounds(); - - }, - - /** - * "Reset" the Display canvas and set the specified width/height. - * - * @method Phaser.ScaleManager#resetCanvas - * @private - * @param {string} [cssWidth=(current width)] - The css width to set. - * @param {string} [cssHeight=(current height)] - The css height to set. - */ - resetCanvas: function (cssWidth, cssHeight) { - - if (cssWidth === undefined) { cssWidth = this.width + 'px'; } - if (cssHeight === undefined) { cssHeight = this.height + 'px'; } - - var canvas = this.game.canvas; - - if (!this.compatibility.noMargins) - { - canvas.style.marginLeft = ''; - canvas.style.marginTop = ''; - canvas.style.marginRight = ''; - canvas.style.marginBottom = ''; - } - - canvas.style.width = cssWidth; - canvas.style.height = cssHeight; - - }, - - /** - * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). - * - * @method Phaser.ScaleManager#queueUpdate - * @private - * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. - */ - queueUpdate: function (force) { - - if (force) - { - this._parentBounds.width = 0; - this._parentBounds.height = 0; - } - - this._updateThrottle = this._updateThrottleReset; - - }, - - /** - * Reset internal data/state. - * - * @method Phaser.ScaleManager#reset - * @private - */ - reset: function (clearWorld) { - - if (clearWorld && this.grid) - { - this.grid.reset(); - } - - }, - - /** - * Updates the width/height to that of the window. - * - * @method Phaser.ScaleManager#setMaximum - * @private - */ - setMaximum: function () { - - this.width = this.dom.visualBounds.width; - this.height = this.dom.visualBounds.height; - - }, - - /** - * Updates the width/height such that the game is scaled proportionally. - * - * @method Phaser.ScaleManager#setShowAll - * @private - * @param {boolean} expanding - If true then the maximizing dimension is chosen. - */ - setShowAll: function (expanding) { - - var bounds = this.getParentBounds(this._tempBounds); - var width = bounds.width; - var height = bounds.height; - - var multiplier; - - if (expanding) - { - multiplier = Math.max((height / this.game.height), (width / this.game.width)); - } - else - { - multiplier = Math.min((height / this.game.height), (width / this.game.width)); - } - - this.width = Math.round(this.game.width * multiplier); - this.height = Math.round(this.game.height * multiplier); - - }, - - /** - * Updates the width/height such that the game is stretched to the available size. - * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. - * - * @method Phaser.ScaleManager#setExactFit - * @private - */ - setExactFit: function () { - - var bounds = this.getParentBounds(this._tempBounds); - - this.width = bounds.width; - this.height = bounds.height; - - if (this.isFullScreen) - { - // Max/min not honored fullscreen - return; - } - - if (this.maxWidth) - { - this.width = Math.min(this.width, this.maxWidth); - } - - if (this.maxHeight) - { - this.height = Math.min(this.height, this.maxHeight); - } - - }, - - /** - * Creates a fullscreen target. This is called automatically as as needed when entering - * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. - * - * Use {@link #onFullScreenInit} to customize the created object. - * - * @method Phaser.ScaleManager#createFullScreenTarget - * @protected - */ - createFullScreenTarget: function () { - - var fsTarget = document.createElement('div'); - - fsTarget.style.margin = '0'; - fsTarget.style.padding = '0'; - fsTarget.style.background = '#000'; - - return fsTarget; - - }, - - /** - * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. - * - * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting - * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current - * device is reported to support fullscreen mode. - * - * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. - * - * @method Phaser.ScaleManager#startFullScreen - * @public - * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. - * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. - * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) - */ - startFullScreen: function (antialias, allowTrampoline) { - - if (this.isFullScreen) - { - return false; - } - - if (!this.compatibility.supportsFullScreen) - { - // Error is called in timeout to emulate the real fullscreenerror event better - var _this = this; - setTimeout(function () { - _this.fullScreenError(); - }, 10); - return; - } - - if (this.compatibility.clickTrampoline === 'when-not-mouse') - { - var input = this.game.input; - - if (input.activePointer && - input.activePointer !== input.mousePointer && - (allowTrampoline || allowTrampoline !== false)) - { - input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); - return; - } - } - - if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) - { - this.game.stage.smoothed = antialias; - } - - var fsTarget = this.fullScreenTarget; - - if (!fsTarget) - { - this.cleanupCreatedTarget(); - - this._createdFullScreenTarget = this.createFullScreenTarget(); - fsTarget = this._createdFullScreenTarget; - } - - var initData = { - targetElement: fsTarget - }; - - this.onFullScreenInit.dispatch(this, initData); - - if (this._createdFullScreenTarget) - { - // Move the Display canvas inside of the target and add the target to the DOM - // (The target has to be added for the Fullscreen API to work.) - var canvas = this.game.canvas; - var parent = canvas.parentNode; - parent.insertBefore(fsTarget, canvas); - fsTarget.appendChild(canvas); - } - - if (this.game.device.fullscreenKeyboard) - { - fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); - } - else - { - fsTarget[this.game.device.requestFullscreen](); - } - - return true; - - }, - - /** - * Stops / exits fullscreen mode, if active. - * - * @method Phaser.ScaleManager#stopFullScreen - * @public - * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. - */ - stopFullScreen: function () { - - if (!this.isFullScreen || !this.compatibility.supportsFullScreen) - { - return false; - } - - document[this.game.device.cancelFullscreen](); - - return true; - - }, - - /** - * Cleans up the previous fullscreen target, if such was automatically created. - * This ensures the canvas is restored to its former parent, assuming the target didn't move. - * - * @method Phaser.ScaleManager#cleanupCreatedTarget - * @private - */ - cleanupCreatedTarget: function () { - - var fsTarget = this._createdFullScreenTarget; - - if (fsTarget && fsTarget.parentNode) - { - // Make sure to cleanup synthetic target for sure; - // swap the canvas back to the parent. - var parent = fsTarget.parentNode; - parent.insertBefore(this.game.canvas, fsTarget); - parent.removeChild(fsTarget); - } - - this._createdFullScreenTarget = null; - - }, - - /** - * Used to prepare/restore extra fullscreen mode settings. - * (This does move any elements within the DOM tree.) - * - * @method Phaser.ScaleManager#prepScreenMode - * @private - * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. - */ - prepScreenMode: function (enteringFullscreen) { - - var createdTarget = !!this._createdFullScreenTarget; - var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; - - if (enteringFullscreen) - { - if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) - { - // Resize target, as long as it's not the canvas - if (fsTarget !== this.game.canvas) - { - this._fullScreenRestore = { - targetWidth: fsTarget.style.width, - targetHeight: fsTarget.style.height - }; - - fsTarget.style.width = '100%'; - fsTarget.style.height = '100%'; - } - } - } - else - { - // Have restore information - if (this._fullScreenRestore) - { - fsTarget.style.width = this._fullScreenRestore.targetWidth; - fsTarget.style.height = this._fullScreenRestore.targetHeight; - - this._fullScreenRestore = null; - } - - // Always reset to game size - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.resetCanvas(); - } - - }, - - /** - * Called automatically when the browser enters of leaves fullscreen mode. - * - * @method Phaser.ScaleManager#fullScreenChange - * @private - * @param {Event} [event=undefined] - The fullscreenchange event - */ - fullScreenChange: function (event) { - - this.event = event; - - if (this.isFullScreen) - { - this.prepScreenMode(true); - - this.updateLayout(); - this.queueUpdate(true); - } - else - { - this.prepScreenMode(false); - - this.cleanupCreatedTarget(); - - this.updateLayout(); - this.queueUpdate(true); - } - - this.onFullScreenChange.dispatch(this, this.width, this.height); - - }, - - /** - * Called automatically when the browser fullscreen request fails; - * or called when a fullscreen request is made on a device for which it is not supported. - * - * @method Phaser.ScaleManager#fullScreenError - * @private - * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. - */ - fullScreenError: function (event) { - - this.event = event; - - this.cleanupCreatedTarget(); - - console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); - - this.onFullScreenError.dispatch(this); - - }, - - /** - * Takes a Sprite or Image object and scales it to fit the given dimensions. - * Scaling happens proportionally without distortion to the sprites texture. - * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the - * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either - * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. - * - * @method Phaser.ScaleManager#scaleSprite - * @protected - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. - * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. - * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. - * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. - * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. - */ - scaleSprite: function (sprite, width, height, letterBox) { - - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - if (letterBox === undefined) { letterBox = false; } - - if (!sprite || !sprite['scale']) - { - return sprite; - } - - sprite.scale.x = 1; - sprite.scale.y = 1; - - if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) - { - return sprite; - } - - var scaleX1 = width; - var scaleY1 = (sprite.height * width) / sprite.width; - - var scaleX2 = (sprite.width * height) / sprite.height; - var scaleY2 = height; - - var scaleOnWidth = (scaleX2 > width); - - if (scaleOnWidth) - { - scaleOnWidth = letterBox; - } - else - { - scaleOnWidth = !letterBox; - } - - if (scaleOnWidth) - { - sprite.width = Math.floor(scaleX1); - sprite.height = Math.floor(scaleY1); - } - else - { - sprite.width = Math.floor(scaleX2); - sprite.height = Math.floor(scaleY2); - } - - // Enable at some point? - // sprite.x = Math.floor((width - sprite.width) / 2); - // sprite.y = Math.floor((height - sprite.height) / 2); - - return sprite; - - }, - - /** - * Destroys the ScaleManager and removes any event listeners. - * This should probably only be called when the game is destroyed. - * - * @method Phaser.ScaleManager#destroy - * @protected - */ - destroy: function () { - - this.game.onResume.remove(this._gameResumed, this); - - window.removeEventListener('orientationchange', this._orientationChange, false); - window.removeEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.removeEventListener('fullscreenchange', this._fullScreenChange, false); - - document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); - document.removeEventListener('MSFullscreenError', this._fullScreenError, false); - document.removeEventListener('fullscreenerror', this._fullScreenError, false); - } - - } - -}; - -Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; - -/** -* The DOM element that is considered the Parent bounding element, if any. -* -* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. -* It will also be null if there is no game canvas or if the game canvas has no parent. -* -* @name Phaser.ScaleManager#boundingParent -* @property {?DOMElement} boundingParent -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { - - get: function () { - if (this.parentIsWindow || - (this.isFullScreen && !this._createdFullScreenTarget)) - { - return null; - } - - var parentNode = this.game.canvas && this.game.canvas.parentNode; - return parentNode || null; - } - -}); - -/** -* The scaling method used by the ScaleManager when not in fullscreen. -* -*
-*
{@link Phaser.ScaleManager.NO_SCALE}
-*
-* The Game display area will not be scaled - even if it is too large for the canvas/screen. -* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. -*
-*
{@link Phaser.ScaleManager.EXACT_FIT}
-*
-* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. -* Proportions are not maintained. -*
-*
{@link Phaser.ScaleManager.SHOW_ALL}
-*
-* Show the entire game display area while _maintaining_ the original aspect ratio. -*
-*
{@link Phaser.ScaleManager.RESIZE}
-*
-* The dimensions of the game display area are changed to match the size of the parent container. -* That is, this mode _changes the Game size_ to match the display size. -*

-* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. -*

-*
{@link Phaser.ScaleManager.USER_SCALE}
-*
-* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. -*

-* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} -* for flexible custom-sizing needs. -*

-*
-* -* @name Phaser.ScaleManager#scaleMode -* @property {integer} scaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { - - get: function () { - - return this._scaleMode; - - }, - - set: function (value) { - - if (value !== this._scaleMode) - { - if (!this.isFullScreen) - { - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.queueUpdate(true); - } - - this._scaleMode = value; - } - - return this._scaleMode; - - } - -}); - -/** -* The scaling method used by the ScaleManager when in fullscreen. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#fullScreenScaleMode -* @property {integer} fullScreenScaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { - - get: function () { - - return this._fullScreenScaleMode; - - }, - - set: function (value) { - - if (value !== this._fullScreenScaleMode) - { - // If in fullscreen then need a wee bit more work - if (this.isFullScreen) - { - this.prepScreenMode(false); - this._fullScreenScaleMode = value; - this.prepScreenMode(true); - - this.queueUpdate(true); - } - else - { - this._fullScreenScaleMode = value; - } - } - - return this._fullScreenScaleMode; - - } - -}); - -/** -* Returns the current scale mode - for normal or fullscreen operation. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#currentScaleMode -* @property {number} currentScaleMode -* @protected -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { - - get: function () { - - return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; - - } - -}); - -/** -* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align horizontally across the page the Display canvas should be added directly to page; -* or the parent container should itself be horizontally aligned. -* -* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignHorizontally -* @property {boolean} pageAlignHorizontally -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { - - get: function () { - - return this._pageAlignHorizontally; - - }, - - set: function (value) { - - if (value !== this._pageAlignHorizontally) - { - this._pageAlignHorizontally = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain -* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically -* _within_ the remaining available height dictated by the Parent element. -* -* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. -* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). -* -* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. -* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. -* -* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignVertically -* @property {boolean} pageAlignVertically -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { - - get: function () { - - return this._pageAlignVertically; - - }, - - set: function (value) { - - if (value !== this._pageAlignVertically) - { - this._pageAlignVertically = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* Returns true if the browser is in fullscreen mode, otherwise false. -* @name Phaser.ScaleManager#isFullScreen -* @property {boolean} isFullScreen -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { - - get: function () { - return !!(document['fullscreenElement'] || - document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || - document['msFullscreenElement']); - } - -}); - -/** -* Returns true if the screen orientation is in portrait mode. -* -* @name Phaser.ScaleManager#isPortrait -* @property {boolean} isPortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'portrait'; - } - -}); - -/** -* Returns true if the screen orientation is in landscape mode. -* -* @name Phaser.ScaleManager#isLandscape -* @property {boolean} isLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'landscape'; - } - -}); - -/** -* Returns true if the game dimensions are portrait (height > width). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGamePortrait -* @property {boolean} isGamePortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { - - get: function () { - return (this.height > this.width); - } - -}); - -/** -* Returns true if the game dimensions are landscape (width > height). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGameLandscape -* @property {boolean} isGameLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { - - get: function () { - return (this.width > this.height); - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A collection of methods for displaying debug information about game objects. -* -* If your game is running in Canvas mode, then you should invoke all of the Debug methods from -* your games `render` function. This is because they are drawn directly onto the game canvas -* itself, so if you call any debug methods outside of `render` they are likely to be overwritten -* by the game itself. -* -* If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture -* to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug -* in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* -* @class Phaser.Utils.Debug -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Utils.Debug = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.Image} sprite - If debugging in WebGL mode we need this. - */ - this.sprite = null; - - /** - * @property {Phaser.BitmapData} bmd - In WebGL mode this BitmapData contains a copy of the debug canvas. - */ - this.bmd = null; - - /** - * @property {HTMLCanvasElement} canvas - The canvas to which Debug calls draws. - */ - this.canvas = null; - - /** - * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. - */ - this.context = null; - - /** - * @property {string} font - The font that the debug information is rendered in. - * @default '14px Courier' - */ - this.font = '14px Courier'; - - /** - * @property {number} columnWidth - The spacing between columns. - */ - this.columnWidth = 100; - - /** - * @property {number} lineHeight - The line height between the debug text. - */ - this.lineHeight = 16; - - /** - * @property {boolean} renderShadow - Should the text be rendered with a slight shadow? Makes it easier to read on different types of background. - */ - this.renderShadow = true; - - /** - * @property {number} currentX - The current X position the debug information will be rendered at. - * @default - */ - this.currentX = 0; - - /** - * @property {number} currentY - The current Y position the debug information will be rendered at. - * @default - */ - this.currentY = 0; - - /** - * @property {number} currentAlpha - The alpha of the Debug context, set before all debug information is rendered to it. - * @default - */ - this.currentAlpha = 1; - - /** - * @property {boolean} dirty - Does the canvas need re-rendering? - */ - this.dirty = false; - -}; - -Phaser.Utils.Debug.prototype = { - - /** - * Internal method that boots the debug displayer. - * - * @method Phaser.Utils.Debug#boot - * @protected - */ - boot: function () { - - if (this.game.renderType === Phaser.CANVAS) - { - this.context = this.game.context; - } - else - { - this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); - this.sprite = this.game.make.image(0, 0, this.bmd); - this.game.stage.addChild(this.sprite); - - this.game.scale.onSizeChange.add(this.resize, this); - - this.canvas = PIXI.CanvasPool.create(this, this.game.width, this.game.height); - this.context = this.canvas.getContext('2d'); - } - - }, - - /** - * Internal method that resizes the BitmapData and Canvas. - * Called by ScaleManager.onSizeChange only in WebGL mode. - * - * @method Phaser.Utils.Debug#resize - * @protected - * @param {Phaser.ScaleManager} scaleManager - The Phaser ScaleManager. - * @param {number} width - The new width of the game. - * @param {number} height - The new height of the game. - */ - resize: function (scaleManager, width, height) { - - this.bmd.resize(width, height); - - this.canvas.width = width; - this.canvas.height = height; - - }, - - /** - * Internal method that clears the canvas (if a Sprite) ready for a new debug session. - * - * @method Phaser.Utils.Debug#preUpdate - * @protected - */ - preUpdate: function () { - - if (this.dirty && this.sprite) - { - this.bmd.clear(); - this.bmd.draw(this.canvas, 0, 0); - - this.context.clearRect(0, 0, this.game.width, this.game.height); - this.dirty = false; - } - - }, - - /** - * Clears the Debug canvas. - * - * @method Phaser.Utils.Debug#reset - */ - reset: function () { - - if (this.context) - { - this.context.clearRect(0, 0, this.game.width, this.game.height); - } - - if (this.sprite) - { - this.bmd.clear(); - } - - }, - - /** - * Internal method that resets and starts the debug output values. - * - * @method Phaser.Utils.Debug#start - * @protected - * @param {number} [x=0] - The X value the debug info will start from. - * @param {number} [y=0] - The Y value the debug info will start from. - * @param {string} [color='rgb(255,255,255)'] - The color the debug text will drawn in. - * @param {number} [columnWidth=0] - The spacing between columns. - */ - start: function (x, y, color, columnWidth) { - - if (typeof x !== 'number') { x = 0; } - if (typeof y !== 'number') { y = 0; } - color = color || 'rgb(255,255,255)'; - if (columnWidth === undefined) { columnWidth = 0; } - - this.currentX = x; - this.currentY = y; - this.currentColor = color; - this.columnWidth = columnWidth; - - this.dirty = true; - - this.context.save(); - this.context.setTransform(1, 0, 0, 1, 0, 0); - this.context.strokeStyle = color; - this.context.fillStyle = color; - this.context.font = this.font; - this.context.globalAlpha = this.currentAlpha; - - }, - - /** - * Internal method that stops the debug output. - * - * @method Phaser.Utils.Debug#stop - * @protected - */ - stop: function () { - - this.context.restore(); - - }, - - /** - * Internal method that outputs a single line of text split over as many columns as needed, one per parameter. - * - * @method Phaser.Utils.Debug#line - * @protected - */ - line: function () { - - var x = this.currentX; - - for (var i = 0; i < arguments.length; i++) - { - if (this.renderShadow) - { - this.context.fillStyle = 'rgb(0,0,0)'; - this.context.fillText(arguments[i], x + 1, this.currentY + 1); - this.context.fillStyle = this.currentColor; - } - - this.context.fillText(arguments[i], x, this.currentY); - - x += this.columnWidth; - } - - this.currentY += this.lineHeight; - - }, - - /** - * Render Sound information, including decoded state, duration, volume and more. - * - * @method Phaser.Utils.Debug#soundInfo - * @param {Phaser.Sound} sound - The sound object to debug. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - soundInfo: function (sound, x, y, color) { - - this.start(x, y, color); - this.line('Sound: ' + sound.key + ' Locked: ' + sound.game.sound.touchLocked); - this.line('Is Ready?: ' + this.game.cache.isSoundReady(sound.key) + ' Pending Playback: ' + sound.pendingPlayback); - this.line('Decoded: ' + sound.isDecoded + ' Decoding: ' + sound.isDecoding); - this.line('Total Duration: ' + sound.totalDuration + ' Playing: ' + sound.isPlaying); - this.line('Time: ' + sound.currentTime); - this.line('Volume: ' + sound.volume + ' Muted: ' + sound.mute); - this.line('WebAudio: ' + sound.usingWebAudio + ' Audio: ' + sound.usingAudioTag); - - if (sound.currentMarker !== '') - { - this.line('Marker: ' + sound.currentMarker + ' Duration: ' + sound.duration + ' (ms: ' + sound.durationMS + ')'); - this.line('Start: ' + sound.markers[sound.currentMarker].start + ' Stop: ' + sound.markers[sound.currentMarker].stop); - this.line('Position: ' + sound.position); - } - - this.stop(); - - }, - - /** - * Render camera information including dimensions and location. - * - * @method Phaser.Utils.Debug#cameraInfo - * @param {Phaser.Camera} camera - The Phaser.Camera to show the debug information for. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - cameraInfo: function (camera, x, y, color) { - - this.start(x, y, color); - this.line('Camera (' + camera.width + ' x ' + camera.height + ')'); - this.line('X: ' + camera.x + ' Y: ' + camera.y); - - if (camera.bounds) - { - this.line('Bounds x: ' + camera.bounds.x + ' Y: ' + camera.bounds.y + ' w: ' + camera.bounds.width + ' h: ' + camera.bounds.height); - } - - this.line('View x: ' + camera.view.x + ' Y: ' + camera.view.y + ' w: ' + camera.view.width + ' h: ' + camera.view.height); - // this.line('Screen View x: ' + camera.screenView.x + ' Y: ' + camera.screenView.y + ' w: ' + camera.screenView.width + ' h: ' + camera.screenView.height); - this.line('Total in view: ' + camera.totalInView); - this.stop(); - - }, - - /** - * Render Timer information. - * - * @method Phaser.Utils.Debug#timer - * @param {Phaser.Timer} timer - The Phaser.Timer to show the debug information for. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - timer: function (timer, x, y, color) { - - this.start(x, y, color); - this.line('Timer (running: ' + timer.running + ' expired: ' + timer.expired + ')'); - this.line('Next Tick: ' + timer.next + ' Duration: ' + timer.duration); - this.line('Paused: ' + timer.paused + ' Length: ' + timer.length); - this.stop(); - - }, - - /** - * Renders the Pointer.circle object onto the stage in green if down or red if up along with debug text. - * - * @method Phaser.Utils.Debug#pointer - * @param {Phaser.Pointer} pointer - The Pointer you wish to display. - * @param {boolean} [hideIfUp=false] - Doesn't render the circle if the pointer is up. - * @param {string} [downColor='rgba(0,255,0,0.5)'] - The color the circle is rendered in if down. - * @param {string} [upColor='rgba(255,0,0,0.5)'] - The color the circle is rendered in if up (and hideIfUp is false). - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - pointer: function (pointer, hideIfUp, downColor, upColor, color) { - - if (pointer == null) - { - return; - } - - if (hideIfUp === undefined) { hideIfUp = false; } - downColor = downColor || 'rgba(0,255,0,0.5)'; - upColor = upColor || 'rgba(255,0,0,0.5)'; - - if (hideIfUp === true && pointer.isUp === true) - { - return; - } - - this.start(pointer.x, pointer.y - 100, color); - this.context.beginPath(); - this.context.arc(pointer.x, pointer.y, pointer.circle.radius, 0, Math.PI * 2); - - if (pointer.active) - { - this.context.fillStyle = downColor; - } - else - { - this.context.fillStyle = upColor; - } - - this.context.fill(); - this.context.closePath(); - - // Render the points - this.context.beginPath(); - this.context.moveTo(pointer.positionDown.x, pointer.positionDown.y); - this.context.lineTo(pointer.position.x, pointer.position.y); - this.context.lineWidth = 2; - this.context.stroke(); - this.context.closePath(); - - // Render the text - this.line('ID: ' + pointer.id + " Active: " + pointer.active); - this.line('World X: ' + pointer.worldX + " World Y: " + pointer.worldY); - this.line('Screen X: ' + pointer.x + " Screen Y: " + pointer.y + " In: " + pointer.withinGame); - this.line('Duration: ' + pointer.duration + " ms"); - this.line('is Down: ' + pointer.isDown + " is Up: " + pointer.isUp); - this.stop(); - - }, - - /** - * Render Sprite Input Debug information. - * - * @method Phaser.Utils.Debug#spriteInputInfo - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite to display the input data for. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - spriteInputInfo: function (sprite, x, y, color) { - - this.start(x, y, color); - this.line('Sprite Input: (' + sprite.width + ' x ' + sprite.height + ')'); - this.line('x: ' + sprite.input.pointerX().toFixed(1) + ' y: ' + sprite.input.pointerY().toFixed(1)); - this.line('over: ' + sprite.input.pointerOver() + ' duration: ' + sprite.input.overDuration().toFixed(0)); - this.line('down: ' + sprite.input.pointerDown() + ' duration: ' + sprite.input.downDuration().toFixed(0)); - this.line('just over: ' + sprite.input.justOver() + ' just out: ' + sprite.input.justOut()); - this.stop(); - - }, - - /** - * Renders Phaser.Key object information. - * - * @method Phaser.Utils.Debug#key - * @param {Phaser.Key} key - The Key to render the information for. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - key: function (key, x, y, color) { - - this.start(x, y, color, 150); - - this.line('Key:', key.keyCode, 'isDown:', key.isDown); - this.line('justDown:', key.justDown, 'justUp:', key.justUp); - this.line('Time Down:', key.timeDown.toFixed(0), 'duration:', key.duration.toFixed(0)); - - this.stop(); - - }, - - /** - * Render debug information about the Input object. - * - * @method Phaser.Utils.Debug#inputInfo - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - inputInfo: function (x, y, color) { - - this.start(x, y, color); - this.line('Input'); - this.line('X: ' + this.game.input.x + ' Y: ' + this.game.input.y); - this.line('World X: ' + this.game.input.worldX + ' World Y: ' + this.game.input.worldY); - this.line('Scale X: ' + this.game.input.scale.x.toFixed(1) + ' Scale Y: ' + this.game.input.scale.x.toFixed(1)); - this.line('Screen X: ' + this.game.input.activePointer.screenX + ' Screen Y: ' + this.game.input.activePointer.screenY); - this.stop(); - - }, - - /** - * Renders the Sprites bounds. Note: This is really expensive as it has to calculate the bounds every time you call it! - * - * @method Phaser.Utils.Debug#spriteBounds - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite to display the bounds of. - * @param {string} [color] - Color of the debug info to be rendered (format is css color string). - * @param {boolean} [filled=true] - Render the rectangle as a fillRect (default, true) or a strokeRect (false) - */ - spriteBounds: function (sprite, color, filled) { - - var bounds = sprite.getBounds(); - - bounds.x += this.game.camera.x; - bounds.y += this.game.camera.y; - - this.rectangle(bounds, color, filled); - - }, - - /** - * Renders the Rope's segments. Note: This is really expensive as it has to calculate new segments every time you call it - * - * @method Phaser.Utils.Debug#ropeSegments - * @param {Phaser.Rope} rope - The rope to display the segments of. - * @param {string} [color] - Color of the debug info to be rendered (format is css color string). - * @param {boolean} [filled=true] - Render the rectangle as a fillRect (default, true) or a strokeRect (false) - */ - ropeSegments: function (rope, color, filled) { - - var segments = rope.segments; - - var self = this; - - segments.forEach(function(segment) { - self.rectangle(segment, color, filled); - }, this); - - }, - - /** - * Render debug infos (including name, bounds info, position and some other properties) about the Sprite. - * - * @method Phaser.Utils.Debug#spriteInfo - * @param {Phaser.Sprite} sprite - The Sprite to display the information of. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - spriteInfo: function (sprite, x, y, color) { - - this.start(x, y, color); - - this.line('Sprite: ' + ' (' + sprite.width + ' x ' + sprite.height + ') anchor: ' + sprite.anchor.x + ' x ' + sprite.anchor.y); - this.line('x: ' + sprite.x.toFixed(1) + ' y: ' + sprite.y.toFixed(1)); - this.line('angle: ' + sprite.angle.toFixed(1) + ' rotation: ' + sprite.rotation.toFixed(1)); - this.line('visible: ' + sprite.visible + ' in camera: ' + sprite.inCamera); - this.line('bounds x: ' + sprite._bounds.x.toFixed(1) + ' y: ' + sprite._bounds.y.toFixed(1) + ' w: ' + sprite._bounds.width.toFixed(1) + ' h: ' + sprite._bounds.height.toFixed(1)); - - this.stop(); - - }, - - /** - * Renders the sprite coordinates in local, positional and world space. - * - * @method Phaser.Utils.Debug#spriteCoords - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite to display the coordinates for. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - spriteCoords: function (sprite, x, y, color) { - - this.start(x, y, color, 100); - - if (sprite.name) - { - this.line(sprite.name); - } - - this.line('x:', sprite.x.toFixed(2), 'y:', sprite.y.toFixed(2)); - this.line('pos x:', sprite.position.x.toFixed(2), 'pos y:', sprite.position.y.toFixed(2)); - this.line('world x:', sprite.world.x.toFixed(2), 'world y:', sprite.world.y.toFixed(2)); - - this.stop(); - - }, - - /** - * Renders Line information in the given color. - * - * @method Phaser.Utils.Debug#lineInfo - * @param {Phaser.Line} line - The Line to display the data for. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - lineInfo: function (line, x, y, color) { - - this.start(x, y, color, 80); - this.line('start.x:', line.start.x.toFixed(2), 'start.y:', line.start.y.toFixed(2)); - this.line('end.x:', line.end.x.toFixed(2), 'end.y:', line.end.y.toFixed(2)); - this.line('length:', line.length.toFixed(2), 'angle:', line.angle); - this.stop(); - - }, - - /** - * Renders a single pixel at the given size. - * - * @method Phaser.Utils.Debug#pixel - * @param {number} x - X position of the pixel to be rendered. - * @param {number} y - Y position of the pixel to be rendered. - * @param {string} [color] - Color of the pixel (format is css color string). - * @param {number} [size=2] - The 'size' to render the pixel at. - */ - pixel: function (x, y, color, size) { - - size = size || 2; - - this.start(); - this.context.fillStyle = color; - this.context.fillRect(x, y, size, size); - this.stop(); - - }, - - /** - * Renders a Phaser geometry object including Rectangle, Circle, Point or Line. - * - * @method Phaser.Utils.Debug#geom - * @param {Phaser.Rectangle|Phaser.Circle|Phaser.Point|Phaser.Line} object - The geometry object to render. - * @param {string} [color] - Color of the debug info to be rendered (format is css color string). - * @param {boolean} [filled=true] - Render the objected as a filled (default, true) or a stroked (false) - * @param {number} [forceType=0] - Force rendering of a specific type. If 0 no type will be forced, otherwise 1 = Rectangle, 2 = Circle, 3 = Point and 4 = Line. - */ - geom: function (object, color, filled, forceType) { - - if (filled === undefined) { filled = true; } - if (forceType === undefined) { forceType = 0; } - - color = color || 'rgba(0,255,0,0.4)'; - - this.start(); - - this.context.fillStyle = color; - this.context.strokeStyle = color; - - if (object instanceof Phaser.Rectangle || forceType === 1) - { - if (filled) - { - this.context.fillRect(object.x - this.game.camera.x, object.y - this.game.camera.y, object.width, object.height); - } - else - { - this.context.strokeRect(object.x - this.game.camera.x, object.y - this.game.camera.y, object.width, object.height); - } - } - else if (object instanceof Phaser.Circle || forceType === 2) - { - this.context.beginPath(); - this.context.arc(object.x - this.game.camera.x, object.y - this.game.camera.y, object.radius, 0, Math.PI * 2, false); - this.context.closePath(); - - if (filled) - { - this.context.fill(); - } - else - { - this.context.stroke(); - } - } - else if (object instanceof Phaser.Point || forceType === 3) - { - this.context.fillRect(object.x - this.game.camera.x, object.y - this.game.camera.y, 4, 4); - } - else if (object instanceof Phaser.Line || forceType === 4) - { - this.context.lineWidth = 1; - this.context.beginPath(); - this.context.moveTo((object.start.x + 0.5) - this.game.camera.x, (object.start.y + 0.5) - this.game.camera.y); - this.context.lineTo((object.end.x + 0.5) - this.game.camera.x, (object.end.y + 0.5) - this.game.camera.y); - this.context.closePath(); - this.context.stroke(); - } - - this.stop(); - - }, - - /** - * Renders a Rectangle. - * - * @method Phaser.Utils.Debug#geom - * @param {Phaser.Rectangle|object} object - The geometry object to render. - * @param {string} [color] - Color of the debug info to be rendered (format is css color string). - * @param {boolean} [filled=true] - Render the objected as a filled (default, true) or a stroked (false) - */ - rectangle: function (object, color, filled) { - - if (filled === undefined) { filled = true; } - - color = color || 'rgba(0, 255, 0, 0.4)'; - - this.start(); - - if (filled) - { - this.context.fillStyle = color; - this.context.fillRect(object.x - this.game.camera.x, object.y - this.game.camera.y, object.width, object.height); - } - else - { - this.context.strokeStyle = color; - this.context.strokeRect(object.x - this.game.camera.x, object.y - this.game.camera.y, object.width, object.height); - } - - this.stop(); - - }, - - /** - * Render a string of text. - * - * @method Phaser.Utils.Debug#text - * @param {string} text - The line of text to draw. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color] - Color of the debug info to be rendered (format is css color string). - * @param {string} [font] - The font of text to draw. - */ - text: function (text, x, y, color, font) { - - color = color || 'rgb(255,255,255)'; - font = font || '16px Courier'; - - this.start(); - this.context.font = font; - - if (this.renderShadow) - { - this.context.fillStyle = 'rgb(0,0,0)'; - this.context.fillText(text, x + 1, y + 1); - } - - this.context.fillStyle = color; - this.context.fillText(text, x, y); - - this.stop(); - - }, - - /** - * Visually renders a QuadTree to the display. - * - * @method Phaser.Utils.Debug#quadTree - * @param {Phaser.QuadTree} quadtree - The quadtree to render. - * @param {string} color - The color of the lines in the quadtree. - */ - quadTree: function (quadtree, color) { - - color = color || 'rgba(255,0,0,0.3)'; - - this.start(); - - var bounds = quadtree.bounds; - - if (quadtree.nodes.length === 0) - { - this.context.strokeStyle = color; - this.context.strokeRect(bounds.x, bounds.y, bounds.width, bounds.height); - this.text('size: ' + quadtree.objects.length, bounds.x + 4, bounds.y + 16, 'rgb(0,200,0)', '12px Courier'); - - this.context.strokeStyle = 'rgb(0,255,0)'; - - for (var i = 0; i < quadtree.objects.length; i++) - { - this.context.strokeRect(quadtree.objects[i].x, quadtree.objects[i].y, quadtree.objects[i].width, quadtree.objects[i].height); - } - } - else - { - for (var i = 0; i < quadtree.nodes.length; i++) - { - this.quadTree(quadtree.nodes[i]); - } - } - - this.stop(); - - }, - - /** - * Render a Sprites Physics body if it has one set. The body is rendered as a filled or stroked rectangle. - * This only works for Arcade Physics, Ninja Physics (AABB and Circle only) and Box2D Physics bodies. - * To display a P2 Physics body you should enable debug mode on the body when creating it. - * - * @method Phaser.Utils.Debug#body - * @param {Phaser.Sprite} sprite - The Sprite who's body will be rendered. - * @param {string} [color='rgba(0,255,0,0.4)'] - Color of the debug rectangle to be rendered. The format is a CSS color string such as '#ff0000' or 'rgba(255,0,0,0.5)'. - * @param {boolean} [filled=true] - Render the body as a filled rectangle (true) or a stroked rectangle (false) - */ - body: function (sprite, color, filled) { - - if (sprite.body) - { - this.start(); - - if (sprite.body.type === Phaser.Physics.ARCADE) - { - Phaser.Physics.Arcade.Body.render(this.context, sprite.body, color, filled); - } - else if (sprite.body.type === Phaser.Physics.NINJA) - { - Phaser.Physics.Ninja.Body.render(this.context, sprite.body, color, filled); - } - else if (sprite.body.type === Phaser.Physics.BOX2D) - { - Phaser.Physics.Box2D.renderBody(this.context, sprite.body, color); - } - - this.stop(); - } - - }, - - /** - * Render a Sprites Physic Body information. - * - * @method Phaser.Utils.Debug#bodyInfo - * @param {Phaser.Sprite} sprite - The sprite to be rendered. - * @param {number} x - X position of the debug info to be rendered. - * @param {number} y - Y position of the debug info to be rendered. - * @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). - */ - bodyInfo: function (sprite, x, y, color) { - - if (sprite.body) - { - this.start(x, y, color, 210); - - if (sprite.body.type === Phaser.Physics.ARCADE) - { - Phaser.Physics.Arcade.Body.renderBodyInfo(this, sprite.body); - } - else if (sprite.body.type === Phaser.Physics.BOX2D) - { - this.game.physics.box2d.renderBodyInfo(this, sprite.body); - } - - this.stop(); - } - - }, - - /** - * Renders 'debug draw' data for the Box2D world if it exists. - * This uses the standard debug drawing feature of Box2D, so colors will be decided by - * the Box2D engine. - * - * @method Phaser.Utils.Debug#box2dWorld - */ - box2dWorld: function () { - - this.start(); - - this.context.translate(-this.game.camera.view.x, -this.game.camera.view.y, 0); - this.game.physics.box2d.renderDebugDraw(this.context); - - this.stop(); - - }, - - /** - * Renders 'debug draw' data for the given Box2D body. - * This uses the standard debug drawing feature of Box2D, so colors will be decided by the Box2D engine. - * - * @method Phaser.Utils.Debug#box2dBody - * @param {Phaser.Sprite} sprite - The sprite whos body will be rendered. - * @param {string} [color='rgb(0,255,0)'] - color of the debug info to be rendered. (format is css color string). - */ - box2dBody: function (body, color) { - - this.start(); - Phaser.Physics.Box2D.renderBody(this.context, body, color); - this.stop(); - - }, - - /** - * Call this function from the Dev Tools console. - * - * It will scan the display list and output all of the Objects it finds, and their renderOrderIDs. - * - * **Note** Requires a browser that supports console.group and console.groupEnd (such as Chrome) - * - * @method displayList - * @param {Object} [displayObject] - The displayObject level display object to start from. Defaults to the World. - */ - displayList: function (displayObject) { - - if (displayObject === undefined) { displayObject = this.game.world; } - - if (displayObject.hasOwnProperty('renderOrderID')) - { - console.log('[' + displayObject.renderOrderID + ']', displayObject); - } - else - { - console.log('[]', displayObject); - } - - if (displayObject.children && displayObject.children.length > 0) - { - for (var i = 0; i < displayObject.children.length; i++) - { - this.game.debug.displayList(displayObject.children[i]); - } - } - - }, - - /** - * Destroy this object. - * - * @method Phaser.Utils.Debug#destroy - */ - destroy: function () { - - PIXI.CanvasPool.remove(this); - - } - -}; - -Phaser.Utils.Debug.prototype.constructor = Phaser.Utils.Debug; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* DOM utility class. -* -* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. -* -* Some code originally derived from {@link https://github.com/ryanve/verge verge}. -* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. -* -* @class Phaser.DOM -* @static -*/ -Phaser.DOM = { - - /** - * Get the [absolute] position of the element relative to the Document. - * - * The value may vary slightly as the page is scrolled due to rounding errors. - * - * @method Phaser.DOM.getOffset - * @param {DOMElement} element - The targeted element that we want to retrieve the offset. - * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. - * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. - */ - getOffset: function (element, point) { - - point = point || new Phaser.Point(); - - var box = element.getBoundingClientRect(); - - var scrollTop = Phaser.DOM.scrollY; - var scrollLeft = Phaser.DOM.scrollX; - var clientTop = document.documentElement.clientTop; - var clientLeft = document.documentElement.clientLeft; - - point.x = box.left + scrollLeft - clientLeft; - point.y = box.top + scrollTop - clientTop; - - return point; - - }, - - /** - * A cross-browser element.getBoundingClientRect method with optional cushion. - * - * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. - * Its properties match the native rectangle. - * The cushion parameter is an amount of pixels (+/-) to cushion the element. - * It adjusts the measurements such that it is possible to detect when an element is near the viewport. - * - * @method Phaser.DOM.getBounds - * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. - * @param {number} [cushion] - A +/- pixel adjustment amount. - * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. - */ - getBounds: function (element, cushion) { - - if (cushion === undefined) { cushion = 0; } - - element = element && !element.nodeType ? element[0] : element; - - if (!element || element.nodeType !== 1) - { - return false; - } - else - { - return this.calibrate(element.getBoundingClientRect(), cushion); - } - - }, - - /** - * Calibrates element coordinates for `inLayoutViewport` checks. - * - * @method Phaser.DOM.calibrate - * @private - * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` - * @param {number} [cushion] - A value to adjust the coordinates by. - * @return {object} The calibrated element coordinates - */ - calibrate: function (coords, cushion) { - - cushion = +cushion || 0; - - var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; - - output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); - output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); - - return output; - - }, - - /** - * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) - * - * @method Phaser.DOM.getAspectRatio - * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. - * @return {number} The aspect ratio. - */ - getAspectRatio: function (object) { - - object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; - - var w = object['width']; - var h = object['height']; - - if (typeof w === 'function') - { - w = w.call(object); - } - - if (typeof h === 'function') - { - h = h.call(object); - } - - return w / h; - - }, - - /** - * Tests if the given DOM element is within the Layout viewport. - * - * The optional cushion parameter allows you to specify a distance. - * - * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. - * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. - * - * @method Phaser.DOM.inLayoutViewport - * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. - * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. - * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. - */ - inLayoutViewport: function (element, cushion) { - - var r = this.getBounds(element, cushion); - - return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; - - }, - - /** - * Returns the device screen orientation. - * - * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. - * - * Order of resolving: - * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. - * - Screen size ratio check - If fallback is 'screen', suited for desktops. - * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. - * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. - * - Media query - * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) - * - * See - * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) - * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) - * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx - * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries - * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation - * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation - * - * @method Phaser.DOM.getScreenOrientation - * @protected - * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. - */ - getScreenOrientation: function (primaryFallback) { - - var screen = window.screen; - var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; - - if (orientation && typeof orientation.type === 'string') - { - // Screen Orientation API specification - return orientation.type; - } - else if (typeof orientation === 'string') - { - // moz/ms-orientation are strings - return orientation; - } - - var PORTRAIT = 'portrait-primary'; - var LANDSCAPE = 'landscape-primary'; - - if (primaryFallback === 'screen') - { - return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'viewport') - { - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') - { - // This may change by device based on "natural" orientation. - return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; - } - else if (window.matchMedia) - { - if (window.matchMedia("(orientation: portrait)").matches) - { - return PORTRAIT; - } - else if (window.matchMedia("(orientation: landscape)").matches) - { - return LANDSCAPE; - } - } - - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - - }, - - /** - * The bounds of the Visual viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} - * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. - * - * Supported mobile: - * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} x - Scroll, left offset - eg. "scrollX" - * @property {number} y - Scroll, top offset - eg. "scrollY" - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - visualBounds: new Phaser.Rectangle(), - - /** - * The bounds of the Layout viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; - * but honoring the constraints as specified applicable viewport meta-tag. - * - * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see - * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). - * - * This is _not_ representative of the Visual bounds: in particular the non-primary axis will - * generally be significantly larger than the screen height on mobile devices when running with a - * constrained viewport. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - layoutBounds: new Phaser.Rectangle(), - - /** - * The size of the document / Layout viewport. - * - * This incorrectly reports the dimensions in IE. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Document width in pixels. - * @property {number} height - Document height in pixels. - * @readonly - */ - documentBounds: new Phaser.Rectangle() - -}; - -Phaser.Device.whenReady(function (device) { - - // All target browsers should support page[XY]Offset. - var scrollX = window && ('pageXOffset' in window) ? - function () { return window.pageXOffset; } : - function () { return document.documentElement.scrollLeft; }; - - var scrollY = window && ('pageYOffset' in window) ? - function () { return window.pageYOffset; } : - function () { return document.documentElement.scrollTop; }; - - /** - * A cross-browser window.scrollX. - * - * @name Phaser.DOM.scrollX - * @property {number} scrollX - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollX", { - get: scrollX - }); - - /** - * A cross-browser window.scrollY. - * - * @name Phaser.DOM.scrollY - * @property {number} scrollY - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollY", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "x", { - get: scrollX - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "y", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "y", { - value: 0 - }); - - var treatAsDesktop = device.desktop && - (document.documentElement.clientWidth <= window.innerWidth) && - (document.documentElement.clientHeight <= window.innerHeight); - - // Desktop browsers align the layout viewport with the visual viewport. - // This differs from mobile browsers with their zooming design. - // Ref. http://quirksmode.org/mobile/tableViewport.html - if (treatAsDesktop) - { - - // PST- When scrollbars are not included this causes upstream issues in ScaleManager. - // So reverted to the old "include scrollbars." - var clientWidth = function () { - return Math.max(window.innerWidth, document.documentElement.clientWidth); - }; - var clientHeight = function () { - return Math.max(window.innerHeight, document.documentElement.clientHeight); - }; - - // Interested in area sans-scrollbar - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: clientHeight - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - get: clientHeight - }); - - } else { - - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: function () { - return window.innerWidth; - } - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: function () { - return window.innerHeight; - } - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - - get: function () { - var a = document.documentElement.clientWidth; - var b = window.innerWidth; - - return a < b ? b : a; // max - } - - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - - get: function () { - var a = document.documentElement.clientHeight; - var b = window.innerHeight; - - return a < b ? b : a; // max - } - - }); - - } - - // For Phaser.DOM.documentBounds - // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html - - Object.defineProperty(Phaser.DOM.documentBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "y", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "width", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); - } - - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "height", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); - } - - }); - -}, null, true); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* ArraySet is a Set data structure (items must be unique within the set) that also maintains order. -* This allows specific items to be easily added or removed from the Set. -* -* Item equality (and uniqueness) is determined by the behavior of `Array.indexOf`. -* -* This used primarily by the Input subsystem. -* -* @class Phaser.ArraySet -* @constructor -* @param {any[]} [list=(new array)] - The backing array: if specified the items in the list _must_ be unique, per `Array.indexOf`, and the ownership of the array _should_ be relinquished to the ArraySet. -*/ -Phaser.ArraySet = function (list) { - - /** - * Current cursor position as established by `first` and `next`. - * @property {integer} position - * @default - */ - this.position = 0; - - /** - * The backing array. - * @property {any[]} list - */ - this.list = list || []; - -}; - -Phaser.ArraySet.prototype = { - - /** - * Adds a new element to the end of the list. - * If the item already exists in the list it is not moved. - * - * @method Phaser.ArraySet#add - * @param {any} item - The element to add to this list. - * @return {any} The item that was added. - */ - add: function (item) { - - if (!this.exists(item)) - { - this.list.push(item); - } - - return item; - - }, - - /** - * Gets the index of the item in the list, or -1 if it isn't in the list. - * - * @method Phaser.ArraySet#getIndex - * @param {any} item - The element to get the list index for. - * @return {integer} The index of the item or -1 if not found. - */ - getIndex: function (item) { - - return this.list.indexOf(item); - - }, - - /** - * Gets an item from the set based on the property strictly equaling the value given. - * Returns null if not found. - * - * @method Phaser.ArraySet#getByKey - * @param {string} property - The property to check against the value. - * @param {any} value - The value to check if the property strictly equals. - * @return {any} The item that was found, or null if nothing matched. - */ - getByKey: function (property, value) { - - var i = this.list.length; - - while (i--) - { - if (this.list[i][property] === value) - { - return this.list[i]; - } - } - - return null; - - }, - - /** - * Checks for the item within this list. - * - * @method Phaser.ArraySet#exists - * @param {any} item - The element to get the list index for. - * @return {boolean} True if the item is found in the list, otherwise false. - */ - exists: function (item) { - - return (this.list.indexOf(item) > -1); - - }, - - /** - * Removes all the items. - * - * @method Phaser.ArraySet#reset - */ - reset: function () { - - this.list.length = 0; - - }, - - /** - * Removes the given element from this list if it exists. - * - * @method Phaser.ArraySet#remove - * @param {any} item - The item to be removed from the list. - * @return {any} item - The item that was removed. - */ - remove: function (item) { - - var idx = this.list.indexOf(item); - - if (idx > -1) - { - this.list.splice(idx, 1); - return item; - } - - }, - - /** - * Sets the property `key` to the given value on all members of this list. - * - * @method Phaser.ArraySet#setAll - * @param {any} key - The property of the item to set. - * @param {any} value - The value to set the property to. - */ - setAll: function (key, value) { - - var i = this.list.length; - - while (i--) - { - if (this.list[i]) - { - this.list[i][key] = value; - } - } - - }, - - /** - * Calls a function on all members of this list, using the member as the context for the callback. - * - * If the `key` property is present it must be a function. - * The function is invoked using the item as the context. - * - * @method Phaser.ArraySet#callAll - * @param {string} key - The name of the property with the function to call. - * @param {...*} parameter - Additional parameters that will be passed to the callback. - */ - callAll: function (key) { - - var args = Array.prototype.slice.call(arguments, 1); - - var i = this.list.length; - - while (i--) - { - if (this.list[i] && this.list[i][key]) - { - this.list[i][key].apply(this.list[i], args); - } - } - - }, - - /** - * Removes every member from this ArraySet and optionally destroys it. - * - * @method Phaser.ArraySet#removeAll - * @param {boolean} [destroy=false] - Call `destroy` on each member as it's removed from this set. - */ - removeAll: function (destroy) { - - if (destroy === undefined) { destroy = false; } - - var i = this.list.length; - - while (i--) - { - if (this.list[i]) - { - var item = this.remove(this.list[i]); - - if (destroy) - { - item.destroy(); - } - } - } - - this.position = 0; - this.list = []; - - } - -}; - -/** -* Number of items in the ArraySet. Same as `list.length`. -* -* @name Phaser.ArraySet#total -* @property {integer} total -*/ -Object.defineProperty(Phaser.ArraySet.prototype, "total", { - - get: function () { - return this.list.length; - } - -}); - -/** -* Returns the first item and resets the cursor to the start. -* -* @name Phaser.ArraySet#first -* @property {any} first -*/ -Object.defineProperty(Phaser.ArraySet.prototype, "first", { - - get: function () { - - this.position = 0; - - if (this.list.length > 0) - { - return this.list[0]; - } - else - { - return null; - } - - } - -}); - -/** -* Returns the the next item (based on the cursor) and advances the cursor. -* -* @name Phaser.ArraySet#next -* @property {any} next -*/ -Object.defineProperty(Phaser.ArraySet.prototype, "next", { - - get: function () { - - if (this.position < this.list.length) - { - this.position++; - - return this.list[this.position]; - } - else - { - return null; - } - - } - -}); - -Phaser.ArraySet.prototype.constructor = Phaser.ArraySet; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Utility functions for dealing with Arrays. -* -* @class Phaser.ArrayUtils -* @static -*/ -Phaser.ArrayUtils = { - - /** - * Fetch a random entry from the given array. - * - * Will return null if there are no array items that fall within the specified range - * or if there is no item for the randomly chosen index. - * - * @method - * @param {any[]} objects - An array of objects. - * @param {integer} startIndex - Optional offset off the front of the array. Default value is 0, or the beginning of the array. - * @param {integer} length - Optional restriction on the number of values you want to randomly select from. - * @return {object} The random object that was selected. - */ - getRandomItem: function (objects, startIndex, length) { - - if (objects === null) { return null; } - if (startIndex === undefined) { startIndex = 0; } - if (length === undefined) { length = objects.length; } - - var randomIndex = startIndex + Math.floor(Math.random() * length); - - return objects[randomIndex] === undefined ? null : objects[randomIndex]; - - }, - - /** - * Removes a random object from the given array and returns it. - * - * Will return null if there are no array items that fall within the specified range - * or if there is no item for the randomly chosen index. - * - * @method - * @param {any[]} objects - An array of objects. - * @param {integer} startIndex - Optional offset off the front of the array. Default value is 0, or the beginning of the array. - * @param {integer} length - Optional restriction on the number of values you want to randomly select from. - * @return {object} The random object that was removed. - */ - removeRandomItem: function (objects, startIndex, length) { - - if (objects == null) { // undefined or null - return null; - } - - if (startIndex === undefined) { startIndex = 0; } - if (length === undefined) { length = objects.length; } - - var randomIndex = startIndex + Math.floor(Math.random() * length); - if (randomIndex < objects.length) - { - var removed = objects.splice(randomIndex, 1); - return removed[0] === undefined ? null : removed[0]; - } - else - { - return null; - } - - }, - - /** - * A standard Fisher-Yates Array shuffle implementation which modifies the array in place. - * - * @method - * @param {any[]} array - The array to shuffle. - * @return {any[]} The original array, now shuffled. - */ - shuffle: function (array) { - - for (var i = array.length - 1; i > 0; i--) - { - var j = Math.floor(Math.random() * (i + 1)); - var temp = array[i]; - array[i] = array[j]; - array[j] = temp; - } - - return array; - - }, - - /** - * Transposes the elements of the given matrix (array of arrays). - * - * @method - * @param {Array} array - The matrix to transpose. - * @return {Array} A new transposed matrix - */ - transposeMatrix: function (array) { - - var sourceRowCount = array.length; - var sourceColCount = array[0].length; - - var result = new Array(sourceColCount); - - for (var i = 0; i < sourceColCount; i++) - { - result[i] = new Array(sourceRowCount); - - for (var j = sourceRowCount - 1; j > -1; j--) - { - result[i][j] = array[j][i]; - } - } - - return result; - - }, - - /** - * Rotates the given matrix (array of arrays). - * - * Based on the routine from {@link http://jsfiddle.net/MrPolywhirl/NH42z/}. - * - * @method - * @param {Array} matrix - The array to rotate; this matrix _may_ be altered. - * @param {number|string} direction - The amount to rotate: the rotation in degrees (90, -90, 270, -270, 180) or a string command ('rotateLeft', 'rotateRight' or 'rotate180'). - * @return {Array} The rotated matrix. The source matrix should be discarded for the returned matrix. - */ - rotateMatrix: function (matrix, direction) { - - if (typeof direction !== 'string') - { - direction = ((direction % 360) + 360) % 360; - } - - if (direction === 90 || direction === -270 || direction === 'rotateLeft') - { - matrix = Phaser.ArrayUtils.transposeMatrix(matrix); - matrix = matrix.reverse(); - } - else if (direction === -90 || direction === 270 || direction === 'rotateRight') - { - matrix = matrix.reverse(); - matrix = Phaser.ArrayUtils.transposeMatrix(matrix); - } - else if (Math.abs(direction) === 180 || direction === 'rotate180') - { - for (var i = 0; i < matrix.length; i++) - { - matrix[i].reverse(); - } - - matrix = matrix.reverse(); - } - - return matrix; - - }, - - /** - * Snaps a value to the nearest value in an array. - * The result will always be in the range `[first_value, last_value]`. - * - * @method - * @param {number} value - The search value - * @param {number[]} arr - The input array which _must_ be sorted. - * @return {number} The nearest value found. - */ - findClosest: function (value, arr) { - - if (!arr.length) - { - return NaN; - } - else if (arr.length === 1 || value < arr[0]) - { - return arr[0]; - } - - var i = 1; - while (arr[i] < value) { - i++; - } - - var low = arr[i - 1]; - var high = (i < arr.length) ? arr[i] : Number.POSITIVE_INFINITY; - - return ((high - value) <= (value - low)) ? high : low; - - }, - - /** - * Moves the element from the end of the array to the start, shifting all items in the process. - * The "rotation" happens to the right. - * - * Before: `[ A, B, C, D, E, F ]` - * After: `[ F, A, B, C, D, E ]` - * - * See also Phaser.ArrayUtils.rotateLeft. - * - * @method Phaser.ArrayUtils.rotateRight - * @param {any[]} array - The array to rotate. The array is modified. - * @return {any} The shifted value. - */ - rotateRight: function (array) { - - var s = array.pop(); - array.unshift(s); - - return s; - - }, - - /** - * Moves the element from the start of the array to the end, shifting all items in the process. - * The "rotation" happens to the left. - * - * Before: `[ A, B, C, D, E, F ]` - * After: `[ B, C, D, E, F, A ]` - * - * See also Phaser.ArrayUtils.rotateRight - * - * @method Phaser.ArrayUtils.rotateLeft - * @param {any[]} array - The array to rotate. The array is modified. - * @return {any} The rotated value. - */ - rotateLeft: function (array) { - - var s = array.shift(); - array.push(s); - - return s; - - }, - - /** - * Moves the element from the start of the array to the end, shifting all items in the process. - * The "rotation" happens to the left. - * - * Before: `[ A, B, C, D, E, F ]` - * After: `[ B, C, D, E, F, A ]` - * - * See also Phaser.ArrayUtils.rotateRight - * - * @method Phaser.ArrayUtils.rotate - * @deprecated Please use Phaser.ArrayUtils.rotate instead. - * @param {any[]} array - The array to rotate. The array is modified. - * @return {any} The rotated value. - */ - rotate: function (array) { - - var s = array.shift(); - array.push(s); - - return s; - - }, - - /** - * Create an array representing the inclusive range of numbers (usually integers) in `[start, end]`. - * This is equivalent to `numberArrayStep(start, end, 1)`. - * - * @method Phaser.ArrayUtils#numberArray - * @param {number} start - The minimum value the array starts with. - * @param {number} end - The maximum value the array contains. - * @return {number[]} The array of number values. - */ - numberArray: function (start, end) { - - var result = []; - - for (var i = start; i <= end; i++) - { - result.push(i); - } - - return result; - - }, - - /** - * Create an array of numbers (positive and/or negative) progressing from `start` - * up to but not including `end` by advancing by `step`. - * - * If `start` is less than `end` a zero-length range is created unless a negative `step` is specified. - * - * Certain values for `start` and `end` (eg. NaN/undefined/null) are currently coerced to 0; - * for forward compatibility make sure to pass in actual numbers. - * - * @method Phaser.ArrayUtils#numberArrayStep - * @param {number} start - The start of the range. - * @param {number} [end] - The end of the range. - * @param {number} [step=1] - The value to increment or decrement by. - * @returns {Array} Returns the new array of numbers. - * @example - * Phaser.ArrayUtils.numberArrayStep(4); - * // => [0, 1, 2, 3] - * - * Phaser.ArrayUtils.numberArrayStep(1, 5); - * // => [1, 2, 3, 4] - * - * Phaser.ArrayUtils.numberArrayStep(0, 20, 5); - * // => [0, 5, 10, 15] - * - * Phaser.ArrayUtils.numberArrayStep(0, -4, -1); - * // => [0, -1, -2, -3] - * - * Phaser.ArrayUtils.numberArrayStep(1, 4, 0); - * // => [1, 1, 1] - * - * Phaser.ArrayUtils.numberArrayStep(0); - * // => [] - */ - numberArrayStep: function (start, end, step) { - - if (start === undefined || start === null) { start = 0; } - - if (end === undefined || end === null) - { - end = start; - start = 0; - } - - if (step === undefined) { step = 1; } - - var result = []; - var total = Math.max(Phaser.Math.roundAwayFromZero((end - start) / (step || 1)), 0); - - for (var i = 0; i < total; i++) - { - result.push(start); - start += step; - } - - return result; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A basic Linked List data structure. -* -* This implementation _modifies_ the `prev` and `next` properties of each item added: -* - The `prev` and `next` properties must be writable and should not be used for any other purpose. -* - Items _cannot_ be added to multiple LinkedLists at the same time. -* - Only objects can be added. -* -* @class Phaser.LinkedList -* @constructor -*/ -Phaser.LinkedList = function () { - - /** - * Next element in the list. - * @property {object} next - * @default - */ - this.next = null; - - /** - * Previous element in the list. - * @property {object} prev - * @default - */ - this.prev = null; - - /** - * First element in the list. - * @property {object} first - * @default - */ - this.first = null; - - /** - * Last element in the list. - * @property {object} last - * @default - */ - this.last = null; - - /** - * Number of elements in the list. - * @property {integer} total - * @default - */ - this.total = 0; - -}; - -Phaser.LinkedList.prototype = { - - /** - * Adds a new element to this linked list. - * - * @method Phaser.LinkedList#add - * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. - * @return {object} The item that was added. - */ - add: function (item) { - - // If the list is empty - if (this.total === 0 && this.first === null && this.last === null) - { - this.first = item; - this.last = item; - this.next = item; - item.prev = this; - this.total++; - return item; - } - - // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) - this.last.next = item; - - item.prev = this.last; - - this.last = item; - - this.total++; - - return item; - - }, - - /** - * Resets the first, last, next and previous node pointers in this list. - * - * @method Phaser.LinkedList#reset - */ - reset: function () { - - this.first = null; - this.last = null; - this.next = null; - this.prev = null; - this.total = 0; - - }, - - /** - * Removes the given element from this linked list if it exists. - * - * @method Phaser.LinkedList#remove - * @param {object} item - The item to be removed from the list. - */ - remove: function (item) { - - if (this.total === 1) - { - this.reset(); - item.next = item.prev = null; - return; - } - - if (item === this.first) - { - // It was 'first', make 'first' point to first.next - this.first = this.first.next; - } - else if (item === this.last) - { - // It was 'last', make 'last' point to last.prev - this.last = this.last.prev; - } - - if (item.prev) - { - // make item.prev.next point to childs.next instead of item - item.prev.next = item.next; - } - - if (item.next) - { - // make item.next.prev point to item.prev instead of item - item.next.prev = item.prev; - } - - item.next = item.prev = null; - - if (this.first === null ) - { - this.last = null; - } - - this.total--; - - }, - - /** - * Calls a function on all members of this list, using the member as the context for the callback. - * The function must exist on the member. - * - * @method Phaser.LinkedList#callAll - * @param {function} callback - The function to call. - */ - callAll: function (callback) { - - if (!this.first || !this.last) - { - return; - } - - var entity = this.first; - - do - { - if (entity && entity[callback]) - { - entity[callback].call(entity); - } - - entity = entity.next; - - } - while(entity != this.last.next); - - } - -}; - -Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content -* quickly and easily, without the need for any external files. You can create textures for sprites and in -* coming releases we'll add dynamic sound effect generation support as well (like sfxr). -* -* Access this via `Game.create` (`this.game.create` from within a State object) -* -* @class Phaser.Create -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. - */ -Phaser.Create = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. - */ - this.bmd = null; - - /** - * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. - */ - this.canvas = null; - - /** - * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. - */ - this.ctx = null; - - /** - * @property {array} palettes - A range of 16 color palettes for use with sprite generation. - */ - this.palettes = [ - { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, - { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, - { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } - ]; - -}; - -/** -* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_ARNE = 0; - -/** -* A 16 color JMP inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JMP = 1; - -/** -* A 16 color CGA inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_CGA = 2; - -/** -* A 16 color C64 inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_C64 = 3; - -/** -* A 16 color palette inspired by Japanese computers like the MSX. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; - -Phaser.Create.prototype = { - - /** - * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. - * - * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images - * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. - * - * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. - * - * For example: - * - * `var data = [ - * ' 333 ', - * ' 777 ', - * 'E333E', - * ' 333 ', - * ' 3 3 ' - * ];` - * - * `game.create.texture('bob', data);` - * - * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it - * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` - * - * @method Phaser.Create#texture - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {array} data - An array of pixel data. - * @param {integer} [pixelWidth=8] - The width of each pixel. - * @param {integer} [pixelHeight=8] - The height of each pixel. - * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. - * @return {PIXI.Texture} The newly generated texture. - */ - texture: function (key, data, pixelWidth, pixelHeight, palette) { - - if (pixelWidth === undefined) { pixelWidth = 8; } - if (pixelHeight === undefined) { pixelHeight = pixelWidth; } - if (palette === undefined) { palette = 0; } - - var w = data[0].length * pixelWidth; - var h = data.length * pixelHeight; - - // No bmd? Let's make one - if (this.bmd === null) - { - this.bmd = this.game.make.bitmapData(); - this.canvas = this.bmd.canvas; - this.ctx = this.bmd.context; - } - - this.bmd.resize(w, h); - this.bmd.clear(); - - // Draw it - for (var y = 0; y < data.length; y++) - { - var row = data[y]; - - for (var x = 0; x < row.length; x++) - { - var d = row[x]; - - if (d !== '.' && d !== ' ') - { - this.ctx.fillStyle = this.palettes[palette][d]; - this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); - } - } - } - - return this.bmd.generateTexture(key); - - }, - - /** - * Creates a grid texture based on the given dimensions. - * - * @method Phaser.Create#grid - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {integer} width - The width of the grid in pixels. - * @param {integer} height - The height of the grid in pixels. - * @param {integer} cellWidth - The width of the grid cells in pixels. - * @param {integer} cellHeight - The height of the grid cells in pixels. - * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. - * @return {PIXI.Texture} The newly generated texture. - */ - grid: function (key, width, height, cellWidth, cellHeight, color) { - - // No bmd? Let's make one - if (this.bmd === null) - { - this.bmd = this.game.make.bitmapData(); - this.canvas = this.bmd.canvas; - this.ctx = this.bmd.context; - } - - this.bmd.resize(width, height); - - this.ctx.fillStyle = color; - - for (var y = 0; y < height; y += cellHeight) - { - this.ctx.fillRect(0, y, width, 1); - } - - for (var x = 0; x < width; x += cellWidth) - { - this.ctx.fillRect(x, 0, 1, height); - } - - return this.bmd.generateTexture(key); - - } - -}; - -Phaser.Create.prototype.constructor = Phaser.Create; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers -* to provide for game object positioning in a responsive manner. -* -* @class Phaser.FlexGrid -* @constructor -* @param {Phaser.ScaleManager} manager - The ScaleManager. -* @param {number} width - The width of the game. -* @param {number} height - The height of the game. -*/ -Phaser.FlexGrid = function (manager, width, height) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = manager.game; - - /** - * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. - */ - this.manager = manager; - - // The perfect dimensions on which everything else is based - this.width = width; - this.height = height; - - this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); - this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); - this.boundsFull = new Phaser.Rectangle(0, 0, width, height); - this.boundsNone = new Phaser.Rectangle(0, 0, width, height); - - /** - * @property {Phaser.Point} position - - * @readonly - */ - this.positionCustom = new Phaser.Point(0, 0); - this.positionFluid = new Phaser.Point(0, 0); - this.positionFull = new Phaser.Point(0, 0); - this.positionNone = new Phaser.Point(0, 0); - - /** - * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. - * @readonly - */ - this.scaleCustom = new Phaser.Point(1, 1); - this.scaleFluid = new Phaser.Point(1, 1); - this.scaleFluidInversed = new Phaser.Point(1, 1); - this.scaleFull = new Phaser.Point(1, 1); - this.scaleNone = new Phaser.Point(1, 1); - - this.customWidth = 0; - this.customHeight = 0; - this.customOffsetX = 0; - this.customOffsetY = 0; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.multiplier = 0; - - this.layers = []; - -}; - -Phaser.FlexGrid.prototype = { - - /** - * Sets the core game size. This resets the w/h parameters and bounds. - * - * @method Phaser.FlexGrid#setSize - * @param {number} width - The new dimensions. - * @param {number} height - The new dimensions. - */ - setSize: function (width, height) { - - // These are locked and don't change until setSize is called again - this.width = width; - this.height = height; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.scaleNone = new Phaser.Point(1, 1); - - this.boundsNone.width = this.width; - this.boundsNone.height = this.height; - - this.refresh(); - - }, - - // Need ability to create your own layers with custom scaling, etc. - - /** - * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createCustomLayer - * @param {number} width - Width of this layer in pixels. - * @param {number} height - Height of this layer in pixels. - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createCustomLayer: function (width, height, children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - this.customWidth = width; - this.customHeight = height; - - this.boundsCustom.width = width; - this.boundsCustom.height = height; - - var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createFluidLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFluidLayer: function (children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. - * - * @method Phaser.FlexGrid#createFullLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFullLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. - * - * @method Phaser.FlexGrid#createFixedLayer - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFixedLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * Resets the layer children references - * - * @method Phaser.FlexGrid#reset - */ - reset: function () { - - var i = this.layers.length; - - while (i--) - { - if (!this.layers[i].persist) - { - // Remove references to this class - this.layers[i].position = null; - this.layers[i].scale = null; - this.layers.slice(i, 1); - } - } - - }, - - /** - * Called when the game container changes dimensions. - * - * @method Phaser.FlexGrid#onResize - * @param {number} width - The new width of the game container. - * @param {number} height - The new height of the game container. - */ - onResize: function (width, height) { - - this.ratioH = width / height; - this.ratioV = height / width; - - this.refresh(width, height); - - }, - - /** - * Updates all internal vars such as the bounds and scale values. - * - * @method Phaser.FlexGrid#refresh - */ - refresh: function () { - - this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); - - this.boundsFluid.width = Math.round(this.width * this.multiplier); - this.boundsFluid.height = Math.round(this.height * this.multiplier); - - this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); - this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); - - this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); - - this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); - this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); - - this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - - this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); - this.positionNone.set(this.boundsNone.x, this.boundsNone.y); - - }, - - /** - * Fits a sprites width to the bounds. - * - * @method Phaser.FlexGrid#fitSprite - * @param {Phaser.Sprite} sprite - The Sprite to fit. - */ - fitSprite: function (sprite) { - - this.manager.scaleSprite(sprite); - - sprite.x = this.manager.bounds.centerX; - sprite.y = this.manager.bounds.centerY; - - }, - - /** - * Call in the render function to output the bounds rects. - * - * @method Phaser.FlexGrid#debug - */ - debug: function () { - - // for (var i = 0; i < this.layers.length; i++) - // { - // this.layers[i].debug(); - // } - - // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); - // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); - - this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); - this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); - - // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); - // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); - - // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); - // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); - - } - -}; - -Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* A responsive grid layer. -* -* @class Phaser.FlexLayer -* @extends Phaser.Group -* @constructor -* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. -* @param {Phaser.Point} position - A reference to the Point object used for positioning. -* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. -* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. -*/ -Phaser.FlexLayer = function (manager, position, bounds, scale) { - - Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); - - /** - * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. - */ - this.manager = manager.manager; - - /** - * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. - */ - this.grid = manager; - - /** - * Should the FlexLayer remain through a State swap? - * - * @type {boolean} - */ - this.persist = false; - - /** - * @property {Phaser.Point} position - */ - this.position = position; - - /** - * @property {Phaser.Rectangle} bounds - */ - this.bounds = bounds; - - /** - * @property {Phaser.Point} scale - */ - this.scale = scale; - - /** - * @property {Phaser.Point} topLeft - */ - this.topLeft = bounds.topLeft; - - /** - * @property {Phaser.Point} topMiddle - */ - this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); - - /** - * @property {Phaser.Point} topRight - */ - this.topRight = bounds.topRight; - - /** - * @property {Phaser.Point} bottomLeft - */ - this.bottomLeft = bounds.bottomLeft; - - /** - * @property {Phaser.Point} bottomMiddle - */ - this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); - - /** - * @property {Phaser.Point} bottomRight - */ - this.bottomRight = bounds.bottomRight; - -}; - -Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); -Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; - -/** - * Resize. - * - * @method Phaser.FlexLayer#resize - */ -Phaser.FlexLayer.prototype.resize = function () { -}; - -/** - * Debug. - * - * @method Phaser.FlexLayer#debug - */ -Phaser.FlexLayer.prototype.debug = function () { - - this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); - this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); - - this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Phaser.Color class is a set of static methods that assist in color manipulation and conversion. -* -* @class Phaser.Color -*/ -Phaser.Color = { - - /** - * Packs the r, g, b, a components into a single integer, for use with Int32Array. - * If device is little endian then ABGR order is used. Otherwise RGBA order is used. - * - * @author Matt DesLauriers (@mattdesl) - * @method Phaser.Color.packPixel - * @static - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @param {number} a - The alpha color component, in the range 0 - 255. - * @return {number} The packed color as uint32 - */ - packPixel: function (r, g, b, a) { - - if (Phaser.Device.LITTLE_ENDIAN) - { - return ( (a << 24) | (b << 16) | (g << 8) | r ) >>> 0; - } - else - { - return ( (r << 24) | (g << 16) | (b << 8) | a ) >>> 0; - } - - }, - - /** - * Unpacks the r, g, b, a components into the specified color object, or a new - * object, for use with Int32Array. If little endian, then ABGR order is used when - * unpacking, otherwise, RGBA order is used. The resulting color object has the - * `r, g, b, a` properties which are unrelated to endianness. - * - * Note that the integer is assumed to be packed in the correct endianness. On little-endian - * the format is 0xAABBGGRR and on big-endian the format is 0xRRGGBBAA. If you want a - * endian-independent method, use fromRGBA(rgba) and toRGBA(r, g, b, a). - * - * @author Matt DesLauriers (@mattdesl) - * @method Phaser.Color.unpackPixel - * @static - * @param {number} rgba - The integer, packed in endian order by packPixel. - * @param {object} [out] - An object into which 3 properties will be created: r, g and b. If not provided a new object will be created. - * @param {boolean} [hsl=false] - Also convert the rgb values into hsl? - * @param {boolean} [hsv=false] - Also convert the rgb values into hsv? - * @return {object} An object with the red, green and blue values set in the r, g and b properties. - */ - unpackPixel: function (rgba, out, hsl, hsv) { - - if (out === undefined || out === null) { out = Phaser.Color.createColor(); } - if (hsl === undefined || hsl === null) { hsl = false; } - if (hsv === undefined || hsv === null) { hsv = false; } - - if (Phaser.Device.LITTLE_ENDIAN) - { - out.a = ((rgba & 0xff000000) >>> 24); - out.b = ((rgba & 0x00ff0000) >>> 16); - out.g = ((rgba & 0x0000ff00) >>> 8); - out.r = ((rgba & 0x000000ff)); - } - else - { - out.r = ((rgba & 0xff000000) >>> 24); - out.g = ((rgba & 0x00ff0000) >>> 16); - out.b = ((rgba & 0x0000ff00) >>> 8); - out.a = ((rgba & 0x000000ff)); - } - - out.color = rgba; - out.rgba = 'rgba(' + out.r + ',' + out.g + ',' + out.b + ',' + (out.a / 255) + ')'; - - if (hsl) - { - Phaser.Color.RGBtoHSL(out.r, out.g, out.b, out); - } - - if (hsv) - { - Phaser.Color.RGBtoHSV(out.r, out.g, out.b, out); - } - - return out; - - }, - - /** - * A utility to convert an integer in 0xRRGGBBAA format to a color object. - * This does not rely on endianness. - * - * @author Matt DesLauriers (@mattdesl) - * @method Phaser.Color.fromRGBA - * @static - * @param {number} rgba - An RGBA hex - * @param {object} [out] - The object to use, optional. - * @return {object} A color object. - */ - fromRGBA: function (rgba, out) { - - if (!out) - { - out = Phaser.Color.createColor(); - } - - out.r = ((rgba & 0xff000000) >>> 24); - out.g = ((rgba & 0x00ff0000) >>> 16); - out.b = ((rgba & 0x0000ff00) >>> 8); - out.a = ((rgba & 0x000000ff)); - - out.rgba = 'rgba(' + out.r + ',' + out.g + ',' + out.b + ',' + out.a + ')'; - - return out; - - }, - - /** - * A utility to convert RGBA components to a 32 bit integer in RRGGBBAA format. - * - * @author Matt DesLauriers (@mattdesl) - * @method Phaser.Color.toRGBA - * @static - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @param {number} a - The alpha color component, in the range 0 - 255. - * @return {number} A RGBA-packed 32 bit integer - */ - toRGBA: function (r, g, b, a) { - - return (r << 24) | (g << 16) | (b << 8) | a; - - }, - - /** - * Converts RGBA components to a 32 bit integer in AABBGGRR format. - * - * @method Phaser.Color.toABGR - * @static - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @param {number} a - The alpha color component, in the range 0 - 255. - * @return {number} A RGBA-packed 32 bit integer - */ - toABGR: function (r, g, b, a) { - - return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; - - }, - - /** - * Converts an RGB color value to HSL (hue, saturation and lightness). - * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. - * Assumes RGB values are contained in the set [0, 255] and returns h, s and l in the set [0, 1]. - * Based on code by Michael Jackson (https://github.com/mjijackson) - * - * @method Phaser.Color.RGBtoHSL - * @static - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @param {object} [out] - An object into which 3 properties will be created, h, s and l. If not provided a new object will be created. - * @return {object} An object with the hue, saturation and lightness values set in the h, s and l properties. - */ - RGBtoHSL: function (r, g, b, out) { - - if (!out) - { - out = Phaser.Color.createColor(r, g, b, 1); - } - - r /= 255; - g /= 255; - b /= 255; - - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - - // achromatic by default - out.h = 0; - out.s = 0; - out.l = (max + min) / 2; - - if (max !== min) - { - var d = max - min; - - out.s = out.l > 0.5 ? d / (2 - max - min) : d / (max + min); - - if (max === r) - { - out.h = (g - b) / d + (g < b ? 6 : 0); - } - else if (max === g) - { - out.h = (b - r) / d + 2; - } - else if (max === b) - { - out.h = (r - g) / d + 4; - } - - out.h /= 6; - } - - return out; - - }, - - /** - * Converts an HSL (hue, saturation and lightness) color value to RGB. - * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. - * Assumes HSL values are contained in the set [0, 1] and returns r, g and b values in the set [0, 255]. - * Based on code by Michael Jackson (https://github.com/mjijackson) - * - * @method Phaser.Color.HSLtoRGB - * @static - * @param {number} h - The hue, in the range 0 - 1. - * @param {number} s - The saturation, in the range 0 - 1. - * @param {number} l - The lightness, in the range 0 - 1. - * @param {object} [out] - An object into which 3 properties will be created: r, g and b. If not provided a new object will be created. - * @return {object} An object with the red, green and blue values set in the r, g and b properties. - */ - HSLtoRGB: function (h, s, l, out) { - - if (!out) - { - out = Phaser.Color.createColor(l, l, l); - } - else - { - // achromatic by default - out.r = l; - out.g = l; - out.b = l; - } - - if (s !== 0) - { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - out.r = Phaser.Color.hueToColor(p, q, h + 1 / 3); - out.g = Phaser.Color.hueToColor(p, q, h); - out.b = Phaser.Color.hueToColor(p, q, h - 1 / 3); - } - - // out.r = (out.r * 255 | 0); - // out.g = (out.g * 255 | 0); - // out.b = (out.b * 255 | 0); - - out.r = Math.floor((out.r * 255 | 0)); - out.g = Math.floor((out.g * 255 | 0)); - out.b = Math.floor((out.b * 255 | 0)); - - Phaser.Color.updateColor(out); - - return out; - - }, - - /** - * Converts an RGB color value to HSV (hue, saturation and value). - * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. - * Assumes RGB values are contained in the set [0, 255] and returns h, s and v in the set [0, 1]. - * Based on code by Michael Jackson (https://github.com/mjijackson) - * - * @method Phaser.Color.RGBtoHSV - * @static - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @param {object} [out] - An object into which 3 properties will be created, h, s and v. If not provided a new object will be created. - * @return {object} An object with the hue, saturation and value set in the h, s and v properties. - */ - RGBtoHSV: function (r, g, b, out) { - - if (!out) - { - out = Phaser.Color.createColor(r, g, b, 255); - } - - r /= 255; - g /= 255; - b /= 255; - - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - var d = max - min; - - // achromatic by default - out.h = 0; - out.s = max === 0 ? 0 : d / max; - out.v = max; - - if (max !== min) - { - if (max === r) - { - out.h = (g - b) / d + (g < b ? 6 : 0); - } - else if (max === g) - { - out.h = (b - r) / d + 2; - } - else if (max === b) - { - out.h = (r - g) / d + 4; - } - - out.h /= 6; - } - - return out; - - }, - - /** - * Converts an HSV (hue, saturation and value) color value to RGB. - * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. - * Assumes HSV values are contained in the set [0, 1] and returns r, g and b values in the set [0, 255]. - * Based on code by Michael Jackson (https://github.com/mjijackson) - * - * @method Phaser.Color.HSVtoRGB - * @static - * @param {number} h - The hue, in the range 0 - 1. - * @param {number} s - The saturation, in the range 0 - 1. - * @param {number} v - The value, in the range 0 - 1. - * @param {object} [out] - An object into which 3 properties will be created: r, g and b. If not provided a new object will be created. - * @return {object} An object with the red, green and blue values set in the r, g and b properties. - */ - HSVtoRGB: function (h, s, v, out) { - - if (out === undefined) { out = Phaser.Color.createColor(0, 0, 0, 1, h, s, 0, v); } - - var r, g, b; - var i = Math.floor(h * 6); - var f = h * 6 - i; - var p = v * (1 - s); - var q = v * (1 - f * s); - var t = v * (1 - (1 - f) * s); - - switch (i % 6) - { - case 0: - r = v; - g = t; - b = p; - break; - case 1: - r = q; - g = v; - b = p; - break; - case 2: - r = p; - g = v; - b = t; - break; - case 3: - r = p; - g = q; - b = v; - break; - case 4: - r = t; - g = p; - b = v; - break; - case 5: - r = v; - g = p; - b = q; - break; - } - - out.r = Math.floor(r * 255); - out.g = Math.floor(g * 255); - out.b = Math.floor(b * 255); - - Phaser.Color.updateColor(out); - - return out; - - }, - - /** - * Converts a hue to an RGB color. - * Based on code by Michael Jackson (https://github.com/mjijackson) - * - * @method Phaser.Color.hueToColor - * @static - * @param {number} p - * @param {number} q - * @param {number} t - * @return {number} The color component value. - */ - hueToColor: function (p, q, t) { - - if (t < 0) - { - t += 1; - } - - if (t > 1) - { - t -= 1; - } - - if (t < 1 / 6) - { - return p + (q - p) * 6 * t; - } - - if (t < 1 / 2) - { - return q; - } - - if (t < 2 / 3) - { - return p + (q - p) * (2 / 3 - t) * 6; - } - - return p; - - }, - - /** - * A utility function to create a lightweight 'color' object with the default components. - * Any components that are not specified will default to zero. - * - * This is useful when you want to use a shared color object for the getPixel and getPixelAt methods. - * - * @author Matt DesLauriers (@mattdesl) - * @method Phaser.Color.createColor - * @static - * @param {number} [r=0] - The red color component, in the range 0 - 255. - * @param {number} [g=0] - The green color component, in the range 0 - 255. - * @param {number} [b=0] - The blue color component, in the range 0 - 255. - * @param {number} [a=1] - The alpha color component, in the range 0 - 1. - * @param {number} [h=0] - The hue, in the range 0 - 1. - * @param {number} [s=0] - The saturation, in the range 0 - 1. - * @param {number} [l=0] - The lightness, in the range 0 - 1. - * @param {number} [v=0] - The value, in the range 0 - 1. - * @return {object} The resulting object with r, g, b, a properties and h, s, l and v. - */ - createColor: function (r, g, b, a, h, s, l, v) { - - var out = { r: r || 0, g: g || 0, b: b || 0, a: a || 1, h: h || 0, s: s || 0, l: l || 0, v: v || 0, color: 0, color32: 0, rgba: '' }; - - return Phaser.Color.updateColor(out); - - }, - - /** - * Takes a color object and updates the rgba, color and color32 properties. - * - * @method Phaser.Color.updateColor - * @static - * @param {object} out - The color object to update. - * @returns {number} A native color value integer (format: 0xAARRGGBB). - */ - updateColor: function (out) { - - out.rgba = 'rgba(' + out.r.toString() + ',' + out.g.toString() + ',' + out.b.toString() + ',' + out.a.toString() + ')'; - out.color = Phaser.Color.getColor(out.r, out.g, out.b); - out.color32 = Phaser.Color.getColor32(out.a * 255, out.r, out.g, out.b); - - return out; - - }, - - /** - * Given an alpha and 3 color values this will return an integer representation of it. - * - * @method Phaser.Color.getColor32 - * @static - * @param {number} a - The alpha color component, in the range 0 - 255. - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @returns {number} A native color value integer (format: 0xAARRGGBB). - */ - getColor32: function (a, r, g, b) { - - return a << 24 | r << 16 | g << 8 | b; - - }, - - /** - * Given 3 color values this will return an integer representation of it. - * - * @method Phaser.Color.getColor - * @static - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @returns {number} A native color value integer (format: 0xRRGGBB). - */ - getColor: function (r, g, b) { - - return r << 16 | g << 8 | b; - - }, - - /** - * Converts the given color values into a string. - * If prefix was '#' it will be in the format `#RRGGBB` otherwise `0xAARRGGBB`. - * - * @method Phaser.Color.RGBtoString - * @static - * @param {number} r - The red color component, in the range 0 - 255. - * @param {number} g - The green color component, in the range 0 - 255. - * @param {number} b - The blue color component, in the range 0 - 255. - * @param {number} [a=255] - The alpha color component, in the range 0 - 255. - * @param {string} [prefix='#'] - The prefix used in the return string. If '#' it will return `#RRGGBB`, else `0xAARRGGBB`. - * @return {string} A string containing the color values. If prefix was '#' it will be in the format `#RRGGBB` otherwise `0xAARRGGBB`. - */ - RGBtoString: function (r, g, b, a, prefix) { - - if (a === undefined) { a = 255; } - if (prefix === undefined) { prefix = '#'; } - - if (prefix === '#') - { - return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); - } - else - { - return '0x' + Phaser.Color.componentToHex(a) + Phaser.Color.componentToHex(r) + Phaser.Color.componentToHex(g) + Phaser.Color.componentToHex(b); - } - - }, - - /** - * Converts a hex string into an integer color value. - * - * @method Phaser.Color.hexToRGB - * @static - * @param {string} hex - The hex string to convert. Can be in the short-hand format `#03f` or `#0033ff`. - * @return {number} The rgb color value in the format 0xAARRGGBB. - */ - hexToRGB: function (hex) { - - var rgb = Phaser.Color.hexToColor(hex); - - if (rgb) - { - return Phaser.Color.getColor32(rgb.a, rgb.r, rgb.g, rgb.b); - } - - }, - - /** - * Converts a hex string into a Phaser Color object. - * - * The hex string can supplied as `'#0033ff'` or the short-hand format of `'#03f'`; it can begin with an optional "#" or "0x", or be unprefixed. - * - * An alpha channel is _not_ supported. - * - * @method Phaser.Color.hexToColor - * @static - * @param {string} hex - The color string in a hex format. - * @param {object} [out] - An object into which 3 properties will be created or set: r, g and b. If not provided a new object will be created. - * @return {object} An object with the red, green and blue values set in the r, g and b properties. - */ - hexToColor: function (hex, out) { - - // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") - hex = hex.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i, function(m, r, g, b) { - return r + r + g + g + b + b; - }); - - var result = /^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - - if (result) - { - var r = parseInt(result[1], 16); - var g = parseInt(result[2], 16); - var b = parseInt(result[3], 16); - - if (!out) - { - out = Phaser.Color.createColor(r, g, b); - } - else - { - out.r = r; - out.g = g; - out.b = b; - } - } - - return out; - - }, - - /** - * Converts a CSS 'web' string into a Phaser Color object. - * - * The web string can be in the format `'rgb(r,g,b)'` or `'rgba(r,g,b,a)'` where r/g/b are in the range [0..255] and a is in the range [0..1]. - * - * @method Phaser.Color.webToColor - * @static - * @param {string} web - The color string in CSS 'web' format. - * @param {object} [out] - An object into which 4 properties will be created: r, g, b and a. If not provided a new object will be created. - * @return {object} An object with the red, green, blue and alpha values set in the r, g, b and a properties. - */ - webToColor: function (web, out) { - - if (!out) - { - out = Phaser.Color.createColor(); - } - - var result = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(web); - - if (result) - { - out.r = parseInt(result[1], 10); - out.g = parseInt(result[2], 10); - out.b = parseInt(result[3], 10); - out.a = result[4] !== undefined ? parseFloat(result[4]) : 1; - Phaser.Color.updateColor(out); - } - - return out; - - }, - - /** - * Converts a value - a "hex" string, a "CSS 'web' string", or a number - into red, green, blue, and alpha components. - * - * The value can be a string (see `hexToColor` and `webToColor` for the supported formats) or a packed integer (see `getRGB`). - * - * An alpha channel is _not_ supported when specifying a hex string. - * - * @method Phaser.Color.valueToColor - * @static - * @param {string|number} value - The color expressed as a recognized string format or a packed integer. - * @param {object} [out] - The object to use for the output. If not provided a new object will be created. - * @return {object} The (`out`) object with the red, green, blue, and alpha values set as the r/g/b/a properties. - */ - valueToColor: function (value, out) { - - // The behavior is not consistent between hexToColor/webToColor on invalid input. - // This unifies both by returning a new object, but returning null may be better. - if (!out) - { - out = Phaser.Color.createColor(); - } - - if (typeof value === 'string') - { - if (value.indexOf('rgb') === 0) - { - return Phaser.Color.webToColor(value, out); - } - else - { - // `hexToColor` does not support alpha; match `createColor`. - out.a = 1; - return Phaser.Color.hexToColor(value, out); - } - } - else if (typeof value === 'number') - { - // `getRGB` does not take optional object to modify; - // alpha is also adjusted to match `createColor`. - var tempColor = Phaser.Color.getRGB(value); - out.r = tempColor.r; - out.g = tempColor.g; - out.b = tempColor.b; - out.a = tempColor.a / 255; - return out; - } - else - { - return out; - } - - }, - - /** - * Return a string containing a hex representation of the given color component. - * - * @method Phaser.Color.componentToHex - * @static - * @param {number} color - The color channel to get the hex value for, must be a value between 0 and 255. - * @returns {string} A string of length 2 characters, i.e. 255 = ff, 100 = 64. - */ - componentToHex: function (color) { - - var hex = color.toString(16); - return hex.length == 1 ? "0" + hex : hex; - - }, - - /** - * Get HSV color wheel values in an array which will be 360 elements in size. - * - * @method Phaser.Color.HSVColorWheel - * @static - * @param {number} [s=1] - The saturation, in the range 0 - 1. - * @param {number} [v=1] - The value, in the range 0 - 1. - * @return {array} An array containing 360 elements corresponding to the HSV color wheel. - */ - HSVColorWheel: function (s, v) { - - if (s === undefined) { s = 1.0; } - if (v === undefined) { v = 1.0; } - - var colors = []; - - for (var c = 0; c <= 359; c++) - { - colors.push(Phaser.Color.HSVtoRGB(c / 359, s, v)); - } - - return colors; - - }, - - /** - * Get HSL color wheel values in an array which will be 360 elements in size. - * - * @method Phaser.Color.HSLColorWheel - * @static - * @param {number} [s=0.5] - The saturation, in the range 0 - 1. - * @param {number} [l=0.5] - The lightness, in the range 0 - 1. - * @return {array} An array containing 360 elements corresponding to the HSL color wheel. - */ - HSLColorWheel: function (s, l) { - - if (s === undefined) { s = 0.5; } - if (l === undefined) { l = 0.5; } - - var colors = []; - - for (var c = 0; c <= 359; c++) - { - colors.push(Phaser.Color.HSLtoRGB(c / 359, s, l)); - } - - return colors; - - }, - - /** - * Interpolates the two given colours based on the supplied step and currentStep properties. - * - * @method Phaser.Color.interpolateColor - * @static - * @param {number} color1 - The first color value. - * @param {number} color2 - The second color value. - * @param {number} steps - The number of steps to run the interpolation over. - * @param {number} currentStep - The currentStep value. If the interpolation will take 100 steps, a currentStep value of 50 would be half-way between the two. - * @param {number} alpha - The alpha of the returned color. - * @returns {number} The interpolated color value. - */ - interpolateColor: function (color1, color2, steps, currentStep, alpha) { - - if (alpha === undefined) { alpha = 255; } - - var src1 = Phaser.Color.getRGB(color1); - var src2 = Phaser.Color.getRGB(color2); - var r = (((src2.red - src1.red) * currentStep) / steps) + src1.red; - var g = (((src2.green - src1.green) * currentStep) / steps) + src1.green; - var b = (((src2.blue - src1.blue) * currentStep) / steps) + src1.blue; - - return Phaser.Color.getColor32(alpha, r, g, b); - - }, - - /** - * Interpolates the two given colours based on the supplied step and currentStep properties. - * - * @method Phaser.Color.interpolateColorWithRGB - * @static - * @param {number} color - The first color value. - * @param {number} r - The red color value, between 0 and 0xFF (255). - * @param {number} g - The green color value, between 0 and 0xFF (255). - * @param {number} b - The blue color value, between 0 and 0xFF (255). - * @param {number} steps - The number of steps to run the interpolation over. - * @param {number} currentStep - The currentStep value. If the interpolation will take 100 steps, a currentStep value of 50 would be half-way between the two. - * @returns {number} The interpolated color value. - */ - interpolateColorWithRGB: function (color, r, g, b, steps, currentStep) { - - var src = Phaser.Color.getRGB(color); - var or = (((r - src.red) * currentStep) / steps) + src.red; - var og = (((g - src.green) * currentStep) / steps) + src.green; - var ob = (((b - src.blue) * currentStep) / steps) + src.blue; - - return Phaser.Color.getColor(or, og, ob); - - }, - - /** - * Interpolates the two given colours based on the supplied step and currentStep properties. - * @method Phaser.Color.interpolateRGB - * @static - * @param {number} r1 - The red color value, between 0 and 0xFF (255). - * @param {number} g1 - The green color value, between 0 and 0xFF (255). - * @param {number} b1 - The blue color value, between 0 and 0xFF (255). - * @param {number} r2 - The red color value, between 0 and 0xFF (255). - * @param {number} g2 - The green color value, between 0 and 0xFF (255). - * @param {number} b2 - The blue color value, between 0 and 0xFF (255). - * @param {number} steps - The number of steps to run the interpolation over. - * @param {number} currentStep - The currentStep value. If the interpolation will take 100 steps, a currentStep value of 50 would be half-way between the two. - * @returns {number} The interpolated color value. - */ - interpolateRGB: function (r1, g1, b1, r2, g2, b2, steps, currentStep) { - - var r = (((r2 - r1) * currentStep) / steps) + r1; - var g = (((g2 - g1) * currentStep) / steps) + g1; - var b = (((b2 - b1) * currentStep) / steps) + b1; - - return Phaser.Color.getColor(r, g, b); - - }, - - /** - * Returns a random color value between black and white - * Set the min value to start each channel from the given offset. - * Set the max value to restrict the maximum color used per channel. - * - * @method Phaser.Color.getRandomColor - * @static - * @param {number} [min=0] - The lowest value to use for the color. - * @param {number} [max=255] - The highest value to use for the color. - * @param {number} [alpha=255] - The alpha value of the returning color (default 255 = fully opaque). - * @returns {number} 32-bit color value with alpha. - */ - getRandomColor: function (min, max, alpha) { - - if (min === undefined) { min = 0; } - if (max === undefined) { max = 255; } - if (alpha === undefined) { alpha = 255; } - - // Sanity checks - if (max > 255 || min > max) - { - return Phaser.Color.getColor(255, 255, 255); - } - - var red = min + Math.round(Math.random() * (max - min)); - var green = min + Math.round(Math.random() * (max - min)); - var blue = min + Math.round(Math.random() * (max - min)); - - return Phaser.Color.getColor32(alpha, red, green, blue); - - }, - - /** - * Return the component parts of a color as an Object with the properties alpha, red, green, blue. - * - * Alpha will only be set if it exist in the given color (0xAARRGGBB) - * - * @method Phaser.Color.getRGB - * @static - * @param {number} color - Color in RGB (0xRRGGBB) or ARGB format (0xAARRGGBB). - * @returns {object} An Object with properties: alpha, red, green, blue (also r, g, b and a). Alpha will only be present if a color value > 16777215 was given. - */ - getRGB: function (color) { - - if (color > 16777215) - { - // The color value has an alpha component - return { - alpha: color >>> 24, - red: color >> 16 & 0xFF, - green: color >> 8 & 0xFF, - blue: color & 0xFF, - a: color >>> 24, - r: color >> 16 & 0xFF, - g: color >> 8 & 0xFF, - b: color & 0xFF - }; - } - else - { - return { - alpha: 255, - red: color >> 16 & 0xFF, - green: color >> 8 & 0xFF, - blue: color & 0xFF, - a: 255, - r: color >> 16 & 0xFF, - g: color >> 8 & 0xFF, - b: color & 0xFF - }; - } - - }, - - /** - * Returns a CSS friendly string value from the given color. - * - * @method Phaser.Color.getWebRGB - * @static - * @param {number|Object} color - Color in RGB (0xRRGGBB), ARGB format (0xAARRGGBB) or an Object with r, g, b, a properties. - * @returns {string} A string in the format: 'rgba(r,g,b,a)' - */ - getWebRGB: function (color) { - - if (typeof color === 'object') - { - return 'rgba(' + color.r.toString() + ',' + color.g.toString() + ',' + color.b.toString() + ',' + (color.a / 255).toString() + ')'; - } - else - { - var rgb = Phaser.Color.getRGB(color); - return 'rgba(' + rgb.r.toString() + ',' + rgb.g.toString() + ',' + rgb.b.toString() + ',' + (rgb.a / 255).toString() + ')'; - } - - }, - - /** - * Given a native color value (in the format 0xAARRGGBB) this will return the Alpha component, as a value between 0 and 255. - * - * @method Phaser.Color.getAlpha - * @static - * @param {number} color - In the format 0xAARRGGBB. - * @returns {number} The Alpha component of the color, will be between 0 and 1 (0 being no Alpha (opaque), 1 full Alpha (transparent)). - */ - getAlpha: function (color) { - return color >>> 24; - }, - - /** - * Given a native color value (in the format 0xAARRGGBB) this will return the Alpha component as a value between 0 and 1. - * - * @method Phaser.Color.getAlphaFloat - * @static - * @param {number} color - In the format 0xAARRGGBB. - * @returns {number} The Alpha component of the color, will be between 0 and 1 (0 being no Alpha (opaque), 1 full Alpha (transparent)). - */ - getAlphaFloat: function (color) { - return (color >>> 24) / 255; - }, - - /** - * Given a native color value (in the format 0xAARRGGBB) this will return the Red component, as a value between 0 and 255. - * - * @method Phaser.Color.getRed - * @static - * @param {number} color In the format 0xAARRGGBB. - * @returns {number} The Red component of the color, will be between 0 and 255 (0 being no color, 255 full Red). - */ - getRed: function (color) { - return color >> 16 & 0xFF; - }, - - /** - * Given a native color value (in the format 0xAARRGGBB) this will return the Green component, as a value between 0 and 255. - * - * @method Phaser.Color.getGreen - * @static - * @param {number} color - In the format 0xAARRGGBB. - * @returns {number} The Green component of the color, will be between 0 and 255 (0 being no color, 255 full Green). - */ - getGreen: function (color) { - return color >> 8 & 0xFF; - }, - - /** - * Given a native color value (in the format 0xAARRGGBB) this will return the Blue component, as a value between 0 and 255. - * - * @method Phaser.Color.getBlue - * @static - * @param {number} color - In the format 0xAARRGGBB. - * @returns {number} The Blue component of the color, will be between 0 and 255 (0 being no color, 255 full Blue). - */ - getBlue: function (color) { - return color & 0xFF; - }, - - /** - * Blends the source color, ignoring the backdrop. - * - * @method Phaser.Color.blendNormal - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendNormal: function (a) { - return a; - }, - - /** - * Selects the lighter of the backdrop and source colors. - * - * @method Phaser.Color.blendLighten - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendLighten: function (a, b) { - return (b > a) ? b : a; - }, - - /** - * Selects the darker of the backdrop and source colors. - * - * @method Phaser.Color.blendDarken - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendDarken: function (a, b) { - return (b > a) ? a : b; - }, - - /** - * Multiplies the backdrop and source color values. - * The result color is always at least as dark as either of the two constituent - * colors. Multiplying any color with black produces black; - * multiplying with white leaves the original color unchanged. - * - * @method Phaser.Color.blendMultiply - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendMultiply: function (a, b) { - return (a * b) / 255; - }, - - /** - * Takes the average of the source and backdrop colors. - * - * @method Phaser.Color.blendAverage - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendAverage: function (a, b) { - return (a + b) / 2; - }, - - /** - * Adds the source and backdrop colors together and returns the value, up to a maximum of 255. - * - * @method Phaser.Color.blendAdd - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendAdd: function (a, b) { - return Math.min(255, a + b); - }, - - /** - * Combines the source and backdrop colors and returns their value minus 255. - * - * @method Phaser.Color.blendSubtract - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendSubtract: function (a, b) { - return Math.max(0, a + b - 255); - }, - - /** - * Subtracts the darker of the two constituent colors from the lighter. - * - * Painting with white inverts the backdrop color; painting with black produces no change. - * - * @method Phaser.Color.blendDifference - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendDifference: function (a, b) { - return Math.abs(a - b); - }, - - /** - * Negation blend mode. - * - * @method Phaser.Color.blendNegation - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendNegation: function (a, b) { - return 255 - Math.abs(255 - a - b); - }, - - /** - * Multiplies the complements of the backdrop and source color values, then complements the result. - * The result color is always at least as light as either of the two constituent colors. - * Screening any color with white produces white; screening with black leaves the original color unchanged. - * - * @method Phaser.Color.blendScreen - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendScreen: function (a, b) { - return 255 - (((255 - a) * (255 - b)) >> 8); - }, - - /** - * Produces an effect similar to that of the Difference mode, but lower in contrast. - * Painting with white inverts the backdrop color; painting with black produces no change. - * - * @method Phaser.Color.blendExclusion - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendExclusion: function (a, b) { - return a + b - 2 * a * b / 255; - }, - - /** - * Multiplies or screens the colors, depending on the backdrop color. - * Source colors overlay the backdrop while preserving its highlights and shadows. - * The backdrop color is not replaced, but is mixed with the source color to reflect the lightness or darkness of the backdrop. - * - * @method Phaser.Color.blendOverlay - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendOverlay: function (a, b) { - return b < 128 ? (2 * a * b / 255) : (255 - 2 * (255 - a) * (255 - b) / 255); - }, - - /** - * Darkens or lightens the colors, depending on the source color value. - * - * If the source color is lighter than 0.5, the backdrop is lightened, as if it were dodged; - * this is useful for adding highlights to a scene. - * - * If the source color is darker than 0.5, the backdrop is darkened, as if it were burned in. - * The degree of lightening or darkening is proportional to the difference between the source color and 0.5; - * if it is equal to 0.5, the backdrop is unchanged. - * - * Painting with pure black or white produces a distinctly darker or lighter area, but does not result in pure black or white. - * The effect is similar to shining a diffused spotlight on the backdrop. - * - * @method Phaser.Color.blendSoftLight - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendSoftLight: function (a, b) { - return b < 128 ? (2 * ((a >> 1) + 64)) * (b / 255) : 255 - (2 * (255 - ((a >> 1) + 64)) * (255 - b) / 255); - }, - - /** - * Multiplies or screens the colors, depending on the source color value. - * - * If the source color is lighter than 0.5, the backdrop is lightened, as if it were screened; - * this is useful for adding highlights to a scene. - * - * If the source color is darker than 0.5, the backdrop is darkened, as if it were multiplied; - * this is useful for adding shadows to a scene. - * - * The degree of lightening or darkening is proportional to the difference between the source color and 0.5; - * if it is equal to 0.5, the backdrop is unchanged. - * - * Painting with pure black or white produces pure black or white. The effect is similar to shining a harsh spotlight on the backdrop. - * - * @method Phaser.Color.blendHardLight - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendHardLight: function (a, b) { - return Phaser.Color.blendOverlay(b, a); - }, - - /** - * Brightens the backdrop color to reflect the source color. - * Painting with black produces no change. - * - * @method Phaser.Color.blendColorDodge - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendColorDodge: function (a, b) { - return b === 255 ? b : Math.min(255, ((a << 8) / (255 - b))); - }, - - /** - * Darkens the backdrop color to reflect the source color. - * Painting with white produces no change. - * - * @method Phaser.Color.blendColorBurn - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendColorBurn: function (a, b) { - return b === 0 ? b : Math.max(0, (255 - ((255 - a) << 8) / b)); - }, - - /** - * An alias for blendAdd, it simply sums the values of the two colors. - * - * @method Phaser.Color.blendLinearDodge - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendLinearDodge: function (a, b) { - return Phaser.Color.blendAdd(a, b); - }, - - /** - * An alias for blendSubtract, it simply sums the values of the two colors and subtracts 255. - * - * @method Phaser.Color.blendLinearBurn - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendLinearBurn: function (a, b) { - return Phaser.Color.blendSubtract(a, b); - }, - - /** - * This blend mode combines Linear Dodge and Linear Burn (rescaled so that neutral colors become middle gray). - * Dodge applies to values of top layer lighter than middle gray, and burn to darker values. - * The calculation simplifies to the sum of bottom layer and twice the top layer, subtract 128. The contrast decreases. - * - * @method Phaser.Color.blendLinearLight - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendLinearLight: function (a, b) { - return b < 128 ? Phaser.Color.blendLinearBurn(a, 2 * b) : Phaser.Color.blendLinearDodge(a, (2 * (b - 128))); - }, - - /** - * This blend mode combines Color Dodge and Color Burn (rescaled so that neutral colors become middle gray). - * Dodge applies when values in the top layer are lighter than middle gray, and burn to darker values. - * The middle gray is the neutral color. When color is lighter than this, this effectively moves the white point of the bottom - * layer down by twice the difference; when it is darker, the black point is moved up by twice the difference. The perceived contrast increases. - * - * @method Phaser.Color.blendVividLight - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendVividLight: function (a, b) { - return b < 128 ? Phaser.Color.blendColorBurn(a, 2 * b) : Phaser.Color.blendColorDodge(a, (2 * (b - 128))); - }, - - /** - * If the backdrop color (light source) is lighter than 50%, the blendDarken mode is used, and colors lighter than the backdrop color do not change. - * If the backdrop color is darker than 50% gray, colors lighter than the blend color are replaced, and colors darker than the blend color do not change. - * - * @method Phaser.Color.blendPinLight - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendPinLight: function (a, b) { - return b < 128 ? Phaser.Color.blendDarken(a, 2 * b) : Phaser.Color.blendLighten(a, (2 * (b - 128))); - }, - - /** - * Runs blendVividLight on the source and backdrop colors. - * If the resulting color is 128 or more, it receives a value of 255; if less than 128, a value of 0. - * Therefore, all blended pixels have red, green, and blue channel values of either 0 or 255. - * This changes all pixels to primary additive colors (red, green, or blue), white, or black. - * - * @method Phaser.Color.blendHardMix - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendHardMix: function (a, b) { - return Phaser.Color.blendVividLight(a, b) < 128 ? 0 : 255; - }, - - /** - * Reflect blend mode. This mode is useful when adding shining objects or light zones to images. - * - * @method Phaser.Color.blendReflect - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendReflect: function (a, b) { - return b === 255 ? b : Math.min(255, (a * a / (255 - b))); - }, - - /** - * Glow blend mode. This mode is a variation of reflect mode with the source and backdrop colors swapped. - * - * @method Phaser.Color.blendGlow - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendGlow: function (a, b) { - return Phaser.Color.blendReflect(b, a); - }, - - /** - * Phoenix blend mode. This subtracts the lighter color from the darker color, and adds 255, giving a bright result. - * - * @method Phaser.Color.blendPhoenix - * @static - * @param {integer} a - The source color to blend, in the range 1 to 255. - * @param {integer} b - The backdrop color to blend, in the range 1 to 255. - * @returns {integer} The blended color value, in the range 1 to 255. - */ - blendPhoenix: function (a, b) { - return Math.min(a, b) - Math.max(a, b) + 255; - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Physics Manager is responsible for looking after all of the running physics systems. -* Phaser supports 4 physics systems: Arcade Physics, P2, Ninja Physics and Box2D via a commercial plugin. -* -* Game Objects (such as Sprites) can only belong to 1 physics system, but you can have multiple systems active in a single game. -* -* For example you could have P2 managing a polygon-built terrain landscape that an vehicle drives over, while it could be firing bullets that use the -* faster (due to being much simpler) Arcade Physics system. -* -* @class Phaser.Physics -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {object} [physicsConfig=null] - A physics configuration object to pass to the Physics world on creation. -*/ -Phaser.Physics = function (game, config) { - - config = config || {}; - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * @property {object} config - The physics configuration object as passed to the game on creation. - */ - this.config = config; - - /** - * @property {Phaser.Physics.Arcade} arcade - The Arcade Physics system. - */ - this.arcade = null; - - /** - * @property {Phaser.Physics.P2} p2 - The P2.JS Physics system. - */ - this.p2 = null; - - /** - * @property {Phaser.Physics.Ninja} ninja - The N+ Ninja Physics system. - */ - this.ninja = null; - - /** - * @property {Phaser.Physics.Box2D} box2d - The Box2D Physics system. - */ - this.box2d = null; - - /** - * @property {Phaser.Physics.Chipmunk} chipmunk - The Chipmunk Physics system (to be done). - */ - this.chipmunk = null; - - /** - * @property {Phaser.Physics.Matter} matter - The MatterJS Physics system (coming soon). - */ - this.matter = null; - - this.parseConfig(); - -}; - -/** -* @const -* @type {number} -*/ -Phaser.Physics.ARCADE = 0; - -/** -* @const -* @type {number} -*/ -Phaser.Physics.P2JS = 1; - -/** -* @const -* @type {number} -*/ -Phaser.Physics.NINJA = 2; - -/** -* @const -* @type {number} -*/ -Phaser.Physics.BOX2D = 3; - -/** -* @const -* @type {number} -*/ -Phaser.Physics.CHIPMUNK = 4; - -/** -* @const -* @type {number} -*/ -Phaser.Physics.MATTERJS = 5; - -Phaser.Physics.prototype = { - - /** - * Parses the Physics Configuration object passed to the Game constructor and starts any physics systems specified within. - * - * @method Phaser.Physics#parseConfig - */ - parseConfig: function () { - - if ((!this.config.hasOwnProperty('arcade') || this.config['arcade'] === true) && Phaser.Physics.hasOwnProperty('Arcade')) - { - // If Arcade isn't specified, we create it automatically if we can - this.arcade = new Phaser.Physics.Arcade(this.game); - } - - if (this.config.hasOwnProperty('ninja') && this.config['ninja'] === true && Phaser.Physics.hasOwnProperty('Ninja')) - { - this.ninja = new Phaser.Physics.Ninja(this.game); - } - - if (this.config.hasOwnProperty('p2') && this.config['p2'] === true && Phaser.Physics.hasOwnProperty('P2')) - { - this.p2 = new Phaser.Physics.P2(this.game, this.config); - } - - if (this.config.hasOwnProperty('box2d') && this.config['box2d'] === true && Phaser.Physics.hasOwnProperty('BOX2D')) - { - this.box2d = new Phaser.Physics.BOX2D(this.game, this.config); - } - - if (this.config.hasOwnProperty('matter') && this.config['matter'] === true && Phaser.Physics.hasOwnProperty('Matter')) - { - this.matter = new Phaser.Physics.Matter(this.game, this.config); - } - - }, - - /** - * This will create an instance of the requested physics simulation. - * Phaser.Physics.Arcade is running by default, but all others need activating directly. - * - * You can start the following physics systems: - * - * Phaser.Physics.P2JS - A full-body advanced physics system by Stefan Hedman. - * Phaser.Physics.NINJA - A port of Metanet Softwares N+ physics system. - * Phaser.Physics.BOX2D - A commercial Phaser Plugin (see http://phaser.io) - * - * Both Ninja Physics and Box2D require their respective plugins to be loaded before you can start them. - * They are not bundled into the core Phaser library. - * - * If the physics world has already been created (i.e. in another state in your game) then - * calling startSystem will reset the physics world, not re-create it. If you need to start them again from their constructors - * then set Phaser.Physics.p2 (or whichever system you want to recreate) to `null` before calling `startSystem`. - * - * @method Phaser.Physics#startSystem - * @param {number} system - The physics system to start: Phaser.Physics.ARCADE, Phaser.Physics.P2JS, Phaser.Physics.NINJA or Phaser.Physics.BOX2D. - */ - startSystem: function (system) { - - if (system === Phaser.Physics.ARCADE) - { - this.arcade = new Phaser.Physics.Arcade(this.game); - } - else if (system === Phaser.Physics.P2JS) - { - if (this.p2 === null) - { - this.p2 = new Phaser.Physics.P2(this.game, this.config); - } - else - { - this.p2.reset(); - } - } - else if (system === Phaser.Physics.NINJA) - { - this.ninja = new Phaser.Physics.Ninja(this.game); - } - else if (system === Phaser.Physics.BOX2D) - { - if (this.box2d === null) - { - this.box2d = new Phaser.Physics.Box2D(this.game, this.config); - } - else - { - this.box2d.reset(); - } - } - else if (system === Phaser.Physics.MATTERJS) - { - if (this.matter === null) - { - this.matter = new Phaser.Physics.Matter(this.game, this.config); - } - else - { - this.matter.reset(); - } - } - - }, - - /** - * This will create a default physics body on the given game object or array of objects. - * A game object can only have 1 physics body active at any one time, and it can't be changed until the object is destroyed. - * It can be for any of the physics systems that have been started: - * - * Phaser.Physics.Arcade - A light weight AABB based collision system with basic separation. - * Phaser.Physics.P2JS - A full-body advanced physics system supporting multiple object shapes, polygon loading, contact materials, springs and constraints. - * Phaser.Physics.NINJA - A port of Metanet Softwares N+ physics system. Advanced AABB and Circle vs. Tile collision. - * Phaser.Physics.BOX2D - A port of https://code.google.com/p/box2d-html5 - * Phaser.Physics.MATTER - A full-body and light-weight advanced physics system (still in development) - * Phaser.Physics.CHIPMUNK is still in development. - * - * If you require more control over what type of body is created, for example to create a Ninja Physics Circle instead of the default AABB, then see the - * individual physics systems `enable` methods instead of using this generic one. - * - * @method Phaser.Physics#enable - * @param {object|array} object - The game object to create the physics body on. Can also be an array of objects, a body will be created on every object in the array. - * @param {number} [system=Phaser.Physics.ARCADE] - The physics system that will be used to create the body. Defaults to Arcade Physics. - * @param {boolean} [debug=false] - Enable the debug drawing for this body. Defaults to false. - */ - enable: function (object, system, debug) { - - if (system === undefined) { system = Phaser.Physics.ARCADE; } - if (debug === undefined) { debug = false; } - - if (system === Phaser.Physics.ARCADE) - { - this.arcade.enable(object); - } - else if (system === Phaser.Physics.P2JS && this.p2) - { - this.p2.enable(object, debug); - } - else if (system === Phaser.Physics.NINJA && this.ninja) - { - this.ninja.enableAABB(object); - } - else if (system === Phaser.Physics.BOX2D && this.box2d) - { - this.box2d.enable(object); - } - else if (system === Phaser.Physics.MATTERJS && this.matter) - { - this.matter.enable(object); - } - else - { - console.warn(object.key + ' is attempting to enable a physics body using an unknown physics system.'); - } - - }, - - /** - * preUpdate checks. - * - * @method Phaser.Physics#preUpdate - * @protected - */ - preUpdate: function () { - - // ArcadePhysics / Ninja don't have a core to preUpdate - - if (this.p2) - { - this.p2.preUpdate(); - } - - if (this.box2d) - { - this.box2d.preUpdate(); - } - - if (this.matter) - { - this.matter.preUpdate(); - } - - }, - - /** - * Updates all running physics systems. - * - * @method Phaser.Physics#update - * @protected - */ - update: function () { - - // ArcadePhysics / Ninja don't have a core to update - - if (this.p2) - { - this.p2.update(); - } - - if (this.box2d) - { - this.box2d.update(); - } - - if (this.matter) - { - this.matter.update(); - } - - }, - - /** - * Updates the physics bounds to match the world dimensions. - * - * @method Phaser.Physics#setBoundsToWorld - * @protected - */ - setBoundsToWorld: function () { - - if (this.arcade) - { - this.arcade.setBoundsToWorld(); - } - - if (this.ninja) - { - this.ninja.setBoundsToWorld(); - } - - if (this.p2) - { - this.p2.setBoundsToWorld(); - } - - if (this.box2d) - { - this.box2d.setBoundsToWorld(); - } - - if (this.matter) - { - this.matter.setBoundsToWorld(); - } - - }, - - /** - * Clears down all active physics systems. This doesn't destroy them, it just clears them of objects and is called when the State changes. - * - * @method Phaser.Physics#clear - * @protected - */ - clear: function () { - - if (this.p2) - { - this.p2.clear(); - } - - if (this.box2d) - { - this.box2d.clear(); - } - - if (this.matter) - { - this.matter.clear(); - } - - }, - - /** - * Resets the active physics system. Called automatically on a Phaser.State swap. - * - * @method Phaser.Physics#reset - * @protected - */ - reset: function () { - - if (this.p2) - { - this.p2.reset(); - } - - if (this.box2d) - { - this.box2d.reset(); - } - - if (this.matter) - { - this.matter.reset(); - } - - }, - - /** - * Destroys all active physics systems. Usually only called on a Game Shutdown, not on a State swap. - * - * @method Phaser.Physics#destroy - */ - destroy: function () { - - if (this.p2) - { - this.p2.destroy(); - } - - if (this.box2d) - { - this.box2d.destroy(); - } - - if (this.matter) - { - this.matter.destroy(); - } - - this.arcade = null; - this.ninja = null; - this.p2 = null; - this.box2d = null; - this.matter = null; - - } - -}; - -Phaser.Physics.prototype.constructor = Phaser.Physics; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Arcade Physics world. Contains Arcade Physics related collision, overlap and motion methods. -* -* @class Phaser.Physics.Arcade -* @constructor -* @param {Phaser.Game} game - reference to the current game instance. -*/ -Phaser.Physics.Arcade = function (game) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * @property {Phaser.Point} gravity - The World gravity setting. Defaults to x: 0, y: 0, or no gravity. - */ - this.gravity = new Phaser.Point(); - - /** - * @property {Phaser.Rectangle} bounds - The bounds inside of which the physics world exists. Defaults to match the world bounds. - */ - this.bounds = new Phaser.Rectangle(0, 0, game.world.width, game.world.height); - - /** - * Set the checkCollision properties to control for which bounds collision is processed. - * For example checkCollision.down = false means Bodies cannot collide with the World.bounds.bottom. - * @property {object} checkCollision - An object containing allowed collision flags. - */ - this.checkCollision = { up: true, down: true, left: true, right: true }; - - /** - * @property {number} maxObjects - Used by the QuadTree to set the maximum number of objects per quad. - */ - this.maxObjects = 10; - - /** - * @property {number} maxLevels - Used by the QuadTree to set the maximum number of iteration levels. - */ - this.maxLevels = 4; - - /** - * @property {number} OVERLAP_BIAS - A value added to the delta values during collision checks. - */ - this.OVERLAP_BIAS = 4; - - /** - * @property {boolean} forceX - If true World.separate will always separate on the X axis before Y. Otherwise it will check gravity totals first. - */ - this.forceX = false; - - /** - * @property {number} sortDirection - Used when colliding a Sprite vs. a Group, or a Group vs. a Group, this defines the direction the sort is based on. Default is Phaser.Physics.Arcade.LEFT_RIGHT. - * @default - */ - this.sortDirection = Phaser.Physics.Arcade.LEFT_RIGHT; - - /** - * @property {boolean} skipQuadTree - If true the QuadTree will not be used for any collision. QuadTrees are great if objects are well spread out in your game, otherwise they are a performance hit. If you enable this you can disable on a per body basis via `Body.skipQuadTree`. - */ - this.skipQuadTree = true; - - /** - * @property {boolean} isPaused - If `true` the `Body.preUpdate` method will be skipped, halting all motion for all bodies. Note that other methods such as `collide` will still work, so be careful not to call them on paused bodies. - */ - this.isPaused = false; - - /** - * @property {Phaser.QuadTree} quadTree - The world QuadTree. - */ - this.quadTree = new Phaser.QuadTree(this.game.world.bounds.x, this.game.world.bounds.y, this.game.world.bounds.width, this.game.world.bounds.height, this.maxObjects, this.maxLevels); - - /** - * @property {number} _total - Internal cache var. - * @private - */ - this._total = 0; - - // By default we want the bounds the same size as the world bounds - this.setBoundsToWorld(); - -}; - -Phaser.Physics.Arcade.prototype.constructor = Phaser.Physics.Arcade; - -/** -* A constant used for the sortDirection value. -* Use this if you don't wish to perform any pre-collision sorting at all, or will manually sort your Groups. -* @constant -* @type {number} -*/ -Phaser.Physics.Arcade.SORT_NONE = 0; - -/** -* A constant used for the sortDirection value. -* Use this if your game world is wide but short and scrolls from the left to the right (i.e. Mario) -* @constant -* @type {number} -*/ -Phaser.Physics.Arcade.LEFT_RIGHT = 1; - -/** -* A constant used for the sortDirection value. -* Use this if your game world is wide but short and scrolls from the right to the left (i.e. Mario backwards) -* @constant -* @type {number} -*/ -Phaser.Physics.Arcade.RIGHT_LEFT = 2; - -/** -* A constant used for the sortDirection value. -* Use this if your game world is narrow but tall and scrolls from the top to the bottom (i.e. Dig Dug) -* @constant -* @type {number} -*/ -Phaser.Physics.Arcade.TOP_BOTTOM = 3; - -/** -* A constant used for the sortDirection value. -* Use this if your game world is narrow but tall and scrolls from the bottom to the top (i.e. Commando or a vertically scrolling shoot-em-up) -* @constant -* @type {number} -*/ -Phaser.Physics.Arcade.BOTTOM_TOP = 4; - -Phaser.Physics.Arcade.prototype = { - - /** - * Updates the size of this physics world. - * - * @method Phaser.Physics.Arcade#setBounds - * @param {number} x - Top left most corner of the world. - * @param {number} y - Top left most corner of the world. - * @param {number} width - New width of the world. Can never be smaller than the Game.width. - * @param {number} height - New height of the world. Can never be smaller than the Game.height. - */ - setBounds: function (x, y, width, height) { - - this.bounds.setTo(x, y, width, height); - - }, - - /** - * Updates the size of this physics world to match the size of the game world. - * - * @method Phaser.Physics.Arcade#setBoundsToWorld - */ - setBoundsToWorld: function () { - - this.bounds.copyFrom(this.game.world.bounds); - - }, - - /** - * This will create an Arcade Physics body on the given game object or array of game objects. - * A game object can only have 1 physics body active at any one time, and it can't be changed until the object is destroyed. - * - * @method Phaser.Physics.Arcade#enable - * @param {object|array|Phaser.Group} object - The game object to create the physics body on. Can also be an array or Group of objects, a body will be created on every child that has a `body` property. - * @param {boolean} [children=true] - Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - */ - enable: function (object, children) { - - if (children === undefined) { children = true; } - - var i = 1; - - if (Array.isArray(object)) - { - i = object.length; - - while (i--) - { - if (object[i] instanceof Phaser.Group) - { - // If it's a Group then we do it on the children regardless - this.enable(object[i].children, children); - } - else - { - this.enableBody(object[i]); - - if (children && object[i].hasOwnProperty('children') && object[i].children.length > 0) - { - this.enable(object[i], true); - } - } - } - } - else - { - if (object instanceof Phaser.Group) - { - // If it's a Group then we do it on the children regardless - this.enable(object.children, children); - } - else - { - this.enableBody(object); - - if (children && object.hasOwnProperty('children') && object.children.length > 0) - { - this.enable(object.children, true); - } - } - } - - }, - - /** - * Creates an Arcade Physics body on the given game object. - * - * A game object can only have 1 physics body active at any one time, and it can't be changed until the body is nulled. - * - * When you add an Arcade Physics body to an object it will automatically add the object into its parent Groups hash array. - * - * @method Phaser.Physics.Arcade#enableBody - * @param {object} object - The game object to create the physics body on. A body will only be created if this object has a null `body` property. - */ - enableBody: function (object) { - - if (object.hasOwnProperty('body') && object.body === null) - { - object.body = new Phaser.Physics.Arcade.Body(object); - - if (object.parent && object.parent instanceof Phaser.Group) - { - object.parent.addToHash(object); - } - } - - }, - - /** - * Called automatically by a Physics body, it updates all motion related values on the Body unless `World.isPaused` is `true`. - * - * @method Phaser.Physics.Arcade#updateMotion - * @param {Phaser.Physics.Arcade.Body} The Body object to be updated. - */ - updateMotion: function (body) { - - var velocityDelta = this.computeVelocity(0, body, body.angularVelocity, body.angularAcceleration, body.angularDrag, body.maxAngular) - body.angularVelocity; - body.angularVelocity += velocityDelta; - body.rotation += (body.angularVelocity * this.game.time.physicsElapsed); - - body.velocity.x = this.computeVelocity(1, body, body.velocity.x, body.acceleration.x, body.drag.x, body.maxVelocity.x); - body.velocity.y = this.computeVelocity(2, body, body.velocity.y, body.acceleration.y, body.drag.y, body.maxVelocity.y); - - }, - - /** - * A tween-like function that takes a starting velocity and some other factors and returns an altered velocity. - * Based on a function in Flixel by @ADAMATOMIC - * - * @method Phaser.Physics.Arcade#computeVelocity - * @param {number} axis - 0 for nothing, 1 for horizontal, 2 for vertical. - * @param {Phaser.Physics.Arcade.Body} body - The Body object to be updated. - * @param {number} velocity - Any component of velocity (e.g. 20). - * @param {number} acceleration - Rate at which the velocity is changing. - * @param {number} drag - Really kind of a deceleration, this is how much the velocity changes if Acceleration is not set. - * @param {number} [max=10000] - An absolute value cap for the velocity. - * @return {number} The altered Velocity value. - */ - computeVelocity: function (axis, body, velocity, acceleration, drag, max) { - - if (max === undefined) { max = 10000; } - - if (axis === 1 && body.allowGravity) - { - velocity += (this.gravity.x + body.gravity.x) * this.game.time.physicsElapsed; - } - else if (axis === 2 && body.allowGravity) - { - velocity += (this.gravity.y + body.gravity.y) * this.game.time.physicsElapsed; - } - - if (acceleration) - { - velocity += acceleration * this.game.time.physicsElapsed; - } - else if (drag) - { - drag *= this.game.time.physicsElapsed; - - if (velocity - drag > 0) - { - velocity -= drag; - } - else if (velocity + drag < 0) - { - velocity += drag; - } - else - { - velocity = 0; - } - } - - if (velocity > max) - { - velocity = max; - } - else if (velocity < -max) - { - velocity = -max; - } - - return velocity; - - }, - - /** - * Checks for overlaps between two game objects. The objects can be Sprites, Groups or Emitters. - * You can perform Sprite vs. Sprite, Sprite vs. Group and Group vs. Group overlap checks. - * Unlike collide the objects are NOT automatically separated or have any physics applied, they merely test for overlap results. - * Both the first and second parameter can be arrays of objects, of differing types. - * If two arrays are passed, the contents of the first parameter will be tested against all contents of the 2nd parameter. - * NOTE: This function is not recursive, and will not test against children of objects passed (i.e. Groups within Groups). - * - * @method Phaser.Physics.Arcade#overlap - * @param {Phaser.Sprite|Phaser.Group|Phaser.Particles.Emitter|array} object1 - The first object or array of objects to check. Can be Phaser.Sprite, Phaser.Group or Phaser.Particles.Emitter. - * @param {Phaser.Sprite|Phaser.Group|Phaser.Particles.Emitter|array} object2 - The second object or array of objects to check. Can be Phaser.Sprite, Phaser.Group or Phaser.Particles.Emitter. - * @param {function} [overlapCallback=null] - An optional callback function that is called if the objects overlap. The two objects will be passed to this function in the same order in which you specified them, unless you are checking Group vs. Sprite, in which case Sprite will always be the first parameter. - * @param {function} [processCallback=null] - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then `overlapCallback` will only be called if this callback returns `true`. - * @param {object} [callbackContext] - The context in which to run the callbacks. - * @return {boolean} True if an overlap occurred otherwise false. - */ - overlap: function (object1, object2, overlapCallback, processCallback, callbackContext) { - - overlapCallback = overlapCallback || null; - processCallback = processCallback || null; - callbackContext = callbackContext || overlapCallback; - - this._total = 0; - - if (!Array.isArray(object1) && Array.isArray(object2)) - { - for (var i = 0; i < object2.length; i++) - { - this.collideHandler(object1, object2[i], overlapCallback, processCallback, callbackContext, true); - } - } - else if (Array.isArray(object1) && !Array.isArray(object2)) - { - for (var i = 0; i < object1.length; i++) - { - this.collideHandler(object1[i], object2, overlapCallback, processCallback, callbackContext, true); - } - } - else if (Array.isArray(object1) && Array.isArray(object2)) - { - for (var i = 0; i < object1.length; i++) - { - for (var j = 0; j < object2.length; j++) - { - this.collideHandler(object1[i], object2[j], overlapCallback, processCallback, callbackContext, true); - } - } - } - else - { - this.collideHandler(object1, object2, overlapCallback, processCallback, callbackContext, true); - } - - return (this._total > 0); - - }, - - /** - * Checks for collision between two game objects. You can perform Sprite vs. Sprite, Sprite vs. Group, Group vs. Group, Sprite vs. Tilemap Layer or Group vs. Tilemap Layer collisions. - * Both the first and second parameter can be arrays of objects, of differing types. - * If two arrays are passed, the contents of the first parameter will be tested against all contents of the 2nd parameter. - * The objects are also automatically separated. If you don't require separation then use ArcadePhysics.overlap instead. - * An optional processCallback can be provided. If given this function will be called when two sprites are found to be colliding. It is called before any separation takes place, - * giving you the chance to perform additional checks. If the function returns true then the collision and separation is carried out. If it returns false it is skipped. - * The collideCallback is an optional function that is only called if two sprites collide. If a processCallback has been set then it needs to return true for collideCallback to be called. - * NOTE: This function is not recursive, and will not test against children of objects passed (i.e. Groups or Tilemaps within other Groups). - * - * @method Phaser.Physics.Arcade#collide - * @param {Phaser.Sprite|Phaser.Group|Phaser.Particles.Emitter|Phaser.TilemapLayer|array} object1 - The first object or array of objects to check. Can be Phaser.Sprite, Phaser.Group, Phaser.Particles.Emitter, or Phaser.TilemapLayer. - * @param {Phaser.Sprite|Phaser.Group|Phaser.Particles.Emitter|Phaser.TilemapLayer|array} object2 - The second object or array of objects to check. Can be Phaser.Sprite, Phaser.Group, Phaser.Particles.Emitter or Phaser.TilemapLayer. - * @param {function} [collideCallback=null] - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them, unless you are colliding Group vs. Sprite, in which case Sprite will always be the first parameter. - * @param {function} [processCallback=null] - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them, unless you are colliding Group vs. Sprite, in which case Sprite will always be the first parameter. - * @param {object} [callbackContext] - The context in which to run the callbacks. - * @return {boolean} True if a collision occurred otherwise false. - */ - collide: function (object1, object2, collideCallback, processCallback, callbackContext) { - - collideCallback = collideCallback || null; - processCallback = processCallback || null; - callbackContext = callbackContext || collideCallback; - - this._total = 0; - - if (!Array.isArray(object1) && Array.isArray(object2)) - { - for (var i = 0; i < object2.length; i++) - { - this.collideHandler(object1, object2[i], collideCallback, processCallback, callbackContext, false); - } - } - else if (Array.isArray(object1) && !Array.isArray(object2)) - { - for (var i = 0; i < object1.length; i++) - { - this.collideHandler(object1[i], object2, collideCallback, processCallback, callbackContext, false); - } - } - else if (Array.isArray(object1) && Array.isArray(object2)) - { - for (var i = 0; i < object1.length; i++) - { - for (var j = 0; j < object2.length; j++) - { - this.collideHandler(object1[i], object2[j], collideCallback, processCallback, callbackContext, false); - } - } - } - else - { - this.collideHandler(object1, object2, collideCallback, processCallback, callbackContext, false); - } - - return (this._total > 0); - - }, - - /** - * A Sort function for sorting two bodies based on a LEFT to RIGHT sort direction. - * - * This is called automatically by World.sort - * - * @method Phaser.Physics.Arcade#sortLeftRight - * @param {Phaser.Sprite} a - The first Sprite to test. The Sprite must have an Arcade Physics Body. - * @param {Phaser.Sprite} b - The second Sprite to test. The Sprite must have an Arcade Physics Body. - * @return {integer} A negative value if `a > b`, a positive value if `a < b` or 0 if `a === b` or the bodies are invalid. - */ - sortLeftRight: function (a, b) { - - if (!a.body || !b.body) - { - return 0; - } - - return a.body.x - b.body.x; - - }, - - /** - * A Sort function for sorting two bodies based on a RIGHT to LEFT sort direction. - * - * This is called automatically by World.sort - * - * @method Phaser.Physics.Arcade#sortRightLeft - * @param {Phaser.Sprite} a - The first Sprite to test. The Sprite must have an Arcade Physics Body. - * @param {Phaser.Sprite} b - The second Sprite to test. The Sprite must have an Arcade Physics Body. - * @return {integer} A negative value if `a > b`, a positive value if `a < b` or 0 if `a === b` or the bodies are invalid. - */ - sortRightLeft: function (a, b) { - - if (!a.body || !b.body) - { - return 0; - } - - return b.body.x - a.body.x; - - }, - - /** - * A Sort function for sorting two bodies based on a TOP to BOTTOM sort direction. - * - * This is called automatically by World.sort - * - * @method Phaser.Physics.Arcade#sortTopBottom - * @param {Phaser.Sprite} a - The first Sprite to test. The Sprite must have an Arcade Physics Body. - * @param {Phaser.Sprite} b - The second Sprite to test. The Sprite must have an Arcade Physics Body. - * @return {integer} A negative value if `a > b`, a positive value if `a < b` or 0 if `a === b` or the bodies are invalid. - */ - sortTopBottom: function (a, b) { - - if (!a.body || !b.body) - { - return 0; - } - - return a.body.y - b.body.y; - - }, - - /** - * A Sort function for sorting two bodies based on a BOTTOM to TOP sort direction. - * - * This is called automatically by World.sort - * - * @method Phaser.Physics.Arcade#sortBottomTop - * @param {Phaser.Sprite} a - The first Sprite to test. The Sprite must have an Arcade Physics Body. - * @param {Phaser.Sprite} b - The second Sprite to test. The Sprite must have an Arcade Physics Body. - * @return {integer} A negative value if `a > b`, a positive value if `a < b` or 0 if `a === b` or the bodies are invalid. - */ - sortBottomTop: function (a, b) { - - if (!a.body || !b.body) - { - return 0; - } - - return b.body.y - a.body.y; - - }, - - /** - * This method will sort a Groups hash array. - * - * If the Group has `physicsSortDirection` set it will use the sort direction defined. - * - * Otherwise if the sortDirection parameter is undefined, or Group.physicsSortDirection is null, it will use Phaser.Physics.Arcade.sortDirection. - * - * By changing Group.physicsSortDirection you can customise each Group to sort in a different order. - * - * @method Phaser.Physics.Arcade#sort - * @param {Phaser.Group} group - The Group to sort. - * @param {integer} [sortDirection] - The sort direction used to sort this Group. - */ - sort: function (group, sortDirection) { - - if (group.physicsSortDirection !== null) - { - sortDirection = group.physicsSortDirection; - } - else - { - if (sortDirection === undefined) { sortDirection = this.sortDirection; } - } - - if (sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) - { - // Game world is say 2000x600 and you start at 0 - group.hash.sort(this.sortLeftRight); - } - else if (sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) - { - // Game world is say 2000x600 and you start at 2000 - group.hash.sort(this.sortRightLeft); - } - else if (sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) - { - // Game world is say 800x2000 and you start at 0 - group.hash.sort(this.sortTopBottom); - } - else if (sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) - { - // Game world is say 800x2000 and you start at 2000 - group.hash.sort(this.sortBottomTop); - } - - }, - - /** - * Internal collision handler. - * - * @method Phaser.Physics.Arcade#collideHandler - * @private - * @param {Phaser.Sprite|Phaser.Group|Phaser.Particles.Emitter|Phaser.TilemapLayer} object1 - The first object to check. Can be an instance of Phaser.Sprite, Phaser.Group, Phaser.Particles.Emitter, or Phaser.TilemapLayer. - * @param {Phaser.Sprite|Phaser.Group|Phaser.Particles.Emitter|Phaser.TilemapLayer} object2 - The second object to check. Can be an instance of Phaser.Sprite, Phaser.Group, Phaser.Particles.Emitter or Phaser.TilemapLayer. Can also be an array of objects to check. - * @param {function} collideCallback - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them. - * @param {function} processCallback - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them. - * @param {object} callbackContext - The context in which to run the callbacks. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - */ - collideHandler: function (object1, object2, collideCallback, processCallback, callbackContext, overlapOnly) { - - // Only collide valid objects - if (object2 === undefined && object1.physicsType === Phaser.GROUP) - { - this.sort(object1); - this.collideGroupVsSelf(object1, collideCallback, processCallback, callbackContext, overlapOnly); - return; - } - - // If neither of the objects are set or exist then bail out - if (!object1 || !object2 || !object1.exists || !object2.exists) - { - return; - } - - // Groups? Sort them - if (this.sortDirection !== Phaser.Physics.Arcade.SORT_NONE) - { - if (object1.physicsType === Phaser.GROUP) - { - this.sort(object1); - } - - if (object2.physicsType === Phaser.GROUP) - { - this.sort(object2); - } - } - - // SPRITES - if (object1.physicsType === Phaser.SPRITE) - { - if (object2.physicsType === Phaser.SPRITE) - { - this.collideSpriteVsSprite(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly); - } - else if (object2.physicsType === Phaser.GROUP) - { - this.collideSpriteVsGroup(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly); - } - else if (object2.physicsType === Phaser.TILEMAPLAYER) - { - this.collideSpriteVsTilemapLayer(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly); - } - } - // GROUPS - else if (object1.physicsType === Phaser.GROUP) - { - if (object2.physicsType === Phaser.SPRITE) - { - this.collideSpriteVsGroup(object2, object1, collideCallback, processCallback, callbackContext, overlapOnly); - } - else if (object2.physicsType === Phaser.GROUP) - { - this.collideGroupVsGroup(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly); - } - else if (object2.physicsType === Phaser.TILEMAPLAYER) - { - this.collideGroupVsTilemapLayer(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly); - } - } - // TILEMAP LAYERS - else if (object1.physicsType === Phaser.TILEMAPLAYER) - { - if (object2.physicsType === Phaser.SPRITE) - { - this.collideSpriteVsTilemapLayer(object2, object1, collideCallback, processCallback, callbackContext, overlapOnly); - } - else if (object2.physicsType === Phaser.GROUP) - { - this.collideGroupVsTilemapLayer(object2, object1, collideCallback, processCallback, callbackContext, overlapOnly); - } - } - - }, - - /** - * An internal function. Use Phaser.Physics.Arcade.collide instead. - * - * @method Phaser.Physics.Arcade#collideSpriteVsSprite - * @private - * @param {Phaser.Sprite} sprite1 - The first sprite to check. - * @param {Phaser.Sprite} sprite2 - The second sprite to check. - * @param {function} collideCallback - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them. - * @param {function} processCallback - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them. - * @param {object} callbackContext - The context in which to run the callbacks. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - * @return {boolean} True if there was a collision, otherwise false. - */ - collideSpriteVsSprite: function (sprite1, sprite2, collideCallback, processCallback, callbackContext, overlapOnly) { - - if (!sprite1.body || !sprite2.body) - { - return false; - } - - if (this.separate(sprite1.body, sprite2.body, processCallback, callbackContext, overlapOnly)) - { - if (collideCallback) - { - collideCallback.call(callbackContext, sprite1, sprite2); - } - - this._total++; - } - - return true; - - }, - - /** - * An internal function. Use Phaser.Physics.Arcade.collide instead. - * - * @method Phaser.Physics.Arcade#collideSpriteVsGroup - * @private - * @param {Phaser.Sprite} sprite - The sprite to check. - * @param {Phaser.Group} group - The Group to check. - * @param {function} collideCallback - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them. - * @param {function} processCallback - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them. - * @param {object} callbackContext - The context in which to run the callbacks. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - */ - collideSpriteVsGroup: function (sprite, group, collideCallback, processCallback, callbackContext, overlapOnly) { - - if (group.length === 0 || !sprite.body) - { - return; - } - - if (this.skipQuadTree || sprite.body.skipQuadTree) - { - var bounds = {}; - - for (var i = 0; i < group.hash.length; i++) - { - var object1 = group.hash[i]; - - // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!object1 || !object1.exists || !object1.body) - { - continue; - } - - // Inject the Body bounds data into the bounds object - bounds = object1.body.getBounds(bounds); - - // Skip items either side of the sprite - if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) - { - if (sprite.body.right < bounds.x) - { - break; - } - else if (bounds.right < sprite.body.x) - { - continue; - } - } - else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) - { - if (sprite.body.x > bounds.right) - { - break; - } - else if (bounds.x > sprite.body.right) - { - continue; - } - } - else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) - { - if (sprite.body.bottom < bounds.y) - { - break; - } - else if (bounds.bottom < sprite.body.y) - { - continue; - } - } - else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) - { - if (sprite.body.y > bounds.bottom) - { - break; - } - else if (bounds.y > sprite.body.bottom) - { - continue; - } - } - - this.collideSpriteVsSprite(sprite, object1, collideCallback, processCallback, callbackContext, overlapOnly); - } - } - else - { - // What is the sprite colliding with in the quadtree? - this.quadTree.clear(); - - this.quadTree.reset(this.game.world.bounds.x, this.game.world.bounds.y, this.game.world.bounds.width, this.game.world.bounds.height, this.maxObjects, this.maxLevels); - - this.quadTree.populate(group); - - var items = this.quadTree.retrieve(sprite); - - for (var i = 0; i < items.length; i++) - { - // We have our potential suspects, are they in this group? - if (this.separate(sprite.body, items[i], processCallback, callbackContext, overlapOnly)) - { - if (collideCallback) - { - collideCallback.call(callbackContext, sprite, items[i].sprite); - } - - this._total++; - } - } - } - - }, - - /** - * An internal function. Use Phaser.Physics.Arcade.collide instead. - * - * @method Phaser.Physics.Arcade#collideGroupVsSelf - * @private - * @param {Phaser.Group} group - The Group to check. - * @param {function} collideCallback - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them. - * @param {function} processCallback - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them. - * @param {object} callbackContext - The context in which to run the callbacks. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - * @return {boolean} True if there was a collision, otherwise false. - */ - collideGroupVsSelf: function (group, collideCallback, processCallback, callbackContext, overlapOnly) { - - if (group.length === 0) - { - return; - } - - for (var i = 0; i < group.hash.length; i++) - { - var bounds1 = {}; - var object1 = group.hash[i]; - - // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!object1 || !object1.exists || !object1.body) - { - continue; - } - - // Inject the Body bounds data into the bounds1 object - bounds1 = object1.body.getBounds(bounds1); - - for (var j = i + 1; j < group.hash.length; j++) - { - var bounds2 = {}; - var object2 = group.hash[j]; - - // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!object2 || !object2.exists || !object2.body) - { - continue; - } - - // Inject the Body bounds data into the bounds2 object - bounds2 = object2.body.getBounds(bounds2); - - // Skip items either side of the sprite - if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) - { - if (bounds1.right < bounds2.x) - { - break; - } - else if (bounds2.right < bounds1.x) - { - continue; - } - } - else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) - { - if (bounds1.x > bounds2.right) - { - continue; - } - else if (bounds2.x > bounds1.right) - { - break; - } - } - else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) - { - if (bounds1.bottom < bounds2.y) - { - continue; - } - else if (bounds2.bottom < bounds1.y) - { - break; - } - } - else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) - { - if (bounds1.y > bounds2.bottom) - { - continue; - } - else if (bounds2.y > object1.body.bottom) - { - break; - } - } - - this.collideSpriteVsSprite(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly); - } - } - - }, - - /** - * An internal function. Use Phaser.Physics.Arcade.collide instead. - * - * @method Phaser.Physics.Arcade#collideGroupVsGroup - * @private - * @param {Phaser.Group} group1 - The first Group to check. - * @param {Phaser.Group} group2 - The second Group to check. - * @param {function} collideCallback - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them. - * @param {function} processCallback - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them. - * @param {object} callbackContext - The context in which to run the callbacks. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - */ - collideGroupVsGroup: function (group1, group2, collideCallback, processCallback, callbackContext, overlapOnly) { - - if (group1.length === 0 || group2.length === 0) - { - return; - } - - for (var i = 0; i < group1.children.length; i++) - { - if (group1.children[i].exists) - { - if (group1.children[i].physicsType === Phaser.GROUP) - { - this.collideGroupVsGroup(group1.children[i], group2, collideCallback, processCallback, callbackContext, overlapOnly); - } - else - { - this.collideSpriteVsGroup(group1.children[i], group2, collideCallback, processCallback, callbackContext, overlapOnly); - } - } - } - - }, - - /** - * The core separation function to separate two physics bodies. - * - * @private - * @method Phaser.Physics.Arcade#separate - * @param {Phaser.Physics.Arcade.Body} body1 - The first Body object to separate. - * @param {Phaser.Physics.Arcade.Body} body2 - The second Body object to separate. - * @param {function} [processCallback=null] - A callback function that lets you perform additional checks against the two objects if they overlap. If this function is set then the sprites will only be collided if it returns true. - * @param {object} [callbackContext] - The context in which to run the process callback. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - * @return {boolean} Returns true if the bodies collided, otherwise false. - */ - separate: function (body1, body2, processCallback, callbackContext, overlapOnly) { - - if (!body1.enable || !body2.enable || !this.intersects(body1, body2)) - { - return false; - } - - // They overlap. Is there a custom process callback? If it returns true then we can carry on, otherwise we should abort. - if (processCallback && processCallback.call(callbackContext, body1.sprite, body2.sprite) === false) - { - return false; - } - - // Circle vs. Circle quick bail out - if (body1.isCircle && body2.isCircle) - { - return this.separateCircle(body1, body2, overlapOnly); - } - - // We define the behavior of bodies in a collision circle and rectangle - // If a collision occurs in the corner points of the rectangle, the body behave like circles - - // Either body1 or body2 is a circle - if (body1.isCircle !== body2.isCircle) - { - var bodyRect = (body1.isCircle) ? body2 : body1; - var bodyCircle = (body1.isCircle) ? body1 : body2; - - var rect = { - x: bodyRect.x, - y: bodyRect.y, - right: bodyRect.right, - bottom: bodyRect.bottom - }; - - var circle = { - x: bodyCircle.x + bodyCircle.radius, - y: bodyCircle.y + bodyCircle.radius - }; - - if (circle.y < rect.y || circle.y > rect.bottom) - { - if (circle.x < rect.x || circle.x > rect.right) - { - return this.separateCircle(body1, body2, overlapOnly); - } - } - } - - var resultX = false; - var resultY = false; - - // Do we separate on x or y first? - if (this.forceX || Math.abs(this.gravity.y + body1.gravity.y) < Math.abs(this.gravity.x + body1.gravity.x)) - { - resultX = this.separateX(body1, body2, overlapOnly); - - // Are they still intersecting? Let's do the other axis then - if (this.intersects(body1, body2)) - { - resultY = this.separateY(body1, body2, overlapOnly); - } - } - else - { - resultY = this.separateY(body1, body2, overlapOnly); - - // Are they still intersecting? Let's do the other axis then - if (this.intersects(body1, body2)) - { - resultX = this.separateX(body1, body2, overlapOnly); - } - } - - var result = (resultX || resultY); - - if (result) - { - if (overlapOnly) - { - if (body1.onOverlap) - { - body1.onOverlap.dispatch(body1.sprite, body2.sprite); - } - - if (body2.onOverlap) - { - body2.onOverlap.dispatch(body2.sprite, body1.sprite); - } - } - else - { - if (body1.onCollide) - { - body1.onCollide.dispatch(body1.sprite, body2.sprite); - } - - if (body2.onCollide) - { - body2.onCollide.dispatch(body2.sprite, body1.sprite); - } - } - } - - return result; - - }, - - /** - * Check for intersection against two bodies. - * - * @method Phaser.Physics.Arcade#intersects - * @param {Phaser.Physics.Arcade.Body} body1 - The first Body object to check. - * @param {Phaser.Physics.Arcade.Body} body2 - The second Body object to check. - * @return {boolean} True if they intersect, otherwise false. - */ - intersects: function (body1, body2) { - - if (body1 === body2) - { - return false; - } - - if (body1.isCircle) - { - if (body2.isCircle) - { - // Circle vs. Circle - return Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y) <= (body1.radius + body2.radius); - } - else - { - // Circle vs. Rect - return this.circleBodyIntersects(body1, body2); - } - } - else - { - if (body2.isCircle) - { - // Rect vs. Circle - return this.circleBodyIntersects(body2, body1); - } - else - { - // Rect vs. Rect - if (body1.right <= body2.position.x) - { - return false; - } - - if (body1.bottom <= body2.position.y) - { - return false; - } - - if (body1.position.x >= body2.right) - { - return false; - } - - if (body1.position.y >= body2.bottom) - { - return false; - } - - return true; - } - } - - }, - - /** - * Checks to see if a circular Body intersects with a Rectangular Body. - * - * @method Phaser.Physics.Arcade#circleBodyIntersects - * @param {Phaser.Physics.Arcade.Body} circle - The Body with `isCircle` set. - * @param {Phaser.Physics.Arcade.Body} body - The Body with `isCircle` not set (i.e. uses Rectangle shape) - * @return {boolean} Returns true if the bodies intersect, otherwise false. - */ - circleBodyIntersects: function (circle, body) { - - var x = Phaser.Math.clamp(circle.center.x, body.left, body.right); - var y = Phaser.Math.clamp(circle.center.y, body.top, body.bottom); - - var dx = (circle.center.x - x) * (circle.center.x - x); - var dy = (circle.center.y - y) * (circle.center.y - y); - - return (dx + dy) <= (circle.radius * circle.radius); - - }, - - /** - * The core separation function to separate two circular physics bodies. - * - * @method Phaser.Physics.Arcade#separateCircle - * @private - * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. Must have `Body.isCircle` true and a positive `radius`. - * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. Must have `Body.isCircle` true and a positive `radius`. - * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. - * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. - */ - separateCircle: function (body1, body2, overlapOnly) { - - // Set the bounding box overlap values - this.getOverlapX(body1, body2); - this.getOverlapY(body1, body2); - - var angleCollision = this.angleBetweenCenters(body1, body2); - - var overlap = 0; - - if (body1.isCircle !== body2.isCircle) - { - var rect = { - x: (body2.isCircle) ? body1.position.x : body2.position.x, - y: (body2.isCircle) ? body1.position.y : body2.position.y, - right: (body2.isCircle) ? body1.right : body2.right, - bottom: (body2.isCircle) ? body1.bottom : body2.bottom - }; - - var circle = { - x: (body1.isCircle) ? (body1.position.x + body1.radius) : (body2.position.x + body2.radius), - y: (body1.isCircle) ? (body1.position.y + body1.radius) : (body2.position.y + body2.radius), - radius: (body1.isCircle) ? body1.radius : body2.radius - }; - - if (circle.y < rect.y) - { - if (circle.x < rect.x) - { - overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.y) - circle.radius; - } - else if (circle.x > rect.right) - { - overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.y) - circle.radius; - } - } - else if (circle.y > rect.bottom) - { - if (circle.x < rect.x) - { - overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.bottom) - circle.radius; - } - else if (circle.x > rect.right) - { - overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.bottom) - circle.radius; - } - } - - overlap *= -1; - } - else - { - overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y); - } - - // Can't separate two immovable bodies, or a body with its own custom separation logic - if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) - { - if (overlap !== 0) - { - if (body1.onOverlap) - { - body1.onOverlap.dispatch(body1.sprite, body2.sprite); - } - - if (body2.onOverlap) - { - body2.onOverlap.dispatch(body2.sprite, body1.sprite); - } - } - - // return true if there was some overlap, otherwise false - return (overlap !== 0); - } - - // Transform the velocity vector to the coordinate system oriented along the direction of impact. - // This is done to eliminate the vertical component of the velocity - var v1 = { - x: body1.velocity.x * Math.cos(angleCollision) + body1.velocity.y * Math.sin(angleCollision), - y: body1.velocity.x * Math.sin(angleCollision) - body1.velocity.y * Math.cos(angleCollision) - }; - - var v2 = { - x: body2.velocity.x * Math.cos(angleCollision) + body2.velocity.y * Math.sin(angleCollision), - y: body2.velocity.x * Math.sin(angleCollision) - body2.velocity.y * Math.cos(angleCollision) - }; - - // We expect the new velocity after impact - var tempVel1 = ((body1.mass - body2.mass) * v1.x + 2 * body2.mass * v2.x) / (body1.mass + body2.mass); - var tempVel2 = (2 * body1.mass * v1.x + (body2.mass - body1.mass) * v2.x) / (body1.mass + body2.mass); - - // We convert the vector to the original coordinate system and multiplied by factor of rebound - if (!body1.immovable) - { - body1.velocity.x = (tempVel1 * Math.cos(angleCollision) - v1.y * Math.sin(angleCollision)) * body1.bounce.x; - body1.velocity.y = (v1.y * Math.cos(angleCollision) + tempVel1 * Math.sin(angleCollision)) * body1.bounce.y; - } - - if (!body2.immovable) - { - body2.velocity.x = (tempVel2 * Math.cos(angleCollision) - v2.y * Math.sin(angleCollision)) * body2.bounce.x; - body2.velocity.y = (v2.y * Math.cos(angleCollision) + tempVel2 * Math.sin(angleCollision)) * body2.bounce.y; - } - - // When the collision angle is almost perpendicular to the total initial velocity vector - // (collision on a tangent) vector direction can be determined incorrectly. - // This code fixes the problem - - if (Math.abs(angleCollision) < Math.PI / 2) - { - if ((body1.velocity.x > 0) && !body1.immovable && (body2.velocity.x > body1.velocity.x)) - { - body1.velocity.x *= -1; - } - else if ((body2.velocity.x < 0) && !body2.immovable && (body1.velocity.x < body2.velocity.x)) - { - body2.velocity.x *= -1; - } - else if ((body1.velocity.y > 0) && !body1.immovable && (body2.velocity.y > body1.velocity.y)) - { - body1.velocity.y *= -1; - } - else if ((body2.velocity.y < 0) && !body2.immovable && (body1.velocity.y < body2.velocity.y)) - { - body2.velocity.y *= -1; - } - } - else if (Math.abs(angleCollision) > Math.PI / 2) - { - if ((body1.velocity.x < 0) && !body1.immovable && (body2.velocity.x < body1.velocity.x)) - { - body1.velocity.x *= -1; - } - else if ((body2.velocity.x > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.x)) - { - body2.velocity.x *= -1; - } - else if ((body1.velocity.y < 0) && !body1.immovable && (body2.velocity.y < body1.velocity.y)) - { - body1.velocity.y *= -1; - } - else if ((body2.velocity.y > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.y)) - { - body2.velocity.y *= -1; - } - } - - if (!body1.immovable) - { - body1.x += (body1.velocity.x * this.game.time.physicsElapsed) - overlap * Math.cos(angleCollision); - body1.y += (body1.velocity.y * this.game.time.physicsElapsed) - overlap * Math.sin(angleCollision); - } - - if (!body2.immovable) - { - body2.x += (body2.velocity.x * this.game.time.physicsElapsed) + overlap * Math.cos(angleCollision); - body2.y += (body2.velocity.y * this.game.time.physicsElapsed) + overlap * Math.sin(angleCollision); - } - - if (body1.onCollide) - { - body1.onCollide.dispatch(body1.sprite, body2.sprite); - } - - if (body2.onCollide) - { - body2.onCollide.dispatch(body2.sprite, body1.sprite); - } - - return true; - - }, - - /** - * Calculates the horizontal overlap between two Bodies and sets their properties accordingly, including: - * `touching.left`, `touching.right` and `overlapX`. - * - * @method Phaser.Physics.Arcade#getOverlapX - * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. - * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. - * @param {boolean} overlapOnly - Is this an overlap only check, or part of separation? - * @return {float} Returns the amount of horizontal overlap between the two bodies. - */ - getOverlapX: function (body1, body2, overlapOnly) { - - var overlap = 0; - var maxOverlap = body1.deltaAbsX() + body2.deltaAbsX() + this.OVERLAP_BIAS; - - if (body1.deltaX() === 0 && body2.deltaX() === 0) - { - // They overlap but neither of them are moving - body1.embedded = true; - body2.embedded = true; - } - else if (body1.deltaX() > body2.deltaX()) - { - // Body1 is moving right and / or Body2 is moving left - overlap = body1.right - body2.x; - - if ((overlap > maxOverlap && !overlapOnly) || body1.checkCollision.right === false || body2.checkCollision.left === false) - { - overlap = 0; - } - else - { - body1.touching.none = false; - body1.touching.right = true; - body2.touching.none = false; - body2.touching.left = true; - } - } - else if (body1.deltaX() < body2.deltaX()) - { - // Body1 is moving left and/or Body2 is moving right - overlap = body1.x - body2.width - body2.x; - - if ((-overlap > maxOverlap && !overlapOnly) || body1.checkCollision.left === false || body2.checkCollision.right === false) - { - overlap = 0; - } - else - { - body1.touching.none = false; - body1.touching.left = true; - body2.touching.none = false; - body2.touching.right = true; - } - } - - // Resets the overlapX to zero if there is no overlap, or to the actual pixel value if there is - body1.overlapX = overlap; - body2.overlapX = overlap; - - return overlap; - - }, - - /** - * Calculates the vertical overlap between two Bodies and sets their properties accordingly, including: - * `touching.up`, `touching.down` and `overlapY`. - * - * @method Phaser.Physics.Arcade#getOverlapY - * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. - * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. - * @param {boolean} overlapOnly - Is this an overlap only check, or part of separation? - * @return {float} Returns the amount of vertical overlap between the two bodies. - */ - getOverlapY: function (body1, body2, overlapOnly) { - - var overlap = 0; - var maxOverlap = body1.deltaAbsY() + body2.deltaAbsY() + this.OVERLAP_BIAS; - - if (body1.deltaY() === 0 && body2.deltaY() === 0) - { - // They overlap but neither of them are moving - body1.embedded = true; - body2.embedded = true; - } - else if (body1.deltaY() > body2.deltaY()) - { - // Body1 is moving down and/or Body2 is moving up - overlap = body1.bottom - body2.y; - - if ((overlap > maxOverlap && !overlapOnly) || body1.checkCollision.down === false || body2.checkCollision.up === false) - { - overlap = 0; - } - else - { - body1.touching.none = false; - body1.touching.down = true; - body2.touching.none = false; - body2.touching.up = true; - } - } - else if (body1.deltaY() < body2.deltaY()) - { - // Body1 is moving up and/or Body2 is moving down - overlap = body1.y - body2.bottom; - - if ((-overlap > maxOverlap && !overlapOnly) || body1.checkCollision.up === false || body2.checkCollision.down === false) - { - overlap = 0; - } - else - { - body1.touching.none = false; - body1.touching.up = true; - body2.touching.none = false; - body2.touching.down = true; - } - } - - // Resets the overlapY to zero if there is no overlap, or to the actual pixel value if there is - body1.overlapY = overlap; - body2.overlapY = overlap; - - return overlap; - - }, - - /** - * The core separation function to separate two physics bodies on the x axis. - * - * @method Phaser.Physics.Arcade#separateX - * @private - * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. - * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. - * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. - * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. - */ - separateX: function (body1, body2, overlapOnly) { - - var overlap = this.getOverlapX(body1, body2, overlapOnly); - - // Can't separate two immovable bodies, or a body with its own custom separation logic - if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) - { - // return true if there was some overlap, otherwise false - return (overlap !== 0) || (body1.embedded && body2.embedded); - } - - // Adjust their positions and velocities accordingly (if there was any overlap) - var v1 = body1.velocity.x; - var v2 = body2.velocity.x; - - if (!body1.immovable && !body2.immovable) - { - overlap *= 0.5; - - body1.x -= overlap; - body2.x += overlap; - - var nv1 = Math.sqrt((v2 * v2 * body2.mass) / body1.mass) * ((v2 > 0) ? 1 : -1); - var nv2 = Math.sqrt((v1 * v1 * body1.mass) / body2.mass) * ((v1 > 0) ? 1 : -1); - var avg = (nv1 + nv2) * 0.5; - - nv1 -= avg; - nv2 -= avg; - - body1.velocity.x = avg + nv1 * body1.bounce.x; - body2.velocity.x = avg + nv2 * body2.bounce.x; - } - else if (!body1.immovable) - { - body1.x -= overlap; - body1.velocity.x = v2 - v1 * body1.bounce.x; - - // This is special case code that handles things like vertically moving platforms you can ride - if (body2.moves) - { - body1.y += (body2.y - body2.prev.y) * body2.friction.y; - } - } - else - { - body2.x += overlap; - body2.velocity.x = v1 - v2 * body2.bounce.x; - - // This is special case code that handles things like vertically moving platforms you can ride - if (body1.moves) - { - body2.y += (body1.y - body1.prev.y) * body1.friction.y; - } - } - - // If we got this far then there WAS overlap, and separation is complete, so return true - return true; - - }, - - /** - * The core separation function to separate two physics bodies on the y axis. - * - * @private - * @method Phaser.Physics.Arcade#separateY - * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. - * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. - * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. - * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. - */ - separateY: function (body1, body2, overlapOnly) { - - var overlap = this.getOverlapY(body1, body2, overlapOnly); - - // Can't separate two immovable bodies, or a body with its own custom separation logic - if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateY || body2.customSeparateY) - { - // return true if there was some overlap, otherwise false - return (overlap !== 0) || (body1.embedded && body2.embedded); - } - - // Adjust their positions and velocities accordingly (if there was any overlap) - var v1 = body1.velocity.y; - var v2 = body2.velocity.y; - - if (!body1.immovable && !body2.immovable) - { - overlap *= 0.5; - - body1.y -= overlap; - body2.y += overlap; - - var nv1 = Math.sqrt((v2 * v2 * body2.mass) / body1.mass) * ((v2 > 0) ? 1 : -1); - var nv2 = Math.sqrt((v1 * v1 * body1.mass) / body2.mass) * ((v1 > 0) ? 1 : -1); - var avg = (nv1 + nv2) * 0.5; - - nv1 -= avg; - nv2 -= avg; - - body1.velocity.y = avg + nv1 * body1.bounce.y; - body2.velocity.y = avg + nv2 * body2.bounce.y; - } - else if (!body1.immovable) - { - body1.y -= overlap; - body1.velocity.y = v2 - v1 * body1.bounce.y; - - // This is special case code that handles things like horizontal moving platforms you can ride - if (body2.moves) - { - body1.x += (body2.x - body2.prev.x) * body2.friction.x; - } - } - else - { - body2.y += overlap; - body2.velocity.y = v1 - v2 * body2.bounce.y; - - // This is special case code that handles things like horizontal moving platforms you can ride - if (body1.moves) - { - body2.x += (body1.x - body1.prev.x) * body1.friction.x; - } - } - - // If we got this far then there WAS overlap, and separation is complete, so return true - return true; - - }, - - /** - * Given a Group and a Pointer this will check to see which Group children overlap with the Pointer coordinates. - * Each child will be sent to the given callback for further processing. - * Note that the children are not checked for depth order, but simply if they overlap the Pointer or not. - * - * @method Phaser.Physics.Arcade#getObjectsUnderPointer - * @param {Phaser.Pointer} pointer - The Pointer to check. - * @param {Phaser.Group} group - The Group to check. - * @param {function} [callback] - A callback function that is called if the object overlaps with the Pointer. The callback will be sent two parameters: the Pointer and the Object that overlapped with it. - * @param {object} [callbackContext] - The context in which to run the callback. - * @return {PIXI.DisplayObject[]} An array of the Sprites from the Group that overlapped the Pointer coordinates. - */ - getObjectsUnderPointer: function (pointer, group, callback, callbackContext) { - - if (group.length === 0 || !pointer.exists) - { - return; - } - - return this.getObjectsAtLocation(pointer.x, pointer.y, group, callback, callbackContext, pointer); - - }, - - /** - * Given a Group and a location this will check to see which Group children overlap with the coordinates. - * Each child will be sent to the given callback for further processing. - * Note that the children are not checked for depth order, but simply if they overlap the coordinate or not. - * - * @method Phaser.Physics.Arcade#getObjectsAtLocation - * @param {number} x - The x coordinate to check. - * @param {number} y - The y coordinate to check. - * @param {Phaser.Group} group - The Group to check. - * @param {function} [callback] - A callback function that is called if the object overlaps the coordinates. The callback will be sent two parameters: the callbackArg and the Object that overlapped the location. - * @param {object} [callbackContext] - The context in which to run the callback. - * @param {object} [callbackArg] - An argument to pass to the callback. - * @return {PIXI.DisplayObject[]} An array of the Sprites from the Group that overlapped the coordinates. - */ - getObjectsAtLocation: function (x, y, group, callback, callbackContext, callbackArg) { - - this.quadTree.clear(); - - this.quadTree.reset(this.game.world.bounds.x, this.game.world.bounds.y, this.game.world.bounds.width, this.game.world.bounds.height, this.maxObjects, this.maxLevels); - - this.quadTree.populate(group); - - var rect = new Phaser.Rectangle(x, y, 1, 1); - var output = []; - - var items = this.quadTree.retrieve(rect); - - for (var i = 0; i < items.length; i++) - { - if (items[i].hitTest(x, y)) - { - if (callback) - { - callback.call(callbackContext, callbackArg, items[i].sprite); - } - - output.push(items[i].sprite); - } - } - - return output; - - }, - - /** - * Move the given display object towards the destination object at a steady velocity. - * If you specify a maxTime then it will adjust the speed (overwriting what you set) so it arrives at the destination in that number of seconds. - * Timings are approximate due to the way browser timers work. Allow for a variance of +- 50ms. - * Note: The display object does not continuously track the target. If the target changes location during transit the display object will not modify its course. - * Note: The display object doesn't stop moving once it reaches the destination coordinates. - * Note: Doesn't take into account acceleration, maxVelocity or drag (if you've set drag or acceleration too high this object may not move at all) - * - * @method Phaser.Physics.Arcade#moveToObject - * @param {any} displayObject - The display object to move. - * @param {any} destination - The display object to move towards. Can be any object but must have visible x/y properties. - * @param {number} [speed=60] - The speed it will move, in pixels per second (default is 60 pixels/sec) - * @param {number} [maxTime=0] - Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the object will arrive at destination in the given number of ms. - * @return {number} The angle (in radians) that the object should be visually set to in order to match its new velocity. - */ - moveToObject: function (displayObject, destination, speed, maxTime) { - - if (speed === undefined) { speed = 60; } - if (maxTime === undefined) { maxTime = 0; } - - var angle = Math.atan2(destination.y - displayObject.y, destination.x - displayObject.x); - - if (maxTime > 0) - { - // We know how many pixels we need to move, but how fast? - speed = this.distanceBetween(displayObject, destination) / (maxTime / 1000); - } - - displayObject.body.velocity.x = Math.cos(angle) * speed; - displayObject.body.velocity.y = Math.sin(angle) * speed; - - return angle; - - }, - - /** - * Move the given display object towards the pointer at a steady velocity. If no pointer is given it will use Phaser.Input.activePointer. - * If you specify a maxTime then it will adjust the speed (over-writing what you set) so it arrives at the destination in that number of seconds. - * Timings are approximate due to the way browser timers work. Allow for a variance of +- 50ms. - * Note: The display object does not continuously track the target. If the target changes location during transit the display object will not modify its course. - * Note: The display object doesn't stop moving once it reaches the destination coordinates. - * - * @method Phaser.Physics.Arcade#moveToPointer - * @param {any} displayObject - The display object to move. - * @param {number} [speed=60] - The speed it will move, in pixels per second (default is 60 pixels/sec) - * @param {Phaser.Pointer} [pointer] - The pointer to move towards. Defaults to Phaser.Input.activePointer. - * @param {number} [maxTime=0] - Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the object will arrive at destination in the given number of ms. - * @return {number} The angle (in radians) that the object should be visually set to in order to match its new velocity. - */ - moveToPointer: function (displayObject, speed, pointer, maxTime) { - - if (speed === undefined) { speed = 60; } - pointer = pointer || this.game.input.activePointer; - if (maxTime === undefined) { maxTime = 0; } - - var angle = this.angleToPointer(displayObject, pointer); - - if (maxTime > 0) - { - // We know how many pixels we need to move, but how fast? - speed = this.distanceToPointer(displayObject, pointer) / (maxTime / 1000); - } - - displayObject.body.velocity.x = Math.cos(angle) * speed; - displayObject.body.velocity.y = Math.sin(angle) * speed; - - return angle; - - }, - - /** - * Move the given display object towards the x/y coordinates at a steady velocity. - * If you specify a maxTime then it will adjust the speed (over-writing what you set) so it arrives at the destination in that number of seconds. - * Timings are approximate due to the way browser timers work. Allow for a variance of +- 50ms. - * Note: The display object does not continuously track the target. If the target changes location during transit the display object will not modify its course. - * Note: The display object doesn't stop moving once it reaches the destination coordinates. - * Note: Doesn't take into account acceleration, maxVelocity or drag (if you've set drag or acceleration too high this object may not move at all) - * - * @method Phaser.Physics.Arcade#moveToXY - * @param {any} displayObject - The display object to move. - * @param {number} x - The x coordinate to move towards. - * @param {number} y - The y coordinate to move towards. - * @param {number} [speed=60] - The speed it will move, in pixels per second (default is 60 pixels/sec) - * @param {number} [maxTime=0] - Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the object will arrive at destination in the given number of ms. - * @return {number} The angle (in radians) that the object should be visually set to in order to match its new velocity. - */ - moveToXY: function (displayObject, x, y, speed, maxTime) { - - if (speed === undefined) { speed = 60; } - if (maxTime === undefined) { maxTime = 0; } - - var angle = Math.atan2(y - displayObject.y, x - displayObject.x); - - if (maxTime > 0) - { - // We know how many pixels we need to move, but how fast? - speed = this.distanceToXY(displayObject, x, y) / (maxTime / 1000); - } - - displayObject.body.velocity.x = Math.cos(angle) * speed; - displayObject.body.velocity.y = Math.sin(angle) * speed; - - return angle; - - }, - - /** - * Given the angle (in degrees) and speed calculate the velocity and return it as a Point object, or set it to the given point object. - * One way to use this is: velocityFromAngle(angle, 200, sprite.velocity) which will set the values directly to the sprites velocity and not create a new Point object. - * - * @method Phaser.Physics.Arcade#velocityFromAngle - * @param {number} angle - The angle in degrees calculated in clockwise positive direction (down = 90 degrees positive, right = 0 degrees positive, up = 90 degrees negative) - * @param {number} [speed=60] - The speed it will move, in pixels per second sq. - * @param {Phaser.Point|object} [point] - The Point object in which the x and y properties will be set to the calculated velocity. - * @return {Phaser.Point} - A Point where point.x contains the velocity x value and point.y contains the velocity y value. - */ - velocityFromAngle: function (angle, speed, point) { - - if (speed === undefined) { speed = 60; } - point = point || new Phaser.Point(); - - return point.setTo((Math.cos(this.game.math.degToRad(angle)) * speed), (Math.sin(this.game.math.degToRad(angle)) * speed)); - - }, - - /** - * Given the rotation (in radians) and speed calculate the velocity and return it as a Point object, or set it to the given point object. - * One way to use this is: velocityFromRotation(rotation, 200, sprite.velocity) which will set the values directly to the sprites velocity and not create a new Point object. - * - * @method Phaser.Physics.Arcade#velocityFromRotation - * @param {number} rotation - The angle in radians. - * @param {number} [speed=60] - The speed it will move, in pixels per second sq. - * @param {Phaser.Point|object} [point] - The Point object in which the x and y properties will be set to the calculated velocity. - * @return {Phaser.Point} - A Point where point.x contains the velocity x value and point.y contains the velocity y value. - */ - velocityFromRotation: function (rotation, speed, point) { - - if (speed === undefined) { speed = 60; } - point = point || new Phaser.Point(); - - return point.setTo((Math.cos(rotation) * speed), (Math.sin(rotation) * speed)); - - }, - - /** - * Given the rotation (in radians) and speed calculate the acceleration and return it as a Point object, or set it to the given point object. - * One way to use this is: accelerationFromRotation(rotation, 200, sprite.acceleration) which will set the values directly to the sprites acceleration and not create a new Point object. - * - * @method Phaser.Physics.Arcade#accelerationFromRotation - * @param {number} rotation - The angle in radians. - * @param {number} [speed=60] - The speed it will move, in pixels per second sq. - * @param {Phaser.Point|object} [point] - The Point object in which the x and y properties will be set to the calculated acceleration. - * @return {Phaser.Point} - A Point where point.x contains the acceleration x value and point.y contains the acceleration y value. - */ - accelerationFromRotation: function (rotation, speed, point) { - - if (speed === undefined) { speed = 60; } - point = point || new Phaser.Point(); - - return point.setTo((Math.cos(rotation) * speed), (Math.sin(rotation) * speed)); - - }, - - /** - * Sets the acceleration.x/y property on the display object so it will move towards the target at the given speed (in pixels per second sq.) - * You must give a maximum speed value, beyond which the display object won't go any faster. - * Note: The display object does not continuously track the target. If the target changes location during transit the display object will not modify its course. - * Note: The display object doesn't stop moving once it reaches the destination coordinates. - * - * @method Phaser.Physics.Arcade#accelerateToObject - * @param {any} displayObject - The display object to move. - * @param {any} destination - The display object to move towards. Can be any object but must have visible x/y properties. - * @param {number} [speed=60] - The speed it will accelerate in pixels per second. - * @param {number} [xSpeedMax=500] - The maximum x velocity the display object can reach. - * @param {number} [ySpeedMax=500] - The maximum y velocity the display object can reach. - * @return {number} The angle (in radians) that the object should be visually set to in order to match its new trajectory. - */ - accelerateToObject: function (displayObject, destination, speed, xSpeedMax, ySpeedMax) { - - if (speed === undefined) { speed = 60; } - if (xSpeedMax === undefined) { xSpeedMax = 1000; } - if (ySpeedMax === undefined) { ySpeedMax = 1000; } - - var angle = this.angleBetween(displayObject, destination); - - displayObject.body.acceleration.setTo(Math.cos(angle) * speed, Math.sin(angle) * speed); - displayObject.body.maxVelocity.setTo(xSpeedMax, ySpeedMax); - - return angle; - - }, - - /** - * Sets the acceleration.x/y property on the display object so it will move towards the target at the given speed (in pixels per second sq.) - * You must give a maximum speed value, beyond which the display object won't go any faster. - * Note: The display object does not continuously track the target. If the target changes location during transit the display object will not modify its course. - * Note: The display object doesn't stop moving once it reaches the destination coordinates. - * - * @method Phaser.Physics.Arcade#accelerateToPointer - * @param {any} displayObject - The display object to move. - * @param {Phaser.Pointer} [pointer] - The pointer to move towards. Defaults to Phaser.Input.activePointer. - * @param {number} [speed=60] - The speed it will accelerate in pixels per second. - * @param {number} [xSpeedMax=500] - The maximum x velocity the display object can reach. - * @param {number} [ySpeedMax=500] - The maximum y velocity the display object can reach. - * @return {number} The angle (in radians) that the object should be visually set to in order to match its new trajectory. - */ - accelerateToPointer: function (displayObject, pointer, speed, xSpeedMax, ySpeedMax) { - - if (speed === undefined) { speed = 60; } - if (pointer === undefined) { pointer = this.game.input.activePointer; } - if (xSpeedMax === undefined) { xSpeedMax = 1000; } - if (ySpeedMax === undefined) { ySpeedMax = 1000; } - - var angle = this.angleToPointer(displayObject, pointer); - - displayObject.body.acceleration.setTo(Math.cos(angle) * speed, Math.sin(angle) * speed); - displayObject.body.maxVelocity.setTo(xSpeedMax, ySpeedMax); - - return angle; - - }, - - /** - * Sets the acceleration.x/y property on the display object so it will move towards the x/y coordinates at the given speed (in pixels per second sq.) - * You must give a maximum speed value, beyond which the display object won't go any faster. - * Note: The display object does not continuously track the target. If the target changes location during transit the display object will not modify its course. - * Note: The display object doesn't stop moving once it reaches the destination coordinates. - * - * @method Phaser.Physics.Arcade#accelerateToXY - * @param {any} displayObject - The display object to move. - * @param {number} x - The x coordinate to accelerate towards. - * @param {number} y - The y coordinate to accelerate towards. - * @param {number} [speed=60] - The speed it will accelerate in pixels per second. - * @param {number} [xSpeedMax=500] - The maximum x velocity the display object can reach. - * @param {number} [ySpeedMax=500] - The maximum y velocity the display object can reach. - * @return {number} The angle (in radians) that the object should be visually set to in order to match its new trajectory. - */ - accelerateToXY: function (displayObject, x, y, speed, xSpeedMax, ySpeedMax) { - - if (speed === undefined) { speed = 60; } - if (xSpeedMax === undefined) { xSpeedMax = 1000; } - if (ySpeedMax === undefined) { ySpeedMax = 1000; } - - var angle = this.angleToXY(displayObject, x, y); - - displayObject.body.acceleration.setTo(Math.cos(angle) * speed, Math.sin(angle) * speed); - displayObject.body.maxVelocity.setTo(xSpeedMax, ySpeedMax); - - return angle; - - }, - - /** - * Find the distance between two display objects (like Sprites). - * - * The optional `world` argument allows you to return the result based on the Game Objects `world` property, - * instead of its `x` and `y` values. This is useful of the object has been nested inside an offset Group, - * or parent Game Object. - * - * @method Phaser.Physics.Arcade#distanceBetween - * @param {any} source - The Display Object to test from. - * @param {any} target - The Display Object to test to. - * @param {boolean} [world=false] - Calculate the distance using World coordinates (true), or Object coordinates (false, the default) - * @return {number} The distance between the source and target objects. - */ - distanceBetween: function (source, target, world) { - - if (world === undefined) { world = false; } - - var dx = (world) ? source.world.x - target.world.x : source.x - target.x; - var dy = (world) ? source.world.y - target.world.y : source.y - target.y; - - return Math.sqrt(dx * dx + dy * dy); - - }, - - /** - * Find the distance between a display object (like a Sprite) and the given x/y coordinates. - * The calculation is made from the display objects x/y coordinate. This may be the top-left if its anchor hasn't been changed. - * If you need to calculate from the center of a display object instead use the method distanceBetweenCenters() - * - * The optional `world` argument allows you to return the result based on the Game Objects `world` property, - * instead of its `x` and `y` values. This is useful of the object has been nested inside an offset Group, - * or parent Game Object. - * - * @method Phaser.Physics.Arcade#distanceToXY - * @param {any} displayObject - The Display Object to test from. - * @param {number} x - The x coordinate to move towards. - * @param {number} y - The y coordinate to move towards. - * @param {boolean} [world=false] - Calculate the distance using World coordinates (true), or Object coordinates (false, the default) - * @return {number} The distance between the object and the x/y coordinates. - */ - distanceToXY: function (displayObject, x, y, world) { - - if (world === undefined) { world = false; } - - var dx = (world) ? displayObject.world.x - x : displayObject.x - x; - var dy = (world) ? displayObject.world.y - y : displayObject.y - y; - - return Math.sqrt(dx * dx + dy * dy); - - }, - - /** - * Find the distance between a display object (like a Sprite) and a Pointer. If no Pointer is given the Input.activePointer is used. - * The calculation is made from the display objects x/y coordinate. This may be the top-left if its anchor hasn't been changed. - * If you need to calculate from the center of a display object instead use the method distanceBetweenCenters() - * - * The optional `world` argument allows you to return the result based on the Game Objects `world` property, - * instead of its `x` and `y` values. This is useful of the object has been nested inside an offset Group, - * or parent Game Object. - * - * @method Phaser.Physics.Arcade#distanceToPointer - * @param {any} displayObject - The Display Object to test from. - * @param {Phaser.Pointer} [pointer] - The Phaser.Pointer to test to. If none is given then Input.activePointer is used. - * @param {boolean} [world=false] - Calculate the distance using World coordinates (true), or Object coordinates (false, the default) - * @return {number} The distance between the object and the Pointer. - */ - distanceToPointer: function (displayObject, pointer, world) { - - if (pointer === undefined) { pointer = this.game.input.activePointer; } - if (world === undefined) { world = false; } - - var dx = (world) ? displayObject.world.x - pointer.worldX : displayObject.x - pointer.worldX; - var dy = (world) ? displayObject.world.y - pointer.worldY : displayObject.y - pointer.worldY; - - return Math.sqrt(dx * dx + dy * dy); - - }, - - /** - * Find the angle in radians between two display objects (like Sprites). - * - * The optional `world` argument allows you to return the result based on the Game Objects `world` property, - * instead of its `x` and `y` values. This is useful of the object has been nested inside an offset Group, - * or parent Game Object. - * - * @method Phaser.Physics.Arcade#angleBetween - * @param {any} source - The Display Object to test from. - * @param {any} target - The Display Object to test to. - * @param {boolean} [world=false] - Calculate the angle using World coordinates (true), or Object coordinates (false, the default) - * @return {number} The angle in radians between the source and target display objects. - */ - angleBetween: function (source, target, world) { - - if (world === undefined) { world = false; } - - if (world) - { - return Math.atan2(target.world.y - source.world.y, target.world.x - source.world.x); - } - else - { - return Math.atan2(target.y - source.y, target.x - source.x); - } - - }, - - /** - * Find the angle in radians between centers of two display objects (like Sprites). - * - * @method Phaser.Physics.Arcade#angleBetweenCenters - * @param {any} source - The Display Object to test from. - * @param {any} target - The Display Object to test to. - * @return {number} The angle in radians between the source and target display objects. - */ - angleBetweenCenters: function (source, target) { - - var dx = target.center.x - source.center.x; - var dy = target.center.y - source.center.y; - - return Math.atan2(dy, dx); - - }, - - /** - * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. - * - * The optional `world` argument allows you to return the result based on the Game Objects `world` property, - * instead of its `x` and `y` values. This is useful of the object has been nested inside an offset Group, - * or parent Game Object. - * - * @method Phaser.Physics.Arcade#angleToXY - * @param {any} displayObject - The Display Object to test from. - * @param {number} x - The x coordinate to get the angle to. - * @param {number} y - The y coordinate to get the angle to. - * @param {boolean} [world=false] - Calculate the angle using World coordinates (true), or Object coordinates (false, the default) - * @return {number} The angle in radians between displayObject.x/y to Pointer.x/y - */ - angleToXY: function (displayObject, x, y, world) { - - if (world === undefined) { world = false; } - - if (world) - { - return Math.atan2(y - displayObject.world.y, x - displayObject.world.x); - } - else - { - return Math.atan2(y - displayObject.y, x - displayObject.x); - } - - }, - - /** - * Find the angle in radians between a display object (like a Sprite) and a Pointer, taking their x/y and center into account. - * - * The optional `world` argument allows you to return the result based on the Game Objects `world` property, - * instead of its `x` and `y` values. This is useful of the object has been nested inside an offset Group, - * or parent Game Object. - * - * @method Phaser.Physics.Arcade#angleToPointer - * @param {any} displayObject - The Display Object to test from. - * @param {Phaser.Pointer} [pointer] - The Phaser.Pointer to test to. If none is given then Input.activePointer is used. - * @param {boolean} [world=false] - Calculate the angle using World coordinates (true), or Object coordinates (false, the default) - * @return {number} The angle in radians between displayObject.x/y to Pointer.x/y - */ - angleToPointer: function (displayObject, pointer, world) { - - if (pointer === undefined) { pointer = this.game.input.activePointer; } - if (world === undefined) { world = false; } - - if (world) - { - return Math.atan2(pointer.worldY - displayObject.world.y, pointer.worldX - displayObject.world.x); - } - else - { - return Math.atan2(pointer.worldY - displayObject.y, pointer.worldX - displayObject.x); - } - - }, - - /** - * Find the angle in radians between a display object (like a Sprite) and a Pointer, - * taking their x/y and center into account relative to the world. - * - * @method Phaser.Physics.Arcade#worldAngleToPointer - * @param {any} displayObject - The DisplayObjerct to test from. - * @param {Phaser.Pointer} [pointer] - The Phaser.Pointer to test to. If none is given then Input.activePointer is used. - * @return {number} The angle in radians between displayObject.world.x/y to Pointer.worldX / worldY - */ - worldAngleToPointer: function (displayObject, pointer) { - - return this.angleToPointer(displayObject, pointer, true); - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Physics Body is linked to a single Sprite. All physics operations should be performed against the body rather than -* the Sprite itself. For example you can set the velocity, acceleration, bounce values etc all on the Body. -* -* @class Phaser.Physics.Arcade.Body -* @constructor -* @param {Phaser.Sprite} sprite - The Sprite object this physics body belongs to. -*/ -Phaser.Physics.Arcade.Body = function (sprite) { - - /** - * @property {Phaser.Sprite} sprite - Reference to the parent Sprite. - */ - this.sprite = sprite; - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = sprite.game; - - /** - * @property {number} type - The type of physics system this body belongs to. - */ - this.type = Phaser.Physics.ARCADE; - - /** - * @property {boolean} enable - A disabled body won't be checked for any form of collision or overlap or have its pre/post updates run. - * @default - */ - this.enable = true; - - /** - * If `true` this Body is using circular collision detection. If `false` it is using rectangular. - * Use `Body.setCircle` to control the collision shape this Body uses. - * @property {boolean} isCircle - * @default - * @readOnly - */ - this.isCircle = false; - - /** - * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. - * If you wish to change the radius then call `setCircle` again with the new value. - * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). - * @property {number} radius - * @default - * @readOnly - */ - this.radius = 0; - - /** - * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. - */ - this.offset = new Phaser.Point(); - - /** - * @property {Phaser.Point} position - The position of the physics body. - * @readonly - */ - this.position = new Phaser.Point(sprite.x, sprite.y); - - /** - * @property {Phaser.Point} prev - The previous position of the physics body. - * @readonly - */ - this.prev = new Phaser.Point(this.position.x, this.position.y); - - /** - * @property {boolean} allowRotation - Allow this Body to be rotated? (via angularVelocity, etc) - * @default - */ - this.allowRotation = true; - - /** - * An Arcade Physics Body can have angularVelocity and angularAcceleration. Please understand that the collision Body - * itself never rotates, it is always axis-aligned. However these values are passed up to the parent Sprite and updates its rotation. - * @property {number} rotation - */ - this.rotation = sprite.rotation; - - /** - * @property {number} preRotation - The previous rotation of the physics body. - * @readonly - */ - this.preRotation = sprite.rotation; - - /** - * @property {number} width - The calculated width of the physics body. - * @readonly - */ - this.width = sprite.width; - - /** - * @property {number} height - The calculated height of the physics body. - * @readonly - */ - this.height = sprite.height; - - /** - * @property {number} sourceWidth - The un-scaled original size. - * @readonly - */ - this.sourceWidth = sprite.width; - - /** - * @property {number} sourceHeight - The un-scaled original size. - * @readonly - */ - this.sourceHeight = sprite.height; - - if (sprite.texture) - { - this.sourceWidth = sprite.texture.frame.width; - this.sourceHeight = sprite.texture.frame.height; - } - - /** - * @property {number} halfWidth - The calculated width / 2 of the physics body. - * @readonly - */ - this.halfWidth = Math.abs(sprite.width / 2); - - /** - * @property {number} halfHeight - The calculated height / 2 of the physics body. - * @readonly - */ - this.halfHeight = Math.abs(sprite.height / 2); - - /** - * @property {Phaser.Point} center - The center coordinate of the Physics Body. - * @readonly - */ - this.center = new Phaser.Point(sprite.x + this.halfWidth, sprite.y + this.halfHeight); - - /** - * @property {Phaser.Point} velocity - The velocity, or rate of change in speed of the Body. Measured in pixels per second. - */ - this.velocity = new Phaser.Point(); - - /** - * @property {Phaser.Point} newVelocity - The new velocity. Calculated during the Body.preUpdate and applied to its position. - * @readonly - */ - this.newVelocity = new Phaser.Point(); - - /** - * @property {Phaser.Point} deltaMax - The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. - */ - this.deltaMax = new Phaser.Point(); - - /** - * @property {Phaser.Point} acceleration - The acceleration is the rate of change of the velocity. Measured in pixels per second squared. - */ - this.acceleration = new Phaser.Point(); - - /** - * @property {Phaser.Point} drag - The drag applied to the motion of the Body. - */ - this.drag = new Phaser.Point(); - - /** - * @property {boolean} allowGravity - Allow this Body to be influenced by gravity? Either world or local. - * @default - */ - this.allowGravity = true; - - /** - * @property {Phaser.Point} gravity - A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. - */ - this.gravity = new Phaser.Point(); - - /** - * @property {Phaser.Point} bounce - The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. - */ - this.bounce = new Phaser.Point(); - - /** - * The elasticity of the Body when colliding with the World bounds. - * By default this property is `null`, in which case `Body.bounce` is used instead. Set this property - * to a Phaser.Point object in order to enable a World bounds specific bounce value. - * @property {Phaser.Point} worldBounce - */ - this.worldBounce = null; - - /** - * A Signal that is dispatched when this Body collides with the world bounds. - * Due to the potentially high volume of signals this could create it is disabled by default. - * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` - * and it will be called when a collision happens, passing five arguments: - * `onWorldBounds(sprite, up, down, left, right)` - * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans - * indicating on which side of the world the Body collided. - * @property {Phaser.Signal} onWorldBounds - */ - this.onWorldBounds = null; - - /** - * A Signal that is dispatched when this Body collides with another Body. - * - * You still need to call `game.physics.arcade.collide` in your `update` method in order - * for this signal to be dispatched. - * - * Usually you'd pass a callback to the `collide` method, but this signal provides for - * a different level of notification. - * - * Due to the potentially high volume of signals this could create it is disabled by default. - * - * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` - * and it will be called when a collision happens, passing two arguments: the sprites which collided. - * The first sprite in the argument is always the owner of this Body. - * - * If two Bodies with this Signal set collide, both will dispatch the Signal. - * @property {Phaser.Signal} onCollide - */ - this.onCollide = null; - - /** - * A Signal that is dispatched when this Body overlaps with another Body. - * - * You still need to call `game.physics.arcade.overlap` in your `update` method in order - * for this signal to be dispatched. - * - * Usually you'd pass a callback to the `overlap` method, but this signal provides for - * a different level of notification. - * - * Due to the potentially high volume of signals this could create it is disabled by default. - * - * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` - * and it will be called when a collision happens, passing two arguments: the sprites which collided. - * The first sprite in the argument is always the owner of this Body. - * - * If two Bodies with this Signal set collide, both will dispatch the Signal. - * @property {Phaser.Signal} onOverlap - */ - this.onOverlap = null; - - /** - * @property {Phaser.Point} maxVelocity - The maximum velocity in pixels per second sq. that the Body can reach. - * @default - */ - this.maxVelocity = new Phaser.Point(10000, 10000); - - /** - * @property {Phaser.Point} friction - The amount of movement that will occur if another object 'rides' this one. - */ - this.friction = new Phaser.Point(1, 0); - - /** - * @property {number} angularVelocity - The angular velocity controls the rotation speed of the Body. It is measured in radians per second. - * @default - */ - this.angularVelocity = 0; - - /** - * @property {number} angularAcceleration - The angular acceleration is the rate of change of the angular velocity. Measured in radians per second squared. - * @default - */ - this.angularAcceleration = 0; - - /** - * @property {number} angularDrag - The drag applied during the rotation of the Body. - * @default - */ - this.angularDrag = 0; - - /** - * @property {number} maxAngular - The maximum angular velocity in radians per second that the Body can reach. - * @default - */ - this.maxAngular = 1000; - - /** - * @property {number} mass - The mass of the Body. When two bodies collide their mass is used in the calculation to determine the exchange of velocity. - * @default - */ - this.mass = 1; - - /** - * @property {number} angle - The angle of the Body in radians, as calculated by its angularVelocity. - * @readonly - */ - this.angle = 0; - - /** - * @property {number} speed - The speed of the Body as calculated by its velocity. - * @readonly - */ - this.speed = 0; - - /** - * @property {number} facing - A const reference to the direction the Body is traveling or facing. - * @default - */ - this.facing = Phaser.NONE; - - /** - * @property {boolean} immovable - An immovable Body will not receive any impacts from other bodies. - * @default - */ - this.immovable = false; - - /** - * If you have a Body that is being moved around the world via a tween or a Group motion, but its local x/y position never - * actually changes, then you should set Body.moves = false. Otherwise it will most likely fly off the screen. - * If you want the physics system to move the body around, then set moves to true. - * @property {boolean} moves - Set to true to allow the Physics system to move this Body, otherwise false to move it manually. - * @default - */ - this.moves = true; - - /** - * This flag allows you to disable the custom x separation that takes place by Physics.Arcade.separate. - * Used in combination with your own collision processHandler you can create whatever type of collision response you need. - * @property {boolean} customSeparateX - Use a custom separation system or the built-in one? - * @default - */ - this.customSeparateX = false; - - /** - * This flag allows you to disable the custom y separation that takes place by Physics.Arcade.separate. - * Used in combination with your own collision processHandler you can create whatever type of collision response you need. - * @property {boolean} customSeparateY - Use a custom separation system or the built-in one? - * @default - */ - this.customSeparateY = false; - - /** - * When this body collides with another, the amount of overlap is stored here. - * @property {number} overlapX - The amount of horizontal overlap during the collision. - */ - this.overlapX = 0; - - /** - * When this body collides with another, the amount of overlap is stored here. - * @property {number} overlapY - The amount of vertical overlap during the collision. - */ - this.overlapY = 0; - - /** - * If `Body.isCircle` is true, and this body collides with another circular body, the amount of overlap is stored here. - * @property {number} overlapR - The amount of overlap during the collision. - */ - this.overlapR = 0; - - /** - * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. - * @property {boolean} embedded - Body embed value. - */ - this.embedded = false; - - /** - * A Body can be set to collide against the World bounds automatically and rebound back into the World if this is set to true. Otherwise it will leave the World. - * @property {boolean} collideWorldBounds - Should the Body collide with the World bounds? - */ - this.collideWorldBounds = false; - - /** - * Set the checkCollision properties to control which directions collision is processed for this Body. - * For example checkCollision.up = false means it won't collide when the collision happened while moving up. - * @property {object} checkCollision - An object containing allowed collision. - */ - this.checkCollision = { none: false, any: true, up: true, down: true, left: true, right: true }; - - /** - * This object is populated with boolean values when the Body collides with another. - * touching.up = true means the collision happened to the top of this Body for example. - * @property {object} touching - An object containing touching results. - */ - this.touching = { none: true, up: false, down: false, left: false, right: false }; - - /** - * This object is populated with previous touching values from the bodies previous collision. - * @property {object} wasTouching - An object containing previous touching results. - */ - this.wasTouching = { none: true, up: false, down: false, left: false, right: false }; - - /** - * This object is populated with boolean values when the Body collides with the World bounds or a Tile. - * For example if blocked.up is true then the Body cannot move up. - * @property {object} blocked - An object containing on which faces this Body is blocked from moving, if any. - */ - this.blocked = { up: false, down: false, left: false, right: false }; - - /** - * If this is an especially small or fast moving object then it can sometimes skip over tilemap collisions if it moves through a tile in a step. - * Set this padding value to add extra padding to its bounds. tilePadding.x applied to its width, y to its height. - * @property {Phaser.Point} tilePadding - Extra padding to be added to this sprite's dimensions when checking for tile collision. - */ - this.tilePadding = new Phaser.Point(); - - /** - * @property {boolean} dirty - If this Body in a preUpdate (true) or postUpdate (false) state? - */ - this.dirty = false; - - /** - * @property {boolean} skipQuadTree - If true and you collide this Sprite against a Group, it will disable the collision check from using a QuadTree. - */ - this.skipQuadTree = false; - - /** - * If true the Body will check itself against the Sprite.getBounds() dimensions and adjust its width and height accordingly. - * If false it will compare its dimensions against the Sprite scale instead, and adjust its width height if the scale has changed. - * Typically you would need to enable syncBounds if your sprite is the child of a responsive display object such as a FlexLayer, - * or in any situation where the Sprite scale doesn't change, but its parents scale is effecting the dimensions regardless. - * @property {boolean} syncBounds - * @default - */ - this.syncBounds = false; - - /** - * @property {boolean} isMoving - Set by the `moveTo` and `moveFrom` methods. - */ - this.isMoving = false; - - /** - * @property {boolean} stopVelocityOnCollide - Set by the `moveTo` and `moveFrom` methods. - */ - this.stopVelocityOnCollide = true; - - /** - * @property {integer} moveTimer - Internal time used by the `moveTo` and `moveFrom` methods. - * @private - */ - this.moveTimer = 0; - - /** - * @property {integer} moveDistance - Internal distance value, used by the `moveTo` and `moveFrom` methods. - * @private - */ - this.moveDistance = 0; - - /** - * @property {integer} moveDuration - Internal duration value, used by the `moveTo` and `moveFrom` methods. - * @private - */ - this.moveDuration = 0; - - /** - * @property {Phaser.Line} moveTarget - Set by the `moveTo` method, and updated each frame. - * @private - */ - this.moveTarget = null; - - /** - * @property {Phaser.Point} moveEnd - Set by the `moveTo` method, and updated each frame. - * @private - */ - this.moveEnd = null; - - /** - * @property {Phaser.Signal} onMoveComplete - Listen for the completion of `moveTo` or `moveFrom` events. - */ - this.onMoveComplete = new Phaser.Signal(); - - /** - * @property {function} movementCallback - Optional callback. If set, invoked during the running of `moveTo` or `moveFrom` events. - */ - this.movementCallback = null; - - /** - * @property {object} movementCallbackContext - Context in which to call the movementCallback. - */ - this.movementCallbackContext = null; - - /** - * @property {boolean} _reset - Internal cache var. - * @private - */ - this._reset = true; - - /** - * @property {number} _sx - Internal cache var. - * @private - */ - this._sx = sprite.scale.x; - - /** - * @property {number} _sy - Internal cache var. - * @private - */ - this._sy = sprite.scale.y; - - /** - * @property {number} _dx - Internal cache var. - * @private - */ - this._dx = 0; - - /** - * @property {number} _dy - Internal cache var. - * @private - */ - this._dy = 0; - -}; - -Phaser.Physics.Arcade.Body.prototype = { - - /** - * Internal method. - * - * @method Phaser.Physics.Arcade.Body#updateBounds - * @protected - */ - updateBounds: function () { - - if (this.syncBounds) - { - var b = this.sprite.getBounds(); - b.ceilAll(); - - if (b.width !== this.width || b.height !== this.height) - { - this.width = b.width; - this.height = b.height; - this._reset = true; - } - } - else - { - var asx = Math.abs(this.sprite.scale.x); - var asy = Math.abs(this.sprite.scale.y); - - if (asx !== this._sx || asy !== this._sy) - { - this.width = this.sourceWidth * asx; - this.height = this.sourceHeight * asy; - this._sx = asx; - this._sy = asy; - this._reset = true; - } - } - - if (this._reset) - { - this.halfWidth = Math.floor(this.width / 2); - this.halfHeight = Math.floor(this.height / 2); - this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); - } - - }, - - /** - * Internal method. - * - * @method Phaser.Physics.Arcade.Body#preUpdate - * @protected - */ - preUpdate: function () { - - if (!this.enable || this.game.physics.arcade.isPaused) - { - return; - } - - this.dirty = true; - - // Store and reset collision flags - this.wasTouching.none = this.touching.none; - this.wasTouching.up = this.touching.up; - this.wasTouching.down = this.touching.down; - this.wasTouching.left = this.touching.left; - this.wasTouching.right = this.touching.right; - - this.touching.none = true; - this.touching.up = false; - this.touching.down = false; - this.touching.left = false; - this.touching.right = false; - - this.blocked.up = false; - this.blocked.down = false; - this.blocked.left = false; - this.blocked.right = false; - - this.embedded = false; - - this.updateBounds(); - - this.position.x = (this.sprite.world.x - (this.sprite.anchor.x * this.sprite.width)) + this.sprite.scale.x * this.offset.x; - this.position.x -= this.sprite.scale.x < 0 ? this.width : 0; - - this.position.y = (this.sprite.world.y - (this.sprite.anchor.y * this.sprite.height)) + this.sprite.scale.y * this.offset.y; - this.position.y -= this.sprite.scale.y < 0 ? this.height : 0; - - this.rotation = this.sprite.angle; - - this.preRotation = this.rotation; - - if (this._reset || this.sprite.fresh) - { - this.prev.x = this.position.x; - this.prev.y = this.position.y; - } - - if (this.moves) - { - this.game.physics.arcade.updateMotion(this); - - this.newVelocity.set(this.velocity.x * this.game.time.physicsElapsed, this.velocity.y * this.game.time.physicsElapsed); - - this.position.x += this.newVelocity.x; - this.position.y += this.newVelocity.y; - - if (this.position.x !== this.prev.x || this.position.y !== this.prev.y) - { - this.angle = Math.atan2(this.velocity.y, this.velocity.x); - } - - this.speed = Math.sqrt(this.velocity.x * this.velocity.x + this.velocity.y * this.velocity.y); - - // Now the State update will throw collision checks at the Body - // And finally we'll integrate the new position back to the Sprite in postUpdate - - if (this.collideWorldBounds) - { - if (this.checkWorldBounds() && this.onWorldBounds) - { - this.onWorldBounds.dispatch(this.sprite, this.blocked.up, this.blocked.down, this.blocked.left, this.blocked.right); - } - } - } - - this._dx = this.deltaX(); - this._dy = this.deltaY(); - - this._reset = false; - - }, - - /** - * Internal method. - * - * @method Phaser.Physics.Arcade.Body#updateMovement - * @protected - */ - updateMovement: function () { - - var percent = 0; - var collided = (this.overlapX !== 0 || this.overlapY !== 0); - - // Duration or Distance based? - - if (this.moveDuration > 0) - { - this.moveTimer += this.game.time.elapsedMS; - - percent = this.moveTimer / this.moveDuration; - } - else - { - this.moveTarget.end.set(this.position.x, this.position.y); - - percent = this.moveTarget.length / this.moveDistance; - } - - if (this.movementCallback) - { - var result = this.movementCallback.call(this.movementCallbackContext, this, this.velocity, percent); - } - - if (collided || percent >= 1 || (result !== undefined && result !== true)) - { - this.stopMovement((percent >= 1) || (this.stopVelocityOnCollide && collided)); - return false; - } - - return true; - - }, - - /** - * If this Body is moving as a result of a call to `moveTo` or `moveFrom` (i.e. it - * has Body.isMoving true), then calling this method will stop the movement before - * either the duration or distance counters expire. - * - * The `onMoveComplete` signal is dispatched. - * - * @method Phaser.Physics.Arcade.Body#stopMovement - * @param {boolean} [stopVelocity] - Should the Body.velocity be set to zero? - */ - stopMovement: function (stopVelocity) { - - if (this.isMoving) - { - this.isMoving = false; - - if (stopVelocity) - { - this.velocity.set(0); - } - - // Send the Sprite this Body belongs to - // and a boolean indicating if it stopped because of a collision or not - this.onMoveComplete.dispatch(this.sprite, (this.overlapX !== 0 || this.overlapY !== 0)); - } - - }, - - /** - * Internal method. - * - * @method Phaser.Physics.Arcade.Body#postUpdate - * @protected - */ - postUpdate: function () { - - // Only allow postUpdate to be called once per frame - if (!this.enable || !this.dirty) - { - return; - } - - // Moving? - if (this.isMoving) - { - this.updateMovement(); - } - - this.dirty = false; - - if (this.deltaX() < 0) - { - this.facing = Phaser.LEFT; - } - else if (this.deltaX() > 0) - { - this.facing = Phaser.RIGHT; - } - - if (this.deltaY() < 0) - { - this.facing = Phaser.UP; - } - else if (this.deltaY() > 0) - { - this.facing = Phaser.DOWN; - } - - if (this.moves) - { - this._dx = this.deltaX(); - this._dy = this.deltaY(); - - if (this.deltaMax.x !== 0 && this._dx !== 0) - { - if (this._dx < 0 && this._dx < -this.deltaMax.x) - { - this._dx = -this.deltaMax.x; - } - else if (this._dx > 0 && this._dx > this.deltaMax.x) - { - this._dx = this.deltaMax.x; - } - } - - if (this.deltaMax.y !== 0 && this._dy !== 0) - { - if (this._dy < 0 && this._dy < -this.deltaMax.y) - { - this._dy = -this.deltaMax.y; - } - else if (this._dy > 0 && this._dy > this.deltaMax.y) - { - this._dy = this.deltaMax.y; - } - } - - this.sprite.position.x += this._dx; - this.sprite.position.y += this._dy; - this._reset = true; - } - - this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); - - if (this.allowRotation) - { - this.sprite.angle += this.deltaZ(); - } - - this.prev.x = this.position.x; - this.prev.y = this.position.y; - - }, - - /** - * Internal method. - * - * @method Phaser.Physics.Arcade.Body#checkWorldBounds - * @protected - * @return {boolean} True if the Body collided with the world bounds, otherwise false. - */ - checkWorldBounds: function () { - - var pos = this.position; - var bounds = this.game.physics.arcade.bounds; - var check = this.game.physics.arcade.checkCollision; - - var bx = (this.worldBounce) ? -this.worldBounce.x : -this.bounce.x; - var by = (this.worldBounce) ? -this.worldBounce.y : -this.bounce.y; - - if (this.isCircle) - { - var bodyBounds = { - x: this.center.x - this.radius, - y: this.center.y - this.radius, - right: this.center.x + this.radius, - bottom: this.center.y + this.radius - }; - - if (bodyBounds.x < bounds.x && check.left) - { - pos.x = bounds.x - this.halfWidth + this.radius; - this.velocity.x *= bx; - this.blocked.left = true; - } - else if (bodyBounds.right > bounds.right && check.right) - { - pos.x = bounds.right - this.halfWidth - this.radius; - this.velocity.x *= bx; - this.blocked.right = true; - } - - if (bodyBounds.y < bounds.y && check.up) - { - pos.y = bounds.y - this.halfHeight + this.radius; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (bodyBounds.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.halfHeight - this.radius; - this.velocity.y *= by; - this.blocked.down = true; - } - } - else - { - if (pos.x < bounds.x && check.left) - { - pos.x = bounds.x; - this.velocity.x *= bx; - this.blocked.left = true; - } - else if (this.right > bounds.right && check.right) - { - pos.x = bounds.right - this.width; - this.velocity.x *= bx; - this.blocked.right = true; - } - - if (pos.y < bounds.y && check.up) - { - pos.y = bounds.y; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (this.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.height; - this.velocity.y *= by; - this.blocked.down = true; - } - } - - return (this.blocked.up || this.blocked.down || this.blocked.left || this.blocked.right); - - }, - - /** - * Note: This method is experimental, and may be changed or removed in a future release. - * - * This method moves the Body in the given direction, for the duration specified. - * It works by setting the velocity on the Body, and an internal timer, and then - * monitoring the duration each frame. When the duration is up the movement is - * stopped and the `Body.onMoveComplete` signal is dispatched. - * - * Movement also stops if the Body collides or overlaps with any other Body. - * - * You can control if the velocity should be reset to zero on collision, by using - * the property `Body.stopVelocityOnCollide`. - * - * Stop the movement at any time by calling `Body.stopMovement`. - * - * You can optionally set a speed in pixels per second. If not specified it - * will use the current `Body.speed` value. If this is zero, the function will return false. - * - * Please note that due to browser timings you should allow for a variance in - * when the duration will actually expire. Depending on system it may be as much as - * +- 50ms. Also this method doesn't take into consideration any other forces acting - * on the Body, such as Gravity, drag or maxVelocity, all of which may impact the - * movement. - * - * @method Phaser.Physics.Arcade.Body#moveFrom - * @param {integer} duration - The duration of the movement, in ms. - * @param {integer} [speed] - The speed of the movement, in pixels per second. If not provided `Body.speed` is used. - * @param {integer} [direction] - The angle of movement. If not provided `Body.angle` is used. - * @return {boolean} True if the movement successfully started, otherwise false. - */ - moveFrom: function (duration, speed, direction) { - - if (speed === undefined) { speed = this.speed; } - - if (speed === 0) - { - return false; - } - - var angle; - - if (direction === undefined) - { - angle = this.angle; - direction = this.game.math.radToDeg(angle); - } - else - { - angle = this.game.math.degToRad(direction); - } - - this.moveTimer = 0; - this.moveDuration = duration; - - // Avoid sin/cos - if (direction === 0 || direction === 180) - { - this.velocity.set(Math.cos(angle) * speed, 0); - } - else if (direction === 90 || direction === 270) - { - this.velocity.set(0, Math.sin(angle) * speed); - } - else - { - this.velocity.set(Math.cos(angle) * speed, Math.sin(angle) * speed); - } - - this.isMoving = true; - - return true; - - }, - - /** - * Note: This method is experimental, and may be changed or removed in a future release. - * - * This method moves the Body in the given direction, for the duration specified. - * It works by setting the velocity on the Body, and an internal distance counter. - * The distance is monitored each frame. When the distance equals the distance - * specified in this call, the movement is stopped, and the `Body.onMoveComplete` - * signal is dispatched. - * - * Movement also stops if the Body collides or overlaps with any other Body. - * - * You can control if the velocity should be reset to zero on collision, by using - * the property `Body.stopVelocityOnCollide`. - * - * Stop the movement at any time by calling `Body.stopMovement`. - * - * Please note that due to browser timings you should allow for a variance in - * when the distance will actually expire. - * - * Note: This method doesn't take into consideration any other forces acting - * on the Body, such as Gravity, drag or maxVelocity, all of which may impact the - * movement. - * - * @method Phaser.Physics.Arcade.Body#moveTo - * @param {integer} duration - The duration of the movement, in ms. - * @param {integer} distance - The distance, in pixels, the Body will move. - * @param {integer} [direction] - The angle of movement. If not provided `Body.angle` is used. - * @return {boolean} True if the movement successfully started, otherwise false. - */ - moveTo: function (duration, distance, direction) { - - var speed = distance / (duration / 1000); - - if (speed === 0) - { - return false; - } - - var angle; - - if (direction === undefined) - { - angle = this.angle; - direction = this.game.math.radToDeg(angle); - } - else - { - angle = this.game.math.degToRad(direction); - } - - distance = Math.abs(distance); - - this.moveDuration = 0; - this.moveDistance = distance; - - if (this.moveTarget === null) - { - this.moveTarget = new Phaser.Line(); - this.moveEnd = new Phaser.Point(); - } - - this.moveTarget.fromAngle(this.x, this.y, angle, distance); - - this.moveEnd.set(this.moveTarget.end.x, this.moveTarget.end.y); - - this.moveTarget.setTo(this.x, this.y, this.x, this.y); - - // Avoid sin/cos - if (direction === 0 || direction === 180) - { - this.velocity.set(Math.cos(angle) * speed, 0); - } - else if (direction === 90 || direction === 270) - { - this.velocity.set(0, Math.sin(angle) * speed); - } - else - { - this.velocity.set(Math.cos(angle) * speed, Math.sin(angle) * speed); - } - - this.isMoving = true; - - return true; - - }, - - /** - * You can modify the size of the physics Body to be any dimension you need. - * This allows you to make it smaller, or larger, than the parent Sprite. - * You can also control the x and y offset of the Body. This is the position of the - * Body relative to the top-left of the Sprite _texture_. - * - * For example: If you have a Sprite with a texture that is 80x100 in size, - * and you want the physics body to be 32x32 pixels in the middle of the texture, you would do: - * - * `setSize(32, 32, 24, 34)` - * - * Where the first two parameters is the new Body size (32x32 pixels). - * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 - * is the vertical offset. - * - * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle - * properties, making this Body rectangular again. - * - * @method Phaser.Physics.Arcade.Body#setSize - * @param {number} width - The width of the Body. - * @param {number} height - The height of the Body. - * @param {number} [offsetX] - The X offset of the Body from the top-left of the Sprites texture. - * @param {number} [offsetY] - The Y offset of the Body from the top-left of the Sprites texture. - */ - setSize: function (width, height, offsetX, offsetY) { - - if (offsetX === undefined) { offsetX = this.offset.x; } - if (offsetY === undefined) { offsetY = this.offset.y; } - - this.sourceWidth = width; - this.sourceHeight = height; - this.width = this.sourceWidth * this._sx; - this.height = this.sourceHeight * this._sy; - this.halfWidth = Math.floor(this.width / 2); - this.halfHeight = Math.floor(this.height / 2); - this.offset.setTo(offsetX, offsetY); - - this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); - - this.isCircle = false; - this.radius = 0; - - }, - - /** - * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. - * The radius is given in pixels and is the distance from the center of the circle to the edge. - * - * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. - * - * To change a Body back to being rectangular again call `Body.setSize`. - * - * Note: Circular collision only happens with other Arcade Physics bodies, it does not - * work against tile maps, where rectangular collision is the only method supported. - * - * @method Phaser.Physics.Arcade.Body#setCircle - * @param {number} [radius] - The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. - * @param {number} [offsetX] - The X offset of the Body from the Sprite position. - * @param {number} [offsetY] - The Y offset of the Body from the Sprite position. - */ - setCircle: function (radius, offsetX, offsetY) { - - if (offsetX === undefined) { offsetX = this.offset.x; } - if (offsetY === undefined) { offsetY = this.offset.y; } - - if (radius > 0) - { - this.isCircle = true; - this.radius = radius; - - this.sourceWidth = radius * 2; - this.sourceHeight = radius * 2; - - this.width = this.sourceWidth * this._sx; - this.height = this.sourceHeight * this._sy; - - this.halfWidth = Math.floor(this.width / 2); - this.halfHeight = Math.floor(this.height / 2); - - this.offset.setTo(offsetX, offsetY); - - this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); - } - else - { - this.isCircle = false; - } - - }, - - /** - * Resets all Body values (velocity, acceleration, rotation, etc) - * - * @method Phaser.Physics.Arcade.Body#reset - * @param {number} x - The new x position of the Body. - * @param {number} y - The new y position of the Body. - */ - reset: function (x, y) { - - this.velocity.set(0); - this.acceleration.set(0); - - this.speed = 0; - this.angularVelocity = 0; - this.angularAcceleration = 0; - - this.position.x = (x - (this.sprite.anchor.x * this.sprite.width)) + this.sprite.scale.x * this.offset.x; - this.position.x -= this.sprite.scale.x < 0 ? this.width : 0; - - this.position.y = (y - (this.sprite.anchor.y * this.sprite.height)) + this.sprite.scale.y * this.offset.y; - this.position.y -= this.sprite.scale.y < 0 ? this.height : 0; - - this.prev.x = this.position.x; - this.prev.y = this.position.y; - - this.rotation = this.sprite.angle; - this.preRotation = this.rotation; - - this._sx = this.sprite.scale.x; - this._sy = this.sprite.scale.y; - - this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); - - }, - - /** - * Returns the bounds of this physics body. - * - * Only used internally by the World collision methods. - * - * @method Phaser.Physics.Arcade.Body#getBounds - * @param {object} obj - The object in which to set the bounds values. - * @return {object} The object that was given to this method. - */ - getBounds: function (obj) { - - if (this.isCircle) - { - obj.x = this.center.x - this.radius; - obj.y = this.center.y - this.radius; - obj.right = this.center.x + this.radius; - obj.bottom = this.center.y + this.radius; - } - else - { - obj.x = this.x; - obj.y = this.y; - obj.right = this.right; - obj.bottom = this.bottom; - } - - return obj; - - }, - - /** - * Tests if a world point lies within this Body. - * - * @method Phaser.Physics.Arcade.Body#hitTest - * @param {number} x - The world x coordinate to test. - * @param {number} y - The world y coordinate to test. - * @return {boolean} True if the given coordinates are inside this Body, otherwise false. - */ - hitTest: function (x, y) { - - return (this.isCircle) ? Phaser.Circle.contains(this, x, y) : Phaser.Rectangle.contains(this, x, y); - - }, - - /** - * Returns true if the bottom of this Body is in contact with either the world bounds or a tile. - * - * @method Phaser.Physics.Arcade.Body#onFloor - * @return {boolean} True if in contact with either the world bounds or a tile. - */ - onFloor: function () { - - return this.blocked.down; - - }, - - /** - * Returns true if the top of this Body is in contact with either the world bounds or a tile. - * - * @method Phaser.Physics.Arcade.Body#onTop - * @return {boolean} True if in contact with either the world bounds or a tile. - */ - onCeiling: function(){ - - return this.blocked.up; - - }, - - /** - * Returns true if either side of this Body is in contact with either the world bounds or a tile. - * - * @method Phaser.Physics.Arcade.Body#onWall - * @return {boolean} True if in contact with either the world bounds or a tile. - */ - onWall: function () { - - return (this.blocked.left || this.blocked.right); - - }, - - /** - * Returns the absolute delta x value. - * - * @method Phaser.Physics.Arcade.Body#deltaAbsX - * @return {number} The absolute delta value. - */ - deltaAbsX: function () { - - return (this.deltaX() > 0 ? this.deltaX() : -this.deltaX()); - - }, - - /** - * Returns the absolute delta y value. - * - * @method Phaser.Physics.Arcade.Body#deltaAbsY - * @return {number} The absolute delta value. - */ - deltaAbsY: function () { - - return (this.deltaY() > 0 ? this.deltaY() : -this.deltaY()); - - }, - - /** - * Returns the delta x value. The difference between Body.x now and in the previous step. - * - * @method Phaser.Physics.Arcade.Body#deltaX - * @return {number} The delta value. Positive if the motion was to the right, negative if to the left. - */ - deltaX: function () { - - return this.position.x - this.prev.x; - - }, - - /** - * Returns the delta y value. The difference between Body.y now and in the previous step. - * - * @method Phaser.Physics.Arcade.Body#deltaY - * @return {number} The delta value. Positive if the motion was downwards, negative if upwards. - */ - deltaY: function () { - - return this.position.y - this.prev.y; - - }, - - /** - * Returns the delta z value. The difference between Body.rotation now and in the previous step. - * - * @method Phaser.Physics.Arcade.Body#deltaZ - * @return {number} The delta value. Positive if the motion was clockwise, negative if anti-clockwise. - */ - deltaZ: function () { - - return this.rotation - this.preRotation; - - }, - - /** - * Destroys this Body. - * - * First it calls Group.removeFromHash if the Game Object this Body belongs to is part of a Group. - * Then it nulls the Game Objects body reference, and nulls this Body.sprite reference. - * - * @method Phaser.Physics.Arcade.Body#destroy - */ - destroy: function () { - - if (this.sprite.parent && this.sprite.parent instanceof Phaser.Group) - { - this.sprite.parent.removeFromHash(this.sprite); - } - - this.sprite.body = null; - this.sprite = null; - - } - -}; - -/** -* @name Phaser.Physics.Arcade.Body#left -* @property {number} left - The x position of the Body. The same as `Body.x`. -*/ -Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "left", { - - get: function () { - - return this.position.x; - - } - -}); - -/** -* @name Phaser.Physics.Arcade.Body#right -* @property {number} right - The right value of this Body (same as Body.x + Body.width) -* @readonly -*/ -Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "right", { - - get: function () { - - return this.position.x + this.width; - - } - -}); - -/** -* @name Phaser.Physics.Arcade.Body#top -* @property {number} top - The y position of the Body. The same as `Body.y`. -*/ -Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "top", { - - get: function () { - - return this.position.y; - - } - -}); - -/** -* @name Phaser.Physics.Arcade.Body#bottom -* @property {number} bottom - The bottom value of this Body (same as Body.y + Body.height) -* @readonly -*/ -Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "bottom", { - - get: function () { - - return this.position.y + this.height; - - } - -}); - -/** -* @name Phaser.Physics.Arcade.Body#x -* @property {number} x - The x position. -*/ -Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "x", { - - get: function () { - - return this.position.x; - - }, - - set: function (value) { - - this.position.x = value; - } - -}); - -/** -* @name Phaser.Physics.Arcade.Body#y -* @property {number} y - The y position. -*/ -Object.defineProperty(Phaser.Physics.Arcade.Body.prototype, "y", { - - get: function () { - - return this.position.y; - - }, - - set: function (value) { - - this.position.y = value; - - } - -}); - -/** -* Render Sprite Body. -* -* @method Phaser.Physics.Arcade.Body#render -* @param {object} context - The context to render to. -* @param {Phaser.Physics.Arcade.Body} body - The Body to render the info of. -* @param {string} [color='rgba(0,255,0,0.4)'] - color of the debug info to be rendered. (format is css color string). -* @param {boolean} [filled=true] - Render the objected as a filled (default, true) or a stroked (false) -*/ -Phaser.Physics.Arcade.Body.render = function (context, body, color, filled) { - - if (filled === undefined) { filled = true; } - - color = color || 'rgba(0,255,0,0.4)'; - - context.fillStyle = color; - context.strokeStyle = color; - - if (body.isCircle) - { - context.beginPath(); - context.arc(body.center.x - body.game.camera.x, body.center.y - body.game.camera.y, body.radius, 0, 2 * Math.PI); - - if (filled) - { - context.fill(); - } - else - { - context.stroke(); - } - } - else - { - if (filled) - { - context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); - } - else - { - context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); - } - } - -}; - -/** -* Render Sprite Body Physics Data as text. -* -* @method Phaser.Physics.Arcade.Body#renderBodyInfo -* @param {Phaser.Physics.Arcade.Body} body - The Body to render the info of. -* @param {number} x - X position of the debug info to be rendered. -* @param {number} y - Y position of the debug info to be rendered. -* @param {string} [color='rgb(255,255,255)'] - color of the debug info to be rendered. (format is css color string). -*/ -Phaser.Physics.Arcade.Body.renderBodyInfo = function (debug, body) { - - debug.line('x: ' + body.x.toFixed(2), 'y: ' + body.y.toFixed(2), 'width: ' + body.width, 'height: ' + body.height); - debug.line('velocity x: ' + body.velocity.x.toFixed(2), 'y: ' + body.velocity.y.toFixed(2), 'deltaX: ' + body._dx.toFixed(2), 'deltaY: ' + body._dy.toFixed(2)); - debug.line('acceleration x: ' + body.acceleration.x.toFixed(2), 'y: ' + body.acceleration.y.toFixed(2), 'speed: ' + body.speed.toFixed(2), 'angle: ' + body.angle.toFixed(2)); - debug.line('gravity x: ' + body.gravity.x, 'y: ' + body.gravity.y, 'bounce x: ' + body.bounce.x.toFixed(2), 'y: ' + body.bounce.y.toFixed(2)); - debug.line('touching left: ' + body.touching.left, 'right: ' + body.touching.right, 'up: ' + body.touching.up, 'down: ' + body.touching.down); - debug.line('blocked left: ' + body.blocked.left, 'right: ' + body.blocked.right, 'up: ' + body.blocked.up, 'down: ' + body.blocked.down); - -}; - -Phaser.Physics.Arcade.Body.prototype.constructor = Phaser.Physics.Arcade.Body; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Arcade Physics Tile map collision methods. -* -* @class Phaser.Physics.Arcade.TilemapCollision -* @constructor -*/ -Phaser.Physics.Arcade.TilemapCollision = function () {}; - -Phaser.Physics.Arcade.TilemapCollision.prototype = { - - /** - * @property {number} TILE_BIAS - A value added to the delta values during collision with tiles. Adjust this if you get tunneling. - */ - TILE_BIAS: 16, - - /** - * An internal function. Use Phaser.Physics.Arcade.collide instead. - * - * @method Phaser.Physics.Arcade#collideSpriteVsTilemapLayer - * @private - * @param {Phaser.Sprite} sprite - The sprite to check. - * @param {Phaser.TilemapLayer} tilemapLayer - The layer to check. - * @param {function} collideCallback - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them. - * @param {function} processCallback - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them. - * @param {object} callbackContext - The context in which to run the callbacks. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - */ - collideSpriteVsTilemapLayer: function (sprite, tilemapLayer, collideCallback, processCallback, callbackContext, overlapOnly) { - - if (!sprite.body) - { - return; - } - - var mapData = tilemapLayer.getTiles( - sprite.body.position.x - sprite.body.tilePadding.x, - sprite.body.position.y - sprite.body.tilePadding.y, - sprite.body.width + sprite.body.tilePadding.x, - sprite.body.height + sprite.body.tilePadding.y, - false, false); - - if (mapData.length === 0) - { - return; - } - - for (var i = 0; i < mapData.length; i++) - { - if (processCallback) - { - if (processCallback.call(callbackContext, sprite, mapData[i])) - { - if (this.separateTile(i, sprite.body, mapData[i], tilemapLayer, overlapOnly)) - { - this._total++; - - if (collideCallback) - { - collideCallback.call(callbackContext, sprite, mapData[i]); - } - } - } - } - else - { - if (this.separateTile(i, sprite.body, mapData[i], tilemapLayer, overlapOnly)) - { - this._total++; - - if (collideCallback) - { - collideCallback.call(callbackContext, sprite, mapData[i]); - } - } - } - } - - }, - - /** - * An internal function. Use Phaser.Physics.Arcade.collide instead. - * - * @private - * @method Phaser.Physics.Arcade#collideGroupVsTilemapLayer - * @param {Phaser.Group} group - The Group to check. - * @param {Phaser.TilemapLayer} tilemapLayer - The layer to check. - * @param {function} collideCallback - An optional callback function that is called if the objects collide. The two objects will be passed to this function in the same order in which you specified them. - * @param {function} processCallback - A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then collision will only happen if processCallback returns true. The two objects will be passed to this function in the same order in which you specified them. - * @param {object} callbackContext - The context in which to run the callbacks. - * @param {boolean} overlapOnly - Just run an overlap or a full collision. - */ - collideGroupVsTilemapLayer: function (group, tilemapLayer, collideCallback, processCallback, callbackContext, overlapOnly) { - - if (group.length === 0) - { - return; - } - - for (var i = 0; i < group.children.length; i++) - { - if (group.children[i].exists) - { - this.collideSpriteVsTilemapLayer(group.children[i], tilemapLayer, collideCallback, processCallback, callbackContext, overlapOnly); - } - } - - }, - - /** - * The core separation function to separate a physics body and a tile. - * - * @private - * @method Phaser.Physics.Arcade#separateTile - * @param {Phaser.Physics.Arcade.Body} body - The Body object to separate. - * @param {Phaser.Tile} tile - The tile to collide against. - * @param {Phaser.TilemapLayer} tilemapLayer - The tilemapLayer to collide against. - * @return {boolean} Returns true if the body was separated, otherwise false. - */ - separateTile: function (i, body, tile, tilemapLayer, overlapOnly) { - - if (!body.enable) - { - return false; - } - - var tilemapLayerOffsetX = (!tilemapLayer.fixedToCamera) ? tilemapLayer.position.x : 0; - var tilemapLayerOffsetY = (!tilemapLayer.fixedToCamera) ? tilemapLayer.position.y : 0; - - // We re-check for collision in case body was separated in a previous step - if (!tile.intersects((body.position.x - tilemapLayerOffsetX), (body.position.y - tilemapLayerOffsetY), (body.right - tilemapLayerOffsetX), (body.bottom - tilemapLayerOffsetY))) - { - // no collision so bail out (separated in a previous step) - return false; - } - else if (overlapOnly) - { - // There is an overlap, and we don't need to separate. Bail. - return true; - } - - // They overlap. Any custom callbacks? - - // A local callback always takes priority over a layer level callback - if (tile.collisionCallback && !tile.collisionCallback.call(tile.collisionCallbackContext, body.sprite, tile)) - { - // If it returns true then we can carry on, otherwise we should abort. - return false; - } - else if (typeof tile.layer.callbacks !== 'undefined' && tile.layer.callbacks[tile.index] && !tile.layer.callbacks[tile.index].callback.call(tile.layer.callbacks[tile.index].callbackContext, body.sprite, tile)) - { - // If it returns true then we can carry on, otherwise we should abort. - return false; - } - - // We don't need to go any further if this tile doesn't actually separate - if (!tile.faceLeft && !tile.faceRight && !tile.faceTop && !tile.faceBottom) - { - // This could happen if the tile was meant to be collided with re: a callback, but otherwise isn't needed for separation - return false; - } - - var ox = 0; - var oy = 0; - var minX = 0; - var minY = 1; - - if (body.deltaAbsX() > body.deltaAbsY()) - { - // Moving faster horizontally, check X axis first - minX = -1; - } - else if (body.deltaAbsX() < body.deltaAbsY()) - { - // Moving faster vertically, check Y axis first - minY = -1; - } - - if (body.deltaX() !== 0 && body.deltaY() !== 0 && (tile.faceLeft || tile.faceRight) && (tile.faceTop || tile.faceBottom)) - { - // We only need do this if both axis have checking faces AND we're moving in both directions - minX = Math.min(Math.abs((body.position.x - tilemapLayerOffsetX) - tile.right), Math.abs((body.right - tilemapLayerOffsetX) - tile.left)); - minY = Math.min(Math.abs((body.position.y - tilemapLayerOffsetY) - tile.bottom), Math.abs((body.bottom - tilemapLayerOffsetY) - tile.top)); - } - - if (minX < minY) - { - if (tile.faceLeft || tile.faceRight) - { - ox = this.tileCheckX(body, tile, tilemapLayer); - - // That's horizontal done, check if we still intersects? If not then we can return now - if (ox !== 0 && !tile.intersects((body.position.x - tilemapLayerOffsetX), (body.position.y - tilemapLayerOffsetY), (body.right - tilemapLayerOffsetX), (body.bottom - tilemapLayerOffsetY))) - { - return true; - } - } - - if (tile.faceTop || tile.faceBottom) - { - oy = this.tileCheckY(body, tile, tilemapLayer); - } - } - else - { - if (tile.faceTop || tile.faceBottom) - { - oy = this.tileCheckY(body, tile, tilemapLayer); - - // That's vertical done, check if we still intersects? If not then we can return now - if (oy !== 0 && !tile.intersects((body.position.x - tilemapLayerOffsetX), (body.position.y - tilemapLayerOffsetY), (body.right - tilemapLayerOffsetX), (body.bottom - tilemapLayerOffsetY))) - { - return true; - } - } - - if (tile.faceLeft || tile.faceRight) - { - ox = this.tileCheckX(body, tile, tilemapLayer); - } - } - - return (ox !== 0 || oy !== 0); - - }, - - /** - * Check the body against the given tile on the X axis. - * - * @private - * @method Phaser.Physics.Arcade#tileCheckX - * @param {Phaser.Physics.Arcade.Body} body - The Body object to separate. - * @param {Phaser.Tile} tile - The tile to check. - * @param {Phaser.TilemapLayer} tilemapLayer - The tilemapLayer to collide against. - * @return {number} The amount of separation that occurred. - */ - tileCheckX: function (body, tile, tilemapLayer) { - - var ox = 0; - var tilemapLayerOffsetX = (!tilemapLayer.fixedToCamera) ? tilemapLayer.position.x : 0; - - if (body.deltaX() < 0 && !body.blocked.left && tile.collideRight && body.checkCollision.left) - { - // Body is moving LEFT - if (tile.faceRight && (body.x - tilemapLayerOffsetX) < tile.right) - { - ox = (body.x - tilemapLayerOffsetX) - tile.right; - - if (ox < -this.TILE_BIAS) - { - ox = 0; - } - } - } - else if (body.deltaX() > 0 && !body.blocked.right && tile.collideLeft && body.checkCollision.right) - { - // Body is moving RIGHT - if (tile.faceLeft && (body.right - tilemapLayerOffsetX) > tile.left) - { - ox = (body.right - tilemapLayerOffsetX) - tile.left; - - if (ox > this.TILE_BIAS) - { - ox = 0; - } - } - } - - if (ox !== 0) - { - if (body.customSeparateX) - { - body.overlapX = ox; - } - else - { - this.processTileSeparationX(body, ox); - } - } - - return ox; - - }, - - /** - * Check the body against the given tile on the Y axis. - * - * @private - * @method Phaser.Physics.Arcade#tileCheckY - * @param {Phaser.Physics.Arcade.Body} body - The Body object to separate. - * @param {Phaser.Tile} tile - The tile to check. - * @param {Phaser.TilemapLayer} tilemapLayer - The tilemapLayer to collide against. - * @return {number} The amount of separation that occurred. - */ - tileCheckY: function (body, tile, tilemapLayer) { - - var oy = 0; - var tilemapLayerOffsetY = (!tilemapLayer.fixedToCamera) ? tilemapLayer.position.y : 0; - - if (body.deltaY() < 0 && !body.blocked.up && tile.collideDown && body.checkCollision.up) - { - // Body is moving UP - if (tile.faceBottom && (body.y - tilemapLayerOffsetY) < tile.bottom) - { - oy = (body.y - tilemapLayerOffsetY) - tile.bottom; - - if (oy < -this.TILE_BIAS) - { - oy = 0; - } - } - } - else if (body.deltaY() > 0 && !body.blocked.down && tile.collideUp && body.checkCollision.down) - { - // Body is moving DOWN - if (tile.faceTop && (body.bottom - tilemapLayerOffsetY) > tile.top) - { - oy = (body.bottom - tilemapLayerOffsetY) - tile.top; - - if (oy > this.TILE_BIAS) - { - oy = 0; - } - } - } - - if (oy !== 0) - { - if (body.customSeparateY) - { - body.overlapY = oy; - } - else - { - this.processTileSeparationY(body, oy); - } - } - - return oy; - - }, - - /** - * Internal function to process the separation of a physics body from a tile. - * - * @private - * @method Phaser.Physics.Arcade#processTileSeparationX - * @param {Phaser.Physics.Arcade.Body} body - The Body object to separate. - * @param {number} x - The x separation amount. - */ - processTileSeparationX: function (body, x) { - - if (x < 0) - { - body.blocked.left = true; - } - else if (x > 0) - { - body.blocked.right = true; - } - - body.position.x -= x; - - if (body.bounce.x === 0) - { - body.velocity.x = 0; - } - else - { - body.velocity.x = -body.velocity.x * body.bounce.x; - } - - }, - - /** - * Internal function to process the separation of a physics body from a tile. - * - * @private - * @method Phaser.Physics.Arcade#processTileSeparationY - * @param {Phaser.Physics.Arcade.Body} body - The Body object to separate. - * @param {number} y - The y separation amount. - */ - processTileSeparationY: function (body, y) { - - if (y < 0) - { - body.blocked.up = true; - } - else if (y > 0) - { - body.blocked.down = true; - } - - body.position.y -= y; - - if (body.bounce.y === 0) - { - body.velocity.y = 0; - } - else - { - body.velocity.y = -body.velocity.y * body.bounce.y; - } - - } - -}; - -// Merge this with the Arcade Physics prototype -Phaser.Utils.mixinPrototype(Phaser.Physics.Arcade.prototype, Phaser.Physics.Arcade.TilemapCollision.prototype); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -// Add an extra properties to p2 that we need -p2.Body.prototype.parent = null; -p2.Spring.prototype.parent = null; - -/** -* This is your main access to the P2 Physics World. -* From here you can create materials, listen for events and add bodies into the physics simulation. -* -* @class Phaser.Physics.P2 -* @constructor -* @param {Phaser.Game} game - Reference to the current game instance. -* @param {object} [config] - Physics configuration object passed in from the game constructor. -*/ -Phaser.Physics.P2 = function (game, config) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - if (config === undefined) - { - config = { gravity: [0, 0], broadphase: new p2.SAPBroadphase() }; - } - else - { - if (!config.hasOwnProperty('gravity')) - { - config.gravity = [0, 0]; - } - - if (!config.hasOwnProperty('broadphase')) - { - config.broadphase = new p2.SAPBroadphase(); - } - } - - /** - * @property {object} config - The p2 World configuration object. - * @protected - */ - this.config = config; - - /** - * @property {p2.World} world - The p2 World in which the simulation is run. - * @protected - */ - this.world = new p2.World(this.config); - - /** - * @property {number} frameRate - The frame rate the world will be stepped at. Defaults to 1 / 60, but you can change here. Also see useElapsedTime property. - * @default - */ - this.frameRate = 1 / 60; - - /** - * @property {boolean} useElapsedTime - If true the frameRate value will be ignored and instead p2 will step with the value of Game.Time.physicsElapsed, which is a delta time value. - * @default - */ - this.useElapsedTime = false; - - /** - * @property {boolean} paused - The paused state of the P2 World. - * @default - */ - this.paused = false; - - /** - * @property {array} materials - A local array of all created Materials. - * @protected - */ - this.materials = []; - - /** - * @property {Phaser.Physics.P2.InversePointProxy} gravity - The gravity applied to all bodies each step. - */ - this.gravity = new Phaser.Physics.P2.InversePointProxy(this, this.world.gravity); - - /** - * @property {object} walls - An object containing the 4 wall bodies that bound the physics world. - */ - this.walls = { left: null, right: null, top: null, bottom: null }; - - /** - * This signal is dispatched when a new Body is added to the World. - * - * It sends 1 argument: `body` which is the `Phaser.Physics.P2.Body` that was added to the world. - * - * @property {Phaser.Signal} onBodyAdded - */ - this.onBodyAdded = new Phaser.Signal(); - - /** - * This signal is dispatched when a Body is removed to the World. - * - * It sends 1 argument: `body` which is the `Phaser.Physics.P2.Body` that was removed from the world. - * - * @property {Phaser.Signal} onBodyRemoved - */ - this.onBodyRemoved = new Phaser.Signal(); - - /** - * This signal is dispatched when a Spring is added to the World. - * - * It sends 1 argument: `spring` which is either a `Phaser.Physics.P2.Spring`, `p2.LinearSpring` or `p2.RotationalSpring` that was added to the world. - * - * @property {Phaser.Signal} onSpringAdded - */ - this.onSpringAdded = new Phaser.Signal(); - - /** - * This signal is dispatched when a Spring is removed from the World. - * - * It sends 1 argument: `spring` which is either a `Phaser.Physics.P2.Spring`, `p2.LinearSpring` or `p2.RotationalSpring` that was removed from the world. - * - * @property {Phaser.Signal} onSpringRemoved - */ - this.onSpringRemoved = new Phaser.Signal(); - - /** - * This signal is dispatched when a Constraint is added to the World. - * - * It sends 1 argument: `constraint` which is the `Phaser.Physics.P2.Constraint` that was added to the world. - * - * @property {Phaser.Signal} onConstraintAdded - */ - this.onConstraintAdded = new Phaser.Signal(); - - /** - * This signal is dispatched when a Constraint is removed from the World. - * - * It sends 1 argument: `constraint` which is the `Phaser.Physics.P2.Constraint` that was removed from the world. - * - * @property {Phaser.Signal} onConstraintRemoved - */ - this.onConstraintRemoved = new Phaser.Signal(); - - /** - * This signal is dispatched when a Contact Material is added to the World. - * - * It sends 1 argument: `material` which is the `Phaser.Physics.P2.ContactMaterial` that was added to the world. - * - * @property {Phaser.Signal} onContactMaterialAdded - */ - this.onContactMaterialAdded = new Phaser.Signal(); - - /** - * This signal is dispatched when a Contact Material is removed from the World. - * - * It sends 1 argument: `material` which is the `Phaser.Physics.P2.ContactMaterial` that was removed from the world. - * - * @property {Phaser.Signal} onContactMaterialRemoved - */ - this.onContactMaterialRemoved = new Phaser.Signal(); - - /** - * @property {function} postBroadphaseCallback - A postBroadphase callback. - */ - this.postBroadphaseCallback = null; - - /** - * @property {object} callbackContext - The context under which the callbacks are fired. - */ - this.callbackContext = null; - - /** - * This Signal is dispatched when a first contact is created between two bodies. This happens *before* the step has been done. - * - * It sends 5 arguments: `bodyA`, `bodyB`, `shapeA`, `shapeB` and `contactEquations`. - * - * It is possible that in certain situations the `bodyA` or `bodyB` values are `null`. You should check for this - * in your own code to avoid processing potentially null physics bodies. - * - * @property {Phaser.Signal} onBeginContact - */ - this.onBeginContact = new Phaser.Signal(); - - /** - * This Signal is dispatched when final contact occurs between two bodies. This happens *before* the step has been done. - * - * It sends 4 arguments: `bodyA`, `bodyB`, `shapeA` and `shapeB`. - * - * It is possible that in certain situations the `bodyA` or `bodyB` values are `null`. You should check for this - * in your own code to avoid processing potentially null physics bodies. - * - * @property {Phaser.Signal} onEndContact - */ - this.onEndContact = new Phaser.Signal(); - - // Pixel to meter function overrides - if (config.hasOwnProperty('mpx') && config.hasOwnProperty('pxm') && config.hasOwnProperty('mpxi') && config.hasOwnProperty('pxmi')) - { - this.mpx = config.mpx; - this.mpxi = config.mpxi; - this.pxm = config.pxm; - this.pxmi = config.pxmi; - } - - // Hook into the World events - this.world.on("beginContact", this.beginContactHandler, this); - this.world.on("endContact", this.endContactHandler, this); - - /** - * @property {array} collisionGroups - An array containing the collision groups that have been defined in the World. - */ - this.collisionGroups = []; - - /** - * @property {Phaser.Physics.P2.CollisionGroup} nothingCollisionGroup - A default collision group. - */ - this.nothingCollisionGroup = new Phaser.Physics.P2.CollisionGroup(1); - - /** - * @property {Phaser.Physics.P2.CollisionGroup} boundsCollisionGroup - A default collision group. - */ - this.boundsCollisionGroup = new Phaser.Physics.P2.CollisionGroup(2); - - /** - * @property {Phaser.Physics.P2.CollisionGroup} everythingCollisionGroup - A default collision group. - */ - this.everythingCollisionGroup = new Phaser.Physics.P2.CollisionGroup(2147483648); - - /** - * @property {array} boundsCollidesWith - An array of the bodies the world bounds collides with. - */ - this.boundsCollidesWith = []; - - /** - * @property {array} _toRemove - Internal var used to hold references to bodies to remove from the world on the next step. - * @private - */ - this._toRemove = []; - - /** - * @property {number} _collisionGroupID - Internal var. - * @private - */ - this._collisionGroupID = 2; - - /** - * @property {boolean} _boundsLeft - Internal var that keeps track of world bounds settings. - * @private - */ - this._boundsLeft = true; - - /** - * @property {boolean} _boundsRight - Internal var that keeps track of world bounds settings. - * @private - */ - this._boundsRight = true; - - /** - * @property {boolean} _boundsTop - Internal var that keeps track of world bounds settings. - * @private - */ - this._boundsTop = true; - - /** - * @property {boolean} _boundsBottom - Internal var that keeps track of world bounds settings. - * @private - */ - this._boundsBottom = true; - - /** - * @property {boolean} _boundsOwnGroup - Internal var that keeps track of world bounds settings. - * @private - */ - this._boundsOwnGroup = false; - - // By default we want everything colliding with everything - this.setBoundsToWorld(true, true, true, true, false); - -}; - -Phaser.Physics.P2.prototype = { - - /** - * This will add a P2 Physics body into the removal list for the next step. - * - * @method Phaser.Physics.P2#removeBodyNextStep - * @param {Phaser.Physics.P2.Body} body - The body to remove at the start of the next step. - */ - removeBodyNextStep: function (body) { - - this._toRemove.push(body); - - }, - - /** - * Called at the start of the core update loop. Purges flagged bodies from the world. - * - * @method Phaser.Physics.P2#preUpdate - */ - preUpdate: function () { - - var i = this._toRemove.length; - - while (i--) - { - this.removeBody(this._toRemove[i]); - } - - this._toRemove.length = 0; - - }, - - /** - * This will create a P2 Physics body on the given game object or array of game objects. - * A game object can only have 1 physics body active at any one time, and it can't be changed until the object is destroyed. - * Note: When the game object is enabled for P2 physics it has its anchor x/y set to 0.5 so it becomes centered. - * - * @method Phaser.Physics.P2#enable - * @param {object|array|Phaser.Group} object - The game object to create the physics body on. Can also be an array or Group of objects, a body will be created on every child that has a `body` property. - * @param {boolean} [debug=false] - Create a debug object to go with this body? - * @param {boolean} [children=true] - Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - */ - enable: function (object, debug, children) { - - if (debug === undefined) { debug = false; } - if (children === undefined) { children = true; } - - var i = 1; - - if (Array.isArray(object)) - { - i = object.length; - - while (i--) - { - if (object[i] instanceof Phaser.Group) - { - // If it's a Group then we do it on the children regardless - this.enable(object[i].children, debug, children); - } - else - { - this.enableBody(object[i], debug); - - if (children && object[i].hasOwnProperty('children') && object[i].children.length > 0) - { - this.enable(object[i], debug, true); - } - } - } - } - else - { - if (object instanceof Phaser.Group) - { - // If it's a Group then we do it on the children regardless - this.enable(object.children, debug, children); - } - else - { - this.enableBody(object, debug); - - if (children && object.hasOwnProperty('children') && object.children.length > 0) - { - this.enable(object.children, debug, true); - } - } - } - - }, - - /** - * Creates a P2 Physics body on the given game object. - * A game object can only have 1 physics body active at any one time, and it can't be changed until the body is nulled. - * - * @method Phaser.Physics.P2#enableBody - * @param {object} object - The game object to create the physics body on. A body will only be created if this object has a null `body` property. - * @param {boolean} debug - Create a debug object to go with this body? - */ - enableBody: function (object, debug) { - - if (object.hasOwnProperty('body') && object.body === null) - { - object.body = new Phaser.Physics.P2.Body(this.game, object, object.x, object.y, 1); - object.body.debug = debug; - if (typeof object.anchor !== 'undefined') { - object.anchor.set(0.5); - } - } - - }, - - /** - * Impact event handling is disabled by default. Enable it before any impact events will be dispatched. - * In a busy world hundreds of impact events can be generated every step, so only enable this if you cannot do what you need via beginContact or collision masks. - * - * @method Phaser.Physics.P2#setImpactEvents - * @param {boolean} state - Set to true to enable impact events, or false to disable. - */ - setImpactEvents: function (state) { - - if (state) - { - this.world.on("impact", this.impactHandler, this); - } - else - { - this.world.off("impact", this.impactHandler, this); - } - - }, - - /** - * Sets a callback to be fired after the Broadphase has collected collision pairs in the world. - * Just because a pair exists it doesn't mean they *will* collide, just that they potentially could do. - * If your calback returns `false` the pair will be removed from the narrowphase. This will stop them testing for collision this step. - * Returning `true` from the callback will ensure they are checked in the narrowphase. - * - * @method Phaser.Physics.P2#setPostBroadphaseCallback - * @param {function} callback - The callback that will receive the postBroadphase event data. It must return a boolean. Set to null to disable an existing callback. - * @param {object} context - The context under which the callback will be fired. - */ - setPostBroadphaseCallback: function (callback, context) { - - this.postBroadphaseCallback = callback; - this.callbackContext = context; - - if (callback !== null) - { - this.world.on("postBroadphase", this.postBroadphaseHandler, this); - } - else - { - this.world.off("postBroadphase", this.postBroadphaseHandler, this); - } - - }, - - /** - * Internal handler for the postBroadphase event. - * - * @method Phaser.Physics.P2#postBroadphaseHandler - * @private - * @param {object} event - The event data. - */ - postBroadphaseHandler: function (event) { - - if (!this.postBroadphaseCallback || event.pairs.length === 0) - { - return; - } - - for (var i = event.pairs.length - 2; i >= 0; i -= 2) - { - if (event.pairs[i].parent && event.pairs[i+1].parent && !this.postBroadphaseCallback.call(this.callbackContext, event.pairs[i].parent, event.pairs[i+1].parent)) - { - event.pairs.splice(i, 2); - } - } - - }, - - /** - * Handles a p2 impact event. - * - * @method Phaser.Physics.P2#impactHandler - * @private - * @param {object} event - The event data. - */ - impactHandler: function (event) { - - if (event.bodyA.parent && event.bodyB.parent) - { - // Body vs. Body callbacks - var a = event.bodyA.parent; - var b = event.bodyB.parent; - - if (a._bodyCallbacks[event.bodyB.id]) - { - a._bodyCallbacks[event.bodyB.id].call(a._bodyCallbackContext[event.bodyB.id], a, b, event.shapeA, event.shapeB); - } - - if (b._bodyCallbacks[event.bodyA.id]) - { - b._bodyCallbacks[event.bodyA.id].call(b._bodyCallbackContext[event.bodyA.id], b, a, event.shapeB, event.shapeA); - } - - // Body vs. Group callbacks - if (a._groupCallbacks[event.shapeB.collisionGroup]) - { - a._groupCallbacks[event.shapeB.collisionGroup].call(a._groupCallbackContext[event.shapeB.collisionGroup], a, b, event.shapeA, event.shapeB); - } - - if (b._groupCallbacks[event.shapeA.collisionGroup]) - { - b._groupCallbacks[event.shapeA.collisionGroup].call(b._groupCallbackContext[event.shapeA.collisionGroup], b, a, event.shapeB, event.shapeA); - } - } - - }, - - /** - * Handles a p2 begin contact event. - * - * @method Phaser.Physics.P2#beginContactHandler - * @param {object} event - The event data. - */ - beginContactHandler: function (event) { - - if (event.bodyA && event.bodyB) - { - this.onBeginContact.dispatch(event.bodyA, event.bodyB, event.shapeA, event.shapeB, event.contactEquations); - - if (event.bodyA.parent) - { - event.bodyA.parent.onBeginContact.dispatch(event.bodyB.parent, event.bodyB, event.shapeA, event.shapeB, event.contactEquations); - } - - if (event.bodyB.parent) - { - event.bodyB.parent.onBeginContact.dispatch(event.bodyA.parent, event.bodyA, event.shapeB, event.shapeA, event.contactEquations); - } - } - - }, - - /** - * Handles a p2 end contact event. - * - * @method Phaser.Physics.P2#endContactHandler - * @param {object} event - The event data. - */ - endContactHandler: function (event) { - - if (event.bodyA && event.bodyB) - { - this.onEndContact.dispatch(event.bodyA, event.bodyB, event.shapeA, event.shapeB); - - if (event.bodyA.parent) - { - event.bodyA.parent.onEndContact.dispatch(event.bodyB.parent, event.bodyB, event.shapeA, event.shapeB); - } - - if (event.bodyB.parent) - { - event.bodyB.parent.onEndContact.dispatch(event.bodyA.parent, event.bodyA, event.shapeB, event.shapeA); - } - } - - }, - - /** - * Sets the bounds of the Physics world to match the Game.World dimensions. - * You can optionally set which 'walls' to create: left, right, top or bottom. - * - * @method Phaser.Physics#setBoundsToWorld - * @param {boolean} [left=true] - If true will create the left bounds wall. - * @param {boolean} [right=true] - If true will create the right bounds wall. - * @param {boolean} [top=true] - If true will create the top bounds wall. - * @param {boolean} [bottom=true] - If true will create the bottom bounds wall. - * @param {boolean} [setCollisionGroup=true] - If true the Bounds will be set to use its own Collision Group. - */ - setBoundsToWorld: function (left, right, top, bottom, setCollisionGroup) { - - this.setBounds(this.game.world.bounds.x, this.game.world.bounds.y, this.game.world.bounds.width, this.game.world.bounds.height, left, right, top, bottom, setCollisionGroup); - - }, - - /** - * Sets the given material against the 4 bounds of this World. - * - * @method Phaser.Physics#setWorldMaterial - * @param {Phaser.Physics.P2.Material} material - The material to set. - * @param {boolean} [left=true] - If true will set the material on the left bounds wall. - * @param {boolean} [right=true] - If true will set the material on the right bounds wall. - * @param {boolean} [top=true] - If true will set the material on the top bounds wall. - * @param {boolean} [bottom=true] - If true will set the material on the bottom bounds wall. - */ - setWorldMaterial: function (material, left, right, top, bottom) { - - if (left === undefined) { left = true; } - if (right === undefined) { right = true; } - if (top === undefined) { top = true; } - if (bottom === undefined) { bottom = true; } - - if (left && this.walls.left) - { - this.walls.left.shapes[0].material = material; - } - - if (right && this.walls.right) - { - this.walls.right.shapes[0].material = material; - } - - if (top && this.walls.top) - { - this.walls.top.shapes[0].material = material; - } - - if (bottom && this.walls.bottom) - { - this.walls.bottom.shapes[0].material = material; - } - - }, - - /** - * By default the World will be set to collide everything with everything. The bounds of the world is a Body with 4 shapes, one for each face. - * If you start to use your own collision groups then your objects will no longer collide with the bounds. - * To fix this you need to adjust the bounds to use its own collision group first BEFORE changing your Sprites collision group. - * - * @method Phaser.Physics.P2#updateBoundsCollisionGroup - * @param {boolean} [setCollisionGroup=true] - If true the Bounds will be set to use its own Collision Group. - */ - updateBoundsCollisionGroup: function (setCollisionGroup) { - - if (setCollisionGroup === undefined) { setCollisionGroup = true; } - - var mask = (setCollisionGroup) ? this.boundsCollisionGroup.mask : this.everythingCollisionGroup.mask; - - if (this.walls.left) - { - this.walls.left.shapes[0].collisionGroup = mask; - } - - if (this.walls.right) - { - this.walls.right.shapes[0].collisionGroup = mask; - } - - if (this.walls.top) - { - this.walls.top.shapes[0].collisionGroup = mask; - } - - if (this.walls.bottom) - { - this.walls.bottom.shapes[0].collisionGroup = mask; - } - - this._boundsOwnGroup = setCollisionGroup; - - }, - - /** - * Sets the bounds of the Physics world to match the given world pixel dimensions. - * You can optionally set which 'walls' to create: left, right, top or bottom. - * If none of the walls are given it will default to use the walls settings it had previously. - * I.e. if you previously told it to not have the left or right walls, and you then adjust the world size - * the newly created bounds will also not have the left and right walls. - * Explicitly state them in the parameters to override this. - * - * @method Phaser.Physics.P2#setBounds - * @param {number} x - The x coordinate of the top-left corner of the bounds. - * @param {number} y - The y coordinate of the top-left corner of the bounds. - * @param {number} width - The width of the bounds. - * @param {number} height - The height of the bounds. - * @param {boolean} [left=true] - If true will create the left bounds wall. - * @param {boolean} [right=true] - If true will create the right bounds wall. - * @param {boolean} [top=true] - If true will create the top bounds wall. - * @param {boolean} [bottom=true] - If true will create the bottom bounds wall. - * @param {boolean} [setCollisionGroup=true] - If true the Bounds will be set to use its own Collision Group. - */ - setBounds: function (x, y, width, height, left, right, top, bottom, setCollisionGroup) { - - if (left === undefined) { left = this._boundsLeft; } - if (right === undefined) { right = this._boundsRight; } - if (top === undefined) { top = this._boundsTop; } - if (bottom === undefined) { bottom = this._boundsBottom; } - if (setCollisionGroup === undefined) { setCollisionGroup = this._boundsOwnGroup; } - - this.setupWall(left, 'left', x, y, 1.5707963267948966, setCollisionGroup); - this.setupWall(right, 'right', x + width, y, -1.5707963267948966, setCollisionGroup); - this.setupWall(top, 'top', x, y, -3.141592653589793, setCollisionGroup); - this.setupWall(bottom, 'bottom', x, y + height, 0, setCollisionGroup); - - // Remember the bounds settings in case they change later on via World.setBounds - this._boundsLeft = left; - this._boundsRight = right; - this._boundsTop = top; - this._boundsBottom = bottom; - this._boundsOwnGroup = setCollisionGroup; - - }, - - /** - * Internal method called by setBounds. Responsible for creating, updating or - * removing the wall body shapes. - * - * @method Phaser.Physics.P2#setupWall - * @private - * @param {boolean} create - True to create the wall shape, false to remove it. - * @param {string} wall - The wall segment to update. - * @param {number} x - The x coordinate of the wall. - * @param {number} y - The y coordinate of the wall. - * @param {float} angle - The angle of the wall. - * @param {boolean} [setCollisionGroup=true] - If true the Bounds will be set to use its own Collision Group. - */ - setupWall: function (create, wall, x, y, angle, setCollisionGroup) { - - if (create) - { - // We need a left wall. Do we have one already? - if (this.walls[wall]) - { - this.walls[wall].position = [ this.pxmi(x), this.pxmi(y) ]; - } - else - { - this.walls[wall] = new p2.Body({ mass: 0, position: [ this.pxmi(x), this.pxmi(y) ], angle: angle }); - this.walls[wall].addShape(new p2.Plane()); - - this.world.addBody(this.walls[wall]); - } - - if (setCollisionGroup) - { - this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; - } - } - else - { - if (this.walls[wall]) - { - this.world.removeBody(this.walls[wall]); - this.walls[wall] = null; - } - } - - }, - - /** - * Pauses the P2 World independent of the game pause state. - * - * @method Phaser.Physics.P2#pause - */ - pause: function() { - - this.paused = true; - - }, - - /** - * Resumes a paused P2 World. - * - * @method Phaser.Physics.P2#resume - */ - resume: function() { - - this.paused = false; - - }, - - /** - * Internal P2 update loop. - * - * @method Phaser.Physics.P2#update - */ - update: function () { - - // Do nothing if the physics engine was paused before - if (this.paused) - { - return; - } - - if (this.useElapsedTime) - { - this.world.step(this.game.time.physicsElapsed); - } - else - { - this.world.step(this.frameRate); - } - - }, - - /** - * Called by Phaser.Physics when a State swap occurs. - * Starts the begin and end Contact listeners again. - * - * @method Phaser.Physics.P2#reset - */ - reset: function () { - - this.world.on("beginContact", this.beginContactHandler, this); - this.world.on("endContact", this.endContactHandler, this); - - this.nothingCollisionGroup = new Phaser.Physics.P2.CollisionGroup(1); - this.boundsCollisionGroup = new Phaser.Physics.P2.CollisionGroup(2); - this.everythingCollisionGroup = new Phaser.Physics.P2.CollisionGroup(2147483648); - - this._collisionGroupID = 2; - - this.setBoundsToWorld(true, true, true, true, false); - - }, - - /** - * Clears all bodies from the simulation, resets callbacks and resets the collision bitmask. - * - * The P2 world is also cleared: - * - * * Removes all solver equations - * * Removes all constraints - * * Removes all bodies - * * Removes all springs - * * Removes all contact materials - * - * This is called automatically when you switch state. - * - * @method Phaser.Physics.P2#clear - */ - clear: function () { - - this.world.time = 0; - this.world.fixedStepTime = 0; - - // Remove all solver equations - if (this.world.solver && this.world.solver.equations.length) - { - this.world.solver.removeAllEquations(); - } - - // Remove all constraints - var cs = this.world.constraints; - - for (var i = cs.length - 1; i >= 0; i--) - { - this.world.removeConstraint(cs[i]); - } - - // Remove all bodies - var bodies = this.world.bodies; - - for (var i = bodies.length - 1; i >= 0; i--) - { - this.world.removeBody(bodies[i]); - } - - // Remove all springs - var springs = this.world.springs; - - for (var i = springs.length - 1; i >= 0; i--) - { - this.world.removeSpring(springs[i]); - } - - // Remove all contact materials - var cms = this.world.contactMaterials; - - for (var i = cms.length - 1; i >= 0; i--) - { - this.world.removeContactMaterial(cms[i]); - } - - this.world.off("beginContact", this.beginContactHandler, this); - this.world.off("endContact", this.endContactHandler, this); - - this.postBroadphaseCallback = null; - this.callbackContext = null; - this.impactCallback = null; - - this.collisionGroups = []; - this._toRemove = []; - this.boundsCollidesWith = []; - - // Remove the world bounds - this.walls = { left: null, right: null, top: null, bottom: null }; - - }, - - /** - * Clears all bodies from the simulation and unlinks World from Game. Should only be called on game shutdown. Call `clear` on a State change. - * - * @method Phaser.Physics.P2#destroy - */ - destroy: function () { - - this.clear(); - - this.game = null; - - }, - - /** - * Add a body to the world. - * - * @method Phaser.Physics.P2#addBody - * @param {Phaser.Physics.P2.Body} body - The Body to add to the World. - * @return {boolean} True if the Body was added successfully, otherwise false. - */ - addBody: function (body) { - - if (body.data.world) - { - return false; - } - else - { - this.world.addBody(body.data); - - this.onBodyAdded.dispatch(body); - - return true; - } - - }, - - /** - * Removes a body from the world. This will silently fail if the body wasn't part of the world to begin with. - * - * @method Phaser.Physics.P2#removeBody - * @param {Phaser.Physics.P2.Body} body - The Body to remove from the World. - * @return {Phaser.Physics.P2.Body} The Body that was removed. - */ - removeBody: function (body) { - - if (body.data.world == this.world) - { - this.world.removeBody(body.data); - - this.onBodyRemoved.dispatch(body); - } - - return body; - - }, - - /** - * Adds a Spring to the world. - * - * @method Phaser.Physics.P2#addSpring - * @param {Phaser.Physics.P2.Spring|p2.LinearSpring|p2.RotationalSpring} spring - The Spring to add to the World. - * @return {Phaser.Physics.P2.Spring} The Spring that was added. - */ - addSpring: function (spring) { - - if (spring instanceof Phaser.Physics.P2.Spring || spring instanceof Phaser.Physics.P2.RotationalSpring) - { - this.world.addSpring(spring.data); - } - else - { - this.world.addSpring(spring); - } - - this.onSpringAdded.dispatch(spring); - - return spring; - - }, - - /** - * Removes a Spring from the world. - * - * @method Phaser.Physics.P2#removeSpring - * @param {Phaser.Physics.P2.Spring} spring - The Spring to remove from the World. - * @return {Phaser.Physics.P2.Spring} The Spring that was removed. - */ - removeSpring: function (spring) { - - if (spring instanceof Phaser.Physics.P2.Spring || spring instanceof Phaser.Physics.P2.RotationalSpring) - { - this.world.removeSpring(spring.data); - } - else - { - this.world.removeSpring(spring); - } - - this.onSpringRemoved.dispatch(spring); - - return spring; - - }, - - /** - * Creates a constraint that tries to keep the distance between two bodies constant. - * - * @method Phaser.Physics.P2#createDistanceConstraint - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyA - First connected body. - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyB - Second connected body. - * @param {number} distance - The distance to keep between the bodies. - * @param {Array} [localAnchorA] - The anchor point for bodyA, defined locally in bodyA frame. Defaults to [0,0]. - * @param {Array} [localAnchorB] - The anchor point for bodyB, defined locally in bodyB frame. Defaults to [0,0]. - * @param {number} [maxForce] - The maximum force that should be applied to constrain the bodies. - * @return {Phaser.Physics.P2.DistanceConstraint} The constraint - */ - createDistanceConstraint: function (bodyA, bodyB, distance, localAnchorA, localAnchorB, maxForce) { - - bodyA = this.getBody(bodyA); - bodyB = this.getBody(bodyB); - - if (!bodyA || !bodyB) - { - console.warn('Cannot create Constraint, invalid body objects given'); - } - else - { - return this.addConstraint(new Phaser.Physics.P2.DistanceConstraint(this, bodyA, bodyB, distance, localAnchorA, localAnchorB, maxForce)); - } - - }, - - /** - * Creates a constraint that tries to keep the distance between two bodies constant. - * - * @method Phaser.Physics.P2#createGearConstraint - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyA - First connected body. - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyB - Second connected body. - * @param {number} [angle=0] - The relative angle - * @param {number} [ratio=1] - The gear ratio. - * @return {Phaser.Physics.P2.GearConstraint} The constraint - */ - createGearConstraint: function (bodyA, bodyB, angle, ratio) { - - bodyA = this.getBody(bodyA); - bodyB = this.getBody(bodyB); - - if (!bodyA || !bodyB) - { - console.warn('Cannot create Constraint, invalid body objects given'); - } - else - { - return this.addConstraint(new Phaser.Physics.P2.GearConstraint(this, bodyA, bodyB, angle, ratio)); - } - - }, - - /** - * Connects two bodies at given offset points, letting them rotate relative to each other around this point. - * The pivot points are given in world (pixel) coordinates. - * - * @method Phaser.Physics.P2#createRevoluteConstraint - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyA - First connected body. - * @param {Array} pivotA - The point relative to the center of mass of bodyA which bodyA is constrained to. The value is an array with 2 elements matching x and y, i.e: [32, 32]. - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyB - Second connected body. - * @param {Array} pivotB - The point relative to the center of mass of bodyB which bodyB is constrained to. The value is an array with 2 elements matching x and y, i.e: [32, 32]. - * @param {number} [maxForce=0] - The maximum force that should be applied to constrain the bodies. - * @param {Float32Array} [worldPivot=null] - A pivot point given in world coordinates. If specified, localPivotA and localPivotB are automatically computed from this value. - * @return {Phaser.Physics.P2.RevoluteConstraint} The constraint - */ - createRevoluteConstraint: function (bodyA, pivotA, bodyB, pivotB, maxForce, worldPivot) { - - bodyA = this.getBody(bodyA); - bodyB = this.getBody(bodyB); - - if (!bodyA || !bodyB) - { - console.warn('Cannot create Constraint, invalid body objects given'); - } - else - { - return this.addConstraint(new Phaser.Physics.P2.RevoluteConstraint(this, bodyA, pivotA, bodyB, pivotB, maxForce, worldPivot)); - } - - }, - - /** - * Locks the relative position between two bodies. - * - * @method Phaser.Physics.P2#createLockConstraint - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyA - First connected body. - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyB - Second connected body. - * @param {Array} [offset] - The offset of bodyB in bodyA's frame. The value is an array with 2 elements matching x and y, i.e: [32, 32]. - * @param {number} [angle=0] - The angle of bodyB in bodyA's frame. - * @param {number} [maxForce] - The maximum force that should be applied to constrain the bodies. - * @return {Phaser.Physics.P2.LockConstraint} The constraint - */ - createLockConstraint: function (bodyA, bodyB, offset, angle, maxForce) { - - bodyA = this.getBody(bodyA); - bodyB = this.getBody(bodyB); - - if (!bodyA || !bodyB) - { - console.warn('Cannot create Constraint, invalid body objects given'); - } - else - { - return this.addConstraint(new Phaser.Physics.P2.LockConstraint(this, bodyA, bodyB, offset, angle, maxForce)); - } - - }, - - /** - * Constraint that only allows bodies to move along a line, relative to each other. - * See http://www.iforce2d.net/b2dtut/joints-prismatic - * - * @method Phaser.Physics.P2#createPrismaticConstraint - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyA - First connected body. - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyB - Second connected body. - * @param {boolean} [lockRotation=true] - If set to false, bodyB will be free to rotate around its anchor point. - * @param {Array} [anchorA] - Body A's anchor point, defined in its own local frame. The value is an array with 2 elements matching x and y, i.e: [32, 32]. - * @param {Array} [anchorB] - Body A's anchor point, defined in its own local frame. The value is an array with 2 elements matching x and y, i.e: [32, 32]. - * @param {Array} [axis] - An axis, defined in body A frame, that body B's anchor point may slide along. The value is an array with 2 elements matching x and y, i.e: [32, 32]. - * @param {number} [maxForce] - The maximum force that should be applied to constrain the bodies. - * @return {Phaser.Physics.P2.PrismaticConstraint} The constraint - */ - createPrismaticConstraint: function (bodyA, bodyB, lockRotation, anchorA, anchorB, axis, maxForce) { - - bodyA = this.getBody(bodyA); - bodyB = this.getBody(bodyB); - - if (!bodyA || !bodyB) - { - console.warn('Cannot create Constraint, invalid body objects given'); - } - else - { - return this.addConstraint(new Phaser.Physics.P2.PrismaticConstraint(this, bodyA, bodyB, lockRotation, anchorA, anchorB, axis, maxForce)); - } - - }, - - /** - * Adds a Constraint to the world. - * - * @method Phaser.Physics.P2#addConstraint - * @param {Phaser.Physics.P2.Constraint} constraint - The Constraint to add to the World. - * @return {Phaser.Physics.P2.Constraint} The Constraint that was added. - */ - addConstraint: function (constraint) { - - this.world.addConstraint(constraint); - - this.onConstraintAdded.dispatch(constraint); - - return constraint; - - }, - - /** - * Removes a Constraint from the world. - * - * @method Phaser.Physics.P2#removeConstraint - * @param {Phaser.Physics.P2.Constraint} constraint - The Constraint to be removed from the World. - * @return {Phaser.Physics.P2.Constraint} The Constraint that was removed. - */ - removeConstraint: function (constraint) { - - this.world.removeConstraint(constraint); - - this.onConstraintRemoved.dispatch(constraint); - - return constraint; - - }, - - /** - * Adds a Contact Material to the world. - * - * @method Phaser.Physics.P2#addContactMaterial - * @param {Phaser.Physics.P2.ContactMaterial} material - The Contact Material to be added to the World. - * @return {Phaser.Physics.P2.ContactMaterial} The Contact Material that was added. - */ - addContactMaterial: function (material) { - - this.world.addContactMaterial(material); - - this.onContactMaterialAdded.dispatch(material); - - return material; - - }, - - /** - * Removes a Contact Material from the world. - * - * @method Phaser.Physics.P2#removeContactMaterial - * @param {Phaser.Physics.P2.ContactMaterial} material - The Contact Material to be removed from the World. - * @return {Phaser.Physics.P2.ContactMaterial} The Contact Material that was removed. - */ - removeContactMaterial: function (material) { - - this.world.removeContactMaterial(material); - - this.onContactMaterialRemoved.dispatch(material); - - return material; - - }, - - /** - * Gets a Contact Material based on the two given Materials. - * - * @method Phaser.Physics.P2#getContactMaterial - * @param {Phaser.Physics.P2.Material} materialA - The first Material to search for. - * @param {Phaser.Physics.P2.Material} materialB - The second Material to search for. - * @return {Phaser.Physics.P2.ContactMaterial|boolean} The Contact Material or false if none was found matching the Materials given. - */ - getContactMaterial: function (materialA, materialB) { - - return this.world.getContactMaterial(materialA, materialB); - - }, - - /** - * Sets the given Material against all Shapes owned by all the Bodies in the given array. - * - * @method Phaser.Physics.P2#setMaterial - * @param {Phaser.Physics.P2.Material} material - The Material to be applied to the given Bodies. - * @param {array} bodies - An Array of Body objects that the given Material will be set on. - */ - setMaterial: function (material, bodies) { - - var i = bodies.length; - - while (i--) - { - bodies[i].setMaterial(material); - } - - }, - - /** - * Creates a Material. Materials are applied to Shapes owned by a Body and can be set with Body.setMaterial(). - * Materials are a way to control what happens when Shapes collide. Combine unique Materials together to create Contact Materials. - * Contact Materials have properties such as friction and restitution that allow for fine-grained collision control between different Materials. - * - * @method Phaser.Physics.P2#createMaterial - * @param {string} [name] - Optional name of the Material. Each Material has a unique ID but string names are handy for debugging. - * @param {Phaser.Physics.P2.Body} [body] - Optional Body. If given it will assign the newly created Material to the Body shapes. - * @return {Phaser.Physics.P2.Material} The Material that was created. This is also stored in Phaser.Physics.P2.materials. - */ - createMaterial: function (name, body) { - - name = name || ''; - - var material = new Phaser.Physics.P2.Material(name); - - this.materials.push(material); - - if (typeof body !== 'undefined') - { - body.setMaterial(material); - } - - return material; - - }, - - /** - * Creates a Contact Material from the two given Materials. You can then edit the properties of the Contact Material directly. - * - * @method Phaser.Physics.P2#createContactMaterial - * @param {Phaser.Physics.P2.Material} [materialA] - The first Material to create the ContactMaterial from. If undefined it will create a new Material object first. - * @param {Phaser.Physics.P2.Material} [materialB] - The second Material to create the ContactMaterial from. If undefined it will create a new Material object first. - * @param {object} [options] - Material options object. - * @return {Phaser.Physics.P2.ContactMaterial} The Contact Material that was created. - */ - createContactMaterial: function (materialA, materialB, options) { - - if (materialA === undefined) { materialA = this.createMaterial(); } - if (materialB === undefined) { materialB = this.createMaterial(); } - - var contact = new Phaser.Physics.P2.ContactMaterial(materialA, materialB, options); - - return this.addContactMaterial(contact); - - }, - - /** - * Populates and returns an array with references to of all current Bodies in the world. - * - * @method Phaser.Physics.P2#getBodies - * @return {array} An array containing all current Bodies in the world. - */ - getBodies: function () { - - var output = []; - var i = this.world.bodies.length; - - while (i--) - { - output.push(this.world.bodies[i].parent); - } - - return output; - - }, - - /** - * Checks the given object to see if it has a p2.Body and if so returns it. - * - * @method Phaser.Physics.P2#getBody - * @param {object} object - The object to check for a p2.Body on. - * @return {p2.Body} The p2.Body, or null if not found. - */ - getBody: function (object) { - - if (object instanceof p2.Body) - { - // Native p2 body - return object; - } - else if (object instanceof Phaser.Physics.P2.Body) - { - // Phaser P2 Body - return object.data; - } - else if (object['body'] && object['body'].type === Phaser.Physics.P2JS) - { - // Sprite, TileSprite, etc - return object.body.data; - } - - return null; - - }, - - /** - * Populates and returns an array of all current Springs in the world. - * - * @method Phaser.Physics.P2#getSprings - * @return {array} An array containing all current Springs in the world. - */ - getSprings: function () { - - var output = []; - var i = this.world.springs.length; - - while (i--) - { - output.push(this.world.springs[i].parent); - } - - return output; - - }, - - /** - * Populates and returns an array of all current Constraints in the world. - * You will get an array of p2 constraints back. This can be of mixed types, for example the array may contain - * PrismaticConstraints, RevoluteConstraints or any other valid p2 constraint type. - * - * @method Phaser.Physics.P2#getConstraints - * @return {array} An array containing all current Constraints in the world. - */ - getConstraints: function () { - - var output = []; - var i = this.world.constraints.length; - - while (i--) - { - output.push(this.world.constraints[i]); - } - - return output; - - }, - - /** - * Test if a world point overlaps bodies. You will get an array of actual P2 bodies back. You can find out which Sprite a Body belongs to - * (if any) by checking the Body.parent.sprite property. Body.parent is a Phaser.Physics.P2.Body property. - * - * @method Phaser.Physics.P2#hitTest - * @param {Phaser.Point} worldPoint - Point to use for intersection tests. The points values must be in world (pixel) coordinates. - * @param {Array} [bodies] - A list of objects to check for intersection. If not given it will check Phaser.Physics.P2.world.bodies (i.e. all world bodies) - * @param {number} [precision=5] - Used for matching against particles and lines. Adds some margin to these infinitesimal objects. - * @param {boolean} [filterStatic=false] - If true all Static objects will be removed from the results array. - * @return {Array} Array of bodies that overlap the point. - */ - hitTest: function (worldPoint, bodies, precision, filterStatic) { - - if (bodies === undefined) { bodies = this.world.bodies; } - if (precision === undefined) { precision = 5; } - if (filterStatic === undefined) { filterStatic = false; } - - var physicsPosition = [ this.pxmi(worldPoint.x), this.pxmi(worldPoint.y) ]; - - var query = []; - var i = bodies.length; - - while (i--) - { - if (bodies[i] instanceof Phaser.Physics.P2.Body && !(filterStatic && bodies[i].data.type === p2.Body.STATIC)) - { - query.push(bodies[i].data); - } - else if (bodies[i] instanceof p2.Body && bodies[i].parent && !(filterStatic && bodies[i].type === p2.Body.STATIC)) - { - query.push(bodies[i]); - } - else if (bodies[i] instanceof Phaser.Sprite && bodies[i].hasOwnProperty('body') && !(filterStatic && bodies[i].body.data.type === p2.Body.STATIC)) - { - query.push(bodies[i].body.data); - } - } - - return this.world.hitTest(physicsPosition, query, precision); - - }, - - /** - * Converts the current world into a JSON object. - * - * @method Phaser.Physics.P2#toJSON - * @return {object} A JSON representation of the world. - */ - toJSON: function () { - - return this.world.toJSON(); - - }, - - /** - * Creates a new Collision Group and optionally applies it to the given object. - * Collision Groups are handled using bitmasks, therefore you have a fixed limit you can create before you need to re-use older groups. - * - * @method Phaser.Physics.P2#createCollisionGroup - * @param {Phaser.Group|Phaser.Sprite} [object] - An optional Sprite or Group to apply the Collision Group to. If a Group is given it will be applied to all top-level children. - */ - createCollisionGroup: function (object) { - - var bitmask = Math.pow(2, this._collisionGroupID); - - if (this.walls.left) - { - this.walls.left.shapes[0].collisionMask = this.walls.left.shapes[0].collisionMask | bitmask; - } - - if (this.walls.right) - { - this.walls.right.shapes[0].collisionMask = this.walls.right.shapes[0].collisionMask | bitmask; - } - - if (this.walls.top) - { - this.walls.top.shapes[0].collisionMask = this.walls.top.shapes[0].collisionMask | bitmask; - } - - if (this.walls.bottom) - { - this.walls.bottom.shapes[0].collisionMask = this.walls.bottom.shapes[0].collisionMask | bitmask; - } - - this._collisionGroupID++; - - var group = new Phaser.Physics.P2.CollisionGroup(bitmask); - - this.collisionGroups.push(group); - - if (object) - { - this.setCollisionGroup(object, group); - } - - return group; - - }, - - /** - * Sets the given CollisionGroup to be the collision group for all shapes in this Body, unless a shape is specified. - * Note that this resets the collisionMask and any previously set groups. See Body.collides() for appending them. - * - * @method Phaser.Physics.P2y#setCollisionGroup - * @param {Phaser.Group|Phaser.Sprite} object - A Sprite or Group to apply the Collision Group to. If a Group is given it will be applied to all top-level children. - * @param {Phaser.Physics.CollisionGroup} group - The Collision Group that this Bodies shapes will use. - */ - setCollisionGroup: function (object, group) { - - if (object instanceof Phaser.Group) - { - for (var i = 0; i < object.total; i++) - { - if (object.children[i]['body'] && object.children[i]['body'].type === Phaser.Physics.P2JS) - { - object.children[i].body.setCollisionGroup(group); - } - } - } - else - { - object.body.setCollisionGroup(group); - } - - }, - - /** - * Creates a linear spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. - * - * @method Phaser.Physics.P2#createSpring - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyA - First connected body. - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyB - Second connected body. - * @param {number} [restLength=1] - Rest length of the spring. A number > 0. - * @param {number} [stiffness=100] - Stiffness of the spring. A number >= 0. - * @param {number} [damping=1] - Damping of the spring. A number >= 0. - * @param {Array} [worldA] - Where to hook the spring to body A in world coordinates. This value is an array by 2 elements, x and y, i.e: [32, 32]. - * @param {Array} [worldB] - Where to hook the spring to body B in world coordinates. This value is an array by 2 elements, x and y, i.e: [32, 32]. - * @param {Array} [localA] - Where to hook the spring to body A in local body coordinates. This value is an array by 2 elements, x and y, i.e: [32, 32]. - * @param {Array} [localB] - Where to hook the spring to body B in local body coordinates. This value is an array by 2 elements, x and y, i.e: [32, 32]. - * @return {Phaser.Physics.P2.Spring} The spring - */ - createSpring: function (bodyA, bodyB, restLength, stiffness, damping, worldA, worldB, localA, localB) { - - bodyA = this.getBody(bodyA); - bodyB = this.getBody(bodyB); - - if (!bodyA || !bodyB) - { - console.warn('Cannot create Spring, invalid body objects given'); - } - else - { - return this.addSpring(new Phaser.Physics.P2.Spring(this, bodyA, bodyB, restLength, stiffness, damping, worldA, worldB, localA, localB)); - } - - }, - - /** - * Creates a rotational spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. - * - * @method Phaser.Physics.P2#createRotationalSpring - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyA - First connected body. - * @param {Phaser.Sprite|Phaser.Physics.P2.Body|p2.Body} bodyB - Second connected body. - * @param {number} [restAngle] - The relative angle of bodies at which the spring is at rest. If not given, it's set to the current relative angle between the bodies. - * @param {number} [stiffness=100] - Stiffness of the spring. A number >= 0. - * @param {number} [damping=1] - Damping of the spring. A number >= 0. - * @return {Phaser.Physics.P2.RotationalSpring} The spring - */ - createRotationalSpring: function (bodyA, bodyB, restAngle, stiffness, damping) { - - bodyA = this.getBody(bodyA); - bodyB = this.getBody(bodyB); - - if (!bodyA || !bodyB) - { - console.warn('Cannot create Rotational Spring, invalid body objects given'); - } - else - { - return this.addSpring(new Phaser.Physics.P2.RotationalSpring(this, bodyA, bodyB, restAngle, stiffness, damping)); - } - - }, - - /** - * Creates a new Body and adds it to the World. - * - * @method Phaser.Physics.P2#createBody - * @param {number} x - The x coordinate of Body. - * @param {number} y - The y coordinate of Body. - * @param {number} mass - The mass of the Body. A mass of 0 means a 'static' Body is created. - * @param {boolean} [addToWorld=false] - Automatically add this Body to the world? (usually false as it won't have any shapes on construction). - * @param {object} options - An object containing the build options: - * @param {boolean} [options.optimalDecomp=false] - Set to true if you need optimal decomposition. Warning: very slow for polygons with more than 10 vertices. - * @param {boolean} [options.skipSimpleCheck=false] - Set to true if you already know that the path is not intersecting itself. - * @param {boolean|number} [options.removeCollinearPoints=false] - Set to a number (angle threshold value) to remove collinear points, or false to keep all points. - * @param {(number[]|...number)} points - An array of 2d vectors that form the convex or concave polygon. - * Either [[0,0], [0,1],...] or a flat array of numbers that will be interpreted as [x,y, x,y, ...], - * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. - * @return {Phaser.Physics.P2.Body} The body - */ - createBody: function (x, y, mass, addToWorld, options, data) { - - if (addToWorld === undefined) { addToWorld = false; } - - var body = new Phaser.Physics.P2.Body(this.game, null, x, y, mass); - - if (data) - { - var result = body.addPolygon(options, data); - - if (!result) - { - return false; - } - } - - if (addToWorld) - { - this.world.addBody(body.data); - } - - return body; - - }, - - /** - * Creates a new Particle and adds it to the World. - * - * @method Phaser.Physics.P2#createParticle - * @param {number} x - The x coordinate of Body. - * @param {number} y - The y coordinate of Body. - * @param {number} mass - The mass of the Body. A mass of 0 means a 'static' Body is created. - * @param {boolean} [addToWorld=false] - Automatically add this Body to the world? (usually false as it won't have any shapes on construction). - * @param {object} options - An object containing the build options: - * @param {boolean} [options.optimalDecomp=false] - Set to true if you need optimal decomposition. Warning: very slow for polygons with more than 10 vertices. - * @param {boolean} [options.skipSimpleCheck=false] - Set to true if you already know that the path is not intersecting itself. - * @param {boolean|number} [options.removeCollinearPoints=false] - Set to a number (angle threshold value) to remove collinear points, or false to keep all points. - * @param {(number[]|...number)} points - An array of 2d vectors that form the convex or concave polygon. - * Either [[0,0], [0,1],...] or a flat array of numbers that will be interpreted as [x,y, x,y, ...], - * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. - */ - createParticle: function (x, y, mass, addToWorld, options, data) { - - if (addToWorld === undefined) { addToWorld = false; } - - var body = new Phaser.Physics.P2.Body(this.game, null, x, y, mass); - - if (data) - { - var result = body.addPolygon(options, data); - - if (!result) - { - return false; - } - } - - if (addToWorld) - { - this.world.addBody(body.data); - } - - return body; - - }, - - /** - * Converts all of the polylines objects inside a Tiled ObjectGroup into physics bodies that are added to the world. - * Note that the polylines must be created in such a way that they can withstand polygon decomposition. - * - * @method Phaser.Physics.P2#convertCollisionObjects - * @param {Phaser.Tilemap} map - The Tilemap to get the map data from. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to map.currentLayer. - * @param {boolean} [addToWorld=true] - If true it will automatically add each body to the world. - * @return {array} An array of the Phaser.Physics.Body objects that have been created. - */ - convertCollisionObjects: function (map, layer, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - var output = []; - - for (var i = 0, len = map.collision[layer].length; i < len; i++) - { - // name: json.layers[i].objects[v].name, - // x: json.layers[i].objects[v].x, - // y: json.layers[i].objects[v].y, - // width: json.layers[i].objects[v].width, - // height: json.layers[i].objects[v].height, - // visible: json.layers[i].objects[v].visible, - // properties: json.layers[i].objects[v].properties, - // polyline: json.layers[i].objects[v].polyline - - var object = map.collision[layer][i]; - - var body = this.createBody(object.x, object.y, 0, addToWorld, {}, object.polyline); - - if (body) - { - output.push(body); - } - } - - return output; - - }, - - /** - * Clears all physics bodies from the given TilemapLayer that were created with `World.convertTilemap`. - * - * @method Phaser.Physics.P2#clearTilemapLayerBodies - * @param {Phaser.Tilemap} map - The Tilemap to get the map data from. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to map.currentLayer. - */ - clearTilemapLayerBodies: function (map, layer) { - - layer = map.getLayer(layer); - - var i = map.layers[layer].bodies.length; - - while (i--) - { - map.layers[layer].bodies[i].destroy(); - } - - map.layers[layer].bodies.length = 0; - - }, - - /** - * Goes through all tiles in the given Tilemap and TilemapLayer and converts those set to collide into physics bodies. - * Only call this *after* you have specified all of the tiles you wish to collide with calls like Tilemap.setCollisionBetween, etc. - * Every time you call this method it will destroy any previously created bodies and remove them from the world. - * Therefore understand it's a very expensive operation and not to be done in a core game update loop. - * - * @method Phaser.Physics.P2#convertTilemap - * @param {Phaser.Tilemap} map - The Tilemap to get the map data from. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to map.currentLayer. - * @param {boolean} [addToWorld=true] - If true it will automatically add each body to the world, otherwise it's up to you to do so. - * @param {boolean} [optimize=true] - If true adjacent colliding tiles will be combined into a single body to save processing. However it means you cannot perform specific Tile to Body collision responses. - * @return {array} An array of the Phaser.Physics.P2.Body objects that were created. - */ - convertTilemap: function (map, layer, addToWorld, optimize) { - - layer = map.getLayer(layer); - - if (addToWorld === undefined) { addToWorld = true; } - if (optimize === undefined) { optimize = true; } - - // If the bodies array is already populated we need to nuke it - this.clearTilemapLayerBodies(map, layer); - - var width = 0; - var sx = 0; - var sy = 0; - - for (var y = 0, h = map.layers[layer].height; y < h; y++) - { - width = 0; - - for (var x = 0, w = map.layers[layer].width; x < w; x++) - { - var tile = map.layers[layer].data[y][x]; - - if (tile && tile.index > -1 && tile.collides) - { - if (optimize) - { - var right = map.getTileRight(layer, x, y); - - if (width === 0) - { - sx = tile.x * tile.width; - sy = tile.y * tile.height; - width = tile.width; - } - - if (right && right.collides) - { - width += tile.width; - } - else - { - var body = this.createBody(sx, sy, 0, false); - - body.addRectangle(width, tile.height, width / 2, tile.height / 2, 0); - - if (addToWorld) - { - this.addBody(body); - } - - map.layers[layer].bodies.push(body); - - width = 0; - } - } - else - { - var body = this.createBody(tile.x * tile.width, tile.y * tile.height, 0, false); - - body.addRectangle(tile.width, tile.height, tile.width / 2, tile.height / 2, 0); - - if (addToWorld) - { - this.addBody(body); - } - - map.layers[layer].bodies.push(body); - } - } - } - } - - return map.layers[layer].bodies; - - }, - - /** - * Convert p2 physics value (meters) to pixel scale. - * By default Phaser uses a scale of 20px per meter. - * If you need to modify this you can over-ride these functions via the Physics Configuration object. - * - * @method Phaser.Physics.P2#mpx - * @param {number} v - The value to convert. - * @return {number} The scaled value. - */ - mpx: function (v) { - - return v *= 20; - - }, - - /** - * Convert pixel value to p2 physics scale (meters). - * By default Phaser uses a scale of 20px per meter. - * If you need to modify this you can over-ride these functions via the Physics Configuration object. - * - * @method Phaser.Physics.P2#pxm - * @param {number} v - The value to convert. - * @return {number} The scaled value. - */ - pxm: function (v) { - - return v * 0.05; - - }, - - /** - * Convert p2 physics value (meters) to pixel scale and inverses it. - * By default Phaser uses a scale of 20px per meter. - * If you need to modify this you can over-ride these functions via the Physics Configuration object. - * - * @method Phaser.Physics.P2#mpxi - * @param {number} v - The value to convert. - * @return {number} The scaled value. - */ - mpxi: function (v) { - - return v *= -20; - - }, - - /** - * Convert pixel value to p2 physics scale (meters) and inverses it. - * By default Phaser uses a scale of 20px per meter. - * If you need to modify this you can over-ride these functions via the Physics Configuration object. - * - * @method Phaser.Physics.P2#pxmi - * @param {number} v - The value to convert. - * @return {number} The scaled value. - */ - pxmi: function (v) { - - return v * -0.05; - - } - -}; - -/** -* @name Phaser.Physics.P2#friction -* @property {number} friction - Friction between colliding bodies. This value is used if no matching ContactMaterial is found for a Material pair. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "friction", { - - get: function () { - - return this.world.defaultContactMaterial.friction; - - }, - - set: function (value) { - - this.world.defaultContactMaterial.friction = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#restitution -* @property {number} restitution - Default coefficient of restitution between colliding bodies. This value is used if no matching ContactMaterial is found for a Material pair. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "restitution", { - - get: function () { - - return this.world.defaultContactMaterial.restitution; - - }, - - set: function (value) { - - this.world.defaultContactMaterial.restitution = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#contactMaterial -* @property {p2.ContactMaterial} contactMaterial - The default Contact Material being used by the World. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "contactMaterial", { - - get: function () { - - return this.world.defaultContactMaterial; - - }, - - set: function (value) { - - this.world.defaultContactMaterial = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#applySpringForces -* @property {boolean} applySpringForces - Enable to automatically apply spring forces each step. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "applySpringForces", { - - get: function () { - - return this.world.applySpringForces; - - }, - - set: function (value) { - - this.world.applySpringForces = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#applyDamping -* @property {boolean} applyDamping - Enable to automatically apply body damping each step. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "applyDamping", { - - get: function () { - - return this.world.applyDamping; - - }, - - set: function (value) { - - this.world.applyDamping = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#applyGravity -* @property {boolean} applyGravity - Enable to automatically apply gravity each step. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "applyGravity", { - - get: function () { - - return this.world.applyGravity; - - }, - - set: function (value) { - - this.world.applyGravity = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#solveConstraints -* @property {boolean} solveConstraints - Enable/disable constraint solving in each step. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "solveConstraints", { - - get: function () { - - return this.world.solveConstraints; - - }, - - set: function (value) { - - this.world.solveConstraints = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#time -* @property {boolean} time - The World time. -* @readonly -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "time", { - - get: function () { - - return this.world.time; - - } - -}); - -/** -* @name Phaser.Physics.P2#emitImpactEvent -* @property {boolean} emitImpactEvent - Set to true if you want to the world to emit the "impact" event. Turning this off could improve performance. -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "emitImpactEvent", { - - get: function () { - - return this.world.emitImpactEvent; - - }, - - set: function (value) { - - this.world.emitImpactEvent = value; - - } - -}); - -/** -* How to deactivate bodies during simulation. Possible modes are: World.NO_SLEEPING, World.BODY_SLEEPING and World.ISLAND_SLEEPING. -* If sleeping is enabled, you might need to wake up the bodies if they fall asleep when they shouldn't. If you want to enable sleeping in the world, but want to disable it for a particular body, see Body.allowSleep. -* @name Phaser.Physics.P2#sleepMode -* @property {number} sleepMode -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "sleepMode", { - - get: function () { - - return this.world.sleepMode; - - }, - - set: function (value) { - - this.world.sleepMode = value; - - } - -}); - -/** -* @name Phaser.Physics.P2#total -* @property {number} total - The total number of bodies in the world. -* @readonly -*/ -Object.defineProperty(Phaser.Physics.P2.prototype, "total", { - - get: function () { - - return this.world.bodies.length; - - } - -}); - -/* jshint noarg: false */ - -/** -* @author Georgios Kaleadis https://github.com/georgiee -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Allow to access a list of created fixture (coming from Body#addPhaserPolygon) -* which itself parse the input from PhysicsEditor with the custom phaser exporter. -* You can access fixtures of a Body by a group index or even by providing a fixture Key. - -* You can set the fixture key and also the group index for a fixture in PhysicsEditor. -* This gives you the power to create a complex body built of many fixtures and modify them -* during runtime (to remove parts, set masks, categories & sensor properties) -* -* @class Phaser.Physics.P2.FixtureList -* @constructor -* @param {Array} list - A list of fixtures (from Phaser.Physics.P2.Body#addPhaserPolygon) -*/ -Phaser.Physics.P2.FixtureList = function (list) { - - if (!Array.isArray(list)) - { - list = [list]; - } - - this.rawList = list; - this.init(); - this.parse(this.rawList); - -}; - -Phaser.Physics.P2.FixtureList.prototype = { - - /** - * @method Phaser.Physics.P2.FixtureList#init - */ - init: function () { - - /** - * @property {object} namedFixtures - Collect all fixtures with a key - * @private - */ - this.namedFixtures = {}; - - /** - * @property {Array} groupedFixtures - Collect all given fixtures per group index. Notice: Every fixture with a key also belongs to a group - * @private - */ - this.groupedFixtures = []; - - /** - * @property {Array} allFixtures - This is a list of everything in this collection - * @private - */ - this.allFixtures = []; - - }, - - /** - * @method Phaser.Physics.P2.FixtureList#setCategory - * @param {number} bit - The bit to set as the collision group. - * @param {string} fixtureKey - Only apply to the fixture with the given key. - */ - setCategory: function (bit, fixtureKey) { - - var setter = function(fixture) { - fixture.collisionGroup = bit; - }; - - this.getFixtures(fixtureKey).forEach(setter); - - }, - - /** - * @method Phaser.Physics.P2.FixtureList#setMask - * @param {number} bit - The bit to set as the collision mask - * @param {string} fixtureKey - Only apply to the fixture with the given key - */ - setMask: function (bit, fixtureKey) { - - var setter = function(fixture) { - fixture.collisionMask = bit; - }; - - this.getFixtures(fixtureKey).forEach(setter); - - }, - - /** - * @method Phaser.Physics.P2.FixtureList#setSensor - * @param {boolean} value - sensor true or false - * @param {string} fixtureKey - Only apply to the fixture with the given key - */ - setSensor: function (value, fixtureKey) { - - var setter = function(fixture) { - fixture.sensor = value; - }; - - this.getFixtures(fixtureKey).forEach(setter); - - }, - - /** - * @method Phaser.Physics.P2.FixtureList#setMaterial - * @param {Object} material - The contact material for a fixture - * @param {string} fixtureKey - Only apply to the fixture with the given key - */ - setMaterial: function (material, fixtureKey) { - - var setter = function(fixture) { - fixture.material = material; - }; - - this.getFixtures(fixtureKey).forEach(setter); - - }, - - /** - * Accessor to get either a list of specified fixtures by key or the whole fixture list - * - * @method Phaser.Physics.P2.FixtureList#getFixtures - * @param {array} keys - A list of fixture keys - */ - getFixtures: function (keys) { - - var fixtures = []; - - if (keys) - { - if (!(keys instanceof Array)) - { - keys = [keys]; - } - - var self = this; - keys.forEach(function(key) { - if (self.namedFixtures[key]) - { - fixtures.push(self.namedFixtures[key]); - } - }); - - return this.flatten(fixtures); - - } - else - { - return this.allFixtures; - } - - }, - - /** - * Accessor to get either a single fixture by its key. - * - * @method Phaser.Physics.P2.FixtureList#getFixtureByKey - * @param {string} key - The key of the fixture. - */ - getFixtureByKey: function (key) { - - return this.namedFixtures[key]; - - }, - - /** - * Accessor to get a group of fixtures by its group index. - * - * @method Phaser.Physics.P2.FixtureList#getGroup - * @param {number} groupID - The group index. - */ - getGroup: function (groupID) { - - return this.groupedFixtures[groupID]; - - }, - - /** - * Parser for the output of Phaser.Physics.P2.Body#addPhaserPolygon - * - * @method Phaser.Physics.P2.FixtureList#parse - */ - parse: function () { - - var key, value, _ref, _results; - _ref = this.rawList; - _results = []; - - for (key in _ref) - { - value = _ref[key]; - - if (!isNaN(key - 0)) - { - this.groupedFixtures[key] = this.groupedFixtures[key] || []; - this.groupedFixtures[key] = this.groupedFixtures[key].concat(value); - } - else - { - this.namedFixtures[key] = this.flatten(value); - } - - _results.push(this.allFixtures = this.flatten(this.groupedFixtures)); - } - - }, - - /** - * A helper to flatten arrays. This is very useful as the fixtures are nested from time to time due to the way P2 creates and splits polygons. - * - * @method Phaser.Physics.P2.FixtureList#flatten - * @param {array} array - The array to flatten. Notice: This will happen recursive not shallow. - */ - flatten: function (array) { - - var result, self; - result = []; - self = arguments.callee; - - array.forEach(function(item) { - return Array.prototype.push.apply(result, (Array.isArray(item) ? self(item) : [item])); - }); - - return result; - - } - -}; -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A PointProxy is an internal class that allows for direct getter/setter style property access to Arrays and TypedArrays. -* -* @class Phaser.Physics.P2.PointProxy -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {any} destination - The object to bind to. -*/ -Phaser.Physics.P2.PointProxy = function (world, destination) { - - this.world = world; - this.destination = destination; - -}; - -Phaser.Physics.P2.PointProxy.prototype.constructor = Phaser.Physics.P2.PointProxy; - -/** -* @name Phaser.Physics.P2.PointProxy#x -* @property {number} x - The x property of this PointProxy get and set in pixels. -*/ -Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype, "x", { - - get: function () { - - return this.world.mpx(this.destination[0]); - - }, - - set: function (value) { - - this.destination[0] = this.world.pxm(value); - - } - -}); - -/** -* @name Phaser.Physics.P2.PointProxy#y -* @property {number} y - The y property of this PointProxy get and set in pixels. -*/ -Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype, "y", { - - get: function () { - - return this.world.mpx(this.destination[1]); - - }, - - set: function (value) { - - this.destination[1] = this.world.pxm(value); - - } - -}); - -/** -* @name Phaser.Physics.P2.PointProxy#mx -* @property {number} mx - The x property of this PointProxy get and set in meters. -*/ -Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype, "mx", { - - get: function () { - - return this.destination[0]; - - }, - - set: function (value) { - - this.destination[0] = value; - - } - -}); - -/** -* @name Phaser.Physics.P2.PointProxy#my -* @property {number} my - The x property of this PointProxy get and set in meters. -*/ -Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype, "my", { - - get: function () { - - return this.destination[1]; - - }, - - set: function (value) { - - this.destination[1] = value; - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A InversePointProxy is an internal class that allows for direct getter/setter style property access to Arrays and TypedArrays but inverses the values on set. -* -* @class Phaser.Physics.P2.InversePointProxy -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {any} destination - The object to bind to. -*/ -Phaser.Physics.P2.InversePointProxy = function (world, destination) { - - this.world = world; - this.destination = destination; - -}; - -Phaser.Physics.P2.InversePointProxy.prototype.constructor = Phaser.Physics.P2.InversePointProxy; - -/** -* @name Phaser.Physics.P2.InversePointProxy#x -* @property {number} x - The x property of this InversePointProxy get and set in pixels. -*/ -Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype, "x", { - - get: function () { - - return this.world.mpxi(this.destination[0]); - - }, - - set: function (value) { - - this.destination[0] = this.world.pxmi(value); - - } - -}); - -/** -* @name Phaser.Physics.P2.InversePointProxy#y -* @property {number} y - The y property of this InversePointProxy get and set in pixels. -*/ -Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype, "y", { - - get: function () { - - return this.world.mpxi(this.destination[1]); - - }, - - set: function (value) { - - this.destination[1] = this.world.pxmi(value); - - } - -}); - -/** -* @name Phaser.Physics.P2.InversePointProxy#mx -* @property {number} mx - The x property of this InversePointProxy get and set in meters. -*/ -Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype, "mx", { - - get: function () { - - return this.destination[0]; - - }, - - set: function (value) { - - this.destination[0] = -value; - - } - -}); - -/** -* @name Phaser.Physics.P2.InversePointProxy#my -* @property {number} my - The y property of this InversePointProxy get and set in meters. -*/ -Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype, "my", { - - get: function () { - - return this.destination[1]; - - }, - - set: function (value) { - - this.destination[1] = -value; - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Physics Body is typically linked to a single Sprite and defines properties that determine how the physics body is simulated. -* These properties affect how the body reacts to forces, what forces it generates on itself (to simulate friction), and how it reacts to collisions in the scene. -* In most cases, the properties are used to simulate physical effects. Each body also has its own property values that determine exactly how it reacts to forces and collisions in the scene. -* By default a single Rectangle shape is added to the Body that matches the dimensions of the parent Sprite. See addShape, removeShape, clearShapes to add extra shapes around the Body. -* Note: When bound to a Sprite to avoid single-pixel jitters on mobile devices we strongly recommend using Sprite sizes that are even on both axis, i.e. 128x128 not 127x127. -* Note: When a game object is given a P2 body it has its anchor x/y set to 0.5, so it becomes centered. -* -* @class Phaser.Physics.P2.Body -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. -* @param {Phaser.Sprite} [sprite] - The Sprite object this physics body belongs to. -* @param {number} [x=0] - The x coordinate of this Body. -* @param {number} [y=0] - The y coordinate of this Body. -* @param {number} [mass=1] - The default mass of this Body (0 = static). -*/ -Phaser.Physics.P2.Body = function (game, sprite, x, y, mass) { - - sprite = sprite || null; - x = x || 0; - y = y || 0; - if (mass === undefined) { mass = 1; } - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to the P2 World. - */ - this.world = game.physics.p2; - - /** - * @property {Phaser.Sprite} sprite - Reference to the parent Sprite. - */ - this.sprite = sprite; - - /** - * @property {number} type - The type of physics system this body belongs to. - */ - this.type = Phaser.Physics.P2JS; - - /** - * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. - */ - this.offset = new Phaser.Point(); - - /** - * @property {p2.Body} data - The p2 Body data. - * @protected - */ - this.data = new p2.Body({ position: [ this.world.pxmi(x), this.world.pxmi(y) ], mass: mass }); - - this.data.parent = this; - - /** - * @property {Phaser.Physics.P2.InversePointProxy} velocity - The velocity of the body. Set velocity.x to a negative value to move to the left, position to the right. velocity.y negative values move up, positive move down. - */ - this.velocity = new Phaser.Physics.P2.InversePointProxy(this.world, this.data.velocity); - - /** - * @property {Phaser.Physics.P2.InversePointProxy} force - The force applied to the body. - */ - this.force = new Phaser.Physics.P2.InversePointProxy(this.world, this.data.force); - - /** - * @property {Phaser.Point} gravity - A locally applied gravity force to the Body. Applied directly before the world step. NOTE: Not currently implemented. - */ - this.gravity = new Phaser.Point(); - - /** - * Dispatched when a first contact is created between shapes in two bodies. - * This event is fired during the step, so collision has already taken place. - * - * The event will be sent 5 arguments in this order: - * - * The Phaser.Physics.P2.Body it is in contact with. *This might be null* if the Body was created directly in the p2 world. - * The p2.Body this Body is in contact with. - * The Shape from this body that caused the contact. - * The Shape from the contact body. - * The Contact Equation data array. - * - * @property {Phaser.Signal} onBeginContact - */ - this.onBeginContact = new Phaser.Signal(); - - /** - * Dispatched when contact ends between shapes in two bodies. - * This event is fired during the step, so collision has already taken place. - * - * The event will be sent 4 arguments in this order: - * - * The Phaser.Physics.P2.Body it is in contact with. *This might be null* if the Body was created directly in the p2 world. - * The p2.Body this Body has ended contact with. - * The Shape from this body that caused the original contact. - * The Shape from the contact body. - * - * @property {Phaser.Signal} onEndContact - */ - this.onEndContact = new Phaser.Signal(); - - /** - * @property {array} collidesWith - Array of CollisionGroups that this Bodies shapes collide with. - */ - this.collidesWith = []; - - /** - * @property {boolean} removeNextStep - To avoid deleting this body during a physics step, and causing all kinds of problems, set removeNextStep to true to have it removed in the next preUpdate. - */ - this.removeNextStep = false; - - /** - * @property {Phaser.Physics.P2.BodyDebug} debugBody - Reference to the debug body. - */ - this.debugBody = null; - - /** - * @property {boolean} dirty - Internally used by Sprite.x/y - */ - this.dirty = false; - - /** - * @property {boolean} _collideWorldBounds - Internal var that determines if this Body collides with the world bounds or not. - * @private - */ - this._collideWorldBounds = true; - - /** - * @property {object} _bodyCallbacks - Array of Body callbacks. - * @private - */ - this._bodyCallbacks = {}; - - /** - * @property {object} _bodyCallbackContext - Array of Body callback contexts. - * @private - */ - this._bodyCallbackContext = {}; - - /** - * @property {object} _groupCallbacks - Array of Group callbacks. - * @private - */ - this._groupCallbacks = {}; - - /** - * @property {object} _bodyCallbackContext - Array of Grouo callback contexts. - * @private - */ - this._groupCallbackContext = {}; - - /** - * @property {boolean} _reset - Internal var. - * @private - */ - this._reset = false; - - // Set-up the default shape - if (sprite) - { - this.setRectangleFromSprite(sprite); - - if (sprite.exists) - { - this.game.physics.p2.addBody(this); - } - } - -}; - -Phaser.Physics.P2.Body.prototype = { - - /** - * Sets a callback to be fired any time a shape in this Body impacts with a shape in the given Body. The impact test is performed against body.id values. - * The callback will be sent 4 parameters: This body, the body that impacted, the Shape in this body and the shape in the impacting body. - * Note that the impact event happens after collision resolution, so it cannot be used to prevent a collision from happening. - * It also happens mid-step. So do not destroy a Body during this callback, instead set safeDestroy to true so it will be killed on the next preUpdate. - * - * @method Phaser.Physics.P2.Body#createBodyCallback - * @param {Phaser.Sprite|Phaser.TileSprite|Phaser.Physics.P2.Body|p2.Body} object - The object to send impact events for. - * @param {function} callback - The callback to fire on impact. Set to null to clear a previously set callback. - * @param {object} callbackContext - The context under which the callback will fire. - */ - createBodyCallback: function (object, callback, callbackContext) { - - var id = -1; - - if (object['id']) - { - id = object.id; - } - else if (object['body']) - { - id = object.body.id; - } - - if (id > -1) - { - if (callback === null) - { - delete (this._bodyCallbacks[id]); - delete (this._bodyCallbackContext[id]); - } - else - { - this._bodyCallbacks[id] = callback; - this._bodyCallbackContext[id] = callbackContext; - } - } - - }, - - /** - * Sets a callback to be fired any time this Body impacts with the given Group. The impact test is performed against shape.collisionGroup values. - * The callback will be sent 4 parameters: This body, the body that impacted, the Shape in this body and the shape in the impacting body. - * This callback will only fire if this Body has been assigned a collision group. - * Note that the impact event happens after collision resolution, so it cannot be used to prevent a collision from happening. - * It also happens mid-step. So do not destroy a Body during this callback, instead set safeDestroy to true so it will be killed on the next preUpdate. - * - * @method Phaser.Physics.P2.Body#createGroupCallback - * @param {Phaser.Physics.CollisionGroup} group - The Group to send impact events for. - * @param {function} callback - The callback to fire on impact. Set to null to clear a previously set callback. - * @param {object} callbackContext - The context under which the callback will fire. - */ - createGroupCallback: function (group, callback, callbackContext) { - - if (callback === null) - { - delete (this._groupCallbacks[group.mask]); - delete (this._groupCallbackContext[group.mask]); - } - else - { - this._groupCallbacks[group.mask] = callback; - this._groupCallbackContext[group.mask] = callbackContext; - } - - }, - - /** - * Gets the collision bitmask from the groups this body collides with. - * - * @method Phaser.Physics.P2.Body#getCollisionMask - * @return {number} The bitmask. - */ - getCollisionMask: function () { - - var mask = 0; - - if (this._collideWorldBounds) - { - mask = this.game.physics.p2.boundsCollisionGroup.mask; - } - - for (var i = 0; i < this.collidesWith.length; i++) - { - mask = mask | this.collidesWith[i].mask; - } - - return mask; - - }, - - /** - * Updates the collisionMask. - * - * @method Phaser.Physics.P2.Body#updateCollisionMask - * @param {p2.Shape} [shape] - An optional Shape. If not provided the collision group will be added to all Shapes in this Body. - */ - updateCollisionMask: function (shape) { - - var mask = this.getCollisionMask(); - - if (shape === undefined) - { - for (var i = this.data.shapes.length - 1; i >= 0; i--) - { - this.data.shapes[i].collisionMask = mask; - } - } - else - { - shape.collisionMask = mask; - } - - }, - - /** - * Sets the given CollisionGroup to be the collision group for all shapes in this Body, unless a shape is specified. - * This also resets the collisionMask. - * - * @method Phaser.Physics.P2.Body#setCollisionGroup - * @param {Phaser.Physics.CollisionGroup} group - The Collision Group that this Bodies shapes will use. - * @param {p2.Shape} [shape] - An optional Shape. If not provided the collision group will be added to all Shapes in this Body. - */ - setCollisionGroup: function (group, shape) { - - var mask = this.getCollisionMask(); - - if (shape === undefined) - { - for (var i = this.data.shapes.length - 1; i >= 0; i--) - { - this.data.shapes[i].collisionGroup = group.mask; - this.data.shapes[i].collisionMask = mask; - } - } - else - { - shape.collisionGroup = group.mask; - shape.collisionMask = mask; - } - - }, - - /** - * Clears the collision data from the shapes in this Body. Optionally clears Group and/or Mask. - * - * @method Phaser.Physics.P2.Body#clearCollision - * @param {boolean} [clearGroup=true] - Clear the collisionGroup value from the shape/s? - * @param {boolean} [clearMask=true] - Clear the collisionMask value from the shape/s? - * @param {p2.Shape} [shape] - An optional Shape. If not provided the collision data will be cleared from all Shapes in this Body. - */ - clearCollision: function (clearGroup, clearMask, shape) { - - if (clearGroup === undefined) { clearGroup = true; } - if (clearMask === undefined) { clearMask = true; } - - if (shape === undefined) - { - for (var i = this.data.shapes.length - 1; i >= 0; i--) - { - if (clearGroup) - { - this.data.shapes[i].collisionGroup = null; - } - - if (clearMask) - { - this.data.shapes[i].collisionMask = null; - } - } - } - else - { - if (clearGroup) - { - shape.collisionGroup = null; - } - - if (clearMask) - { - shape.collisionMask = null; - } - } - - if (clearGroup) - { - this.collidesWith.length = 0; - } - - }, - - /** - * Removes the given CollisionGroup, or array of CollisionGroups, from the list of groups that this body will collide with and updates the collision masks. - * - * @method Phaser.Physics.P2.Body#removeCollisionGroup - * @param {Phaser.Physics.CollisionGroup|array} group - The Collision Group or Array of Collision Groups that this Bodies shapes should not collide with anymore. - * @param {boolean} [clearCallback=true] - Clear the callback that will be triggered when this Body impacts with the given Group? - * @param {p2.Shape} [shape] - An optional Shape. If not provided the updated collision mask will be added to all Shapes in this Body. - */ - removeCollisionGroup: function (group, clearCallback, shape) { - - if (clearCallback === undefined) { clearCallback = true; } - - var index; - - if (Array.isArray(group)) - { - for (var i = 0; i < group.length; i++) - { - index = this.collidesWith.indexOf(group[i]); - - if (index > -1) - { - this.collidesWith.splice(index, 1); - - if (clearCallback) - { - delete (this._groupCallbacks[group.mask]); - delete (this._groupCallbackContext[group.mask]); - } - } - } - } - else - { - index = this.collidesWith.indexOf(group); - - if (index > -1) - { - this.collidesWith.splice(index, 1); - - if (clearCallback) - { - delete (this._groupCallbacks[group.mask]); - delete (this._groupCallbackContext[group.mask]); - } - } - } - - var mask = this.getCollisionMask(); - - if (shape === undefined) - { - for (var i = this.data.shapes.length - 1; i >= 0; i--) - { - this.data.shapes[i].collisionMask = mask; - } - } - else - { - shape.collisionMask = mask; - } - - }, - - /** - * Adds the given CollisionGroup, or array of CollisionGroups, to the list of groups that this body will collide with and updates the collision masks. - * - * @method Phaser.Physics.P2.Body#collides - * @param {Phaser.Physics.CollisionGroup|array} group - The Collision Group or Array of Collision Groups that this Bodies shapes will collide with. - * @param {function} [callback] - Optional callback that will be triggered when this Body impacts with the given Group. - * @param {object} [callbackContext] - The context under which the callback will be called. - * @param {p2.Shape} [shape] - An optional Shape. If not provided the collision mask will be added to all Shapes in this Body. - */ - collides: function (group, callback, callbackContext, shape) { - - if (Array.isArray(group)) - { - for (var i = 0; i < group.length; i++) - { - if (this.collidesWith.indexOf(group[i]) === -1) - { - this.collidesWith.push(group[i]); - - if (callback) - { - this.createGroupCallback(group[i], callback, callbackContext); - } - } - } - } - else - { - if (this.collidesWith.indexOf(group) === -1) - { - this.collidesWith.push(group); - - if (callback) - { - this.createGroupCallback(group, callback, callbackContext); - } - } - } - - var mask = this.getCollisionMask(); - - if (shape === undefined) - { - for (var i = this.data.shapes.length - 1; i >= 0; i--) - { - this.data.shapes[i].collisionMask = mask; - } - } - else - { - shape.collisionMask = mask; - } - - }, - - /** - * Moves the shape offsets so their center of mass becomes the body center of mass. - * - * @method Phaser.Physics.P2.Body#adjustCenterOfMass - */ - adjustCenterOfMass: function () { - - this.data.adjustCenterOfMass(); - this.shapeChanged(); - - }, - - /** - * Gets the velocity of a point in the body. - * - * @method Phaser.Physics.P2.Body#getVelocityAtPoint - * @param {Array} result - A vector to store the result in. - * @param {Array} relativePoint - A world oriented vector, indicating the position of the point to get the velocity from. - * @return {Array} The result vector. - */ - getVelocityAtPoint: function (result, relativePoint) { - - return this.data.getVelocityAtPoint(result, relativePoint); - - }, - - /** - * Apply damping, see http://code.google.com/p/bullet/issues/detail?id=74 for details. - * - * @method Phaser.Physics.P2.Body#applyDamping - * @param {number} dt - Current time step. - */ - applyDamping: function (dt) { - - this.data.applyDamping(dt); - - }, - - /** - * Apply impulse to a point relative to the body. - * This could for example be a point on the Body surface. An impulse is a force added to a body during a short - * period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. - * - * @method Phaser.Physics.P2.Body#applyImpulse - * @param {Float32Array|Array} impulse - The impulse vector to add, oriented in world space. - * @param {number} worldX - A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be exerted on the center of mass. - * @param {number} worldY - A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be exerted on the center of mass. - */ - applyImpulse: function (impulse, worldX, worldY) { - - this.data.applyImpulse(impulse, [this.world.pxmi(worldX), this.world.pxmi(worldY)]); - - }, - - /** - * Apply impulse to a point local to the body. - * - * This could for example be a point on the Body surface. An impulse is a force added to a body during a short - * period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. - * - * @method Phaser.Physics.P2.Body#applyImpulseLocal - * @param {Float32Array|Array} impulse - The impulse vector to add, oriented in local space. - * @param {number} localX - A local point on the body. - * @param {number} localY - A local point on the body. - */ - applyImpulseLocal: function (impulse, localX, localY) { - - this.data.applyImpulseLocal(impulse, [this.world.pxmi(localX), this.world.pxmi(localY)]); - - }, - - /** - * Apply force to a world point. - * - * This could for example be a point on the RigidBody surface. Applying force - * this way will add to Body.force and Body.angularForce. - * - * @method Phaser.Physics.P2.Body#applyForce - * @param {Float32Array|Array} force - The force vector to add. - * @param {number} worldX - The world x point to apply the force on. - * @param {number} worldY - The world y point to apply the force on. - */ - applyForce: function (force, worldX, worldY) { - - this.data.applyForce(force, [this.world.pxmi(worldX), this.world.pxmi(worldY)]); - - }, - - /** - * Sets the force on the body to zero. - * - * @method Phaser.Physics.P2.Body#setZeroForce - */ - setZeroForce: function () { - - this.data.setZeroForce(); - - }, - - /** - * If this Body is dynamic then this will zero its angular velocity. - * - * @method Phaser.Physics.P2.Body#setZeroRotation - */ - setZeroRotation: function () { - - this.data.angularVelocity = 0; - - }, - - /** - * If this Body is dynamic then this will zero its velocity on both axis. - * - * @method Phaser.Physics.P2.Body#setZeroVelocity - */ - setZeroVelocity: function () { - - this.data.velocity[0] = 0; - this.data.velocity[1] = 0; - - }, - - /** - * Sets the Body damping and angularDamping to zero. - * - * @method Phaser.Physics.P2.Body#setZeroDamping - */ - setZeroDamping: function () { - - this.data.damping = 0; - this.data.angularDamping = 0; - - }, - - /** - * Transform a world point to local body frame. - * - * @method Phaser.Physics.P2.Body#toLocalFrame - * @param {Float32Array|Array} out - The vector to store the result in. - * @param {Float32Array|Array} worldPoint - The input world vector. - */ - toLocalFrame: function (out, worldPoint) { - - return this.data.toLocalFrame(out, worldPoint); - - }, - - /** - * Transform a local point to world frame. - * - * @method Phaser.Physics.P2.Body#toWorldFrame - * @param {Array} out - The vector to store the result in. - * @param {Array} localPoint - The input local vector. - */ - toWorldFrame: function (out, localPoint) { - - return this.data.toWorldFrame(out, localPoint); - - }, - - /** - * This will rotate the Body by the given speed to the left (counter-clockwise). - * - * @method Phaser.Physics.P2.Body#rotateLeft - * @param {number} speed - The speed at which it should rotate. - */ - rotateLeft: function (speed) { - - this.data.angularVelocity = this.world.pxm(-speed); - - }, - - /** - * This will rotate the Body by the given speed to the left (clockwise). - * - * @method Phaser.Physics.P2.Body#rotateRight - * @param {number} speed - The speed at which it should rotate. - */ - rotateRight: function (speed) { - - this.data.angularVelocity = this.world.pxm(speed); - - }, - - /** - * Moves the Body forwards based on its current angle and the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#moveForward - * @param {number} speed - The speed at which it should move forwards. - */ - moveForward: function (speed) { - - var magnitude = this.world.pxmi(-speed); - var angle = this.data.angle + Math.PI / 2; - - this.data.velocity[0] = magnitude * Math.cos(angle); - this.data.velocity[1] = magnitude * Math.sin(angle); - - }, - - /** - * Moves the Body backwards based on its current angle and the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#moveBackward - * @param {number} speed - The speed at which it should move backwards. - */ - moveBackward: function (speed) { - - var magnitude = this.world.pxmi(-speed); - var angle = this.data.angle + Math.PI / 2; - - this.data.velocity[0] = -(magnitude * Math.cos(angle)); - this.data.velocity[1] = -(magnitude * Math.sin(angle)); - - }, - - /** - * Applies a force to the Body that causes it to 'thrust' forwards, based on its current angle and the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#thrust - * @param {number} speed - The speed at which it should thrust. - */ - thrust: function (speed) { - - var magnitude = this.world.pxmi(-speed); - var angle = this.data.angle + Math.PI / 2; - - this.data.force[0] += magnitude * Math.cos(angle); - this.data.force[1] += magnitude * Math.sin(angle); - - }, - - /** - * Applies a force to the Body that causes it to 'thrust' to the left, based on its current angle and the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#thrustLeft - * @param {number} speed - The speed at which it should move to the left. - */ - thrustLeft: function (speed) { - - var magnitude = this.world.pxmi(-speed); - var angle = this.data.angle; - - this.data.force[0] += magnitude * Math.cos(angle); - this.data.force[1] += magnitude * Math.sin(angle); - - }, - - /** - * Applies a force to the Body that causes it to 'thrust' to the right, based on its current angle and the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#thrustRight - * @param {number} speed - The speed at which it should move to the right. - */ - thrustRight: function (speed) { - - var magnitude = this.world.pxmi(-speed); - var angle = this.data.angle; - - this.data.force[0] -= magnitude * Math.cos(angle); - this.data.force[1] -= magnitude * Math.sin(angle); - - }, - - /** - * Applies a force to the Body that causes it to 'thrust' backwards (in reverse), based on its current angle and the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#reverse - * @param {number} speed - The speed at which it should reverse. - */ - reverse: function (speed) { - - var magnitude = this.world.pxmi(-speed); - var angle = this.data.angle + Math.PI / 2; - - this.data.force[0] -= magnitude * Math.cos(angle); - this.data.force[1] -= magnitude * Math.sin(angle); - - }, - - /** - * If this Body is dynamic then this will move it to the left by setting its x velocity to the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#moveLeft - * @param {number} speed - The speed at which it should move to the left, in pixels per second. - */ - moveLeft: function (speed) { - - this.data.velocity[0] = this.world.pxmi(-speed); - - }, - - /** - * If this Body is dynamic then this will move it to the right by setting its x velocity to the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#moveRight - * @param {number} speed - The speed at which it should move to the right, in pixels per second. - */ - moveRight: function (speed) { - - this.data.velocity[0] = this.world.pxmi(speed); - - }, - - /** - * If this Body is dynamic then this will move it up by setting its y velocity to the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#moveUp - * @param {number} speed - The speed at which it should move up, in pixels per second. - */ - moveUp: function (speed) { - - this.data.velocity[1] = this.world.pxmi(-speed); - - }, - - /** - * If this Body is dynamic then this will move it down by setting its y velocity to the given speed. - * The speed is represented in pixels per second. So a value of 100 would move 100 pixels in 1 second (1000ms). - * - * @method Phaser.Physics.P2.Body#moveDown - * @param {number} speed - The speed at which it should move down, in pixels per second. - */ - moveDown: function (speed) { - - this.data.velocity[1] = this.world.pxmi(speed); - - }, - - /** - * Internal method. This is called directly before the sprites are sent to the renderer and after the update function has finished. - * - * @method Phaser.Physics.P2.Body#preUpdate - * @protected - */ - preUpdate: function () { - - this.dirty = true; - - if (this.removeNextStep) - { - this.removeFromWorld(); - this.removeNextStep = false; - } - - }, - - /** - * Internal method. This is called directly before the sprites are sent to the renderer and after the update function has finished. - * - * @method Phaser.Physics.P2.Body#postUpdate - * @protected - */ - postUpdate: function () { - - this.sprite.x = this.world.mpxi(this.data.position[0]) + this.offset.x; - this.sprite.y = this.world.mpxi(this.data.position[1]) + this.offset.y; - - if (!this.fixedRotation) - { - this.sprite.rotation = this.data.angle; - } - - if (this.debugBody) - { - this.debugBody.updateSpriteTransform(); - } - - this.dirty = false; - - }, - - /** - * Resets the Body force, velocity (linear and angular) and rotation. Optionally resets damping and mass. - * - * @method Phaser.Physics.P2.Body#reset - * @param {number} x - The new x position of the Body. - * @param {number} y - The new x position of the Body. - * @param {boolean} [resetDamping=false] - Resets the linear and angular damping. - * @param {boolean} [resetMass=false] - Sets the Body mass back to 1. - */ - reset: function (x, y, resetDamping, resetMass) { - - if (resetDamping === undefined) { resetDamping = false; } - if (resetMass === undefined) { resetMass = false; } - - this.setZeroForce(); - this.setZeroVelocity(); - this.setZeroRotation(); - - if (resetDamping) - { - this.setZeroDamping(); - } - - if (resetMass) - { - this.mass = 1; - } - - this.x = x; - this.y = y; - - }, - - /** - * Adds this physics body to the world. - * - * @method Phaser.Physics.P2.Body#addToWorld - */ - addToWorld: function () { - - if (this.game.physics.p2._toRemove) - { - for (var i = 0; i < this.game.physics.p2._toRemove.length; i++) - { - if (this.game.physics.p2._toRemove[i] === this) - { - this.game.physics.p2._toRemove.splice(i, 1); - } - } - } - - if (this.data.world !== this.game.physics.p2.world) - { - this.game.physics.p2.addBody(this); - } - - }, - - /** - * Removes this physics body from the world. - * - * @method Phaser.Physics.P2.Body#removeFromWorld - */ - removeFromWorld: function () { - - if (this.data.world === this.game.physics.p2.world) - { - this.game.physics.p2.removeBodyNextStep(this); - } - - }, - - /** - * Destroys this Body and all references it holds to other objects. - * - * @method Phaser.Physics.P2.Body#destroy - */ - destroy: function () { - - this.removeFromWorld(); - - this.clearShapes(); - - this._bodyCallbacks = {}; - this._bodyCallbackContext = {}; - this._groupCallbacks = {}; - this._groupCallbackContext = {}; - - if (this.debugBody) - { - this.debugBody.destroy(true, true); - } - - this.debugBody = null; - - if (this.sprite) - { - this.sprite.body = null; - this.sprite = null; - } - - }, - - /** - * Removes all Shapes from this Body. - * - * @method Phaser.Physics.P2.Body#clearShapes - */ - clearShapes: function () { - - var i = this.data.shapes.length; - - while (i--) - { - this.data.removeShape(this.data.shapes[i]); - } - - this.shapeChanged(); - - }, - - /** - * Add a shape to the body. You can pass a local transform when adding a shape, so that the shape gets an offset and an angle relative to the body center of mass. - * Will automatically update the mass properties and bounding radius. - * If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates. - * - * @method Phaser.Physics.P2.Body#addShape - * @param {p2.Shape} shape - The shape to add to the body. - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Shape} The shape that was added to the body. - */ - addShape: function (shape, offsetX, offsetY, rotation) { - - if (offsetX === undefined) { offsetX = 0; } - if (offsetY === undefined) { offsetY = 0; } - if (rotation === undefined) { rotation = 0; } - - this.data.addShape(shape, [this.world.pxmi(offsetX), this.world.pxmi(offsetY)], rotation); - this.shapeChanged(); - - return shape; - - }, - - /** - * Adds a Circle shape to this Body. You can control the offset from the center of the body and the rotation. - * - * @method Phaser.Physics.P2.Body#addCircle - * @param {number} radius - The radius of this circle (in pixels) - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Circle} The Circle shape that was added to the Body. - */ - addCircle: function (radius, offsetX, offsetY, rotation) { - - var shape = new p2.Circle({ radius: this.world.pxm(radius) }); - - return this.addShape(shape, offsetX, offsetY, rotation); - - }, - - /** - * Adds a Rectangle shape to this Body. You can control the offset from the center of the body and the rotation. - * - * @method Phaser.Physics.P2.Body#addRectangle - * @param {number} width - The width of the rectangle in pixels. - * @param {number} height - The height of the rectangle in pixels. - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Box} The shape that was added to the Body. - */ - addRectangle: function (width, height, offsetX, offsetY, rotation) { - - var shape = new p2.Box({ width: this.world.pxm(width), height: this.world.pxm(height)}); - - return this.addShape(shape, offsetX, offsetY, rotation); - - }, - - /** - * Adds a Plane shape to this Body. The plane is facing in the Y direction. You can control the offset from the center of the body and the rotation. - * - * @method Phaser.Physics.P2.Body#addPlane - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Plane} The Plane shape that was added to the Body. - */ - addPlane: function (offsetX, offsetY, rotation) { - - var shape = new p2.Plane(); - - return this.addShape(shape, offsetX, offsetY, rotation); - - }, - - /** - * Adds a Particle shape to this Body. You can control the offset from the center of the body and the rotation. - * - * @method Phaser.Physics.P2.Body#addParticle - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Particle} The Particle shape that was added to the Body. - */ - addParticle: function (offsetX, offsetY, rotation) { - - var shape = new p2.Particle(); - - return this.addShape(shape, offsetX, offsetY, rotation); - - }, - - /** - * Adds a Line shape to this Body. - * The line shape is along the x direction, and stretches from [-length/2, 0] to [length/2,0]. - * You can control the offset from the center of the body and the rotation. - * - * @method Phaser.Physics.P2.Body#addLine - * @param {number} length - The length of this line (in pixels) - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Line} The Line shape that was added to the Body. - */ - addLine: function (length, offsetX, offsetY, rotation) { - - var shape = new p2.Line({ length: this.world.pxm(length)}); - - return this.addShape(shape, offsetX, offsetY, rotation); - - }, - - /** - * Adds a Capsule shape to this Body. - * You can control the offset from the center of the body and the rotation. - * - * @method Phaser.Physics.P2.Body#addCapsule - * @param {number} length - The distance between the end points in pixels. - * @param {number} radius - Radius of the capsule in pixels. - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Capsule} The Capsule shape that was added to the Body. - */ - addCapsule: function (length, radius, offsetX, offsetY, rotation) { - - var shape = new p2.Capsule({ length: this.world.pxm(length), radius: this.world.pxm(radius) }); - - return this.addShape(shape, offsetX, offsetY, rotation); - - }, - - /** - * Reads a polygon shape path, and assembles convex shapes from that and puts them at proper offset points. The shape must be simple and without holes. - * This function expects the x.y values to be given in pixels. If you want to provide them at p2 world scales then call Body.data.fromPolygon directly. - * - * @method Phaser.Physics.P2.Body#addPolygon - * @param {object} options - An object containing the build options: - * @param {boolean} [options.optimalDecomp=false] - Set to true if you need optimal decomposition. Warning: very slow for polygons with more than 10 vertices. - * @param {boolean} [options.skipSimpleCheck=false] - Set to true if you already know that the path is not intersecting itself. - * @param {boolean|number} [options.removeCollinearPoints=false] - Set to a number (angle threshold value) to remove collinear points, or false to keep all points. - * @param {(number[]|...number)} points - An array of 2d vectors that form the convex or concave polygon. - * Either [[0,0], [0,1],...] or a flat array of numbers that will be interpreted as [x,y, x,y, ...], - * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. - * @return {boolean} True on success, else false. - */ - addPolygon: function (options, points) { - - options = options || {}; - - if (!Array.isArray(points)) - { - points = Array.prototype.slice.call(arguments, 1); - } - - var path = []; - - // Did they pass in a single array of points? - if (points.length === 1 && Array.isArray(points[0])) - { - path = points[0].slice(0); - } - else if (Array.isArray(points[0])) - { - path = points.slice(); - } - else if (typeof points[0] === 'number') - { - // We've a list of numbers - for (var i = 0, len = points.length; i < len; i += 2) - { - path.push([points[i], points[i + 1]]); - } - } - - // top and tail - var idx = path.length - 1; - - if (path[idx][0] === path[0][0] && path[idx][1] === path[0][1]) - { - path.pop(); - } - - // Now process them into p2 values - for (var p = 0; p < path.length; p++) - { - path[p][0] = this.world.pxmi(path[p][0]); - path[p][1] = this.world.pxmi(path[p][1]); - } - - var result = this.data.fromPolygon(path, options); - - this.shapeChanged(); - - return result; - - }, - - /** - * Remove a shape from the body. Will automatically update the mass properties and bounding radius. - * - * @method Phaser.Physics.P2.Body#removeShape - * @param {p2.Circle|p2.Rectangle|p2.Plane|p2.Line|p2.Particle} shape - The shape to remove from the body. - * @return {boolean} True if the shape was found and removed, else false. - */ - removeShape: function (shape) { - - var result = this.data.removeShape(shape); - - this.shapeChanged(); - - return result; - }, - - /** - * Clears any previously set shapes. Then creates a new Circle shape and adds it to this Body. - * If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates. - * - * @method Phaser.Physics.P2.Body#setCircle - * @param {number} radius - The radius of this circle (in pixels) - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - */ - setCircle: function (radius, offsetX, offsetY, rotation) { - - this.clearShapes(); - - return this.addCircle(radius, offsetX, offsetY, rotation); - - }, - - /** - * Clears any previously set shapes. The creates a new Rectangle shape at the given size and offset, and adds it to this Body. - * If you wish to create a Rectangle to match the size of a Sprite or Image see Body.setRectangleFromSprite. - * If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates. - * - * @method Phaser.Physics.P2.Body#setRectangle - * @param {number} [width=16] - The width of the rectangle in pixels. - * @param {number} [height=16] - The height of the rectangle in pixels. - * @param {number} [offsetX=0] - Local horizontal offset of the shape relative to the body center of mass. - * @param {number} [offsetY=0] - Local vertical offset of the shape relative to the body center of mass. - * @param {number} [rotation=0] - Local rotation of the shape relative to the body center of mass, specified in radians. - * @return {p2.Rectangle} The Rectangle shape that was added to the Body. - */ - setRectangle: function (width, height, offsetX, offsetY, rotation) { - - if (width === undefined) { width = 16; } - if (height === undefined) { height = 16; } - - this.clearShapes(); - - return this.addRectangle(width, height, offsetX, offsetY, rotation); - - }, - - /** - * Clears any previously set shapes. - * Then creates a Rectangle shape sized to match the dimensions and orientation of the Sprite given. - * If no Sprite is given it defaults to using the parent of this Body. - * If this Body had a previously set Collision Group you will need to re-apply it to the new Shape this creates. - * - * @method Phaser.Physics.P2.Body#setRectangleFromSprite - * @param {Phaser.Sprite|Phaser.Image} [sprite] - The Sprite on which the Rectangle will get its dimensions. - * @return {p2.Rectangle} The Rectangle shape that was added to the Body. - */ - setRectangleFromSprite: function (sprite) { - - if (sprite === undefined) { sprite = this.sprite; } - - this.clearShapes(); - - return this.addRectangle(sprite.width, sprite.height, 0, 0, sprite.rotation); - - }, - - /** - * Adds the given Material to all Shapes that belong to this Body. - * If you only wish to apply it to a specific Shape in this Body then provide that as the 2nd parameter. - * - * @method Phaser.Physics.P2.Body#setMaterial - * @param {Phaser.Physics.P2.Material} material - The Material that will be applied. - * @param {p2.Shape} [shape] - An optional Shape. If not provided the Material will be added to all Shapes in this Body. - */ - setMaterial: function (material, shape) { - - if (shape === undefined) - { - for (var i = this.data.shapes.length - 1; i >= 0; i--) - { - this.data.shapes[i].material = material; - } - } - else - { - shape.material = material; - } - - }, - - /** - * Updates the debug draw if any body shapes change. - * - * @method Phaser.Physics.P2.Body#shapeChanged - */ - shapeChanged: function() { - - if (this.debugBody) - { - this.debugBody.draw(); - } - - }, - - /** - * Reads the shape data from a physics data file stored in the Game.Cache and adds it as a polygon to this Body. - * The shape data format is based on the output of the - * {@link https://github.com/photonstorm/phaser/tree/master/resources/PhysicsEditor%20Exporter|custom phaser exporter} for - * {@link https://www.codeandweb.com/physicseditor|PhysicsEditor} - * - * @method Phaser.Physics.P2.Body#addPhaserPolygon - * @param {string} key - The key of the Physics Data file as stored in Game.Cache. - * @param {string} object - The key of the object within the Physics data file that you wish to load the shape data from. - * @returns {Array} A list of created fixtures to be used with Phaser.Physics.P2.FixtureList - */ - addPhaserPolygon: function (key, object) { - - var data = this.game.cache.getPhysicsData(key, object); - var createdFixtures = []; - - // Cycle through the fixtures - for (var i = 0; i < data.length; i++) - { - var fixtureData = data[i]; - var shapesOfFixture = this.addFixture(fixtureData); - - // Always add to a group - createdFixtures[fixtureData.filter.group] = createdFixtures[fixtureData.filter.group] || []; - createdFixtures[fixtureData.filter.group] = createdFixtures[fixtureData.filter.group].concat(shapesOfFixture); - - // if (unique) fixture key is provided - if (fixtureData.fixtureKey) - { - createdFixtures[fixtureData.fixtureKey] = shapesOfFixture; - } - } - - this.data.aabbNeedsUpdate = true; - this.shapeChanged(); - - return createdFixtures; - - }, - - /** - * Add a polygon fixture. This is used during #loadPolygon. - * - * @method Phaser.Physics.P2.Body#addFixture - * @param {string} fixtureData - The data for the fixture. It contains: isSensor, filter (collision) and the actual polygon shapes. - * @return {array} An array containing the generated shapes for the given polygon. - */ - addFixture: function (fixtureData) { - - var generatedShapes = []; - - if (fixtureData.circle) - { - var shape = new p2.Circle({ radius: this.world.pxm(fixtureData.circle.radius) }); - shape.collisionGroup = fixtureData.filter.categoryBits; - shape.collisionMask = fixtureData.filter.maskBits; - shape.sensor = fixtureData.isSensor; - - var offset = p2.vec2.create(); - offset[0] = this.world.pxmi(fixtureData.circle.position[0] - this.sprite.width/2); - offset[1] = this.world.pxmi(fixtureData.circle.position[1] - this.sprite.height/2); - - this.data.addShape(shape, offset); - generatedShapes.push(shape); - } - else - { - var polygons = fixtureData.polygons; - var cm = p2.vec2.create(); - - for (var i = 0; i < polygons.length; i++) - { - var shapes = polygons[i]; - var vertices = []; - - for (var s = 0; s < shapes.length; s += 2) - { - vertices.push([ this.world.pxmi(shapes[s]), this.world.pxmi(shapes[s + 1]) ]); - } - - var shape = new p2.Convex({ vertices: vertices }); - - // Move all vertices so its center of mass is in the local center of the convex - for (var j = 0; j !== shape.vertices.length; j++) - { - var v = shape.vertices[j]; - p2.vec2.sub(v, v, shape.centerOfMass); - } - - p2.vec2.scale(cm, shape.centerOfMass, 1); - - cm[0] -= this.world.pxmi(this.sprite.width / 2); - cm[1] -= this.world.pxmi(this.sprite.height / 2); - - shape.updateTriangles(); - shape.updateCenterOfMass(); - shape.updateBoundingRadius(); - - shape.collisionGroup = fixtureData.filter.categoryBits; - shape.collisionMask = fixtureData.filter.maskBits; - shape.sensor = fixtureData.isSensor; - - this.data.addShape(shape, cm); - - generatedShapes.push(shape); - } - } - - return generatedShapes; - - }, - - /** - * Reads the shape data from a physics data file stored in the Game.Cache and adds it as a polygon to this Body. - * - * As well as reading the data from the Cache you can also pass `null` as the first argument and a - * physics data object as the second. When doing this you must ensure the structure of the object is correct in advance. - * - * For more details see the format of the Lime / Corona Physics Editor export. - * - * @method Phaser.Physics.P2.Body#loadPolygon - * @param {string} key - The key of the Physics Data file as stored in Game.Cache. Alternatively set to `null` and pass the - * data as the 2nd argument. - * @param {string|object} object - The key of the object within the Physics data file that you wish to load the shape data from, - * or if key is null pass the actual physics data object itself as this parameter. - * @return {boolean} True on success, else false. - */ - loadPolygon: function (key, object) { - - if (key === null) - { - var data = object; - } - else - { - var data = this.game.cache.getPhysicsData(key, object); - } - - // We've multiple Convex shapes, they should be CCW automatically - var cm = p2.vec2.create(); - - for (var i = 0; i < data.length; i++) - { - var vertices = []; - - for (var s = 0; s < data[i].shape.length; s += 2) - { - vertices.push([ this.world.pxmi(data[i].shape[s]), this.world.pxmi(data[i].shape[s + 1]) ]); - } - - var c = new p2.Convex({ vertices: vertices }); - - // Move all vertices so its center of mass is in the local center of the convex - for (var j = 0; j !== c.vertices.length; j++) - { - var v = c.vertices[j]; - p2.vec2.sub(v, v, c.centerOfMass); - } - - p2.vec2.scale(cm, c.centerOfMass, 1); - - cm[0] -= this.world.pxmi(this.sprite.width / 2); - cm[1] -= this.world.pxmi(this.sprite.height / 2); - - c.updateTriangles(); - c.updateCenterOfMass(); - c.updateBoundingRadius(); - - this.data.addShape(c, cm); - } - - this.data.aabbNeedsUpdate = true; - this.shapeChanged(); - - return true; - - } - -}; - -Phaser.Physics.P2.Body.prototype.constructor = Phaser.Physics.P2.Body; - -/** - * Dynamic body. Dynamic bodies body can move and respond to collisions and forces. - * @property DYNAMIC - * @type {Number} - * @static - */ -Phaser.Physics.P2.Body.DYNAMIC = 1; - -/** - * Static body. Static bodies do not move, and they do not respond to forces or collision. - * @property STATIC - * @type {Number} - * @static - */ -Phaser.Physics.P2.Body.STATIC = 2; - -/** - * Kinematic body. Kinematic bodies only moves according to its .velocity, and does not respond to collisions or force. - * @property KINEMATIC - * @type {Number} - * @static - */ -Phaser.Physics.P2.Body.KINEMATIC = 4; - -/** -* @name Phaser.Physics.P2.Body#static -* @property {boolean} static - Returns true if the Body is static. Setting Body.static to 'false' will make it dynamic. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "static", { - - get: function () { - - return (this.data.type === Phaser.Physics.P2.Body.STATIC); - - }, - - set: function (value) { - - if (value && this.data.type !== Phaser.Physics.P2.Body.STATIC) - { - this.data.type = Phaser.Physics.P2.Body.STATIC; - this.mass = 0; - } - else if (!value && this.data.type === Phaser.Physics.P2.Body.STATIC) - { - this.data.type = Phaser.Physics.P2.Body.DYNAMIC; - this.mass = 1; - } - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#dynamic -* @property {boolean} dynamic - Returns true if the Body is dynamic. Setting Body.dynamic to 'false' will make it static. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "dynamic", { - - get: function () { - - return (this.data.type === Phaser.Physics.P2.Body.DYNAMIC); - - }, - - set: function (value) { - - if (value && this.data.type !== Phaser.Physics.P2.Body.DYNAMIC) - { - this.data.type = Phaser.Physics.P2.Body.DYNAMIC; - this.mass = 1; - } - else if (!value && this.data.type === Phaser.Physics.P2.Body.DYNAMIC) - { - this.data.type = Phaser.Physics.P2.Body.STATIC; - this.mass = 0; - } - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#kinematic -* @property {boolean} kinematic - Returns true if the Body is kinematic. Setting Body.kinematic to 'false' will make it static. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "kinematic", { - - get: function () { - - return (this.data.type === Phaser.Physics.P2.Body.KINEMATIC); - - }, - - set: function (value) { - - if (value && this.data.type !== Phaser.Physics.P2.Body.KINEMATIC) - { - this.data.type = Phaser.Physics.P2.Body.KINEMATIC; - this.mass = 4; - } - else if (!value && this.data.type === Phaser.Physics.P2.Body.KINEMATIC) - { - this.data.type = Phaser.Physics.P2.Body.STATIC; - this.mass = 0; - } - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#allowSleep -* @property {boolean} allowSleep - -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "allowSleep", { - - get: function () { - - return this.data.allowSleep; - - }, - - set: function (value) { - - if (value !== this.data.allowSleep) - { - this.data.allowSleep = value; - } - - } - -}); - -/** -* The angle of the Body in degrees from its original orientation. Values from 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation. -* Values outside this range are added to or subtracted from 360 to obtain a value within the range. For example, the statement Body.angle = 450 is the same as Body.angle = 90. -* If you wish to work in radians instead of degrees use the property Body.rotation instead. Working in radians is faster as it doesn't have to convert values. -* -* @name Phaser.Physics.P2.Body#angle -* @property {number} angle - The angle of this Body in degrees. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "angle", { - - get: function() { - - return Phaser.Math.wrapAngle(Phaser.Math.radToDeg(this.data.angle)); - - }, - - set: function(value) { - - this.data.angle = Phaser.Math.degToRad(Phaser.Math.wrapAngle(value)); - - } - -}); - -/** -* Damping is specified as a value between 0 and 1, which is the proportion of velocity lost per second. -* @name Phaser.Physics.P2.Body#angularDamping -* @property {number} angularDamping - The angular damping acting acting on the body. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "angularDamping", { - - get: function () { - - return this.data.angularDamping; - - }, - - set: function (value) { - - this.data.angularDamping = value; - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#angularForce -* @property {number} angularForce - The angular force acting on the body. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "angularForce", { - - get: function () { - - return this.data.angularForce; - - }, - - set: function (value) { - - this.data.angularForce = value; - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#angularVelocity -* @property {number} angularVelocity - The angular velocity of the body. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "angularVelocity", { - - get: function () { - - return this.data.angularVelocity; - - }, - - set: function (value) { - - this.data.angularVelocity = value; - - } - -}); - -/** -* Damping is specified as a value between 0 and 1, which is the proportion of velocity lost per second. -* @name Phaser.Physics.P2.Body#damping -* @property {number} damping - The linear damping acting on the body in the velocity direction. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "damping", { - - get: function () { - - return this.data.damping; - - }, - - set: function (value) { - - this.data.damping = value; - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#fixedRotation -* @property {boolean} fixedRotation - -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "fixedRotation", { - - get: function () { - - return this.data.fixedRotation; - - }, - - set: function (value) { - - if (value !== this.data.fixedRotation) - { - this.data.fixedRotation = value; - } - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#inertia -* @property {number} inertia - The inertia of the body around the Z axis.. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "inertia", { - - get: function () { - - return this.data.inertia; - - }, - - set: function (value) { - - this.data.inertia = value; - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#mass -* @property {number} mass - The mass of the body. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "mass", { - - get: function () { - - return this.data.mass; - - }, - - set: function (value) { - - if (value !== this.data.mass) - { - this.data.mass = value; - this.data.updateMassProperties(); - } - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#motionState -* @property {number} motionState - The type of motion this body has. Should be one of: Body.STATIC (the body does not move), Body.DYNAMIC (body can move and respond to collisions) and Body.KINEMATIC (only moves according to its .velocity). -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "motionState", { - - get: function () { - - return this.data.type; - - }, - - set: function (value) { - - if (value !== this.data.type) - { - this.data.type = value; - } - - } - -}); - -/** -* The angle of the Body in radians. -* If you wish to work in degrees instead of radians use the Body.angle property instead. Working in radians is faster as it doesn't have to convert values. -* -* @name Phaser.Physics.P2.Body#rotation -* @property {number} rotation - The angle of this Body in radians. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "rotation", { - - get: function() { - - return this.data.angle; - - }, - - set: function(value) { - - this.data.angle = value; - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#sleepSpeedLimit -* @property {number} sleepSpeedLimit - . -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "sleepSpeedLimit", { - - get: function () { - - return this.data.sleepSpeedLimit; - - }, - - set: function (value) { - - this.data.sleepSpeedLimit = value; - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#x -* @property {number} x - The x coordinate of this Body. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "x", { - - get: function () { - - return this.world.mpxi(this.data.position[0]); - - }, - - set: function (value) { - - this.data.position[0] = this.world.pxmi(value); - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#y -* @property {number} y - The y coordinate of this Body. -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "y", { - - get: function () { - - return this.world.mpxi(this.data.position[1]); - - }, - - set: function (value) { - - this.data.position[1] = this.world.pxmi(value); - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#id -* @property {number} id - The Body ID. Each Body that has been added to the World has a unique ID. -* @readonly -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "id", { - - get: function () { - - return this.data.id; - - } - -}); - -/** -* @name Phaser.Physics.P2.Body#debug -* @property {boolean} debug - Enable or disable debug drawing of this body -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "debug", { - - get: function () { - - return (this.debugBody !== null); - - }, - - set: function (value) { - - if (value && !this.debugBody) - { - // This will be added to the global space - this.debugBody = new Phaser.Physics.P2.BodyDebug(this.game, this.data); - } - else if (!value && this.debugBody) - { - this.debugBody.destroy(); - this.debugBody = null; - } - - } - -}); - -/** -* A Body can be set to collide against the World bounds automatically if this is set to true. Otherwise it will leave the World. -* Note that this only applies if your World has bounds! The response to the collision should be managed via CollisionMaterials. -* Also note that when you set this it will only effect Body shapes that already exist. If you then add further shapes to your Body -* after setting this it will *not* proactively set them to collide with the bounds. -* -* @name Phaser.Physics.P2.Body#collideWorldBounds -* @property {boolean} collideWorldBounds - Should the Body collide with the World bounds? -*/ -Object.defineProperty(Phaser.Physics.P2.Body.prototype, "collideWorldBounds", { - - get: function () { - - return this._collideWorldBounds; - - }, - - set: function (value) { - - if (value && !this._collideWorldBounds) - { - this._collideWorldBounds = true; - this.updateCollisionMask(); - } - else if (!value && this._collideWorldBounds) - { - this._collideWorldBounds = false; - this.updateCollisionMask(); - } - - } - -}); - -/** -* @author George https://github.com/georgiee -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Draws a P2 Body to a Graphics instance for visual debugging. -* Needless to say, for every body you enable debug drawing on, you are adding processor and graphical overhead. -* So use sparingly and rarely (if ever) in production code. -* -* Also be aware that the Debug body is only updated when the Sprite it is connected to changes position. If you -* manipulate the sprite in any other way (such as moving it to another Group or bringToTop, etc) then you will -* need to manually adjust its BodyDebug as well. -* -* @class Phaser.Physics.P2.BodyDebug -* @constructor -* @extends Phaser.Group -* @param {Phaser.Game} game - Game reference to the currently running game. -* @param {Phaser.Physics.P2.Body} body - The P2 Body to display debug data for. -* @param {object} settings - Settings object. -*/ -Phaser.Physics.P2.BodyDebug = function(game, body, settings) { - - Phaser.Group.call(this, game); - - /** - * @property {object} defaultSettings - Default debug settings. - * @private - */ - var defaultSettings = { - pixelsPerLengthUnit: game.physics.p2.mpx(1), - debugPolygons: false, - lineWidth: 1, - alpha: 0.5 - }; - - this.settings = Phaser.Utils.extend(defaultSettings, settings); - - /** - * @property {number} ppu - Pixels per Length Unit. - */ - this.ppu = this.settings.pixelsPerLengthUnit; - this.ppu = -1 * this.ppu; - - /** - * @property {Phaser.Physics.P2.Body} body - The P2 Body to display debug data for. - */ - this.body = body; - - /** - * @property {Phaser.Graphics} canvas - The canvas to render the debug info to. - */ - this.canvas = new Phaser.Graphics(game); - - this.canvas.alpha = this.settings.alpha; - - this.add(this.canvas); - - this.draw(); - - this.updateSpriteTransform(); - -}; - -Phaser.Physics.P2.BodyDebug.prototype = Object.create(Phaser.Group.prototype); -Phaser.Physics.P2.BodyDebug.prototype.constructor = Phaser.Physics.P2.BodyDebug; - -Phaser.Utils.extend(Phaser.Physics.P2.BodyDebug.prototype, { - - /** - * Core update. - * - * @method Phaser.Physics.P2.BodyDebug#updateSpriteTransform - */ - updateSpriteTransform: function() { - - this.position.x = this.body.position[0] * this.ppu; - this.position.y = this.body.position[1] * this.ppu; - this.rotation = this.body.angle; - - }, - - /** - * Draws the P2 shapes to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#draw - */ - draw: function() { - - var angle, child, color, i, j, lineColor, lw, obj, offset, sprite, v, verts, vrot, _j, _ref1; - - obj = this.body; - sprite = this.canvas; - sprite.clear(); - color = parseInt(this.randomPastelHex(), 16); - lineColor = 0xff0000; - lw = this.lineWidth; - - if (obj instanceof p2.Body && obj.shapes.length) - { - var l = obj.shapes.length; - - i = 0; - - while (i !== l) - { - child = obj.shapes[i]; - offset = child.position || 0; - angle = child.angle || 0; - - if (child instanceof p2.Circle) - { - this.drawCircle(sprite, offset[0] * this.ppu, offset[1] * this.ppu, angle, child.radius * this.ppu, color, lw); - } - else if (child instanceof p2.Capsule) - { - this.drawCapsule(sprite, offset[0] * this.ppu, offset[1] * this.ppu, angle, child.length * this.ppu, child.radius * this.ppu, lineColor, color, lw); - } - else if (child instanceof p2.Plane) - { - this.drawPlane(sprite, offset[0] * this.ppu, -offset[1] * this.ppu, color, lineColor, lw * 5, lw * 10, lw * 10, this.ppu * 100, angle); - } - else if (child instanceof p2.Line) - { - this.drawLine(sprite, child.length * this.ppu, lineColor, lw); - } - else if (child instanceof p2.Box) - { - this.drawRectangle(sprite, offset[0] * this.ppu, offset[1] * this.ppu, angle, child.width * this.ppu, child.height * this.ppu, lineColor, color, lw); - } - else if (child instanceof p2.Convex) - { - verts = []; - vrot = p2.vec2.create(); - - for (j = _j = 0, _ref1 = child.vertices.length; 0 <= _ref1 ? _j < _ref1 : _j > _ref1; j = 0 <= _ref1 ? ++_j : --_j) - { - v = child.vertices[j]; - p2.vec2.rotate(vrot, v, angle); - verts.push([(vrot[0] + offset[0]) * this.ppu, -(vrot[1] + offset[1]) * this.ppu]); - } - - this.drawConvex(sprite, verts, child.triangles, lineColor, color, lw, this.settings.debugPolygons, [offset[0] * this.ppu, -offset[1] * this.ppu]); - } - - i++; - } - } - - }, - - /** - * Draws a p2.Box to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#drawRectangle - * @private - */ - drawRectangle: function(g, x, y, angle, w, h, color, fillColor, lineWidth) { - - if (lineWidth === undefined) { lineWidth = 1; } - if (color === undefined) { color = 0x000000; } - - g.lineStyle(lineWidth, color, 1); - g.beginFill(fillColor); - g.drawRect(x - w / 2, y - h / 2, w, h); - - }, - - /** - * Draws a p2.Circle to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#drawCircle - * @private - */ - drawCircle: function(g, x, y, angle, radius, color, lineWidth) { - - if (lineWidth === undefined) { lineWidth = 1; } - if (color === undefined) { color = 0xffffff; } - g.lineStyle(lineWidth, 0x000000, 1); - g.beginFill(color, 1.0); - g.drawCircle(x, y, -radius*2); - g.endFill(); - g.moveTo(x, y); - g.lineTo(x + radius * Math.cos(-angle), y + radius * Math.sin(-angle)); - - }, - - /** - * Draws a p2.Line to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#drawLine - * @private - */ - drawLine: function(g, len, color, lineWidth) { - - if (lineWidth === undefined) { lineWidth = 1; } - if (color === undefined) { color = 0x000000; } - - g.lineStyle(lineWidth * 5, color, 1); - g.moveTo(-len / 2, 0); - g.lineTo(len / 2, 0); - - }, - - /** - * Draws a p2.Convex to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#drawConvex - * @private - */ - drawConvex: function(g, verts, triangles, color, fillColor, lineWidth, debug, offset) { - - var colors, i, v, v0, v1, x, x0, x1, y, y0, y1; - - if (lineWidth === undefined) { lineWidth = 1; } - if (color === undefined) { color = 0x000000; } - - if (!debug) - { - g.lineStyle(lineWidth, color, 1); - g.beginFill(fillColor); - i = 0; - - while (i !== verts.length) - { - v = verts[i]; - x = v[0]; - y = v[1]; - - if (i === 0) - { - g.moveTo(x, -y); - } - else - { - g.lineTo(x, -y); - } - - i++; - } - - g.endFill(); - - if (verts.length > 2) - { - g.moveTo(verts[verts.length - 1][0], -verts[verts.length - 1][1]); - return g.lineTo(verts[0][0], -verts[0][1]); - } - } - else - { - colors = [0xff0000, 0x00ff00, 0x0000ff]; - i = 0; - - while (i !== verts.length + 1) - { - v0 = verts[i % verts.length]; - v1 = verts[(i + 1) % verts.length]; - x0 = v0[0]; - y0 = v0[1]; - x1 = v1[0]; - y1 = v1[1]; - g.lineStyle(lineWidth, colors[i % colors.length], 1); - g.moveTo(x0, -y0); - g.lineTo(x1, -y1); - g.drawCircle(x0, -y0, lineWidth * 2); - i++; - } - - g.lineStyle(lineWidth, 0x000000, 1); - return g.drawCircle(offset[0], offset[1], lineWidth * 2); - } - - }, - - /** - * Draws a p2.Path to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#drawPath - * @private - */ - drawPath: function(g, path, color, fillColor, lineWidth) { - - var area, i, lastx, lasty, p1x, p1y, p2x, p2y, p3x, p3y, v, x, y; - if (lineWidth === undefined) { lineWidth = 1; } - if (color === undefined) { color = 0x000000; } - - g.lineStyle(lineWidth, color, 1); - - if (typeof fillColor === "number") - { - g.beginFill(fillColor); - } - - lastx = null; - lasty = null; - i = 0; - - while (i < path.length) - { - v = path[i]; - x = v[0]; - y = v[1]; - - if (x !== lastx || y !== lasty) - { - if (i === 0) - { - g.moveTo(x, y); - } - else - { - p1x = lastx; - p1y = lasty; - p2x = x; - p2y = y; - p3x = path[(i + 1) % path.length][0]; - p3y = path[(i + 1) % path.length][1]; - area = ((p2x - p1x) * (p3y - p1y)) - ((p3x - p1x) * (p2y - p1y)); - - if (area !== 0) - { - g.lineTo(x, y); - } - } - lastx = x; - lasty = y; - } - - i++; - - } - - if (typeof fillColor === "number") - { - g.endFill(); - } - - if (path.length > 2 && typeof fillColor === "number") - { - g.moveTo(path[path.length - 1][0], path[path.length - 1][1]); - g.lineTo(path[0][0], path[0][1]); - } - - }, - - /** - * Draws a p2.Plane to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#drawPlane - * @private - */ - drawPlane: function(g, x0, x1, color, lineColor, lineWidth, diagMargin, diagSize, maxLength, angle) { - - var max, xd, yd; - if (lineWidth === undefined) { lineWidth = 1; } - if (color === undefined) { color = 0xffffff; } - - g.lineStyle(lineWidth, lineColor, 11); - g.beginFill(color); - max = maxLength; - - g.moveTo(x0, -x1); - xd = x0 + Math.cos(angle) * this.game.width; - yd = x1 + Math.sin(angle) * this.game.height; - g.lineTo(xd, -yd); - - g.moveTo(x0, -x1); - xd = x0 + Math.cos(angle) * -this.game.width; - yd = x1 + Math.sin(angle) * -this.game.height; - g.lineTo(xd, -yd); - - }, - - /** - * Draws a p2.Capsule to the Graphics object. - * - * @method Phaser.Physics.P2.BodyDebug#drawCapsule - * @private - */ - drawCapsule: function(g, x, y, angle, len, radius, color, fillColor, lineWidth) { - - if (lineWidth === undefined) { lineWidth = 1; } - if (color === undefined) { color = 0x000000; } - - g.lineStyle(lineWidth, color, 1); - - // Draw circles at ends - var c = Math.cos(angle); - var s = Math.sin(angle); - - g.beginFill(fillColor, 1); - g.drawCircle(-len/2*c + x, -len/2*s + y, -radius * 2); - g.drawCircle( len/2*c + x, len/2*s + y, -radius * 2); - g.endFill(); - - // Draw rectangle - g.lineStyle(lineWidth, color, 0); - g.beginFill(fillColor, 1); - g.moveTo(-len/2*c + radius*s + x, -len/2*s + radius*c + y); - g.lineTo( len/2*c + radius*s + x, len/2*s + radius*c + y); - g.lineTo( len/2*c - radius*s + x, len/2*s - radius*c + y); - g.lineTo(-len/2*c - radius*s + x, -len/2*s - radius*c + y); - g.endFill(); - - // Draw lines in between - g.lineStyle(lineWidth, color, 1); - g.moveTo(-len/2*c + radius*s + x, -len/2*s + radius*c + y); - g.lineTo( len/2*c + radius*s + x, len/2*s + radius*c + y); - g.moveTo(-len/2*c - radius*s + x, -len/2*s - radius*c + y); - g.lineTo( len/2*c - radius*s + x, len/2*s - radius*c + y); - - }, - - /** - * Picks a random pastel color. - * - * @method Phaser.Physics.P2.BodyDebug#randomPastelHex - * @private - */ - randomPastelHex: function() { - - var blue, green, mix, red; - mix = [255, 255, 255]; - - red = Math.floor(Math.random() * 256); - green = Math.floor(Math.random() * 256); - blue = Math.floor(Math.random() * 256); - - red = Math.floor((red + 3 * mix[0]) / 4); - green = Math.floor((green + 3 * mix[1]) / 4); - blue = Math.floor((blue + 3 * mix[2]) / 4); - - return this.rgbToHex(red, green, blue); - - }, - - /** - * Converts from RGB to Hex. - * - * @method Phaser.Physics.P2.BodyDebug#rgbToHex - * @private - */ - rgbToHex: function(r, g, b) { - return this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b); - }, - - /** - * Component to hex conversion. - * - * @method Phaser.Physics.P2.BodyDebug#componentToHex - * @private - */ - componentToHex: function(c) { - - var hex; - hex = c.toString(16); - - if (hex.length === 2) - { - return hex; - } - else - { - return hex + '0'; - } - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a linear spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. -* -* @class Phaser.Physics.P2.Spring -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {p2.Body} bodyA - First connected body. -* @param {p2.Body} bodyB - Second connected body. -* @param {number} [restLength=1] - Rest length of the spring. A number > 0. -* @param {number} [stiffness=100] - Stiffness of the spring. A number >= 0. -* @param {number} [damping=1] - Damping of the spring. A number >= 0. -* @param {Array} [worldA] - Where to hook the spring to body A in world coordinates. This value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {Array} [worldB] - Where to hook the spring to body B in world coordinates. This value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {Array} [localA] - Where to hook the spring to body A in local body coordinates. This value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {Array} [localB] - Where to hook the spring to body B in local body coordinates. This value is an array with 2 elements matching x and y, i.e: [32, 32]. -*/ -Phaser.Physics.P2.Spring = function (world, bodyA, bodyB, restLength, stiffness, damping, worldA, worldB, localA, localB) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = world.game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to P2 World. - */ - this.world = world; - - if (restLength === undefined) { restLength = 1; } - if (stiffness === undefined) { stiffness = 100; } - if (damping === undefined) { damping = 1; } - - restLength = world.pxm(restLength); - - var options = { - restLength: restLength, - stiffness: stiffness, - damping: damping - }; - - if (typeof worldA !== 'undefined' && worldA !== null) - { - options.worldAnchorA = [ world.pxm(worldA[0]), world.pxm(worldA[1]) ]; - } - - if (typeof worldB !== 'undefined' && worldB !== null) - { - options.worldAnchorB = [ world.pxm(worldB[0]), world.pxm(worldB[1]) ]; - } - - if (typeof localA !== 'undefined' && localA !== null) - { - options.localAnchorA = [ world.pxm(localA[0]), world.pxm(localA[1]) ]; - } - - if (typeof localB !== 'undefined' && localB !== null) - { - options.localAnchorB = [ world.pxm(localB[0]), world.pxm(localB[1]) ]; - } - - /** - * @property {p2.LinearSpring} data - The actual p2 spring object. - */ - this.data = new p2.LinearSpring(bodyA, bodyB, options); - - this.data.parent = this; - -}; - -Phaser.Physics.P2.Spring.prototype.constructor = Phaser.Physics.P2.Spring; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a rotational spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. -* -* @class Phaser.Physics.P2.RotationalSpring -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {p2.Body} bodyA - First connected body. -* @param {p2.Body} bodyB - Second connected body. -* @param {number} [restAngle] - The relative angle of bodies at which the spring is at rest. If not given, it's set to the current relative angle between the bodies. -* @param {number} [stiffness=100] - Stiffness of the spring. A number >= 0. -* @param {number} [damping=1] - Damping of the spring. A number >= 0. -*/ -Phaser.Physics.P2.RotationalSpring = function (world, bodyA, bodyB, restAngle, stiffness, damping) { - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = world.game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to P2 World. - */ - this.world = world; - - if (restAngle === undefined) { restAngle = null; } - if (stiffness === undefined) { stiffness = 100; } - if (damping === undefined) { damping = 1; } - - if (restAngle) - { - restAngle = world.pxm(restAngle); - } - - var options = { - restAngle: restAngle, - stiffness: stiffness, - damping: damping - }; - - /** - * @property {p2.RotationalSpring} data - The actual p2 spring object. - */ - this.data = new p2.RotationalSpring(bodyA, bodyB, options); - - this.data.parent = this; - -}; - -Phaser.Physics.P2.Spring.prototype.constructor = Phaser.Physics.P2.Spring; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A P2 Material. -* -* \o/ ~ "Because I'm a Material girl" -* -* @class Phaser.Physics.P2.Material -* @constructor -* @param {string} name - The user defined name given to this Material. -*/ -Phaser.Physics.P2.Material = function (name) { - - /** - * @property {string} name - The user defined name given to this Material. - * @default - */ - this.name = name; - - p2.Material.call(this); - -}; - -Phaser.Physics.P2.Material.prototype = Object.create(p2.Material.prototype); -Phaser.Physics.P2.Material.prototype.constructor = Phaser.Physics.P2.Material; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Defines a physics material -* -* @class Phaser.Physics.P2.ContactMaterial -* @constructor -* @param {Phaser.Physics.P2.Material} materialA - First material participating in the contact material. -* @param {Phaser.Physics.P2.Material} materialB - Second material participating in the contact material. -* @param {object} [options] - Additional configuration options. -*/ -Phaser.Physics.P2.ContactMaterial = function (materialA, materialB, options) { - - /** - * @property {number} id - The contact material identifier. - */ - - /** - * @property {Phaser.Physics.P2.Material} materialA - First material participating in the contact material. - */ - - /** - * @property {Phaser.Physics.P2.Material} materialB - Second material participating in the contact material. - */ - - /** - * @property {number} [friction=0.3] - Friction to use in the contact of these two materials. - */ - - /** - * @property {number} [restitution=0.0] - Restitution to use in the contact of these two materials. - */ - - /** - * @property {number} [stiffness=1e7] - Stiffness of the resulting ContactEquation that this ContactMaterial generates. - */ - - /** - * @property {number} [relaxation=3] - Relaxation of the resulting ContactEquation that this ContactMaterial generates. - */ - - /** - * @property {number} [frictionStiffness=1e7] - Stiffness of the resulting FrictionEquation that this ContactMaterial generates. - */ - - /** - * @property {number} [frictionRelaxation=3] - Relaxation of the resulting FrictionEquation that this ContactMaterial generates. - */ - - /** - * @property {number} [surfaceVelocity=0] - Will add surface velocity to this material. If bodyA rests on top if bodyB, and the surface velocity is positive, bodyA will slide to the right. - */ - - p2.ContactMaterial.call(this, materialA, materialB, options); - -}; - -Phaser.Physics.P2.ContactMaterial.prototype = Object.create(p2.ContactMaterial.prototype); -Phaser.Physics.P2.ContactMaterial.prototype.constructor = Phaser.Physics.P2.ContactMaterial; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Collision Group -* -* @class Phaser.Physics.P2.CollisionGroup -* @constructor -* @param {number} bitmask - The CollisionGroup bitmask. -*/ -Phaser.Physics.P2.CollisionGroup = function (bitmask) { - - /** - * @property {number} mask - The CollisionGroup bitmask. - */ - this.mask = bitmask; - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A constraint that tries to keep the distance between two bodies constant. -* -* @class Phaser.Physics.P2.DistanceConstraint -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {p2.Body} bodyA - First connected body. -* @param {p2.Body} bodyB - Second connected body. -* @param {number} distance - The distance to keep between the bodies. -* @param {Array} [localAnchorA] - The anchor point for bodyA, defined locally in bodyA frame. Defaults to [0,0]. -* @param {Array} [localAnchorB] - The anchor point for bodyB, defined locally in bodyB frame. Defaults to [0,0]. -* @param {object} [maxForce=Number.MAX_VALUE] - Maximum force to apply. -*/ -Phaser.Physics.P2.DistanceConstraint = function (world, bodyA, bodyB, distance, localAnchorA, localAnchorB, maxForce) { - - if (distance === undefined) { distance = 100; } - if (localAnchorA === undefined) { localAnchorA = [0, 0]; } - if (localAnchorB === undefined) { localAnchorB = [0, 0]; } - if (maxForce === undefined) { maxForce = Number.MAX_VALUE; } - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = world.game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to P2 World. - */ - this.world = world; - - distance = world.pxm(distance); - - localAnchorA = [ world.pxmi(localAnchorA[0]), world.pxmi(localAnchorA[1]) ]; - localAnchorB = [ world.pxmi(localAnchorB[0]), world.pxmi(localAnchorB[1]) ]; - - var options = { distance: distance, localAnchorA: localAnchorA, localAnchorB: localAnchorB, maxForce: maxForce }; - - p2.DistanceConstraint.call(this, bodyA, bodyB, options); - -}; - -Phaser.Physics.P2.DistanceConstraint.prototype = Object.create(p2.DistanceConstraint.prototype); -Phaser.Physics.P2.DistanceConstraint.prototype.constructor = Phaser.Physics.P2.DistanceConstraint; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Connects two bodies at given offset points, letting them rotate relative to each other around this point. -* -* @class Phaser.Physics.P2.GearConstraint -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {p2.Body} bodyA - First connected body. -* @param {p2.Body} bodyB - Second connected body. -* @param {number} [angle=0] - The relative angle -* @param {number} [ratio=1] - The gear ratio. -*/ -Phaser.Physics.P2.GearConstraint = function (world, bodyA, bodyB, angle, ratio) { - - if (angle === undefined) { angle = 0; } - if (ratio === undefined) { ratio = 1; } - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = world.game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to P2 World. - */ - this.world = world; - - var options = { angle: angle, ratio: ratio }; - - p2.GearConstraint.call(this, bodyA, bodyB, options); - -}; - -Phaser.Physics.P2.GearConstraint.prototype = Object.create(p2.GearConstraint.prototype); -Phaser.Physics.P2.GearConstraint.prototype.constructor = Phaser.Physics.P2.GearConstraint; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Locks the relative position between two bodies. -* -* @class Phaser.Physics.P2.LockConstraint -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {p2.Body} bodyA - First connected body. -* @param {p2.Body} bodyB - Second connected body. -* @param {Array} [offset] - The offset of bodyB in bodyA's frame. The value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {number} [angle=0] - The angle of bodyB in bodyA's frame. -* @param {number} [maxForce] - The maximum force that should be applied to constrain the bodies. -*/ -Phaser.Physics.P2.LockConstraint = function (world, bodyA, bodyB, offset, angle, maxForce) { - - if (offset === undefined) { offset = [0, 0]; } - if (angle === undefined) { angle = 0; } - if (maxForce === undefined) { maxForce = Number.MAX_VALUE; } - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = world.game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to P2 World. - */ - this.world = world; - - offset = [ world.pxm(offset[0]), world.pxm(offset[1]) ]; - - var options = { localOffsetB: offset, localAngleB: angle, maxForce: maxForce }; - - p2.LockConstraint.call(this, bodyA, bodyB, options); - -}; - -Phaser.Physics.P2.LockConstraint.prototype = Object.create(p2.LockConstraint.prototype); -Phaser.Physics.P2.LockConstraint.prototype.constructor = Phaser.Physics.P2.LockConstraint; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Connects two bodies at given offset points, letting them rotate relative to each other around this point. -* -* @class Phaser.Physics.P2.PrismaticConstraint -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {p2.Body} bodyA - First connected body. -* @param {p2.Body} bodyB - Second connected body. -* @param {boolean} [lockRotation=true] - If set to false, bodyB will be free to rotate around its anchor point. -* @param {Array} [anchorA] - Body A's anchor point, defined in its own local frame. The value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {Array} [anchorB] - Body A's anchor point, defined in its own local frame. The value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {Array} [axis] - An axis, defined in body A frame, that body B's anchor point may slide along. The value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {number} [maxForce] - The maximum force that should be applied to constrain the bodies. -*/ -Phaser.Physics.P2.PrismaticConstraint = function (world, bodyA, bodyB, lockRotation, anchorA, anchorB, axis, maxForce) { - - if (lockRotation === undefined) { lockRotation = true; } - if (anchorA === undefined) { anchorA = [0, 0]; } - if (anchorB === undefined) { anchorB = [0, 0]; } - if (axis === undefined) { axis = [0, 0]; } - if (maxForce === undefined) { maxForce = Number.MAX_VALUE; } - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = world.game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to P2 World. - */ - this.world = world; - - anchorA = [ world.pxmi(anchorA[0]), world.pxmi(anchorA[1]) ]; - anchorB = [ world.pxmi(anchorB[0]), world.pxmi(anchorB[1]) ]; - - var options = { localAnchorA: anchorA, localAnchorB: anchorB, localAxisA: axis, maxForce: maxForce, disableRotationalLock: !lockRotation }; - - p2.PrismaticConstraint.call(this, bodyA, bodyB, options); - -}; - -Phaser.Physics.P2.PrismaticConstraint.prototype = Object.create(p2.PrismaticConstraint.prototype); -Phaser.Physics.P2.PrismaticConstraint.prototype.constructor = Phaser.Physics.P2.PrismaticConstraint; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Connects two bodies at given offset points, letting them rotate relative to each other around this point. -* The pivot points are given in world (pixel) coordinates. -* -* @class Phaser.Physics.P2.RevoluteConstraint -* @constructor -* @param {Phaser.Physics.P2} world - A reference to the P2 World. -* @param {p2.Body} bodyA - First connected body. -* @param {Float32Array} pivotA - The point relative to the center of mass of bodyA which bodyA is constrained to. The value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {p2.Body} bodyB - Second connected body. -* @param {Float32Array} pivotB - The point relative to the center of mass of bodyB which bodyB is constrained to. The value is an array with 2 elements matching x and y, i.e: [32, 32]. -* @param {number} [maxForce=0] - The maximum force that should be applied to constrain the bodies. -* @param {Float32Array} [worldPivot=null] - A pivot point given in world coordinates. If specified, localPivotA and localPivotB are automatically computed from this value. -*/ -Phaser.Physics.P2.RevoluteConstraint = function (world, bodyA, pivotA, bodyB, pivotB, maxForce, worldPivot) { - - if (maxForce === undefined) { maxForce = Number.MAX_VALUE; } - if (worldPivot === undefined) { worldPivot = null; } - - /** - * @property {Phaser.Game} game - Local reference to game. - */ - this.game = world.game; - - /** - * @property {Phaser.Physics.P2} world - Local reference to P2 World. - */ - this.world = world; - - pivotA = [ world.pxmi(pivotA[0]), world.pxmi(pivotA[1]) ]; - pivotB = [ world.pxmi(pivotB[0]), world.pxmi(pivotB[1]) ]; - - if (worldPivot) - { - worldPivot = [ world.pxmi(worldPivot[0]), world.pxmi(worldPivot[1]) ]; - } - - var options = { worldPivot: worldPivot, localPivotA: pivotA, localPivotB: pivotB, maxForce: maxForce }; - - p2.RevoluteConstraint.call(this, bodyA, bodyB, options); - -}; - -Phaser.Physics.P2.RevoluteConstraint.prototype = Object.create(p2.RevoluteConstraint.prototype); -Phaser.Physics.P2.RevoluteConstraint.prototype.constructor = Phaser.Physics.P2.RevoluteConstraint; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* An Image Collection is a special tileset containing mulitple images, with no slicing into each image. -* -* Image Collections are normally created automatically when Tiled data is loaded. -* -* @class Phaser.ImageCollection -* @constructor -* @param {string} name - The name of the image collection in the map data. -* @param {integer} firstgid - The first image index this image collection contains. -* @param {integer} [width=32] - Width of widest image (in pixels). -* @param {integer} [height=32] - Height of tallest image (in pixels). -* @param {integer} [margin=0] - The margin around all images in the collection (in pixels). -* @param {integer} [spacing=0] - The spacing between each image in the collection (in pixels). -* @param {object} [properties={}] - Custom Image Collection properties. -*/ -Phaser.ImageCollection = function (name, firstgid, width, height, margin, spacing, properties) { - - if (width === undefined || width <= 0) { width = 32; } - if (height === undefined || height <= 0) { height = 32; } - if (margin === undefined) { margin = 0; } - if (spacing === undefined) { spacing = 0; } - - /** - * The name of the Image Collection. - * @property {string} name - */ - this.name = name; - - /** - * The Tiled firstgid value. - * This is the starting index of the first image index this Image Collection contains. - * @property {integer} firstgid - */ - this.firstgid = firstgid | 0; - - /** - * The width of the widest image (in pixels). - * @property {integer} imageWidth - * @readonly - */ - this.imageWidth = width | 0; - - /** - * The height of the tallest image (in pixels). - * @property {integer} imageHeight - * @readonly - */ - this.imageHeight = height | 0; - - /** - * The margin around the images in the collection (in pixels). - * Use `setSpacing` to change. - * @property {integer} imageMarge - * @readonly - */ - // Modified internally - this.imageMargin = margin | 0; - - /** - * The spacing between each image in the collection (in pixels). - * Use `setSpacing` to change. - * @property {integer} imageSpacing - * @readonly - */ - this.imageSpacing = spacing | 0; - - /** - * Image Collection-specific properties that are typically defined in the Tiled editor. - * @property {object} properties - */ - this.properties = properties || {}; - - /** - * The cached images that are a part of this collection. - * @property {array} images - * @readonly - */ - // Modified internally - this.images = []; - - /** - * The total number of images in the image collection. - * @property {integer} total - * @readonly - */ - // Modified internally - this.total = 0; -}; - -Phaser.ImageCollection.prototype = { - - /** - * Returns true if and only if this image collection contains the given image index. - * - * @method Phaser.ImageCollection#containsImageIndex - * @param {integer} imageIndex - The image index to search for. - * @return {boolean} True if this Image Collection contains the given index. - */ - containsImageIndex: function (imageIndex) { - - return ( - imageIndex >= this.firstgid && - imageIndex < (this.firstgid + this.total) - ); - - }, - - /** - * Add an image to this Image Collection. - * - * @method Phaser.ImageCollection#addImage - * @param {integer} gid - The gid of the image in the Image Collection. - * @param {string} image - The the key of the image in the Image Collection and in the cache. - */ - addImage: function (gid, image) { - - this.images.push({ gid: gid, image: image }); - this.total++; - - } - -}; - -Phaser.ImageCollection.prototype.constructor = Phaser.ImageCollection; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Tile is a representation of a single tile within the Tilemap. -* -* @class Phaser.Tile -* @constructor -* @param {object} layer - The layer in the Tilemap data that this tile belongs to. -* @param {number} index - The index of this tile type in the core map data. -* @param {number} x - The x coordinate of this tile. -* @param {number} y - The y coordinate of this tile. -* @param {number} width - Width of the tile. -* @param {number} height - Height of the tile. -*/ -Phaser.Tile = function (layer, index, x, y, width, height) { - - /** - * @property {object} layer - The layer in the Tilemap data that this tile belongs to. - */ - this.layer = layer; - - /** - * @property {number} index - The index of this tile within the map data corresponding to the tileset, or -1 if this represents a blank/null tile. - */ - this.index = index; - - /** - * @property {number} x - The x map coordinate of this tile. - */ - this.x = x; - - /** - * @property {number} y - The y map coordinate of this tile. - */ - this.y = y; - - /** - * @property {number} rotation - The rotation angle of this tile. - */ - this.rotation = 0; - - /** - * @property {boolean} flipped - Whether this tile is flipped (mirrored) or not. - */ - this.flipped = false; - - /** - * @property {number} x - The x map coordinate of this tile. - */ - this.worldX = x * width; - - /** - * @property {number} y - The y map coordinate of this tile. - */ - this.worldY = y * height; - - /** - * @property {number} width - The width of the tile in pixels. - */ - this.width = width; - - /** - * @property {number} height - The height of the tile in pixels. - */ - this.height = height; - - /** - * @property {number} width - The width of the tile in pixels. - */ - this.centerX = Math.abs(width / 2); - - /** - * @property {number} height - The height of the tile in pixels. - */ - this.centerY = Math.abs(height / 2); - - /** - * @property {number} alpha - The alpha value at which this tile is drawn to the canvas. - */ - this.alpha = 1; - - /** - * @property {object} properties - Tile specific properties. - */ - this.properties = {}; - - /** - * @property {boolean} scanned - Has this tile been walked / turned into a poly? - */ - this.scanned = false; - - /** - * @property {boolean} faceTop - Is the top of this tile an interesting edge? - */ - this.faceTop = false; - - /** - * @property {boolean} faceBottom - Is the bottom of this tile an interesting edge? - */ - this.faceBottom = false; - - /** - * @property {boolean} faceLeft - Is the left of this tile an interesting edge? - */ - this.faceLeft = false; - - /** - * @property {boolean} faceRight - Is the right of this tile an interesting edge? - */ - this.faceRight = false; - - /** - * @property {boolean} collideLeft - Indicating collide with any object on the left. - * @default - */ - this.collideLeft = false; - - /** - * @property {boolean} collideRight - Indicating collide with any object on the right. - * @default - */ - this.collideRight = false; - - /** - * @property {boolean} collideUp - Indicating collide with any object on the top. - * @default - */ - this.collideUp = false; - - /** - * @property {boolean} collideDown - Indicating collide with any object on the bottom. - * @default - */ - this.collideDown = false; - - /** - * @property {function} collisionCallback - Tile collision callback. - * @default - */ - this.collisionCallback = null; - - /** - * @property {object} collisionCallbackContext - The context in which the collision callback will be called. - * @default - */ - this.collisionCallbackContext = this; - -}; - -Phaser.Tile.prototype = { - - /** - * Check if the given x and y world coordinates are within this Tile. - * - * @method Phaser.Tile#containsPoint - * @param {number} x - The x coordinate to test. - * @param {number} y - The y coordinate to test. - * @return {boolean} True if the coordinates are within this Tile, otherwise false. - */ - containsPoint: function (x, y) { - - return !(x < this.worldX || y < this.worldY || x > this.right || y > this.bottom); - - }, - - /** - * Check for intersection with this tile. - * - * @method Phaser.Tile#intersects - * @param {number} x - The x axis in pixels. - * @param {number} y - The y axis in pixels. - * @param {number} right - The right point. - * @param {number} bottom - The bottom point. - */ - intersects: function (x, y, right, bottom) { - - if (right <= this.worldX) - { - return false; - } - - if (bottom <= this.worldY) - { - return false; - } - - if (x >= this.worldX + this.width) - { - return false; - } - - if (y >= this.worldY + this.height) - { - return false; - } - - return true; - - }, - - /** - * Set a callback to be called when this tile is hit by an object. - * The callback must true true for collision processing to take place. - * - * @method Phaser.Tile#setCollisionCallback - * @param {function} callback - Callback function. - * @param {object} context - Callback will be called within this context. - */ - setCollisionCallback: function (callback, context) { - - this.collisionCallback = callback; - this.collisionCallbackContext = context; - - }, - - /** - * Clean up memory. - * - * @method Phaser.Tile#destroy - */ - destroy: function () { - - this.collisionCallback = null; - this.collisionCallbackContext = null; - this.properties = null; - - }, - - /** - * Sets the collision flags for each side of this tile and updates the interesting faces list. - * - * @method Phaser.Tile#setCollision - * @param {boolean} left - Indicating collide with any object on the left. - * @param {boolean} right - Indicating collide with any object on the right. - * @param {boolean} up - Indicating collide with any object on the top. - * @param {boolean} down - Indicating collide with any object on the bottom. - */ - setCollision: function (left, right, up, down) { - - this.collideLeft = left; - this.collideRight = right; - this.collideUp = up; - this.collideDown = down; - - this.faceLeft = left; - this.faceRight = right; - this.faceTop = up; - this.faceBottom = down; - - }, - - /** - * Reset collision status flags. - * - * @method Phaser.Tile#resetCollision - */ - resetCollision: function () { - - this.collideLeft = false; - this.collideRight = false; - this.collideUp = false; - this.collideDown = false; - - this.faceTop = false; - this.faceBottom = false; - this.faceLeft = false; - this.faceRight = false; - - }, - - /** - * Is this tile interesting? - * - * @method Phaser.Tile#isInteresting - * @param {boolean} collides - If true will check any collides value. - * @param {boolean} faces - If true will check any face value. - * @return {boolean} True if the Tile is interesting, otherwise false. - */ - isInteresting: function (collides, faces) { - - if (collides && faces) - { - // Does this tile have any collide flags OR interesting face? - return (this.collideLeft || this.collideRight || this.collideUp || this.collideDown || this.faceTop || this.faceBottom || this.faceLeft || this.faceRight || this.collisionCallback); - } - else if (collides) - { - // Does this tile collide? - return (this.collideLeft || this.collideRight || this.collideUp || this.collideDown); - } - else if (faces) - { - // Does this tile have an interesting face? - return (this.faceTop || this.faceBottom || this.faceLeft || this.faceRight); - } - - return false; - - }, - - /** - * Copies the tile data and properties from the given tile to this tile. - * - * @method Phaser.Tile#copy - * @param {Phaser.Tile} tile - The tile to copy from. - */ - copy: function (tile) { - - this.index = tile.index; - this.alpha = tile.alpha; - this.properties = tile.properties; - - this.collideUp = tile.collideUp; - this.collideDown = tile.collideDown; - this.collideLeft = tile.collideLeft; - this.collideRight = tile.collideRight; - - this.collisionCallback = tile.collisionCallback; - this.collisionCallbackContext = tile.collisionCallbackContext; - - } - -}; - -Phaser.Tile.prototype.constructor = Phaser.Tile; - -/** -* @name Phaser.Tile#collides -* @property {boolean} collides - True if this tile can collide on any of its faces. -* @readonly -*/ -Object.defineProperty(Phaser.Tile.prototype, "collides", { - - get: function () { - return (this.collideLeft || this.collideRight || this.collideUp || this.collideDown); - } - -}); - -/** -* @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide on any of its faces or has a collision callback set. -* @readonly -*/ -Object.defineProperty(Phaser.Tile.prototype, "canCollide", { - - get: function () { - return (this.collideLeft || this.collideRight || this.collideUp || this.collideDown || this.collisionCallback); - } - -}); - -/** -* @name Phaser.Tile#left -* @property {number} left - The x value in pixels. -* @readonly -*/ -Object.defineProperty(Phaser.Tile.prototype, "left", { - - get: function () { - return this.worldX; - } - -}); - -/** -* @name Phaser.Tile#right -* @property {number} right - The sum of the x and width properties. -* @readonly -*/ -Object.defineProperty(Phaser.Tile.prototype, "right", { - - get: function () { - return this.worldX + this.width; - } - -}); - -/** -* @name Phaser.Tile#top -* @property {number} top - The y value. -* @readonly -*/ -Object.defineProperty(Phaser.Tile.prototype, "top", { - - get: function () { - return this.worldY; - } - -}); - -/** -* @name Phaser.Tile#bottom -* @property {number} bottom - The sum of the y and height properties. -* @readonly -*/ -Object.defineProperty(Phaser.Tile.prototype, "bottom", { - - get: function () { - return this.worldY + this.height; - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creates a new Phaser.Tilemap object. The map can either be populated with data from a Tiled JSON file or from a CSV file. -* To do this pass the Cache key as the first parameter. When using Tiled data you need only provide the key. -* When using CSV data you must provide the key and the tileWidth and tileHeight parameters. -* If creating a blank tilemap to be populated later, you can either specify no parameters at all and then use `Tilemap.create` or pass the map and tile dimensions here. -* Note that all Tilemaps use a base tile size to calculate dimensions from, but that a TilemapLayer may have its own unique tile size that overrides it. -* A Tile map is rendered to the display using a TilemapLayer. It is not added to the display list directly itself. -* A map may have multiple layers. You can perform operations on the map data such as copying, pasting, filling and shuffling the tiles around. -* -* @class Phaser.Tilemap -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. -* @param {string} [key] - The key of the tilemap data as stored in the Cache. If you're creating a blank map either leave this parameter out or pass `null`. -* @param {number} [tileWidth=32] - The pixel width of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. -* @param {number} [tileHeight=32] - The pixel height of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. -* @param {number} [width=10] - The width of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. -* @param {number} [height=10] - The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. -*/ -Phaser.Tilemap = function (game, key, tileWidth, tileHeight, width, height) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {string} key - The key of this map data in the Phaser.Cache. - */ - this.key = key; - - var data = Phaser.TilemapParser.parse(this.game, key, tileWidth, tileHeight, width, height); - - if (data === null) - { - return; - } - - /** - * @property {number} width - The width of the map (in tiles). - */ - this.width = data.width; - - /** - * @property {number} height - The height of the map (in tiles). - */ - this.height = data.height; - - /** - * @property {number} tileWidth - The base width of the tiles in the map (in pixels). - */ - this.tileWidth = data.tileWidth; - - /** - * @property {number} tileHeight - The base height of the tiles in the map (in pixels). - */ - this.tileHeight = data.tileHeight; - - /** - * @property {string} orientation - The orientation of the map data (as specified in Tiled), usually 'orthogonal'. - */ - this.orientation = data.orientation; - - /** - * @property {number} format - The format of the map data, either Phaser.Tilemap.CSV or Phaser.Tilemap.TILED_JSON. - */ - this.format = data.format; - - /** - * @property {number} version - The version of the map data (as specified in Tiled, usually 1). - */ - this.version = data.version; - - /** - * @property {object} properties - Map specific properties as specified in Tiled. - */ - this.properties = data.properties; - - /** - * @property {number} widthInPixels - The width of the map in pixels based on width * tileWidth. - */ - this.widthInPixels = data.widthInPixels; - - /** - * @property {number} heightInPixels - The height of the map in pixels based on height * tileHeight. - */ - this.heightInPixels = data.heightInPixels; - - /** - * @property {array} layers - An array of Tilemap layer data. - */ - this.layers = data.layers; - - /** - * @property {array} tilesets - An array of Tilesets. - */ - this.tilesets = data.tilesets; - - /** - * @property {array} imagecollections - An array of Image Collections. - */ - this.imagecollections = data.imagecollections; - - /** - * @property {array} tiles - The super array of Tiles. - */ - this.tiles = data.tiles; - - /** - * @property {array} objects - An array of Tiled Object Layers. - */ - this.objects = data.objects; - - /** - * @property {array} collideIndexes - An array of tile indexes that collide. - */ - this.collideIndexes = []; - - /** - * @property {array} collision - An array of collision data (polylines, etc). - */ - this.collision = data.collision; - - /** - * @property {array} images - An array of Tiled Image Layers. - */ - this.images = data.images; - - /** - * @property {number} currentLayer - The current layer. - */ - this.currentLayer = 0; - - /** - * @property {array} debugMap - Map data used for debug values only. - */ - this.debugMap = []; - - /** - * @property {array} _results - Internal var. - * @private - */ - this._results = []; - - /** - * @property {number} _tempA - Internal var. - * @private - */ - this._tempA = 0; - - /** - * @property {number} _tempB - Internal var. - * @private - */ - this._tempB = 0; - -}; - -/** -* @constant -* @type {number} -*/ -Phaser.Tilemap.CSV = 0; - -/** -* @constant -* @type {number} -*/ -Phaser.Tilemap.TILED_JSON = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.Tilemap.NORTH = 0; - -/** -* @constant -* @type {number} -*/ -Phaser.Tilemap.EAST = 1; - -/** -* @constant -* @type {number} -*/ -Phaser.Tilemap.SOUTH = 2; - -/** -* @constant -* @type {number} -*/ -Phaser.Tilemap.WEST = 3; - -Phaser.Tilemap.prototype = { - - /** - * Creates an empty map of the given dimensions and one blank layer. If layers already exist they are erased. - * - * @method Phaser.Tilemap#create - * @param {string} name - The name of the default layer of the map. - * @param {number} width - The width of the map in tiles. - * @param {number} height - The height of the map in tiles. - * @param {number} tileWidth - The width of the tiles the map uses for calculations. - * @param {number} tileHeight - The height of the tiles the map uses for calculations. - * @param {Phaser.Group} [group] - Optional Group to add the layer to. If not specified it will be added to the World group. - * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. - */ - create: function (name, width, height, tileWidth, tileHeight, group) { - - if (group === undefined) { group = this.game.world; } - - this.width = width; - this.height = height; - - this.setTileSize(tileWidth, tileHeight); - - this.layers.length = 0; - - return this.createBlankLayer(name, width, height, tileWidth, tileHeight, group); - - }, - - /** - * Sets the base tile size for the map. - * - * @method Phaser.Tilemap#setTileSize - * @param {number} tileWidth - The width of the tiles the map uses for calculations. - * @param {number} tileHeight - The height of the tiles the map uses for calculations. - */ - setTileSize: function (tileWidth, tileHeight) { - - this.tileWidth = tileWidth; - this.tileHeight = tileHeight; - this.widthInPixels = this.width * tileWidth; - this.heightInPixels = this.height * tileHeight; - - }, - - /** - * Adds an image to the map to be used as a tileset. A single map may use multiple tilesets. - * Note that the tileset name can be found in the JSON file exported from Tiled, or in the Tiled editor. - * - * @method Phaser.Tilemap#addTilesetImage - * @param {string} tileset - The name of the tileset as specified in the map data. - * @param {string|Phaser.BitmapData} [key] - The key of the Phaser.Cache image used for this tileset. - * If `undefined` or `null` it will look for an image with a key matching the tileset parameter. - * You can also pass in a BitmapData which can be used instead of an Image. - * @param {number} [tileWidth=32] - The width of the tiles in the Tileset Image. If not given it will default to the map.tileWidth value, if that isn't set then 32. - * @param {number} [tileHeight=32] - The height of the tiles in the Tileset Image. If not given it will default to the map.tileHeight value, if that isn't set then 32. - * @param {number} [tileMargin=0] - The width of the tiles in the Tileset Image. - * @param {number} [tileSpacing=0] - The height of the tiles in the Tileset Image. - * @param {number} [gid=0] - If adding multiple tilesets to a blank/dynamic map, specify the starting GID the set will use here. - * @return {Phaser.Tileset} Returns the Tileset object that was created or updated, or null if it failed. - */ - addTilesetImage: function (tileset, key, tileWidth, tileHeight, tileMargin, tileSpacing, gid) { - - if (tileset === undefined) { return null; } - if (tileWidth === undefined) { tileWidth = this.tileWidth; } - if (tileHeight === undefined) { tileHeight = this.tileHeight; } - if (tileMargin === undefined) { tileMargin = 0; } - if (tileSpacing === undefined) { tileSpacing = 0; } - if (gid === undefined) { gid = 0; } - - // In-case we're working from a blank map - if (tileWidth === 0) - { - tileWidth = 32; - } - - if (tileHeight === 0) - { - tileHeight = 32; - } - - var img = null; - - if (key === undefined || key === null) - { - key = tileset; - } - - if (key instanceof Phaser.BitmapData) - { - img = key.canvas; - } - else - { - if (!this.game.cache.checkImageKey(key)) - { - console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "' + key + '"'); - return null; - } - - img = this.game.cache.getImage(key); - } - - var idx = this.getTilesetIndex(tileset); - - if (idx === null && this.format === Phaser.Tilemap.TILED_JSON) - { - console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "' + tileset + '"'); - return null; - } - - if (this.tilesets[idx]) - { - this.tilesets[idx].setImage(img); - return this.tilesets[idx]; - } - else - { - var newSet = new Phaser.Tileset(tileset, gid, tileWidth, tileHeight, tileMargin, tileSpacing, {}); - - newSet.setImage(img); - - this.tilesets.push(newSet); - - var i = this.tilesets.length - 1; - var x = tileMargin; - var y = tileMargin; - - var count = 0; - var countX = 0; - var countY = 0; - - for (var t = gid; t < gid + newSet.total; t++) - { - this.tiles[t] = [x, y, i]; - - x += tileWidth + tileSpacing; - - count++; - - if (count === newSet.total) - { - break; - } - - countX++; - - if (countX === newSet.columns) - { - x = tileMargin; - y += tileHeight + tileSpacing; - - countX = 0; - countY++; - - if (countY === newSet.rows) - { - break; - } - } - } - - return newSet; - - } - - return null; - - }, - - /** - * Creates a Sprite for every object matching the given gid in the map data. You can optionally specify the group that the Sprite will be created in. If none is - * given it will be created in the World. All properties from the map data objectgroup are copied across to the Sprite, so you can use this as an easy way to - * configure Sprite properties from within the map editor. For example giving an object a property of alpha: 0.5 in the map editor will duplicate that when the - * Sprite is created. You could also give it a value like: body.velocity.x: 100 to set it moving automatically. - * - * @method Phaser.Tilemap#createFromObjects - * @param {string} name - The name of the Object Group to create Sprites from. - * @param {number} gid - The layer array index value, or if a string is given the layer name within the map data. - * @param {string} key - The Game.cache key of the image that this Sprite will use. - * @param {number|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. - * @param {boolean} [exists=true] - The default exists state of the Sprite. - * @param {boolean} [autoCull=false] - The default autoCull state of the Sprite. Sprites that are autoCulled are culled from the camera if out of its range. - * @param {Phaser.Group} [group=Phaser.World] - Group to add the Sprite to. If not specified it will be added to the World group. - * @param {object} [CustomClass=Phaser.Sprite] - If you wish to create your own class, rather than Phaser.Sprite, pass the class here. Your class must extend Phaser.Sprite and have the same constructor parameters. - * @param {boolean} [adjustY=true] - By default the Tiled map editor uses a bottom-left coordinate system. Phaser uses top-left. So most objects will appear too low down. This parameter moves them up by their height. - */ - createFromObjects: function (name, gid, key, frame, exists, autoCull, group, CustomClass, adjustY) { - - if (exists === undefined) { exists = true; } - if (autoCull === undefined) { autoCull = false; } - if (group === undefined) { group = this.game.world; } - if (CustomClass === undefined) { CustomClass = Phaser.Sprite; } - if (adjustY === undefined) { adjustY = true; } - - if (!this.objects[name]) - { - console.warn('Tilemap.createFromObjects: Invalid objectgroup name given: ' + name); - return; - } - - for (var i = 0; i < this.objects[name].length; i++) - { - var found = false; - var obj = this.objects[name][i]; - - if (obj.gid !== undefined && typeof gid === 'number' && obj.gid === gid) - { - found = true; - } - else if (obj.id !== undefined && typeof gid === 'number' && obj.id === gid) - { - found = true; - } - else if (obj.name !== undefined && typeof gid === 'string' && obj.name === gid) - { - found = true; - } - - if (found) - { - var sprite = new CustomClass(this.game, parseFloat(obj.x, 10), parseFloat(obj.y, 10), key, frame); - - sprite.name = obj.name; - sprite.visible = obj.visible; - sprite.autoCull = autoCull; - sprite.exists = exists; - - if (obj.width) - { - sprite.width = obj.width; - } - - if (obj.height) - { - sprite.height = obj.height; - } - - if (obj.rotation) - { - sprite.angle = obj.rotation; - } - - if (adjustY) - { - sprite.y -= sprite.height; - } - - group.add(sprite); - - for (var property in obj.properties) - { - group.set(sprite, property, obj.properties[property], false, false, 0, true); - } - } - } - - }, - - /** - * Creates a Sprite for every object matching the given tile indexes in the map data. - * You can specify the group that the Sprite will be created in. If none is given it will be created in the World. - * You can optional specify if the tile will be replaced with another after the Sprite is created. This is useful if you want to lay down special - * tiles in a level that are converted to Sprites, but want to replace the tile itself with a floor tile or similar once converted. - * - * @method Phaser.Tilemap#createFromTiles - * @param {integer|Array} tiles - The tile index, or array of indexes, to create Sprites from. - * @param {integer|Array} replacements - The tile index, or array of indexes, to change a converted tile to. Set to `null` to not change. - * @param {string} key - The Game.cache key of the image that this Sprite will use. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. - * @param {Phaser.Group} [group=Phaser.World] - Group to add the Sprite to. If not specified it will be added to the World group. - * @param {object} [properties] - An object that contains the default properties for your newly created Sprite. This object will be iterated and any matching Sprite property will be set. - * @return {integer} The number of Sprites that were created. - */ - createFromTiles: function (tiles, replacements, key, layer, group, properties) { - - if (typeof tiles === 'number') { tiles = [tiles]; } - - if (replacements === undefined || replacements === null) - { - replacements = []; - } - else if (typeof replacements === 'number') - { - replacements = [replacements]; - } - - layer = this.getLayer(layer); - - if (group === undefined) { group = this.game.world; } - if (properties === undefined) { properties = {}; } - - if (properties.customClass === undefined) - { - properties.customClass = Phaser.Sprite; - } - - if (properties.adjustY === undefined) - { - properties.adjustY = true; - } - - var lw = this.layers[layer].width; - var lh = this.layers[layer].height; - - this.copy(0, 0, lw, lh, layer); - - if (this._results.length < 2) - { - return 0; - } - - var total = 0; - var sprite; - - for (var i = 1, len = this._results.length; i < len; i++) - { - if (tiles.indexOf(this._results[i].index) !== -1) - { - sprite = new properties.customClass(this.game, this._results[i].worldX, this._results[i].worldY, key); - - for (var property in properties) - { - sprite[property] = properties[property]; - } - - group.add(sprite); - total++; - } - - } - - if (replacements.length === 1) - { - // Assume 1 replacement for all types of tile given - for (i = 0; i < tiles.length; i++) - { - this.replace(tiles[i], replacements[0], 0, 0, lw, lh, layer); - } - } - else if (replacements.length > 1) - { - // Assume 1 for 1 mapping - for (i = 0; i < tiles.length; i++) - { - this.replace(tiles[i], replacements[i], 0, 0, lw, lh, layer); - } - } - - return total; - - }, - - /** - * Creates a new TilemapLayer object. By default TilemapLayers are fixed to the camera. - * The `layer` parameter is important. If you've created your map in Tiled then you can get this by looking in Tiled and looking at the Layer name. - * Or you can open the JSON file it exports and look at the layers[].name value. Either way it must match. - * If you wish to create a blank layer to put your own tiles on then see Tilemap.createBlankLayer. - * - * @method Phaser.Tilemap#createLayer - * @param {number|string} layer - The layer array index value, or if a string is given the layer name, within the map data that this TilemapLayer represents. - * @param {number} [width] - The rendered width of the layer, should never be wider than Game.width. If not given it will be set to Game.width. - * @param {number} [height] - The rendered height of the layer, should never be wider than Game.height. If not given it will be set to Game.height. - * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @param {boolean} [pixiTest] - Temporary additional flag to enable tests of the PIXI.Tilemap renderer - * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Sprite and can be moved around the display list accordingly. - */ - createLayer: function (layer, width, height, group, pixiTest) { - - // Add Buffer support for the left of the canvas - - if (width === undefined) { width = this.game.width; } - if (height === undefined) { height = this.game.height; } - if (group === undefined) { group = this.game.world; } - - var index = layer; - - if (typeof layer === 'string') - { - index = this.getLayerIndex(layer); - } - - if (index === null || index > this.layers.length) - { - console.warn('Tilemap.createLayer: Invalid layer ID given: ' + index); - return; - } - - if ( pixiTest ) - { - return group.add(new Phaser.TilemapLayerGL(this.game, this, index, width, height)); - } - - return group.add(new Phaser.TilemapLayer(this.game, this, index, width, height)); - - }, - - /** - * Creates a new and empty layer on this Tilemap. By default TilemapLayers are fixed to the camera. - * - * @method Phaser.Tilemap#createBlankLayer - * @param {string} name - The name of this layer. Must be unique within the map. - * @param {number} width - The width of the layer in tiles. - * @param {number} height - The height of the layer in tiles. - * @param {number} tileWidth - The width of the tiles the layer uses for calculations. - * @param {number} tileHeight - The height of the tiles the layer uses for calculations. - * @param {Phaser.Group} [group] - Optional Group to add the layer to. If not specified it will be added to the World group. - * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. - */ - createBlankLayer: function (name, width, height, tileWidth, tileHeight, group) { - - if (group === undefined) { group = this.game.world; } - - if (this.getLayerIndex(name) !== null) - { - console.warn('Tilemap.createBlankLayer: Layer with matching name already exists'); - return; - } - - var layer = { - - name: name, - x: 0, - y: 0, - width: width, - height: height, - widthInPixels: width * tileWidth, - heightInPixels: height * tileHeight, - alpha: 1, - visible: true, - properties: {}, - indexes: [], - callbacks: [], - bodies: [], - data: null - - }; - - var row; - var output = []; - - for (var y = 0; y < height; y++) - { - row = []; - - for (var x = 0; x < width; x++) - { - // row.push(null); - row.push(new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight)); - } - - output.push(row); - } - - layer.data = output; - - this.layers.push(layer); - - this.currentLayer = this.layers.length - 1; - - var w = layer.widthInPixels; - var h = layer.heightInPixels; - - if (w > this.game.width) - { - w = this.game.width; - } - - if (h > this.game.height) - { - h = this.game.height; - } - - var output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); - output.name = name; - - return group.add(output); - - }, - - /** - * Gets the layer index based on the layers name. - * - * @method Phaser.Tilemap#getIndex - * @protected - * @param {array} location - The local array to search. - * @param {string} name - The name of the array element to get. - * @return {number} The index of the element in the array, or null if not found. - */ - getIndex: function (location, name) { - - for (var i = 0; i < location.length; i++) - { - if (location[i].name === name) - { - return i; - } - } - - return null; - - }, - - /** - * Gets the layer index based on its name. - * - * @method Phaser.Tilemap#getLayerIndex - * @param {string} name - The name of the layer to get. - * @return {number} The index of the layer in this tilemap, or null if not found. - */ - getLayerIndex: function (name) { - - return this.getIndex(this.layers, name); - - }, - - /** - * Gets the tileset index based on its name. - * - * @method Phaser.Tilemap#getTilesetIndex - * @param {string} name - The name of the tileset to get. - * @return {number} The index of the tileset in this tilemap, or null if not found. - */ - getTilesetIndex: function (name) { - - return this.getIndex(this.tilesets, name); - - }, - - /** - * Gets the image index based on its name. - * - * @method Phaser.Tilemap#getImageIndex - * @param {string} name - The name of the image to get. - * @return {number} The index of the image in this tilemap, or null if not found. - */ - getImageIndex: function (name) { - - return this.getIndex(this.images, name); - - }, - - /** - * Sets a global collision callback for the given tile index within the layer. This will affect all tiles on this layer that have the same index. - * If a callback is already set for the tile index it will be replaced. Set the callback to null to remove it. - * If you want to set a callback for a tile at a specific location on the map then see setTileLocationCallback. - * - * @method Phaser.Tilemap#setTileIndexCallback - * @param {number|array} indexes - Either a single tile index, or an array of tile indexes to have a collision callback set for. - * @param {function} callback - The callback that will be invoked when the tile is collided with. - * @param {object} callbackContext - The context under which the callback is called. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer. - */ - setTileIndexCallback: function (indexes, callback, callbackContext, layer) { - - layer = this.getLayer(layer); - - if (typeof indexes === 'number') - { - // This may seem a bit wasteful, because it will cause empty array elements to be created, but the look-up cost is much - // less than having to iterate through the callbacks array hunting down tile indexes each frame, so I'll take the small memory hit. - this.layers[layer].callbacks[indexes] = { callback: callback, callbackContext: callbackContext }; - } - else - { - for (var i = 0, len = indexes.length; i < len; i++) - { - this.layers[layer].callbacks[indexes[i]] = { callback: callback, callbackContext: callbackContext }; - } - } - - }, - - /** - * Sets a global collision callback for the given map location within the layer. This will affect all tiles on this layer found in the given area. - * If a callback is already set for the tile index it will be replaced. Set the callback to null to remove it. - * If you want to set a callback for a tile at a specific location on the map then see setTileLocationCallback. - * - * @method Phaser.Tilemap#setTileLocationCallback - * @param {number} x - X position of the top left of the area to copy (given in tiles, not pixels) - * @param {number} y - Y position of the top left of the area to copy (given in tiles, not pixels) - * @param {number} width - The width of the area to copy (given in tiles, not pixels) - * @param {number} height - The height of the area to copy (given in tiles, not pixels) - * @param {function} callback - The callback that will be invoked when the tile is collided with. - * @param {object} callbackContext - The context under which the callback is called. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer. - */ - setTileLocationCallback: function (x, y, width, height, callback, callbackContext, layer) { - - layer = this.getLayer(layer); - - this.copy(x, y, width, height, layer); - - if (this._results.length < 2) - { - return; - } - - for (var i = 1; i < this._results.length; i++) - { - this._results[i].setCollisionCallback(callback, callbackContext); - } - - }, - - /** - * Sets collision the given tile or tiles. You can pass in either a single numeric index or an array of indexes: [ 2, 3, 15, 20]. - * The `collides` parameter controls if collision will be enabled (true) or disabled (false). - * - * @method Phaser.Tilemap#setCollision - * @param {number|array} indexes - Either a single tile index, or an array of tile IDs to be checked for collision. - * @param {boolean} [collides=true] - If true it will enable collision. If false it will clear collision. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer. - * @param {boolean} [recalculate=true] - Recalculates the tile faces after the update. - */ - setCollision: function (indexes, collides, layer, recalculate) { - - if (collides === undefined) { collides = true; } - if (recalculate === undefined) { recalculate = true; } - - layer = this.getLayer(layer); - - if (typeof indexes === 'number') - { - return this.setCollisionByIndex(indexes, collides, layer, true); - } - else if (Array.isArray(indexes)) - { - // Collide all of the IDs given in the indexes array - for (var i = 0; i < indexes.length; i++) - { - this.setCollisionByIndex(indexes[i], collides, layer, false); - } - - if (recalculate) - { - // Now re-calculate interesting faces - this.calculateFaces(layer); - } - } - - }, - - /** - * Sets collision on a range of tiles where the tile IDs increment sequentially. - * Calling this with a start value of 10 and a stop value of 14 would set collision for tiles 10, 11, 12, 13 and 14. - * The `collides` parameter controls if collision will be enabled (true) or disabled (false). - * - * @method Phaser.Tilemap#setCollisionBetween - * @param {number} start - The first index of the tile to be set for collision. - * @param {number} stop - The last index of the tile to be set for collision. - * @param {boolean} [collides=true] - If true it will enable collision. If false it will clear collision. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer. - * @param {boolean} [recalculate=true] - Recalculates the tile faces after the update. - */ - setCollisionBetween: function (start, stop, collides, layer, recalculate) { - - if (collides === undefined) { collides = true; } - if (recalculate === undefined) { recalculate = true; } - - layer = this.getLayer(layer); - - if (start > stop) - { - return; - } - - for (var index = start; index <= stop; index++) - { - this.setCollisionByIndex(index, collides, layer, false); - } - - if (recalculate) - { - // Now re-calculate interesting faces - this.calculateFaces(layer); - } - - }, - - /** - * Sets collision on all tiles in the given layer, except for the IDs of those in the given array. - * The `collides` parameter controls if collision will be enabled (true) or disabled (false). - * - * @method Phaser.Tilemap#setCollisionByExclusion - * @param {array} indexes - An array of the tile IDs to not be counted for collision. - * @param {boolean} [collides=true] - If true it will enable collision. If false it will clear collision. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer. - * @param {boolean} [recalculate=true] - Recalculates the tile faces after the update. - */ - setCollisionByExclusion: function (indexes, collides, layer, recalculate) { - - if (collides === undefined) { collides = true; } - if (recalculate === undefined) { recalculate = true; } - - layer = this.getLayer(layer); - - // Collide everything, except the IDs given in the indexes array - for (var i = 0, len = this.tiles.length; i < len; i++) - { - if (indexes.indexOf(i) === -1) - { - this.setCollisionByIndex(i, collides, layer, false); - } - } - - if (recalculate) - { - // Now re-calculate interesting faces - this.calculateFaces(layer); - } - - }, - - /** - * Sets collision values on a tile in the set. - * You shouldn't usually call this method directly, instead use setCollision, setCollisionBetween or setCollisionByExclusion. - * - * @method Phaser.Tilemap#setCollisionByIndex - * @protected - * @param {number} index - The index of the tile on the layer. - * @param {boolean} [collides=true] - If true it will enable collision on the tile. If false it will clear collision values from the tile. - * @param {number} [layer] - The layer to operate on. If not given will default to this.currentLayer. - * @param {boolean} [recalculate=true] - Recalculates the tile faces after the update. - */ - setCollisionByIndex: function (index, collides, layer, recalculate) { - - if (collides === undefined) { collides = true; } - if (layer === undefined) { layer = this.currentLayer; } - if (recalculate === undefined) { recalculate = true; } - - if (collides) - { - this.collideIndexes.push(index); - } - else - { - var i = this.collideIndexes.indexOf(index); - - if (i > -1) - { - this.collideIndexes.splice(i, 1); - } - } - - for (var y = 0; y < this.layers[layer].height; y++) - { - for (var x = 0; x < this.layers[layer].width; x++) - { - var tile = this.layers[layer].data[y][x]; - - if (tile && tile.index === index) - { - if (collides) - { - tile.setCollision(true, true, true, true); - } - else - { - tile.resetCollision(); - } - - tile.faceTop = collides; - tile.faceBottom = collides; - tile.faceLeft = collides; - tile.faceRight = collides; - } - } - } - - if (recalculate) - { - // Now re-calculate interesting faces - this.calculateFaces(layer); - } - - return layer; - - }, - - /** - * Gets the TilemapLayer index as used in the setCollision calls. - * - * @method Phaser.Tilemap#getLayer - * @protected - * @param {number|string|Phaser.TilemapLayer} layer - The layer to operate on. If not given will default to this.currentLayer. - * @return {number} The TilemapLayer index. - */ - getLayer: function (layer) { - - if (layer === undefined) - { - layer = this.currentLayer; - } - else if (typeof layer === 'string') - { - layer = this.getLayerIndex(layer); - } - else if (layer instanceof Phaser.TilemapLayer) - { - layer = layer.index; - } - - return layer; - - }, - - /** - * Turn off/on the recalculation of faces for tile or collision updates. - * `setPreventRecalculate(true)` puts recalculation on hold while `setPreventRecalculate(false)` recalculates all the changed layers. - * - * @method Phaser.Tilemap#setPreventRecalculate - * @param {boolean} value - If true it will put the recalculation on hold. - */ - setPreventRecalculate: function (value) { - - if (value === true && this.preventingRecalculate !== true) - { - this.preventingRecalculate = true; - this.needToRecalculate = {}; - } - - if (value === false && this.preventingRecalculate === true) - { - this.preventingRecalculate = false; - - for (var i in this.needToRecalculate) - { - this.calculateFaces(i); - } - - this.needToRecalculate = false; - } - - }, - - /** - * Internal function. - * - * @method Phaser.Tilemap#calculateFaces - * @protected - * @param {number} layer - The index of the TilemapLayer to operate on. - */ - calculateFaces: function (layer) { - - if (this.preventingRecalculate) - { - this.needToRecalculate[layer] = true; - return; - } - - var above = null; - var below = null; - var left = null; - var right = null; - - for (var y = 0, h = this.layers[layer].height; y < h; y++) - { - for (var x = 0, w = this.layers[layer].width; x < w; x++) - { - var tile = this.layers[layer].data[y][x]; - - if (tile) - { - above = this.getTileAbove(layer, x, y); - below = this.getTileBelow(layer, x, y); - left = this.getTileLeft(layer, x, y); - right = this.getTileRight(layer, x, y); - - if (tile.collides) - { - tile.faceTop = true; - tile.faceBottom = true; - tile.faceLeft = true; - tile.faceRight = true; - } - - if (above && above.collides) - { - // There is a tile above this one that also collides, so the top of this tile is no longer interesting - tile.faceTop = false; - } - - if (below && below.collides) - { - // There is a tile below this one that also collides, so the bottom of this tile is no longer interesting - tile.faceBottom = false; - } - - if (left && left.collides) - { - // There is a tile left this one that also collides, so the left of this tile is no longer interesting - tile.faceLeft = false; - } - - if (right && right.collides) - { - // There is a tile right this one that also collides, so the right of this tile is no longer interesting - tile.faceRight = false; - } - } - } - } - - }, - - /** - * Gets the tile above the tile coordinates given. - * Mostly used as an internal function by calculateFaces. - * - * @method Phaser.Tilemap#getTileAbove - * @param {number} layer - The local layer index to get the tile from. Can be determined by Tilemap.getLayer(). - * @param {number} x - The x coordinate to get the tile from. In tiles, not pixels. - * @param {number} y - The y coordinate to get the tile from. In tiles, not pixels. - */ - getTileAbove: function (layer, x, y) { - - if (y > 0) - { - return this.layers[layer].data[y - 1][x]; - } - - return null; - - }, - - /** - * Gets the tile below the tile coordinates given. - * Mostly used as an internal function by calculateFaces. - * - * @method Phaser.Tilemap#getTileBelow - * @param {number} layer - The local layer index to get the tile from. Can be determined by Tilemap.getLayer(). - * @param {number} x - The x coordinate to get the tile from. In tiles, not pixels. - * @param {number} y - The y coordinate to get the tile from. In tiles, not pixels. - */ - getTileBelow: function (layer, x, y) { - - if (y < this.layers[layer].height - 1) - { - return this.layers[layer].data[y + 1][x]; - } - - return null; - - }, - - /** - * Gets the tile to the left of the tile coordinates given. - * Mostly used as an internal function by calculateFaces. - * - * @method Phaser.Tilemap#getTileLeft - * @param {number} layer - The local layer index to get the tile from. Can be determined by Tilemap.getLayer(). - * @param {number} x - The x coordinate to get the tile from. In tiles, not pixels. - * @param {number} y - The y coordinate to get the tile from. In tiles, not pixels. - */ - getTileLeft: function (layer, x, y) { - - if (x > 0) - { - return this.layers[layer].data[y][x - 1]; - } - - return null; - - }, - - /** - * Gets the tile to the right of the tile coordinates given. - * Mostly used as an internal function by calculateFaces. - * - * @method Phaser.Tilemap#getTileRight - * @param {number} layer - The local layer index to get the tile from. Can be determined by Tilemap.getLayer(). - * @param {number} x - The x coordinate to get the tile from. In tiles, not pixels. - * @param {number} y - The y coordinate to get the tile from. In tiles, not pixels. - */ - getTileRight: function (layer, x, y) { - - if (x < this.layers[layer].width - 1) - { - return this.layers[layer].data[y][x + 1]; - } - - return null; - - }, - - /** - * Sets the current layer to the given index. - * - * @method Phaser.Tilemap#setLayer - * @param {number|string|Phaser.TilemapLayer} layer - The layer to set as current. - */ - setLayer: function (layer) { - - layer = this.getLayer(layer); - - if (this.layers[layer]) - { - this.currentLayer = layer; - } - - }, - - /** - * Checks if there is a tile at the given location. - * - * @method Phaser.Tilemap#hasTile - * @param {number} x - X position to check if a tile exists at (given in tile units, not pixels) - * @param {number} y - Y position to check if a tile exists at (given in tile units, not pixels) - * @param {number|string|Phaser.TilemapLayer} layer - The layer to set as current. - * @return {boolean} True if there is a tile at the given location, otherwise false. - */ - hasTile: function (x, y, layer) { - - layer = this.getLayer(layer); - if (this.layers[layer].data[y] === undefined || this.layers[layer].data[y][x] === undefined) { - return false; - } - return (this.layers[layer].data[y][x].index > -1); - }, - - /** - * Removes the tile located at the given coordinates and updates the collision data. - * - * @method Phaser.Tilemap#removeTile - * @param {number} x - X position to place the tile (given in tile units, not pixels) - * @param {number} y - Y position to place the tile (given in tile units, not pixels) - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to modify. - * @return {Phaser.Tile} The Tile object that was removed from this map. - */ - removeTile: function (x, y, layer) { - - layer = this.getLayer(layer); - - if (x >= 0 && x < this.layers[layer].width && y >= 0 && y < this.layers[layer].height) - { - if (this.hasTile(x, y, layer)) - { - var tile = this.layers[layer].data[y][x]; - - this.layers[layer].data[y][x] = new Phaser.Tile(this.layers[layer], -1, x, y, this.tileWidth, this.tileHeight); - - this.layers[layer].dirty = true; - - this.calculateFaces(layer); - - return tile; - } - } - - }, - - /** - * Removes the tile located at the given coordinates and updates the collision data. The coordinates are given in pixel values. - * - * @method Phaser.Tilemap#removeTileWorldXY - * @param {number} x - X position to insert the tile (given in pixels) - * @param {number} y - Y position to insert the tile (given in pixels) - * @param {number} tileWidth - The width of the tile in pixels. - * @param {number} tileHeight - The height of the tile in pixels. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to modify. - * @return {Phaser.Tile} The Tile object that was removed from this map. - */ - removeTileWorldXY: function (x, y, tileWidth, tileHeight, layer) { - - layer = this.getLayer(layer); - - x = this.game.math.snapToFloor(x, tileWidth) / tileWidth; - y = this.game.math.snapToFloor(y, tileHeight) / tileHeight; - - return this.removeTile(x, y, layer); - - }, - - /** - * Puts a tile of the given index value at the coordinate specified. - * If you pass `null` as the tile it will pass your call over to Tilemap.removeTile instead. - * - * @method Phaser.Tilemap#putTile - * @param {Phaser.Tile|number|null} tile - The index of this tile to set or a Phaser.Tile object. If null the tile is removed from the map. - * @param {number} x - X position to place the tile (given in tile units, not pixels) - * @param {number} y - Y position to place the tile (given in tile units, not pixels) - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to modify. - * @return {Phaser.Tile} The Tile object that was created or added to this map. - */ - putTile: function (tile, x, y, layer) { - - if (tile === null) - { - return this.removeTile(x, y, layer); - } - - layer = this.getLayer(layer); - - if (x >= 0 && x < this.layers[layer].width && y >= 0 && y < this.layers[layer].height) - { - var index; - - if (tile instanceof Phaser.Tile) - { - index = tile.index; - - if (this.hasTile(x, y, layer)) - { - this.layers[layer].data[y][x].copy(tile); - } - else - { - this.layers[layer].data[y][x] = new Phaser.Tile(layer, index, x, y, tile.width, tile.height); - } - } - else - { - index = tile; - - if (this.hasTile(x, y, layer)) - { - this.layers[layer].data[y][x].index = index; - } - else - { - this.layers[layer].data[y][x] = new Phaser.Tile(this.layers[layer], index, x, y, this.tileWidth, this.tileHeight); - } - } - - if (this.collideIndexes.indexOf(index) > -1) - { - this.layers[layer].data[y][x].setCollision(true, true, true, true); - } - else - { - this.layers[layer].data[y][x].resetCollision(); - } - - this.layers[layer].dirty = true; - - this.calculateFaces(layer); - - return this.layers[layer].data[y][x]; - } - - return null; - - }, - - /** - * Puts a tile into the Tilemap layer. The coordinates are given in pixel values. - * - * @method Phaser.Tilemap#putTileWorldXY - * @param {Phaser.Tile|number} tile - The index of this tile to set or a Phaser.Tile object. - * @param {number} x - X position to insert the tile (given in pixels) - * @param {number} y - Y position to insert the tile (given in pixels) - * @param {number} tileWidth - The width of the tile in pixels. - * @param {number} tileHeight - The height of the tile in pixels. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to modify. - * @return {Phaser.Tile} The Tile object that was created or added to this map. - */ - putTileWorldXY: function (tile, x, y, tileWidth, tileHeight, layer) { - - layer = this.getLayer(layer); - - x = this.game.math.snapToFloor(x, tileWidth) / tileWidth; - y = this.game.math.snapToFloor(y, tileHeight) / tileHeight; - - return this.putTile(tile, x, y, layer); - - }, - - /** - * Searches the entire map layer for the first tile matching the given index, then returns that Phaser.Tile object. - * If no match is found it returns null. - * The search starts from the top-left tile and continues horizontally until it hits the end of the row, then it drops down to the next column. - * If the reverse boolean is true, it scans starting from the bottom-right corner traveling up to the top-left. - * - * @method Phaser.Tilemap#searchTileIndex - * @param {number} index - The tile index value to search for. - * @param {number} [skip=0] - The number of times to skip a matching tile before returning. - * @param {number} [reverse=false] - If true it will scan the layer in reverse, starting at the bottom-right. Otherwise it scans from the top-left. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to get the tile from. - * @return {Phaser.Tile} The first (or n skipped) tile with the matching index. - */ - searchTileIndex: function (index, skip, reverse, layer) { - - if (skip === undefined) { skip = 0; } - if (reverse === undefined) { reverse = false; } - - layer = this.getLayer(layer); - - var c = 0; - - if (reverse) - { - for (var y = this.layers[layer].height - 1; y >= 0; y--) - { - for (var x = this.layers[layer].width - 1; x >= 0; x--) - { - if (this.layers[layer].data[y][x].index === index) - { - if (c === skip) - { - return this.layers[layer].data[y][x]; - } - else - { - c++; - } - } - } - } - } - else - { - for (var y = 0; y < this.layers[layer].height; y++) - { - for (var x = 0; x < this.layers[layer].width; x++) - { - if (this.layers[layer].data[y][x].index === index) - { - if (c === skip) - { - return this.layers[layer].data[y][x]; - } - else - { - c++; - } - } - } - } - } - - return null; - - }, - - /** - * Gets a tile from the Tilemap Layer. The coordinates are given in tile values. - * - * @method Phaser.Tilemap#getTile - * @param {number} x - X position to get the tile from (given in tile units, not pixels) - * @param {number} y - Y position to get the tile from (given in tile units, not pixels) - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to get the tile from. - * @param {boolean} [nonNull=false] - If true getTile won't return null for empty tiles, but a Tile object with an index of -1. - * @return {Phaser.Tile} The tile at the given coordinates or null if no tile was found or the coordinates were invalid. - */ - getTile: function (x, y, layer, nonNull) { - - if (nonNull === undefined) { nonNull = false; } - - layer = this.getLayer(layer); - - if (x >= 0 && x < this.layers[layer].width && y >= 0 && y < this.layers[layer].height) - { - if (this.layers[layer].data[y][x].index === -1) - { - if (nonNull) - { - return this.layers[layer].data[y][x]; - } - else - { - return null; - } - } - else - { - return this.layers[layer].data[y][x]; - } - } - else - { - return null; - } - - }, - - /** - * Gets a tile from the Tilemap layer. The coordinates are given in pixel values. - * - * @method Phaser.Tilemap#getTileWorldXY - * @param {number} x - X position to get the tile from (given in pixels) - * @param {number} y - Y position to get the tile from (given in pixels) - * @param {number} [tileWidth] - The width of the tiles. If not given the map default is used. - * @param {number} [tileHeight] - The height of the tiles. If not given the map default is used. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to get the tile from. - * @param {boolean} [nonNull=false] - If true getTile won't return null for empty tiles, but a Tile object with an index of -1. - * @return {Phaser.Tile} The tile at the given coordinates. - */ - getTileWorldXY: function (x, y, tileWidth, tileHeight, layer, nonNull) { - - if (tileWidth === undefined) { tileWidth = this.tileWidth; } - if (tileHeight === undefined) { tileHeight = this.tileHeight; } - - layer = this.getLayer(layer); - - x = this.game.math.snapToFloor(x, tileWidth) / tileWidth; - y = this.game.math.snapToFloor(y, tileHeight) / tileHeight; - - return this.getTile(x, y, layer, nonNull); - - }, - - /** - * Copies all of the tiles in the given rectangular block into the tilemap data buffer. - * - * @method Phaser.Tilemap#copy - * @param {integer} x - X position of the top left of the area to copy (given in tiles, not pixels) - * @param {integer} y - Y position of the top left of the area to copy (given in tiles, not pixels) - * @param {integer} width - The width of the area to copy (given in tiles, not pixels) - * @param {integer} height - The height of the area to copy (given in tiles, not pixels) - * @param {integer|string|Phaser.TilemapLayer} [layer] - The layer to copy the tiles from. - * @return {array} An array of the tiles that were copied. - */ - copy: function (x, y, width, height, layer) { - - layer = this.getLayer(layer); - - if (!this.layers[layer]) - { - this._results.length = 0; - return; - } - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - if (width === undefined) { width = this.layers[layer].width; } - if (height === undefined) { height = this.layers[layer].height; } - - if (x < 0) - { - x = 0; - } - - if (y < 0) - { - y = 0; - } - - if (width > this.layers[layer].width) - { - width = this.layers[layer].width; - } - - if (height > this.layers[layer].height) - { - height = this.layers[layer].height; - } - - this._results.length = 0; - - this._results.push({ x: x, y: y, width: width, height: height, layer: layer }); - - for (var ty = y; ty < y + height; ty++) - { - for (var tx = x; tx < x + width; tx++) - { - this._results.push(this.layers[layer].data[ty][tx]); - } - } - - return this._results; - - }, - - /** - * Pastes a previously copied block of tile data into the given x/y coordinates. Data should have been prepared with Tilemap.copy. - * - * @method Phaser.Tilemap#paste - * @param {number} x - X position of the top left of the area to paste to (given in tiles, not pixels) - * @param {number} y - Y position of the top left of the area to paste to (given in tiles, not pixels) - * @param {array} tileblock - The block of tiles to paste. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to paste the tiles into. - */ - paste: function (x, y, tileblock, layer) { - - if (x === undefined) { x = 0; } - if (y === undefined) { y = 0; } - - layer = this.getLayer(layer); - - if (!tileblock || tileblock.length < 2) - { - return; - } - - // Find out the difference between tileblock[1].x/y and x/y and use it as an offset, as it's the top left of the block to paste - var diffX = x - tileblock[1].x; - var diffY = y - tileblock[1].y; - - for (var i = 1; i < tileblock.length; i++) - { - this.layers[layer].data[ diffY + tileblock[i].y ][ diffX + tileblock[i].x ].copy(tileblock[i]); - } - - this.layers[layer].dirty = true; - this.calculateFaces(layer); - - }, - - /** - * Scans the given area for tiles with an index matching tileA and swaps them with tileB. - * - * @method Phaser.Tilemap#swap - * @param {number} tileA - First tile index. - * @param {number} tileB - Second tile index. - * @param {number} x - X position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} y - Y position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} width - The width in tiles of the area to operate on. - * @param {number} height - The height in tiles of the area to operate on. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. - */ - swap: function (tileA, tileB, x, y, width, height, layer) { - - layer = this.getLayer(layer); - - this.copy(x, y, width, height, layer); - - if (this._results.length < 2) - { - return; - } - - this._tempA = tileA; - this._tempB = tileB; - - this._results.forEach(this.swapHandler, this); - - this.paste(x, y, this._results, layer); - - }, - - /** - * Internal function that handles the swapping of tiles. - * - * @method Phaser.Tilemap#swapHandler - * @private - * @param {number} value - */ - swapHandler: function (value) { - - if (value.index === this._tempA) - { - // Swap A with B - value.index = this._tempB; - } - else if (value.index === this._tempB) - { - // Swap B with A - value.index = this._tempA; - } - - }, - - /** - * For each tile in the given area defined by x/y and width/height run the given callback. - * - * @method Phaser.Tilemap#forEach - * @param {number} callback - The callback. Each tile in the given area will be passed to this callback as the first and only parameter. - * @param {number} context - The context under which the callback should be run. - * @param {number} x - X position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} y - Y position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} width - The width in tiles of the area to operate on. - * @param {number} height - The height in tiles of the area to operate on. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. - */ - forEach: function (callback, context, x, y, width, height, layer) { - - layer = this.getLayer(layer); - - this.copy(x, y, width, height, layer); - - if (this._results.length < 2) - { - return; - } - - this._results.forEach(callback, context); - - this.paste(x, y, this._results, layer); - - }, - - /** - * Scans the given area for tiles with an index matching `source` and updates their index to match `dest`. - * - * @method Phaser.Tilemap#replace - * @param {number} source - The tile index value to scan for. - * @param {number} dest - The tile index value to replace found tiles with. - * @param {number} x - X position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} y - Y position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} width - The width in tiles of the area to operate on. - * @param {number} height - The height in tiles of the area to operate on. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. - */ - replace: function (source, dest, x, y, width, height, layer) { - - layer = this.getLayer(layer); - - this.copy(x, y, width, height, layer); - - if (this._results.length < 2) - { - return; - } - - for (var i = 1; i < this._results.length; i++) - { - if (this._results[i].index === source) - { - this._results[i].index = dest; - } - } - - this.paste(x, y, this._results, layer); - - }, - - /** - * Randomises a set of tiles in a given area. - * - * @method Phaser.Tilemap#random - * @param {number} x - X position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} y - Y position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} width - The width in tiles of the area to operate on. - * @param {number} height - The height in tiles of the area to operate on. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. - */ - random: function (x, y, width, height, layer) { - - layer = this.getLayer(layer); - - this.copy(x, y, width, height, layer); - - if (this._results.length < 2) - { - return; - } - - var indexes = []; - - for (var t = 1; t < this._results.length; t++) - { - if (this._results[t].index) - { - var idx = this._results[t].index; - - if (indexes.indexOf(idx) === -1) - { - indexes.push(idx); - } - } - } - - for (var i = 1; i < this._results.length; i++) - { - this._results[i].index = this.game.rnd.pick(indexes); - } - - this.paste(x, y, this._results, layer); - - }, - - /** - * Shuffles a set of tiles in a given area. It will only randomise the tiles in that area, so if they're all the same nothing will appear to have changed! - * - * @method Phaser.Tilemap#shuffle - * @param {number} x - X position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} y - Y position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} width - The width in tiles of the area to operate on. - * @param {number} height - The height in tiles of the area to operate on. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. - */ - shuffle: function (x, y, width, height, layer) { - - layer = this.getLayer(layer); - - this.copy(x, y, width, height, layer); - - if (this._results.length < 2) - { - return; - } - - var indexes = []; - - for (var t = 1; t < this._results.length; t++) - { - if (this._results[t].index) - { - indexes.push(this._results[t].index); - } - } - - Phaser.ArrayUtils.shuffle(indexes); - - for (var i = 1; i < this._results.length; i++) - { - this._results[i].index = indexes[i - 1]; - } - - this.paste(x, y, this._results, layer); - - }, - - /** - * Fills the given area with the specified tile. - * - * @method Phaser.Tilemap#fill - * @param {number} index - The index of the tile that the area will be filled with. - * @param {number} x - X position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} y - Y position of the top left of the area to operate one, given in tiles, not pixels. - * @param {number} width - The width in tiles of the area to operate on. - * @param {number} height - The height in tiles of the area to operate on. - * @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. - */ - fill: function (index, x, y, width, height, layer) { - - layer = this.getLayer(layer); - - this.copy(x, y, width, height, layer); - - if (this._results.length < 2) - { - return; - } - - for (var i = 1; i < this._results.length; i++) - { - this._results[i].index = index; - } - - this.paste(x, y, this._results, layer); - - }, - - /** - * Removes all layers from this tile map. - * - * @method Phaser.Tilemap#removeAllLayers - */ - removeAllLayers: function () { - - this.layers.length = 0; - this.currentLayer = 0; - - }, - - /** - * Dumps the tilemap data out to the console. - * - * @method Phaser.Tilemap#dump - */ - dump: function () { - - var txt = ''; - var args = ['']; - - for (var y = 0; y < this.layers[this.currentLayer].height; y++) - { - for (var x = 0; x < this.layers[this.currentLayer].width; x++) - { - txt += "%c "; - - if (this.layers[this.currentLayer].data[y][x] > 1) - { - if (this.debugMap[this.layers[this.currentLayer].data[y][x]]) - { - args.push("background: " + this.debugMap[this.layers[this.currentLayer].data[y][x]]); - } - else - { - args.push("background: #ffffff"); - } - } - else - { - args.push("background: rgb(0, 0, 0)"); - } - } - - txt += "\n"; - } - - args[0] = txt; - console.log.apply(console, args); - - }, - - /** - * Removes all layer data from this tile map and nulls the game reference. - * Note: You are responsible for destroying any TilemapLayer objects you generated yourself, as Tilemap doesn't keep a reference to them. - * - * @method Phaser.Tilemap#destroy - */ - destroy: function () { - - this.removeAllLayers(); - this.data = []; - this.game = null; - - } - -}; - -Phaser.Tilemap.prototype.constructor = Phaser.Tilemap; - -/** -* @name Phaser.Tilemap#layer -* @property {number|string|Phaser.TilemapLayer} layer - The current layer object. -*/ -Object.defineProperty(Phaser.Tilemap.prototype, "layer", { - - get: function () { - - return this.layers[this.currentLayer]; - - }, - - set: function (value) { - - if (value !== this.currentLayer) - { - this.setLayer(value); - } - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A TilemapLayer is a Phaser.Image/Sprite that renders a specific TileLayer of a Tilemap. -* -* Since a TilemapLayer is a Sprite it can be moved around the display, added to other groups or display objects, etc. -* -* By default TilemapLayers have fixedToCamera set to `true`. Changing this will break Camera follow and scrolling behavior. -* -* @class Phaser.TilemapLayer -* @extends Phaser.Sprite -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. -* @param {Phaser.Tilemap} tilemap - The tilemap to which this layer belongs. -* @param {integer} index - The index of the TileLayer to render within the Tilemap. -* @param {integer} width - Width of the renderable area of the layer (in pixels). -* @param {integer} height - Height of the renderable area of the layer (in pixels). -*/ -Phaser.TilemapLayer = function (game, tilemap, index, width, height) { - - width |= 0; - height |= 0; - - Phaser.Sprite.call(this, game, 0, 0); - - /** - * The Tilemap to which this layer is bound. - * @property {Phaser.Tilemap} map - * @protected - * @readonly - */ - this.map = tilemap; - - /** - * The index of this layer within the Tilemap. - * @property {number} index - * @protected - * @readonly - */ - this.index = index; - - /** - * The layer object within the Tilemap that this layer represents. - * @property {object} layer - * @protected - * @readonly - */ - this.layer = tilemap.layers[index]; - - /** - * The canvas to which this TilemapLayer draws. - * @property {HTMLCanvasElement} canvas - * @protected - */ - this.canvas = PIXI.CanvasPool.create(this, width, height); - - /** - * The 2d context of the canvas. - * @property {CanvasRenderingContext2D} context - * @private - */ - this.context = this.canvas.getContext('2d'); - - this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))); - - /** - * The const type of this object. - * @property {number} type - * @readonly - * @protected - * @default Phaser.TILEMAPLAYER - */ - this.type = Phaser.TILEMAPLAYER; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.TILEMAPLAYER; - - /** - * Settings that control standard (non-diagnostic) rendering. - * - * @property {boolean} [enableScrollDelta=true] - Delta scroll rendering only draws tiles/edges as they come into view. - * This can greatly improve scrolling rendering performance, especially when there are many small tiles. - * It should only be disabled in rare cases. - * - * @property {?DOMCanvasElement} [copyCanvas=(auto)] - [Internal] If set, force using a separate (shared) copy canvas. - * Using a canvas bitblt/copy when the source and destinations region overlap produces unexpected behavior - * in some browsers, notably Safari. - * - * @default - */ - this.renderSettings = { - enableScrollDelta: false, - overdrawRatio: 0.20, - copyCanvas: null - }; - - /** - * Enable an additional "debug rendering" pass to display collision information. - * - * @property {boolean} debug - * @default - */ - this.debug = false; - - /** - * @property {boolean} exists - Controls if the core game loop and physics update this game object or not. - */ - this.exists = true; - - /** - * Settings used for debugging and diagnostics. - * - * @property {?string} missingImageFill - A tile is rendered as a rectangle using the following fill if a valid tileset/image cannot be found. A value of `null` prevents additional rendering for tiles without a valid tileset image. _This takes effect even when debug rendering for the layer is not enabled._ - * - * @property {?string} debuggedTileOverfill - If a Tile has `Tile#debug` true then, after normal tile image rendering, a rectangle with the following fill is drawn above/over it. _This takes effect even when debug rendering for the layer is not enabled._ - * - * @property {boolean} forceFullRedraw - When debug rendering (`debug` is true), and this option is enabled, the a full redraw is forced and rendering optimization is suppressed. - * - * @property {number} debugAlpha - When debug rendering (`debug` is true), the tileset is initially rendered with this alpha level. This can make the tile edges clearer. - * - * @property {?string} facingEdgeStroke - When debug rendering (`debug` is true), this color/stroke is used to draw "face" edges. A value of `null` disables coloring facing edges. - * - * @property {?string} collidingTileOverfill - When debug rendering (`debug` is true), this fill is used for tiles that are collidable. A value of `null` disables applying the additional overfill. - * - */ - this.debugSettings = { - - missingImageFill: 'rgb(255,255,255)', - debuggedTileOverfill: 'rgba(0,255,0,0.4)', - - forceFullRedraw: true, - - debugAlpha: 0.5, - facingEdgeStroke: 'rgba(0,255,0,1)', - collidingTileOverfill: 'rgba(0,255,0,0.2)' - - }; - - /** - * Speed at which this layer scrolls horizontally, relative to the camera (e.g. scrollFactorX of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do). - * @property {number} scrollFactorX - * @public - * @default - */ - this.scrollFactorX = 1; - - /** - * Speed at which this layer scrolls vertically, relative to the camera (e.g. scrollFactorY of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do) - * @property {number} scrollFactorY - * @public - * @default - */ - this.scrollFactorY = 1; - - /** - * If true tiles will be force rendered, even if such is not believed to be required. - * @property {boolean} dirty - * @protected - */ - this.dirty = true; - - /** - * When ray-casting against tiles this is the number of steps it will jump. For larger tile sizes you can increase this to improve performance. - * @property {integer} rayStepRate - * @default - */ - this.rayStepRate = 4; - - /** - * Flag controlling if the layer tiles wrap at the edges. - * @property {boolean} _wrap - * @private - */ - this._wrap = false; - - /** - * Local map data and calculation cache. - * @property {object} _mc - * @private - */ - this._mc = { - - // Used to bypass rendering without reliance on `dirty` and detect changes. - scrollX: 0, - scrollY: 0, - renderWidth: 0, - renderHeight: 0, - - tileWidth: tilemap.tileWidth, - tileHeight: tilemap.tileHeight, - - // Collision width/height (pixels) - // What purpose do these have? Most things use tile width/height directly. - // This also only extends collisions right and down. - cw: tilemap.tileWidth, - ch: tilemap.tileHeight, - - // Cached tilesets from index -> Tileset - tilesets: [] - - }; - - /** - * The current canvas left after scroll is applied. - * @property {number} _scrollX - * @private - */ - this._scrollX = 0; - - /** - * The current canvas top after scroll is applied. - * @propety {number} _scrollY - * @private - */ - this._scrollY = 0; - - /** - * Used for caching the tiles / array of tiles. - * @property {Phaser.Tile[]} _results - * @private - */ - this._results = []; - - if (!game.device.canvasBitBltShift) - { - this.renderSettings.copyCanvas = Phaser.TilemapLayer.ensureSharedCopyCanvas(); - } - - this.fixedToCamera = true; - -}; - -Phaser.TilemapLayer.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.TilemapLayer.prototype.constructor = Phaser.TilemapLayer; - -Phaser.TilemapLayer.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* The shared double-copy canvas, created as needed. -* -* @private -* @static -*/ -Phaser.TilemapLayer.sharedCopyCanvas = null; - -/** -* Create if needed (and return) a shared copy canvas that is shared across all TilemapLayers. -* -* Code that uses the canvas is responsible to ensure the dimensions and save/restore state as appropriate. -* -* @method Phaser.TilemapLayer#ensureSharedCopyCanvas -* @protected -* @static -*/ -Phaser.TilemapLayer.ensureSharedCopyCanvas = function () { - - if (!this.sharedCopyCanvas) - { - this.sharedCopyCanvas = Phaser.Canvas.create(2, 2); - } - - return this.sharedCopyCanvas; - -}; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.TilemapLayer#preUpdate -*/ -Phaser.TilemapLayer.prototype.preUpdate = function() { - - return this.preUpdateCore(); - -}; - -/** -* Automatically called by World.postUpdate. Handles cache updates. -* -* @method Phaser.TilemapLayer#postUpdate -* @protected -*/ -Phaser.TilemapLayer.prototype.postUpdate = function () { - - if (this.fixedToCamera) - { - this.position.x = (this.game.camera.view.x + this.cameraOffset.x) / this.game.camera.scale.x; - this.position.y = (this.game.camera.view.y + this.cameraOffset.y) / this.game.camera.scale.y; - } - - this._scrollX = this.game.camera.view.x * this.scrollFactorX / this.scale.x; - this._scrollY = this.game.camera.view.y * this.scrollFactorY / this.scale.y; - -}; - -/** -* Automatically called by the Canvas Renderer. -* Overrides the Sprite._renderCanvas function. -* -* @method Phaser.TilemapLayer#_renderCanvas -* @private -*/ -Phaser.TilemapLayer.prototype._renderCanvas = function (renderSession) { - - if (this.fixedToCamera) - { - this.position.x = (this.game.camera.view.x + this.cameraOffset.x) / this.game.camera.scale.x; - this.position.y = (this.game.camera.view.y + this.cameraOffset.y) / this.game.camera.scale.y; - } - - this._scrollX = this.game.camera.view.x * this.scrollFactorX / this.scale.x; - this._scrollY = this.game.camera.view.y * this.scrollFactorY / this.scale.y; - - this.render(); - - PIXI.Sprite.prototype._renderCanvas.call(this, renderSession); - -}; - -/** -* Automatically called by the Canvas Renderer. -* Overrides the Sprite._renderWebGL function. -* -* @method Phaser.TilemapLayer#_renderWebGL -* @private -*/ -Phaser.TilemapLayer.prototype._renderWebGL = function (renderSession) { - - if (this.fixedToCamera) - { - this.position.x = (this.game.camera.view.x + this.cameraOffset.x) / this.game.camera.scale.x; - this.position.y = (this.game.camera.view.y + this.cameraOffset.y) / this.game.camera.scale.y; - } - - this._scrollX = this.game.camera.view.x * this.scrollFactorX / this.scale.x; - this._scrollY = this.game.camera.view.y * this.scrollFactorY / this.scale.y; - - this.render(); - - PIXI.Sprite.prototype._renderWebGL.call(this, renderSession); - -}; - -/** -* Destroys this TilemapLayer. -* -* @method Phaser.TilemapLayer#destroy -*/ -Phaser.TilemapLayer.prototype.destroy = function() { - - PIXI.CanvasPool.remove(this); - - Phaser.Component.Destroy.prototype.destroy.call(this); - -}; - -/** -* Resizes the internal canvas and texture frame used by this TilemapLayer. -* -* This is an expensive call, so don't bind it to a window resize event! But instead call it at carefully -* selected times. -* -* Be aware that no validation of the new sizes takes place and the current map scroll coordinates are not -* modified either. You will have to handle both of these things from your game code if required. -* -* @method Phaser.TilemapLayer#resize -* @param {number} width - The new width of the TilemapLayer -* @param {number} height - The new height of the TilemapLayer -*/ -Phaser.TilemapLayer.prototype.resize = function (width, height) { - - this.canvas.width = width; - this.canvas.height = height; - - this.texture.frame.resize(width, height); - - this.texture.width = width; - this.texture.height = height; - - this.texture.crop.width = width; - this.texture.crop.height = height; - - this.texture.baseTexture.width = width; - this.texture.baseTexture.height = height; - - this.texture.baseTexture.dirty(); - this.texture.requiresUpdate = true; - - this.texture._updateUvs(); - - this.dirty = true; - -}; - -/** -* Sets the world size to match the size of this layer. -* -* @method Phaser.TilemapLayer#resizeWorld -* @public -*/ -Phaser.TilemapLayer.prototype.resizeWorld = function () { - - this.game.world.setBounds(0, 0, this.layer.widthInPixels * this.scale.x, this.layer.heightInPixels * this.scale.y); - -}; - -/** -* Take an x coordinate that doesn't account for scrollFactorX and 'fix' it into a scrolled local space. -* -* @method Phaser.TilemapLayer#_fixX -* @private -* @param {number} x - x coordinate in camera space -* @return {number} x coordinate in scrollFactor-adjusted dimensions -*/ -Phaser.TilemapLayer.prototype._fixX = function (x) { - - if (this.scrollFactorX === 1 || (this.scrollFactorX === 0 && this.position.x === 0)) - { - return x; - } - - // This executes if the scrollFactorX is 0 and the x position of the tilemap is off from standard. - if (this.scrollFactorX === 0 && this.position.x !== 0) - { - return x - this.position.x; - } - - return this._scrollX + (x - (this._scrollX / this.scrollFactorX)); - -}; - -/** -* Take an x coordinate that _does_ account for scrollFactorX and 'unfix' it back to camera space. -* -* @method Phaser.TilemapLayer#_unfixX -* @private -* @param {number} x - x coordinate in scrollFactor-adjusted dimensions -* @return {number} x coordinate in camera space -*/ -Phaser.TilemapLayer.prototype._unfixX = function (x) { - - if (this.scrollFactorX === 1) - { - return x; - } - - return (this._scrollX / this.scrollFactorX) + (x - this._scrollX); - -}; - -/** -* Take a y coordinate that doesn't account for scrollFactorY and 'fix' it into a scrolled local space. -* -* @method Phaser.TilemapLayer#_fixY -* @private -* @param {number} y - y coordinate in camera space -* @return {number} y coordinate in scrollFactor-adjusted dimensions -*/ -Phaser.TilemapLayer.prototype._fixY = function (y) { - - if (this.scrollFactorY === 1 || (this.scrollFactorY === 0 && this.position.y === 0)) - { - return y; - } - - // This executes if the scrollFactorY is 0 and the y position of the tilemap is off from standard. - if (this.scrollFactorY === 0 && this.position.y !== 0) - { - return y - this.position.y; - } - - return this._scrollY + (y - (this._scrollY / this.scrollFactorY)); - -}; - -/** -* Take a y coordinate that _does_ account for scrollFactorY and 'unfix' it back to camera space. -* -* @method Phaser.TilemapLayer#_unfixY -* @private -* @param {number} y - y coordinate in scrollFactor-adjusted dimensions -* @return {number} y coordinate in camera space -*/ -Phaser.TilemapLayer.prototype._unfixY = function (y) { - - if (this.scrollFactorY === 1) - { - return y; - } - - return (this._scrollY / this.scrollFactorY) + (y - this._scrollY); - -}; - -/** -* Convert a pixel value to a tile coordinate. -* -* @method Phaser.TilemapLayer#getTileX -* @public -* @param {number} x - X position of the point in target tile (in pixels). -* @return {integer} The X map location of the tile. -*/ -Phaser.TilemapLayer.prototype.getTileX = function (x) { - - // var tileWidth = this.tileWidth * this.scale.x; - return Math.floor(this._fixX(x) / this._mc.tileWidth); - -}; - -/** -* Convert a pixel value to a tile coordinate. -* -* @method Phaser.TilemapLayer#getTileY -* @public -* @param {number} y - Y position of the point in target tile (in pixels). -* @return {integer} The Y map location of the tile. -*/ -Phaser.TilemapLayer.prototype.getTileY = function (y) { - - // var tileHeight = this.tileHeight * this.scale.y; - return Math.floor(this._fixY(y) / this._mc.tileHeight); - -}; - -/** -* Convert a pixel coordinate to a tile coordinate. -* -* @method Phaser.TilemapLayer#getTileXY -* @public -* @param {number} x - X position of the point in target tile (in pixels). -* @param {number} y - Y position of the point in target tile (in pixels). -* @param {(Phaser.Point|object)} point - The Point/object to update. -* @return {(Phaser.Point|object)} A Point/object with its `x` and `y` properties set. -*/ -Phaser.TilemapLayer.prototype.getTileXY = function (x, y, point) { - - point.x = this.getTileX(x); - point.y = this.getTileY(y); - - return point; - -}; - -/** -* Gets all tiles that intersect with the given line. -* -* @method Phaser.TilemapLayer#getRayCastTiles -* @public -* @param {Phaser.Line} line - The line used to determine which tiles to return. -* @param {integer} [stepRate=(rayStepRate)] - How many steps through the ray will we check? Defaults to `rayStepRate`. -* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. -* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. -* @return {Phaser.Tile[]} An array of Phaser.Tiles. -*/ -Phaser.TilemapLayer.prototype.getRayCastTiles = function (line, stepRate, collides, interestingFace) { - - if (!stepRate) { stepRate = this.rayStepRate; } - if (collides === undefined) { collides = false; } - if (interestingFace === undefined) { interestingFace = false; } - - // First get all tiles that touch the bounds of the line - var tiles = this.getTiles(line.x, line.y, line.width, line.height, collides, interestingFace); - - if (tiles.length === 0) - { - return []; - } - - // Now we only want the tiles that intersect with the points on this line - var coords = line.coordinatesOnLine(stepRate); - var results = []; - - for (var i = 0; i < tiles.length; i++) - { - for (var t = 0; t < coords.length; t++) - { - var tile = tiles[i]; - var coord = coords[t]; - if (tile.containsPoint(coord[0], coord[1])) - { - results.push(tile); - break; - } - } - } - - return results; - -}; - -/** -* Get all tiles that exist within the given area, defined by the top-left corner, width and height. Values given are in pixels, not tiles. -* -* @method Phaser.TilemapLayer#getTiles -* @public -* @param {number} x - X position of the top left corner (in pixels). -* @param {number} y - Y position of the top left corner (in pixels). -* @param {number} width - Width of the area to get (in pixels). -* @param {number} height - Height of the area to get (in pixels). -* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. -* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. -* @return {array} An array of Tiles. -*/ -Phaser.TilemapLayer.prototype.getTiles = function (x, y, width, height, collides, interestingFace) { - - // Should we only get tiles that have at least one of their collision flags set? (true = yes, false = no just get them all) - if (collides === undefined) { collides = false; } - if (interestingFace === undefined) { interestingFace = false; } - - var fetchAll = !(collides || interestingFace); - - // Adjust the x,y coordinates for scrollFactor - x = this._fixX(x); - y = this._fixY(y); - - // Convert the pixel values into tile coordinates - var tx = Math.floor(x / (this._mc.cw * this.scale.x)); - var ty = Math.floor(y / (this._mc.ch * this.scale.y)); - // Don't just use ceil(width/cw) to allow account for x/y diff within cell - var tw = Math.ceil((x + width) / (this._mc.cw * this.scale.x)) - tx; - var th = Math.ceil((y + height) / (this._mc.ch * this.scale.y)) - ty; - - while (this._results.length) - { - this._results.pop(); - } - - for (var wy = ty; wy < ty + th; wy++) - { - for (var wx = tx; wx < tx + tw; wx++) - { - var row = this.layer.data[wy]; - - if (row && row[wx]) - { - if (fetchAll || row[wx].isInteresting(collides, interestingFace)) - { - this._results.push(row[wx]); - } - } - } - } - - return this._results.slice(); - -}; - -/** -* Returns the appropriate tileset for the index, updating the internal cache as required. -* This should only be called if `tilesets[index]` evaluates to undefined. -* -* @method Phaser.TilemapLayer#resolveTileset -* @private -* @param {integer} Tile index -* @return {Phaser.Tileset|null} Returns the associated tileset or null if there is no such mapping. -*/ -Phaser.TilemapLayer.prototype.resolveTileset = function (tileIndex) { - - var tilesets = this._mc.tilesets; - - // Try for dense array if reasonable - if (tileIndex < 2000) - { - while (tilesets.length < tileIndex) - { - tilesets.push(undefined); - } - } - - var setIndex = this.map.tiles[tileIndex] && this.map.tiles[tileIndex][2]; - - if (setIndex != null) // number: not null or undefined - { - var tileset = this.map.tilesets[setIndex]; - - if (tileset && tileset.containsTileIndex(tileIndex)) - { - return (tilesets[tileIndex] = tileset); - } - } - - return (tilesets[tileIndex] = null); - -}; - -/** -* The TilemapLayer caches tileset look-ups. -* -* Call this method of clear the cache if tilesets have been added or updated after the layer has been rendered. -* -* @method Phaser.TilemapLayer#resetTilesetCache -* @public -*/ -Phaser.TilemapLayer.prototype.resetTilesetCache = function () { - - var tilesets = this._mc.tilesets; - - while (tilesets.length) - { - tilesets.pop(); - } - -}; - -/** - * This method will set the scale of the tilemap as well as update the underlying block data of this layer. - * - * @method Phaser.TilemapLayer#setScale - * @param {number} [xScale=1] - The scale factor along the X-plane - * @param {number} [yScale] - The scale factor along the Y-plane - */ -Phaser.TilemapLayer.prototype.setScale = function (xScale, yScale) { - - xScale = xScale || 1; - yScale = yScale || xScale; - - for (var y = 0; y < this.layer.data.length; y++) - { - var row = this.layer.data[y]; - - for (var x = 0; x < row.length; x++) - { - var tile = row[x]; - - tile.width = this.map.tileWidth * xScale; - tile.height = this.map.tileHeight * yScale; - - tile.worldX = tile.x * tile.width; - tile.worldY = tile.y * tile.height; - } - } - - this.scale.setTo(xScale, yScale); - -}; - -/** -* Shifts the contents of the canvas - does extra math so that different browsers agree on the result. -* -* The specified (x/y) will be shifted to (0,0) after the copy and the newly exposed canvas area will need to be filled in. -* -* @method Phaser.TilemapLayer#shiftCanvas -* @private -* @param {CanvasRenderingContext2D} context - The context to shift -* @param {integer} x -* @param {integer} y -*/ -Phaser.TilemapLayer.prototype.shiftCanvas = function (context, x, y) { - - var canvas = context.canvas; - var copyW = canvas.width - Math.abs(x); - var copyH = canvas.height - Math.abs(y); - - // When x/y non-negative - var dx = 0; - var dy = 0; - var sx = x; - var sy = y; - - if (x < 0) - { - dx = -x; - sx = 0; - } - - if (y < 0) - { - dy = -y; - sy = 0; - } - - var copyCanvas = this.renderSettings.copyCanvas; - - if (copyCanvas) - { - // Use a second copy buffer, without slice support, for Safari .. again. - // Ensure copy canvas is large enough - if (copyCanvas.width < copyW || copyCanvas.height < copyH) - { - copyCanvas.width = copyW; - copyCanvas.height = copyH; - } - - var copyContext = copyCanvas.getContext('2d'); - copyContext.clearRect(0, 0, copyW, copyH); - copyContext.drawImage(canvas, dx, dy, copyW, copyH, 0, 0, copyW, copyH); - // clear allows default 'source-over' semantics - context.clearRect(sx, sy, copyW, copyH); - context.drawImage(copyCanvas, 0, 0, copyW, copyH, sx, sy, copyW, copyH); - } - else - { - // Avoids a second copy but flickers in Safari / Safari Mobile - // Ref. https://github.com/photonstorm/phaser/issues/1439 - context.save(); - context.globalCompositeOperation = 'copy'; - context.drawImage(canvas, dx, dy, copyW, copyH, sx, sy, copyW, copyH); - context.restore(); - } - -}; - -/** -* Render tiles in the given area given by the virtual tile coordinates biased by the given scroll factor. -* This will constrain the tile coordinates based on wrapping but not physical coordinates. -* -* @method Phaser.TilemapLayer#renderRegion -* @private -* @param {integer} scrollX - Render x offset/scroll. -* @param {integer} scrollY - Render y offset/scroll. -* @param {integer} left - Leftmost column to render. -* @param {integer} top - Topmost row to render. -* @param {integer} right - Rightmost column to render. -* @param {integer} bottom - Bottommost row to render. -*/ -Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, top, right, bottom) { - - var context = this.context; - - var width = this.layer.width; - var height = this.layer.height; - var tw = this._mc.tileWidth; - var th = this._mc.tileHeight; - - var tilesets = this._mc.tilesets; - var lastAlpha = NaN; - - if (!this._wrap) - { - if (left <= right) // Only adjust if going to render - { - left = Math.max(0, left); - right = Math.min(width - 1, right); - } - if (top <= bottom) - { - top = Math.max(0, top); - bottom = Math.min(height - 1, bottom); - } - } - - // top-left pixel of top-left cell - var baseX = (left * tw) - scrollX; - var baseY = (top * th) - scrollY; - - // Fix normStartX/normStartY such it is normalized [0..width/height). This allows a simple conditional and decrement to always keep in range [0..width/height) during the loop. The major offset bias is to take care of negative values. - var normStartX = (left + ((1 << 20) * width)) % width; - var normStartY = (top + ((1 << 20) * height)) % height; - - // tx/ty - are pixel coordinates where tile is drawn - // x/y - is cell location, normalized [0..width/height) in loop - // xmax/ymax - remaining cells to render on column/row - var tx, ty, x, y, xmax, ymax; - - for (y = normStartY, ymax = bottom - top, ty = baseY; - ymax >= 0; - y++, ymax--, ty += th) - { - - if (y >= height) { y -= height; } - - var row = this.layer.data[y]; - - for (x = normStartX, xmax = right - left, tx = baseX; - xmax >= 0; - x++, xmax--, tx += tw) - { - - if (x >= width) { x -= width; } - - var tile = row[x]; - - if (!tile || tile.index < 0) - { - continue; - } - - var index = tile.index; - - var set = tilesets[index]; - - if (set === undefined) - { - set = this.resolveTileset(index); - } - - // Setting the globalAlpha is "surprisingly expensive" in Chrome (38) - if (tile.alpha !== lastAlpha && !this.debug) - { - context.globalAlpha = tile.alpha; - lastAlpha = tile.alpha; - } - - if (set) - { - if (tile.rotation || tile.flipped) - { - context.save(); - context.translate(tx + tile.centerX, ty + tile.centerY); - context.rotate(tile.rotation); - - if (tile.flipped) - { - context.scale(-1, 1); - } - - set.draw(context, -tile.centerX, -tile.centerY, index); - context.restore(); - } - else - { - set.draw(context, tx, ty, index); - } - } - else if (this.debugSettings.missingImageFill) - { - context.fillStyle = this.debugSettings.missingImageFill; - context.fillRect(tx, ty, tw, th); - } - - if (tile.debug && this.debugSettings.debuggedTileOverfill) - { - context.fillStyle = this.debugSettings.debuggedTileOverfill; - context.fillRect(tx, ty, tw, th); - } - - } - - } - -}; - -/** -* Shifts the canvas and render damaged edge tiles. -* -* @method Phaser.TilemapLayer#renderDeltaScroll -* @private -*/ -Phaser.TilemapLayer.prototype.renderDeltaScroll = function (shiftX, shiftY) { - - var scrollX = this._mc.scrollX; - var scrollY = this._mc.scrollY; - - var renderW = this.canvas.width; - var renderH = this.canvas.height; - - var tw = this._mc.tileWidth; - var th = this._mc.tileHeight; - - // Only cells with coordinates in the "plus" formed by `left <= x <= right` OR `top <= y <= bottom` are drawn. These coordinates may be outside the layer bounds. - - // Start in pixels - var left = 0; - var right = -tw; - var top = 0; - var bottom = -th; - - if (shiftX < 0) // layer moving left, damage right - { - left = renderW + shiftX; // shiftX neg. - right = renderW - 1; - } - else if (shiftX > 0) - { - // left -> 0 - right = shiftX; - } - - if (shiftY < 0) // layer moving down, damage top - { - top = renderH + shiftY; // shiftY neg. - bottom = renderH - 1; - } - else if (shiftY > 0) - { - // top -> 0 - bottom = shiftY; - } - - this.shiftCanvas(this.context, shiftX, shiftY); - - // Transform into tile-space - left = Math.floor((left + scrollX) / tw); - right = Math.floor((right + scrollX) / tw); - top = Math.floor((top + scrollY) / th); - bottom = Math.floor((bottom + scrollY) / th); - - if (left <= right) - { - // Clear left or right edge - this.context.clearRect(((left * tw) - scrollX), 0, (right - left + 1) * tw, renderH); - - var trueTop = Math.floor((0 + scrollY) / th); - var trueBottom = Math.floor((renderH - 1 + scrollY) / th); - this.renderRegion(scrollX, scrollY, left, trueTop, right, trueBottom); - } - - if (top <= bottom) - { - // Clear top or bottom edge - this.context.clearRect(0, ((top * th) - scrollY), renderW, (bottom - top + 1) * th); - - var trueLeft = Math.floor((0 + scrollX) / tw); - var trueRight = Math.floor((renderW - 1 + scrollX) / tw); - this.renderRegion(scrollX, scrollY, trueLeft, top, trueRight, bottom); - } - -}; - -/** -* Clear and render the entire canvas. -* -* @method Phaser.TilemapLayer#renderFull -* @private -*/ -Phaser.TilemapLayer.prototype.renderFull = function () { - - var scrollX = this._mc.scrollX; - var scrollY = this._mc.scrollY; - - var renderW = this.canvas.width; - var renderH = this.canvas.height; - - var tw = this._mc.tileWidth; - var th = this._mc.tileHeight; - - var left = Math.floor(scrollX / tw); - var right = Math.floor((renderW - 1 + scrollX) / tw); - var top = Math.floor(scrollY / th); - var bottom = Math.floor((renderH - 1 + scrollY) / th); - - this.context.clearRect(0, 0, renderW, renderH); - - this.renderRegion(scrollX, scrollY, left, top, right, bottom); - -}; - -/** -* Renders the tiles to the layer canvas and pushes to the display. -* -* @method Phaser.TilemapLayer#render -* @protected -*/ -Phaser.TilemapLayer.prototype.render = function () { - - var redrawAll = false; - - if (!this.visible) - { - return; - } - - if (this.dirty || this.layer.dirty) - { - this.layer.dirty = false; - redrawAll = true; - } - - var renderWidth = this.canvas.width; // Use Sprite.width/height? - var renderHeight = this.canvas.height; - - // Scrolling bias; whole pixels only - var scrollX = this._scrollX | 0; - var scrollY = this._scrollY | 0; - - var mc = this._mc; - var shiftX = mc.scrollX - scrollX; // Negative when scrolling right/down - var shiftY = mc.scrollY - scrollY; - - if (!redrawAll && - shiftX === 0 && shiftY === 0 && - mc.renderWidth === renderWidth && mc.renderHeight === renderHeight) - { - // No reason to redraw map, looking at same thing and not invalidated. - return; - } - - this.context.save(); - - mc.scrollX = scrollX; - mc.scrollY = scrollY; - - if (mc.renderWidth !== renderWidth || mc.renderHeight !== renderHeight) - { - // Could support automatic canvas resizing - mc.renderWidth = renderWidth; - mc.renderHeight = renderHeight; - } - - if (this.debug) - { - this.context.globalAlpha = this.debugSettings.debugAlpha; - - if (this.debugSettings.forceFullRedraw) - { - redrawAll = true; - } - } - - if (!redrawAll && - this.renderSettings.enableScrollDelta && - (Math.abs(shiftX) + Math.abs(shiftY)) < Math.min(renderWidth, renderHeight)) - { - this.renderDeltaScroll(shiftX, shiftY); - } - else - { - // Too much change or otherwise requires full render - this.renderFull(); - } - - if (this.debug) - { - this.context.globalAlpha = 1; - this.renderDebug(); - } - - this.texture.baseTexture.dirty(); - - this.dirty = false; - - this.context.restore(); - - return true; - -}; - -/** -* Renders a debug overlay on-top of the canvas. Called automatically by render when `debug` is true. -* -* See `debugSettings` for assorted configuration options. -* -* @method Phaser.TilemapLayer#renderDebug -* @private -*/ -Phaser.TilemapLayer.prototype.renderDebug = function () { - - var scrollX = this._mc.scrollX; - var scrollY = this._mc.scrollY; - - var context = this.context; - var renderW = this.canvas.width; - var renderH = this.canvas.height; - - var width = this.layer.width; - var height = this.layer.height; - var tw = this._mc.tileWidth; - var th = this._mc.tileHeight; - - var left = Math.floor(scrollX / tw); - var right = Math.floor((renderW - 1 + scrollX) / tw); - var top = Math.floor(scrollY / th); - var bottom = Math.floor((renderH - 1 + scrollY) / th); - - var baseX = (left * tw) - scrollX; - var baseY = (top * th) - scrollY; - - var normStartX = (left + ((1 << 20) * width)) % width; - var normStartY = (top + ((1 << 20) * height)) % height; - - var tx, ty, x, y, xmax, ymax; - - context.strokeStyle = this.debugSettings.facingEdgeStroke; - - for (y = normStartY, ymax = bottom - top, ty = baseY; - ymax >= 0; - y++, ymax--, ty += th) - { - - if (y >= height) { y -= height; } - - var row = this.layer.data[y]; - - for (x = normStartX, xmax = right - left, tx = baseX; - xmax >= 0; - x++, xmax--, tx += tw) - { - - if (x >= width) { x -= width; } - - var tile = row[x]; - if (!tile || tile.index < 0 || !tile.collides) - { - continue; - } - - if (this.debugSettings.collidingTileOverfill) - { - context.fillStyle = this.debugSettings.collidingTileOverfill; - context.fillRect(tx, ty, this._mc.cw, this._mc.ch); - } - - if (this.debugSettings.facingEdgeStroke) - { - context.beginPath(); - - if (tile.faceTop) - { - context.moveTo(tx, ty); - context.lineTo(tx + this._mc.cw, ty); - } - - if (tile.faceBottom) - { - context.moveTo(tx, ty + this._mc.ch); - context.lineTo(tx + this._mc.cw, ty + this._mc.ch); - } - - if (tile.faceLeft) - { - context.moveTo(tx, ty); - context.lineTo(tx, ty + this._mc.ch); - } - - if (tile.faceRight) - { - context.moveTo(tx + this._mc.cw, ty); - context.lineTo(tx + this._mc.cw, ty + this._mc.ch); - } - - context.stroke(); - } - - } - - } - -}; - -/** -* Flag controlling if the layer tiles wrap at the edges. Only works if the World size matches the Map size. -* -* @property {boolean} wrap -* @memberof Phaser.TilemapLayer -* @public -* @default false -*/ -Object.defineProperty(Phaser.TilemapLayer.prototype, "wrap", { - - get: function () { - return this._wrap; - }, - - set: function (value) { - this._wrap = value; - this.dirty = true; - } - -}); - -/** -* Scrolls the map horizontally or returns the current x position. -* -* @property {number} scrollX -* @memberof Phaser.TilemapLayer -* @public -*/ -Object.defineProperty(Phaser.TilemapLayer.prototype, "scrollX", { - - get: function () { - return this._scrollX; - }, - - set: function (value) { - this._scrollX = value; - } - -}); - -/** -* Scrolls the map vertically or returns the current y position. -* -* @property {number} scrollY -* @memberof Phaser.TilemapLayer -* @public -*/ -Object.defineProperty(Phaser.TilemapLayer.prototype, "scrollY", { - - get: function () { - return this._scrollY; - }, - - set: function (value) { - this._scrollY = value; - } - -}); - -/** -* The width of the collision tiles (in pixels). -* -* @property {integer} collisionWidth -* @memberof Phaser.TilemapLayer -* @public -*/ -Object.defineProperty(Phaser.TilemapLayer.prototype, "collisionWidth", { - - get: function () { - return this._mc.cw; - }, - - set: function (value) { - this._mc.cw = value | 0; - this.dirty = true; - } - -}); - -/** -* The height of the collision tiles (in pixels). -* -* @property {integer} collisionHeight -* @memberof Phaser.TilemapLayer -* @public -*/ -Object.defineProperty(Phaser.TilemapLayer.prototype, "collisionHeight", { - - get: function () { - return this._mc.ch; - }, - - set: function (value) { - this._mc.ch = value | 0; - this.dirty = true; - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser.TilemapParser parses data objects from Phaser.Loader that need more preparation before they can be inserted into a Tilemap. -* -* @class Phaser.TilemapParser -* @static -*/ -Phaser.TilemapParser = { - - /** - * When scanning the Tiled map data the TilemapParser can either insert a null value (true) or - * a Phaser.Tile instance with an index of -1 (false, the default). Depending on your game type - * depends how this should be configured. If you've a large sparsely populated map and the tile - * data doesn't need to change then setting this value to `true` will help with memory consumption. - * However if your map is small, or you need to update the tiles (perhaps the map dynamically changes - * during the game) then leave the default value set. - * - * @constant - * @type {boolean} - */ - INSERT_NULL: false, - - /** - * A tiled flag that resides within the 32 bit of the object gid and - * indicates whether the tiled/object is flipped horizontally. - * - * @constant - * @type {number} - */ - FLIPPED_HORIZONTALLY_FLAG: 0x80000000, - - /** - * A tiled flag that resides within the 31 bit of the object gid and - * indicates whether the tiled/object is flipped vertically. - * - * @constant - * @type {number} - */ - FLIPPED_VERTICALLY_FLAG: 0x40000000, - - /** - * A tiled flag that resides within the 30 bit of the object gid and - * indicates whether the tiled/object is flipped diagonally. - * - * @constant - * @type {number} - */ - FLIPPED_DIAGONALLY_FLAG: 0x20000000, - - /** - * Parse tilemap data from the cache and creates a Tilemap object. - * - * @method Phaser.TilemapParser.parse - * @param {Phaser.Game} game - Game reference to the currently running game. - * @param {string} key - The key of the tilemap in the Cache. - * @param {number} [tileWidth=32] - The pixel width of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @param {number} [tileHeight=32] - The pixel height of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @param {number} [width=10] - The width of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - * @param {number} [height=10] - The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - * @return {object} The parsed map object. - */ - parse: function (game, key, tileWidth, tileHeight, width, height) { - - if (tileWidth === undefined) { tileWidth = 32; } - if (tileHeight === undefined) { tileHeight = 32; } - if (width === undefined) { width = 10; } - if (height === undefined) { height = 10; } - - if (key === undefined) - { - return this.getEmptyData(); - } - - if (key === null) - { - return this.getEmptyData(tileWidth, tileHeight, width, height); - } - - var map = game.cache.getTilemapData(key); - - if (map) - { - if (map.format === Phaser.Tilemap.CSV) - { - return this.parseCSV(key, map.data, tileWidth, tileHeight); - } - else if (!map.format || map.format === Phaser.Tilemap.TILED_JSON) - { - return this.parseTiledJSON(map.data); - } - } - else - { - console.warn('Phaser.TilemapParser.parse - No map data found for key ' + key); - } - - }, - - /** - * Parses a CSV file into valid map data. - * - * @method Phaser.TilemapParser.parseCSV - * @param {string} key - The name you want to give the map data. - * @param {string} data - The CSV file data. - * @param {number} [tileWidth=32] - The pixel width of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @param {number} [tileHeight=32] - The pixel height of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - * @return {object} Generated map data. - */ - parseCSV: function (key, data, tileWidth, tileHeight) { - - var map = this.getEmptyData(); - - // Trim any rogue whitespace from the data - data = data.trim(); - - var output = []; - var rows = data.split("\n"); - var height = rows.length; - var width = 0; - - for (var y = 0; y < rows.length; y++) - { - output[y] = []; - - var column = rows[y].split(","); - - for (var x = 0; x < column.length; x++) - { - output[y][x] = new Phaser.Tile(map.layers[0], parseInt(column[x], 10), x, y, tileWidth, tileHeight); - } - - if (width === 0) - { - width = column.length; - } - } - - map.format = Phaser.Tilemap.CSV; - map.name = key; - map.width = width; - map.height = height; - map.tileWidth = tileWidth; - map.tileHeight = tileHeight; - map.widthInPixels = width * tileWidth; - map.heightInPixels = height * tileHeight; - - map.layers[0].width = width; - map.layers[0].height = height; - map.layers[0].widthInPixels = map.widthInPixels; - map.layers[0].heightInPixels = map.heightInPixels; - map.layers[0].data = output; - - return map; - - }, - - /** - * Returns an empty map data object. - * - * @method Phaser.TilemapParser.getEmptyData - * @return {object} Generated map data. - */ - getEmptyData: function (tileWidth, tileHeight, width, height) { - - var map = {}; - - map.width = 0; - map.height = 0; - map.tileWidth = 0; - map.tileHeight = 0; - - if (typeof tileWidth !== 'undefined' && tileWidth !== null) { map.tileWidth = tileWidth; } - if (typeof tileHeight !== 'undefined' && tileHeight !== null) { map.tileHeight = tileHeight; } - if (typeof width !== 'undefined' && width !== null) { map.width = width; } - if (typeof height !== 'undefined' && height !== null) { map.height = height; } - - map.orientation = 'orthogonal'; - map.version = '1'; - map.properties = {}; - map.widthInPixels = 0; - map.heightInPixels = 0; - - var layers = []; - - var layer = { - - name: 'layer', - x: 0, - y: 0, - width: 0, - height: 0, - widthInPixels: 0, - heightInPixels: 0, - alpha: 1, - visible: true, - properties: {}, - indexes: [], - callbacks: [], - bodies: [], - data: [] - - }; - - // fill with nulls? - - layers.push(layer); - - map.layers = layers; - map.images = []; - map.objects = {}; - map.collision = {}; - map.tilesets = []; - map.tiles = []; - - return map; - - }, - - /** - * Parses a Tiled JSON file into valid map data. - * @method Phaser.TilemapParser.parseJSON - * @param {object} json - The JSON map data. - * @return {object} Generated and parsed map data. - */ - parseTiledJSON: function (json) { - - if (json.orientation !== 'orthogonal') - { - console.warn('TilemapParser.parseTiledJSON - Only orthogonal map types are supported in this version of Phaser'); - return null; - } - - // Map data will consist of: layers, objects, images, tilesets, sizes - var map = {}; - - map.width = json.width; - map.height = json.height; - map.tileWidth = json.tilewidth; - map.tileHeight = json.tileheight; - map.orientation = json.orientation; - map.format = Phaser.Tilemap.TILED_JSON; - map.version = json.version; - map.properties = json.properties; - map.widthInPixels = map.width * map.tileWidth; - map.heightInPixels = map.height * map.tileHeight; - - // Tile Layers - var layers = []; - - for (var i = 0; i < json.layers.length; i++) - { - if (json.layers[i].type !== 'tilelayer') - { - continue; - } - - var curl = json.layers[i]; - - // Base64 decode data if necessary - // NOTE: uncompressed base64 only. - if (!curl.compression && curl.encoding && curl.encoding === "base64") { - var binaryString = window.atob(curl.data); - var len = binaryString.length; - var bytes = new Array( len ); - // Interpret binaryString as an array of bytes representing - // little-endian encoded uint32 values. - for (var j = 0; j < len; j+=4) { - bytes[j/4] = (binaryString.charCodeAt(j) | - binaryString.charCodeAt(j+1) << 8 | - binaryString.charCodeAt(j+2) << 16 | - binaryString.charCodeAt(j+3) << 24) >>> 0; - } - curl.data = bytes; - delete curl.encoding; - } - else if(curl.compression){ - console.warn('TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer \'' + curl.name + '\''); - continue; - } - - - var layer = { - - name: curl.name, - x: curl.x, - y: curl.y, - width: curl.width, - height: curl.height, - widthInPixels: curl.width * json.tilewidth, - heightInPixels: curl.height * json.tileheight, - alpha: curl.opacity, - visible: curl.visible, - properties: {}, - indexes: [], - callbacks: [], - bodies: [] - - }; - - if (curl.properties) - { - layer.properties = curl.properties; - } - - var x = 0; - var row = []; - var output = []; - var rotation, flipped, flippedVal, gid; - - // Loop through the data field in the JSON. - - // This is an array containing the tile indexes, one after the other. -1 = no tile, everything else = the tile index (starting at 1 for Tiled, 0 for CSV) - // If the map contains multiple tilesets then the indexes are relative to that which the set starts from. - // Need to set which tileset in the cache = which tileset in the JSON, if you do this manually it means you can use the same map data but a new tileset. - - for (var t = 0, len = curl.data.length; t < len; t++) - { - rotation = 0; - flipped = false; - gid = curl.data[t]; - - // If true the current tile is flipped or rotated (Tiled TMX format) - if (gid > 0x20000000) - { - flippedVal = 0; - - // FlippedX - if (gid > 0x80000000) - { - gid -= 0x80000000; - flippedVal += 4; - } - - // FlippedY - if (gid > 0x40000000) - { - gid -= 0x40000000; - flippedVal += 2; - } - - // FlippedAD - if (gid > 0x20000000) - { - gid -= 0x20000000; - flippedVal += 1; - } - - switch (flippedVal) - { - case 5: - rotation = Math.PI/2; - break; - case 6: - rotation = Math.PI; - break; - case 3: - rotation = 3*Math.PI/2; - break; - case 4: - rotation = 0; - flipped = true; - break; - case 7: - rotation = Math.PI/2; - flipped = true; - break; - case 2: - rotation = Math.PI; - flipped = true; - break; - case 1: - rotation = 3*Math.PI/2; - flipped = true; - break; - } - } - - // index, x, y, width, height - if (gid > 0) - { - row.push(new Phaser.Tile(layer, gid, x, output.length, json.tilewidth, json.tileheight)); - row[row.length - 1].rotation = rotation; - row[row.length - 1].flipped = flipped; - } - else - { - if (Phaser.TilemapParser.INSERT_NULL) - { - row.push(null); - } - else - { - row.push(new Phaser.Tile(layer, -1, x, output.length, json.tilewidth, json.tileheight)); - } - } - - x++; - - if (x === curl.width) - { - output.push(row); - x = 0; - row = []; - } - } - - layer.data = output; - - layers.push(layer); - - } - - map.layers = layers; - - // Images - var images = []; - - for (var i = 0; i < json.layers.length; i++) - { - if (json.layers[i].type !== 'imagelayer') - { - continue; - } - - var curi = json.layers[i]; - - var image = { - - name: curi.name, - image: curi.image, - x: curi.x, - y: curi.y, - alpha: curi.opacity, - visible: curi.visible, - properties: {} - - }; - - if (curi.properties) - { - image.properties = curi.properties; - } - - images.push(image); - - } - - map.images = images; - - // Tilesets & Image Collections - var tilesets = []; - var imagecollections = []; - - for (var i = 0; i < json.tilesets.length; i++) - { - // name, firstgid, width, height, margin, spacing, properties - var set = json.tilesets[i]; - - if (set.image) - { - var newSet = new Phaser.Tileset(set.name, set.firstgid, set.tilewidth, set.tileheight, set.margin, set.spacing, set.properties); - - if (set.tileproperties) - { - newSet.tileProperties = set.tileproperties; - } - - // For a normal sliced tileset the row/count/size information is computed when updated. - // This is done (again) after the image is set. - newSet.updateTileData(set.imagewidth, set.imageheight); - tilesets.push(newSet); - } - else - { - var newCollection = new Phaser.ImageCollection(set.name, set.firstgid, set.tilewidth, set.tileheight, set.margin, set.spacing, set.properties); - - for (var ti in set.tiles) - { - var image = set.tiles[ti].image; - var gid = set.firstgid + parseInt(ti, 10); - newCollection.addImage(gid, image); - } - - imagecollections.push(newCollection); - } - - } - - map.tilesets = tilesets; - map.imagecollections = imagecollections; - - // Objects & Collision Data (polylines, etc) - var objects = {}; - var collision = {}; - - function slice (obj, fields) { - - var sliced = {}; - - for (var k in fields) - { - var key = fields[k]; - - if (typeof obj[key] !== 'undefined') - { - sliced[key] = obj[key]; - } - } - - return sliced; - } - - for (var i = 0; i < json.layers.length; i++) - { - if (json.layers[i].type !== 'objectgroup') - { - continue; - } - - var curo = json.layers[i]; - - objects[curo.name] = []; - collision[curo.name] = []; - - for (var v = 0, len = curo.objects.length; v < len; v++) - { - // Object Tiles - if (curo.objects[v].gid) - { - var self = this; - - var object = { - - gid: curo.objects[v].gid, - name: curo.objects[v].name, - type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", - x: curo.objects[v].x, - y: curo.objects[v].y, - width: curo.objects[v].width, - height: curo.objects[v].height, - visible: curo.objects[v].visible, - properties: curo.objects[v].properties, - horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, - verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, - diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG - }; - - if (curo.objects[v].rotation) - { - object.rotation = curo.objects[v].rotation; - } - - objects[curo.name].push(object); - } - else if (curo.objects[v].polyline) - { - var object = { - - name: curo.objects[v].name, - type: curo.objects[v].type, - x: curo.objects[v].x, - y: curo.objects[v].y, - width: curo.objects[v].width, - height: curo.objects[v].height, - visible: curo.objects[v].visible, - properties: curo.objects[v].properties - - }; - - if (curo.objects[v].rotation) - { - object.rotation = curo.objects[v].rotation; - } - - object.polyline = []; - - // Parse the polyline into an array - for (var p = 0; p < curo.objects[v].polyline.length; p++) - { - object.polyline.push([ curo.objects[v].polyline[p].x, curo.objects[v].polyline[p].y ]); - } - - collision[curo.name].push(object); - objects[curo.name].push(object); - } - // polygon - else if (curo.objects[v].polygon) - { - var object = slice(curo.objects[v], - ["name", "type", "x", "y", "visible", "rotation", "properties" ]); - - // Parse the polygon into an array - object.polygon = []; - - for (var p = 0; p < curo.objects[v].polygon.length; p++) - { - object.polygon.push([ curo.objects[v].polygon[p].x, curo.objects[v].polygon[p].y ]); - } - - objects[curo.name].push(object); - - } - // ellipse - else if (curo.objects[v].ellipse) - { - var object = slice(curo.objects[v], - ["name", "type", "ellipse", "x", "y", "width", "height", "visible", "rotation", "properties" ]); - objects[curo.name].push(object); - } - // otherwise it's a rectangle - else - { - var object = slice(curo.objects[v], - ["name", "type", "x", "y", "width", "height", "visible", "rotation", "properties" ]); - object.rectangle = true; - objects[curo.name].push(object); - } - } - } - - map.objects = objects; - map.collision = collision; - - map.tiles = []; - - // Finally lets build our super tileset index - for (var i = 0; i < map.tilesets.length; i++) - { - var set = map.tilesets[i]; - - var x = set.tileMargin; - var y = set.tileMargin; - - var count = 0; - var countX = 0; - var countY = 0; - - for (var t = set.firstgid; t < set.firstgid + set.total; t++) - { - // Can add extra properties here as needed - map.tiles[t] = [x, y, i]; - - x += set.tileWidth + set.tileSpacing; - - count++; - - if (count === set.total) - { - break; - } - - countX++; - - if (countX === set.columns) - { - x = set.tileMargin; - y += set.tileHeight + set.tileSpacing; - - countX = 0; - countY++; - - if (countY === set.rows) - { - break; - } - } - } - - } - - // assign tile properties - - var layer; - var tile; - var sid; - var set; - - // go through each of the map layers - for (var i = 0; i < map.layers.length; i++) - { - layer = map.layers[i]; - - // rows of tiles - for (var j = 0; j < layer.data.length; j++) - { - row = layer.data[j]; - - // individual tiles - for (var k = 0; k < row.length; k++) - { - tile = row[k]; - - if (tile === null || tile.index < 0) - { - continue; - } - - // find the relevant tileset - - sid = map.tiles[tile.index][2]; - set = map.tilesets[sid]; - - // if that tile type has any properties, add them to the tile object - - if (set.tileProperties && set.tileProperties[tile.index - set.firstgid]) - { - tile.properties = Phaser.Utils.mixin(set.tileProperties[tile.index - set.firstgid], tile.properties); - } - } - } - } - - return map; - - } - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Tile set is a combination of an image containing the tiles and collision data per tile. -* -* Tilesets are normally created automatically when Tiled data is loaded. -* -* @class Phaser.Tileset -* @constructor -* @param {string} name - The name of the tileset in the map data. -* @param {integer} firstgid - The first tile index this tileset contains. -* @param {integer} [width=32] - Width of each tile (in pixels). -* @param {integer} [height=32] - Height of each tile (in pixels). -* @param {integer} [margin=0] - The margin around all tiles in the sheet (in pixels). -* @param {integer} [spacing=0] - The spacing between each tile in the sheet (in pixels). -* @param {object} [properties={}] - Custom Tileset properties. -*/ -Phaser.Tileset = function (name, firstgid, width, height, margin, spacing, properties) { - - if (width === undefined || width <= 0) { width = 32; } - if (height === undefined || height <= 0) { height = 32; } - if (margin === undefined) { margin = 0; } - if (spacing === undefined) { spacing = 0; } - - /** - * The name of the Tileset. - * @property {string} name - */ - this.name = name; - - /** - * The Tiled firstgid value. - * This is the starting index of the first tile index this Tileset contains. - * @property {integer} firstgid - */ - this.firstgid = firstgid | 0; - - /** - * The width of each tile (in pixels). - * @property {integer} tileWidth - * @readonly - */ - this.tileWidth = width | 0; - - /** - * The height of each tile (in pixels). - * @property {integer} tileHeight - * @readonly - */ - this.tileHeight = height | 0; - - /** - * The margin around the tiles in the sheet (in pixels). - * Use `setSpacing` to change. - * @property {integer} tileMarge - * @readonly - */ - // Modified internally - this.tileMargin = margin | 0; - - /** - * The spacing between each tile in the sheet (in pixels). - * Use `setSpacing` to change. - * @property {integer} tileSpacing - * @readonly - */ - this.tileSpacing = spacing | 0; - - /** - * Tileset-specific properties that are typically defined in the Tiled editor. - * @property {object} properties - */ - this.properties = properties || {}; - - /** - * The cached image that contains the individual tiles. Use {@link Phaser.Tileset.setImage setImage} to set. - * @property {?object} image - * @readonly - */ - // Modified internally - this.image = null; - - /** - * The number of tile rows in the the tileset. - * @property {integer} - * @readonly - */ - // Modified internally - this.rows = 0; - - /** - * The number of tile columns in the tileset. - * @property {integer} columns - * @readonly - */ - // Modified internally - this.columns = 0; - - /** - * The total number of tiles in the tileset. - * @property {integer} total - * @readonly - */ - // Modified internally - this.total = 0; - - /** - * The look-up table to specific tile image offsets. - * The coordinates are interlaced such that it is [x0, y0, x1, y1 .. xN, yN] and the tile with the index of firstgid is found at indices 0/1. - * @property {integer[]} drawCoords - * @private - */ - this.drawCoords = []; - -}; - -Phaser.Tileset.prototype = { - - /** - * Draws a tile from this Tileset at the given coordinates on the context. - * - * @method Phaser.Tileset#draw - * @public - * @param {CanvasRenderingContext2D} context - The context to draw the tile onto. - * @param {number} x - The x coordinate to draw to. - * @param {number} y - The y coordinate to draw to. - * @param {integer} index - The index of the tile within the set to draw. - */ - draw: function (context, x, y, index) { - - // Correct the tile index for the set and bias for interlacing - var coordIndex = (index - this.firstgid) << 1; - - if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) - { - context.drawImage( - this.image, - this.drawCoords[coordIndex], - this.drawCoords[coordIndex + 1], - this.tileWidth, - this.tileHeight, - x, - y, - this.tileWidth, - this.tileHeight - ); - } - - }, - - /** - * Returns true if and only if this tileset contains the given tile index. - * - * @method Phaser.Tileset#containsTileIndex - * @public - * @return {boolean} True if this tileset contains the given index. - */ - containsTileIndex: function (tileIndex) { - - return ( - tileIndex >= this.firstgid && - tileIndex < (this.firstgid + this.total) - ); - - }, - - /** - * Set the image associated with this Tileset and update the tile data. - * - * @method Phaser.Tileset#setImage - * @public - * @param {Image} image - The image that contains the tiles. - */ - setImage: function (image) { - - this.image = image; - this.updateTileData(image.width, image.height); - - }, - - /** - * Sets tile spacing and margins. - * - * @method Phaser.Tileset#setSpacing - * @public - * @param {integer} [margin=0] - The margin around the tiles in the sheet (in pixels). - * @param {integer} [spacing=0] - The spacing between the tiles in the sheet (in pixels). - */ - setSpacing: function (margin, spacing) { - - this.tileMargin = margin | 0; - this.tileSpacing = spacing | 0; - - if (this.image) - { - this.updateTileData(this.image.width, this.image.height); - } - - }, - - /** - * Updates tile coordinates and tileset data. - * - * @method Phaser.Tileset#updateTileData - * @private - * @param {integer} imageWidth - The (expected) width of the image to slice. - * @param {integer} imageHeight - The (expected) height of the image to slice. - */ - updateTileData: function (imageWidth, imageHeight) { - - // May be fractional values - var rowCount = (imageHeight - this.tileMargin * 2 + this.tileSpacing) / (this.tileHeight + this.tileSpacing); - var colCount = (imageWidth - this.tileMargin * 2 + this.tileSpacing) / (this.tileWidth + this.tileSpacing); - - if (rowCount % 1 !== 0 || colCount % 1 !== 0) - { - console.warn("Phaser.Tileset - " + this.name + " image tile area is not an even multiple of tile size"); - } - - // In Tiled a tileset image that is not an even multiple of the tile dimensions - // is truncated - hence the floor when calculating the rows/columns. - rowCount = Math.floor(rowCount); - colCount = Math.floor(colCount); - - if ((this.rows && this.rows !== rowCount) || (this.columns && this.columns !== colCount)) - { - console.warn("Phaser.Tileset - actual and expected number of tile rows and columns differ"); - } - - this.rows = rowCount; - this.columns = colCount; - this.total = rowCount * colCount; - - this.drawCoords.length = 0; - - var tx = this.tileMargin; - var ty = this.tileMargin; - - for (var y = 0; y < this.rows; y++) - { - for (var x = 0; x < this.columns; x++) - { - this.drawCoords.push(tx); - this.drawCoords.push(ty); - tx += this.tileWidth + this.tileSpacing; - } - - tx = this.tileMargin; - ty += this.tileHeight + this.tileSpacing; - } - - } - -}; - -Phaser.Tileset.prototype.constructor = Phaser.Tileset; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. -* -* @class Phaser.Particle -* @constructor -* @extends Phaser.Sprite -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Particle = function (game, x, y, key, frame) { - - Phaser.Sprite.call(this, game, x, y, key, frame); - - /** - * @property {boolean} autoScale - If this Particle automatically scales this is set to true by Particle.setScaleData. - * @protected - */ - this.autoScale = false; - - /** - * @property {array} scaleData - A reference to the scaleData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.scaleData = null; - - /** - * @property {number} _s - Internal cache var for tracking auto scale. - * @private - */ - this._s = 0; - - /** - * @property {boolean} autoAlpha - If this Particle automatically changes alpha this is set to true by Particle.setAlphaData. - * @protected - */ - this.autoAlpha = false; - - /** - * @property {array} alphaData - A reference to the alphaData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.alphaData = null; - - /** - * @property {number} _a - Internal cache var for tracking auto alpha. - * @private - */ - this._a = 0; - -}; - -Phaser.Particle.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.Particle.prototype.constructor = Phaser.Particle; - -/** -* Updates the Particle scale or alpha if autoScale and autoAlpha are set. -* -* @method Phaser.Particle#update -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.update = function() { - - if (this.autoScale) - { - this._s--; - - if (this._s) - { - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - } - else - { - this.autoScale = false; - } - } - - if (this.autoAlpha) - { - this._a--; - - if (this._a) - { - this.alpha = this.alphaData[this._a].v; - } - else - { - this.autoAlpha = false; - } - } - -}; - -/** -* Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. -* -* @method Phaser.Particle#onEmit -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.onEmit = function() { -}; - -/** -* Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. -* -* @method Phaser.Particle#setAlphaData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setAlphaData = function(data) { - - this.alphaData = data; - this._a = data.length - 1; - this.alpha = this.alphaData[this._a].v; - this.autoAlpha = true; - -}; - -/** -* Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. -* -* @method Phaser.Particle#setScaleData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setScaleData = function(data) { - - this.scaleData = data; - this._s = data.length - 1; - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - this.autoScale = true; - -}; - -/** -* Resets the Particle. This places the Particle at the given x/y world coordinates and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state and health values. -* If the Particle has a physics body that too is reset. -* -* @method Phaser.Particle#reset -* @memberof Phaser.Particle -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {number} [health=1] - The health to give the Particle. -* @return {Phaser.Particle} This instance. -*/ -Phaser.Particle.prototype.reset = function(x, y, health) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y, health); - - this.alpha = 1; - this.scale.set(1); - - this.autoScale = false; - this.autoAlpha = false; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Phaser.Particles is the Particle Manager for the game. It is called during the game update loop and in turn updates any Emitters attached to it. -* -* @class Phaser.Particles -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -*/ -Phaser.Particles = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {object} emitters - Internal emitters store. - */ - this.emitters = {}; - - /** - * @property {number} ID - - * @default - */ - this.ID = 0; - -}; - -Phaser.Particles.prototype = { - - /** - * Adds a new Particle Emitter to the Particle Manager. - * @method Phaser.Particles#add - * @param {Phaser.Emitter} emitter - The emitter to be added to the particle manager. - * @return {Phaser.Emitter} The emitter that was added. - */ - add: function (emitter) { - - this.emitters[emitter.name] = emitter; - - return emitter; - - }, - - /** - * Removes an existing Particle Emitter from the Particle Manager. - * @method Phaser.Particles#remove - * @param {Phaser.Emitter} emitter - The emitter to remove. - */ - remove: function (emitter) { - - delete this.emitters[emitter.name]; - - }, - - /** - * Called by the core game loop. Updates all Emitters who have their exists value set to true. - * @method Phaser.Particles#update - * @protected - */ - update: function () { - - for (var key in this.emitters) - { - if (this.emitters[key].exists) - { - this.emitters[key].update(); - } - } - - } - -}; - -Phaser.Particles.prototype.constructor = Phaser.Particles; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Arcade Particles is a Particle System integrated with Arcade Physics. -* -* @class Phaser.Particles.Arcade -*/ -Phaser.Particles.Arcade = {}; -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Emitter is a lightweight particle emitter that uses Arcade Physics. -* It can be used for one-time explosions or for continuous effects like rain and fire. -* All it really does is launch Particle objects out at set intervals, and fixes their positions and velocities accordingly. -* -* @class Phaser.Particles.Arcade.Emitter -* @constructor -* @extends Phaser.Group -* @param {Phaser.Game} game - Current game instance. -* @param {number} [x=0] - The x coordinate within the Emitter that the particles are emitted from. -* @param {number} [y=0] - The y coordinate within the Emitter that the particles are emitted from. -* @param {number} [maxParticles=50] - The total number of particles in this emitter. -*/ -Phaser.Particles.Arcade.Emitter = function (game, x, y, maxParticles) { - - /** - * @property {number} maxParticles - The total number of particles in this emitter. - * @default - */ - this.maxParticles = maxParticles || 50; - - Phaser.Group.call(this, game); - - /** - * @property {string} name - A handy string name for this emitter. Can be set to anything. - */ - this.name = 'emitter' + this.game.particles.ID++; - - /** - * @property {number} type - Internal Phaser Type value. - * @protected - */ - this.type = Phaser.EMITTER; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.GROUP; - - /** - * @property {Phaser.Rectangle} area - The area of the emitter. Particles can be randomly generated from anywhere within this rectangle. - * @default - */ - this.area = new Phaser.Rectangle(x, y, 1, 1); - - /** - * @property {Phaser.Point} minParticleSpeed - The minimum possible velocity of a particle. - * @default - */ - this.minParticleSpeed = new Phaser.Point(-100, -100); - - /** - * @property {Phaser.Point} maxParticleSpeed - The maximum possible velocity of a particle. - * @default - */ - this.maxParticleSpeed = new Phaser.Point(100, 100); - - /** - * @property {number} minParticleScale - The minimum possible scale of a particle. This is applied to the X and Y axis. If you need to control each axis see minParticleScaleX. - * @default - */ - this.minParticleScale = 1; - - /** - * @property {number} maxParticleScale - The maximum possible scale of a particle. This is applied to the X and Y axis. If you need to control each axis see maxParticleScaleX. - * @default - */ - this.maxParticleScale = 1; - - /** - * @property {array} scaleData - An array of the calculated scale easing data applied to particles with scaleRates > 0. - */ - this.scaleData = null; - - /** - * @property {number} minRotation - The minimum possible angular velocity of a particle. - * @default - */ - this.minRotation = -360; - - /** - * @property {number} maxRotation - The maximum possible angular velocity of a particle. - * @default - */ - this.maxRotation = 360; - - /** - * @property {number} minParticleAlpha - The minimum possible alpha value of a particle. - * @default - */ - this.minParticleAlpha = 1; - - /** - * @property {number} maxParticleAlpha - The maximum possible alpha value of a particle. - * @default - */ - this.maxParticleAlpha = 1; - - /** - * @property {array} alphaData - An array of the calculated alpha easing data applied to particles with alphaRates > 0. - */ - this.alphaData = null; - - /** - * @property {number} gravity - Sets the `body.gravity.y` of each particle sprite to this value on launch. - * @default - */ - this.gravity = 100; - - /** - * @property {any} particleClass - For emitting your own particle class types. They must extend Phaser.Particle. - * @default - */ - this.particleClass = Phaser.Particle; - - /** - * @property {Phaser.Point} particleDrag - The X and Y drag component of particles launched from the emitter. - */ - this.particleDrag = new Phaser.Point(); - - /** - * @property {number} angularDrag - The angular drag component of particles launched from the emitter if they are rotating. - * @default - */ - this.angularDrag = 0; - - /** - * @property {number} frequency - How often a particle is emitted in ms (if emitter is started with Explode === false). - * @default - */ - this.frequency = 100; - - /** - * @property {number} lifespan - How long each particle lives once it is emitted in ms. Default is 2 seconds. Set lifespan to 'zero' for particles to live forever. - * @default - */ - this.lifespan = 2000; - - /** - * @property {Phaser.Point} bounce - How much each particle should bounce on each axis. 1 = full bounce, 0 = no bounce. - */ - this.bounce = new Phaser.Point(); - - /** - * @property {boolean} on - Determines whether the emitter is currently emitting particles. It is totally safe to directly toggle this. - * @default - */ - this.on = false; - - /** - * @property {Phaser.Point} particleAnchor - When a particle is created its anchor will be set to match this Point object (defaults to x/y: 0.5 to aid in rotation) - * @default - */ - this.particleAnchor = new Phaser.Point(0.5, 0.5); - - /** - * @property {number} blendMode - The blendMode as set on the particle when emitted from the Emitter. Defaults to NORMAL. Needs browser capable of supporting canvas blend-modes (most not available in WebGL) - * @default - */ - this.blendMode = Phaser.blendModes.NORMAL; - - /** - * The point the particles are emitted from. - * Emitter.x and Emitter.y control the containers location, which updates all current particles - * Emitter.emitX and Emitter.emitY control the emission location relative to the x/y position. - * @property {number} emitX - */ - this.emitX = x; - - /** - * The point the particles are emitted from. - * Emitter.x and Emitter.y control the containers location, which updates all current particles - * Emitter.emitX and Emitter.emitY control the emission location relative to the x/y position. - * @property {number} emitY - */ - this.emitY = y; - - /** - * @property {boolean} autoScale - When a new Particle is emitted this controls if it will automatically scale in size. Use Emitter.setScale to configure. - */ - this.autoScale = false; - - /** - * @property {boolean} autoAlpha - When a new Particle is emitted this controls if it will automatically change alpha. Use Emitter.setAlpha to configure. - */ - this.autoAlpha = false; - - /** - * @property {boolean} particleBringToTop - If this is `true` then when the Particle is emitted it will be bought to the top of the Emitters display list. - * @default - */ - this.particleBringToTop = false; - - /** - * @property {boolean} particleSendToBack - If this is `true` then when the Particle is emitted it will be sent to the back of the Emitters display list. - * @default - */ - this.particleSendToBack = false; - - /** - * @property {Phaser.Point} _minParticleScale - Internal particle scale var. - * @private - */ - this._minParticleScale = new Phaser.Point(1, 1); - - /** - * @property {Phaser.Point} _maxParticleScale - Internal particle scale var. - * @private - */ - this._maxParticleScale = new Phaser.Point(1, 1); - - /** - * @property {number} _quantity - Internal helper for deciding how many particles to launch. - * @private - */ - this._quantity = 0; - - /** - * @property {number} _timer - Internal helper for deciding when to launch particles or kill them. - * @private - */ - this._timer = 0; - - /** - * @property {number} _counter - Internal counter for figuring out how many particles to launch. - * @private - */ - this._counter = 0; - - /** - * @property {number} _flowQuantity - Internal counter for figuring out how many particles to launch per flow update. - * @private - */ - this._flowQuantity = 0; - - /** - * @property {number} _flowTotal - Internal counter for figuring out how many particles to launch in total. - * @private - */ - this._flowTotal = 0; - - /** - * @property {boolean} _explode - Internal helper for the style of particle emission (all at once, or one at a time). - * @private - */ - this._explode = true; - - /** - * @property {any} _frames - Internal helper for the particle frame. - * @private - */ - this._frames = null; - -}; - -Phaser.Particles.Arcade.Emitter.prototype = Object.create(Phaser.Group.prototype); -Phaser.Particles.Arcade.Emitter.prototype.constructor = Phaser.Particles.Arcade.Emitter; - -/** -* Called automatically by the game loop, decides when to launch particles and when to "die". -* -* @method Phaser.Particles.Arcade.Emitter#update -*/ -Phaser.Particles.Arcade.Emitter.prototype.update = function () { - - if (this.on && this.game.time.time >= this._timer) - { - this._timer = this.game.time.time + this.frequency * this.game.time.slowMotion; - - if (this._flowTotal !== 0) - { - if (this._flowQuantity > 0) - { - for (var i = 0; i < this._flowQuantity; i++) - { - if (this.emitParticle()) - { - this._counter++; - - if (this._flowTotal !== -1 && this._counter >= this._flowTotal) - { - this.on = false; - break; - } - } - } - } - else - { - if (this.emitParticle()) - { - this._counter++; - - if (this._flowTotal !== -1 && this._counter >= this._flowTotal) - { - this.on = false; - } - } - } - } - else - { - if (this.emitParticle()) - { - this._counter++; - - if (this._quantity > 0 && this._counter >= this._quantity) - { - this.on = false; - } - } - } - - } - - var i = this.children.length; - - while (i--) - { - if (this.children[i].exists) - { - this.children[i].update(); - } - } - -}; - -/** -* This function generates a new set of particles for use by this emitter. -* The particles are stored internally waiting to be emitted via Emitter.start. -* -* @method Phaser.Particles.Arcade.Emitter#makeParticles -* @param {array|string} keys - A string or an array of strings that the particle sprites will use as their texture. If an array one is picked at random. -* @param {array|number} [frames=0] - A frame number, or array of frames that the sprite will use. If an array one is picked at random. -* @param {number} [quantity] - The number of particles to generate. If not given it will use the value of Emitter.maxParticles. If the value is greater than Emitter.maxParticles it will use Emitter.maxParticles as the quantity. -* @param {boolean} [collide=false] - If you want the particles to be able to collide with other Arcade Physics bodies then set this to true. -* @param {boolean} [collideWorldBounds=false] - A particle can be set to collide against the World bounds automatically and rebound back into the World if this is set to true. Otherwise it will leave the World. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.makeParticles = function (keys, frames, quantity, collide, collideWorldBounds) { - - if (frames === undefined) { frames = 0; } - if (quantity === undefined) { quantity = this.maxParticles; } - if (collide === undefined) { collide = false; } - if (collideWorldBounds === undefined) { collideWorldBounds = false; } - - var particle; - var i = 0; - var rndKey = keys; - var rndFrame = frames; - this._frames = frames; - - if (quantity > this.maxParticles) - { - this.maxParticles = quantity; - } - - while (i < quantity) - { - if (Array.isArray(keys)) - { - rndKey = this.game.rnd.pick(keys); - } - - if (Array.isArray(frames)) - { - rndFrame = this.game.rnd.pick(frames); - } - - particle = new this.particleClass(this.game, 0, 0, rndKey, rndFrame); - - this.game.physics.arcade.enable(particle, false); - - if (collide) - { - particle.body.checkCollision.any = true; - particle.body.checkCollision.none = false; - } - else - { - particle.body.checkCollision.none = true; - } - - particle.body.collideWorldBounds = collideWorldBounds; - particle.body.skipQuadTree = true; - - particle.exists = false; - particle.visible = false; - particle.anchor.copyFrom(this.particleAnchor); - - this.add(particle); - - i++; - } - - return this; - -}; - -/** -* Call this function to turn off all the particles and the emitter. -* -* @method Phaser.Particles.Arcade.Emitter#kill -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.kill = function () { - - this.on = false; - this.alive = false; - this.exists = false; - - return this; - -}; - -/** -* Handy for bringing game objects "back to life". Just sets alive and exists back to true. -* -* @method Phaser.Particles.Arcade.Emitter#revive -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.revive = function () { - - this.alive = true; - this.exists = true; - - return this; - -}; - -/** -* Call this function to emit the given quantity of particles at all once (an explosion) -* -* @method Phaser.Particles.Arcade.Emitter#explode -* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever. -* @param {number} [quantity=0] - How many particles to launch. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.explode = function (lifespan, quantity) { - - this._flowTotal = 0; - - this.start(true, lifespan, 0, quantity, false); - - return this; - -}; - -/** -* Call this function to start emitting a flow of particles at the given frequency. -* It will carry on going until the total given is reached. -* Each time the flow is run the quantity number of particles will be emitted together. -* If you set the total to be 20 and quantity to be 5 then flow will emit 4 times in total (4 x 5 = 20 total) -* If you set the total to be -1 then no quantity cap is used and it will keep emitting. -* -* @method Phaser.Particles.Arcade.Emitter#flow -* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever. -* @param {number} [frequency=250] - Frequency is how often to emit the particles, given in ms. -* @param {number} [quantity=1] - How many particles to launch each time the frequency is met. Can never be > Emitter.maxParticles. -* @param {number} [total=-1] - How many particles to launch in total. If -1 it will carry on indefinitely. -* @param {boolean} [immediate=true] - Should the flow start immediately (true) or wait until the first frequency event? (false) -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.flow = function (lifespan, frequency, quantity, total, immediate) { - - if (quantity === undefined || quantity === 0) { quantity = 1; } - if (total === undefined) { total = -1; } - if (immediate === undefined) { immediate = true; } - - if (quantity > this.maxParticles) - { - quantity = this.maxParticles; - } - - this._counter = 0; - this._flowQuantity = quantity; - this._flowTotal = total; - - if (immediate) - { - this.start(true, lifespan, frequency, quantity); - - this._counter += quantity; - this.on = true; - this._timer = this.game.time.time + frequency * this.game.time.slowMotion; - } - else - { - this.start(false, lifespan, frequency, quantity); - } - - return this; - -}; - -/** -* Call this function to start emitting particles. -* -* @method Phaser.Particles.Arcade.Emitter#start -* @param {boolean} [explode=true] - Whether the particles should all burst out at once (true) or at the frequency given (false). -* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever. -* @param {number} [frequency=250] - Ignored if Explode is set to true. Frequency is how often to emit 1 particle. Value given in ms. -* @param {number} [quantity=0] - How many particles to launch. 0 = "all of the particles" which will keep emitting until Emitter.maxParticles is reached. -* @param {number} [forceQuantity=false] - If `true` and creating a particle flow, the quantity emitted will be forced to the be quantity given in this call. This can never exceed Emitter.maxParticles. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.start = function (explode, lifespan, frequency, quantity, forceQuantity) { - - if (explode === undefined) { explode = true; } - if (lifespan === undefined) { lifespan = 0; } - if (frequency === undefined || frequency === null) { frequency = 250; } - if (quantity === undefined) { quantity = 0; } - if (forceQuantity === undefined) { forceQuantity = false; } - - if (quantity > this.maxParticles) - { - quantity = this.maxParticles; - } - - this.revive(); - - this.visible = true; - - this.lifespan = lifespan; - this.frequency = frequency; - - if (explode || forceQuantity) - { - for (var i = 0; i < quantity; i++) - { - this.emitParticle(); - } - } - else - { - this.on = true; - this._quantity = quantity; - this._counter = 0; - this._timer = this.game.time.time + frequency * this.game.time.slowMotion; - } - - return this; - -}; - -/** -* This function is used internally to emit the next particle in the queue. -* -* However it can also be called externally to emit a particle. -* -* When called externally you can use the arguments to override any defaults the Emitter has set. -* -* @method Phaser.Particles.Arcade.Emitter#emitParticle -* @param {number} [x] - The x coordinate to emit the particle from. If `null` or `undefined` it will use `Emitter.emitX` or if the Emitter has a width > 1 a random value between `Emitter.left` and `Emitter.right`. -* @param {number} [y] - The y coordinate to emit the particle from. If `null` or `undefined` it will use `Emitter.emitY` or if the Emitter has a height > 1 a random value between `Emitter.top` and `Emitter.bottom`. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. -* @param {string|number} [frame] - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @return {boolean} True if a particle was emitted, otherwise false. -*/ -Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function (x, y, key, frame) { - - if (x === undefined) { x = null; } - if (y === undefined) { y = null; } - - var particle = this.getFirstExists(false); - - if (particle === null) - { - return false; - } - - var rnd = this.game.rnd; - - if (key !== undefined && frame !== undefined) - { - particle.loadTexture(key, frame); - } - else if (key !== undefined) - { - particle.loadTexture(key); - } - - var emitX = this.emitX; - var emitY = this.emitY; - - if (x !== null) - { - emitX = x; - } - else if (this.width > 1) - { - emitX = rnd.between(this.left, this.right); - } - - if (y !== null) - { - emitY = y; - } - else if (this.height > 1) - { - emitY = rnd.between(this.top, this.bottom); - } - - particle.reset(emitX, emitY); - - particle.angle = 0; - particle.lifespan = this.lifespan; - - if (this.particleBringToTop) - { - this.bringToTop(particle); - } - else if (this.particleSendToBack) - { - this.sendToBack(particle); - } - - if (this.autoScale) - { - particle.setScaleData(this.scaleData); - } - else if (this.minParticleScale !== 1 || this.maxParticleScale !== 1) - { - particle.scale.set(rnd.realInRange(this.minParticleScale, this.maxParticleScale)); - } - else if ((this._minParticleScale.x !== this._maxParticleScale.x) || (this._minParticleScale.y !== this._maxParticleScale.y)) - { - particle.scale.set(rnd.realInRange(this._minParticleScale.x, this._maxParticleScale.x), rnd.realInRange(this._minParticleScale.y, this._maxParticleScale.y)); - } - - if (frame === undefined) - { - if (Array.isArray(this._frames)) - { - particle.frame = this.game.rnd.pick(this._frames); - } - else - { - particle.frame = this._frames; - } - } - - if (this.autoAlpha) - { - particle.setAlphaData(this.alphaData); - } - else - { - particle.alpha = rnd.realInRange(this.minParticleAlpha, this.maxParticleAlpha); - } - - particle.blendMode = this.blendMode; - - var body = particle.body; - - body.updateBounds(); - - body.bounce.copyFrom(this.bounce); - body.drag.copyFrom(this.particleDrag); - - body.velocity.x = rnd.between(this.minParticleSpeed.x, this.maxParticleSpeed.x); - body.velocity.y = rnd.between(this.minParticleSpeed.y, this.maxParticleSpeed.y); - body.angularVelocity = rnd.between(this.minRotation, this.maxRotation); - - body.gravity.y = this.gravity; - body.angularDrag = this.angularDrag; - - particle.onEmit(); - - return true; - -}; - -/** -* Destroys this Emitter, all associated child Particles and then removes itself from the Particle Manager. -* -* @method Phaser.Particles.Arcade.Emitter#destroy -*/ -Phaser.Particles.Arcade.Emitter.prototype.destroy = function () { - - this.game.particles.remove(this); - - Phaser.Group.prototype.destroy.call(this, true, false); - -}; - -/** -* A more compact way of setting the width and height of the emitter. -* -* @method Phaser.Particles.Arcade.Emitter#setSize -* @param {number} width - The desired width of the emitter (particles are spawned randomly within these dimensions). -* @param {number} height - The desired height of the emitter. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.setSize = function (width, height) { - - this.area.width = width; - this.area.height = height; - - return this; - -}; - -/** -* A more compact way of setting the X velocity range of the emitter. -* @method Phaser.Particles.Arcade.Emitter#setXSpeed -* @param {number} [min=0] - The minimum value for this range. -* @param {number} [max=0] - The maximum value for this range. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.setXSpeed = function (min, max) { - - min = min || 0; - max = max || 0; - - this.minParticleSpeed.x = min; - this.maxParticleSpeed.x = max; - - return this; - -}; - -/** -* A more compact way of setting the Y velocity range of the emitter. -* @method Phaser.Particles.Arcade.Emitter#setYSpeed -* @param {number} [min=0] - The minimum value for this range. -* @param {number} [max=0] - The maximum value for this range. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.setYSpeed = function (min, max) { - - min = min || 0; - max = max || 0; - - this.minParticleSpeed.y = min; - this.maxParticleSpeed.y = max; - - return this; - -}; - -/** -* A more compact way of setting the angular velocity constraints of the particles. -* -* @method Phaser.Particles.Arcade.Emitter#setRotation -* @param {number} [min=0] - The minimum value for this range. -* @param {number} [max=0] - The maximum value for this range. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.setRotation = function (min, max) { - - min = min || 0; - max = max || 0; - - this.minRotation = min; - this.maxRotation = max; - - return this; - -}; - -/** -* A more compact way of setting the alpha constraints of the particles. -* The rate parameter, if set to a value above zero, lets you set the speed at which the Particle change in alpha from min to max. -* If rate is zero, which is the default, the particle won't change alpha - instead it will pick a random alpha between min and max on emit. -* -* @method Phaser.Particles.Arcade.Emitter#setAlpha -* @param {number} [min=1] - The minimum value for this range. -* @param {number} [max=1] - The maximum value for this range. -* @param {number} [rate=0] - The rate (in ms) at which the particles will change in alpha from min to max, or set to zero to pick a random alpha between the two. -* @param {function} [ease=Phaser.Easing.Linear.None] - If you've set a rate > 0 this is the easing formula applied between the min and max values. -* @param {boolean} [yoyo=false] - If you've set a rate > 0 you can set if the ease will yoyo or not (i.e. ease back to its original values) -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.setAlpha = function (min, max, rate, ease, yoyo) { - - if (min === undefined) { min = 1; } - if (max === undefined) { max = 1; } - if (rate === undefined) { rate = 0; } - if (ease === undefined) { ease = Phaser.Easing.Linear.None; } - if (yoyo === undefined) { yoyo = false; } - - this.minParticleAlpha = min; - this.maxParticleAlpha = max; - this.autoAlpha = false; - - if (rate > 0 && min !== max) - { - var tweenData = { v: min }; - var tween = this.game.make.tween(tweenData).to( { v: max }, rate, ease); - tween.yoyo(yoyo); - - this.alphaData = tween.generateData(60); - - // Inverse it so we don't have to do array length look-ups in Particle update loops - this.alphaData.reverse(); - this.autoAlpha = true; - } - - return this; - -}; - -/** -* A more compact way of setting the scale constraints of the particles. -* The rate parameter, if set to a value above zero, lets you set the speed and ease which the Particle uses to change in scale from min to max across both axis. -* If rate is zero, which is the default, the particle won't change scale during update, instead it will pick a random scale between min and max on emit. -* -* @method Phaser.Particles.Arcade.Emitter#setScale -* @param {number} [minX=1] - The minimum value of Particle.scale.x. -* @param {number} [maxX=1] - The maximum value of Particle.scale.x. -* @param {number} [minY=1] - The minimum value of Particle.scale.y. -* @param {number} [maxY=1] - The maximum value of Particle.scale.y. -* @param {number} [rate=0] - The rate (in ms) at which the particles will change in scale from min to max, or set to zero to pick a random size between the two. -* @param {function} [ease=Phaser.Easing.Linear.None] - If you've set a rate > 0 this is the easing formula applied between the min and max values. -* @param {boolean} [yoyo=false] - If you've set a rate > 0 you can set if the ease will yoyo or not (i.e. ease back to its original values) -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.setScale = function (minX, maxX, minY, maxY, rate, ease, yoyo) { - - if (minX === undefined) { minX = 1; } - if (maxX === undefined) { maxX = 1; } - if (minY === undefined) { minY = 1; } - if (maxY === undefined) { maxY = 1; } - if (rate === undefined) { rate = 0; } - if (ease === undefined) { ease = Phaser.Easing.Linear.None; } - if (yoyo === undefined) { yoyo = false; } - - // Reset these - this.minParticleScale = 1; - this.maxParticleScale = 1; - - this._minParticleScale.set(minX, minY); - this._maxParticleScale.set(maxX, maxY); - - this.autoScale = false; - - if (rate > 0 && ((minX !== maxX) || (minY !== maxY))) - { - var tweenData = { x: minX, y: minY }; - var tween = this.game.make.tween(tweenData).to( { x: maxX, y: maxY }, rate, ease); - tween.yoyo(yoyo); - - this.scaleData = tween.generateData(60); - - // Inverse it so we don't have to do array length look-ups in Particle update loops - this.scaleData.reverse(); - this.autoScale = true; - } - - return this; - -}; - -/** -* Change the emitters center to match the center of any object with a `center` property, such as a Sprite. -* If the object doesn't have a center property it will be set to object.x + object.width / 2 -* -* @method Phaser.Particles.Arcade.Emitter#at -* @param {object|Phaser.Sprite|Phaser.Image|Phaser.TileSprite|Phaser.Text|PIXI.DisplayObject} object - The object that you wish to match the center with. -* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance. -*/ -Phaser.Particles.Arcade.Emitter.prototype.at = function (object) { - - if (object.center) - { - this.emitX = object.center.x; - this.emitY = object.center.y; - } - else - { - this.emitX = object.world.x + (object.anchor.x * object.width); - this.emitY = object.world.y + (object.anchor.y * object.height); - } - - return this; - -}; - -/** -* @name Phaser.Particles.Arcade.Emitter#width -* @property {number} width - Gets or sets the width of the Emitter. This is the region in which a particle can be emitted. -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "width", { - - get: function () { - return this.area.width; - }, - - set: function (value) { - this.area.width = value; - } - -}); - -/** -* @name Phaser.Particles.Arcade.Emitter#height -* @property {number} height - Gets or sets the height of the Emitter. This is the region in which a particle can be emitted. -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "height", { - - get: function () { - return this.area.height; - }, - - set: function (value) { - this.area.height = value; - } - -}); - -/** -* @name Phaser.Particles.Arcade.Emitter#x -* @property {number} x - Gets or sets the x position of the Emitter. -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "x", { - - get: function () { - return this.emitX; - }, - - set: function (value) { - this.emitX = value; - } - -}); - -/** -* @name Phaser.Particles.Arcade.Emitter#y -* @property {number} y - Gets or sets the y position of the Emitter. -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "y", { - - get: function () { - return this.emitY; - }, - - set: function (value) { - this.emitY = value; - } - -}); - -/** -* @name Phaser.Particles.Arcade.Emitter#left -* @property {number} left - Gets the left position of the Emitter. -* @readonly -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "left", { - - get: function () { - return Math.floor(this.x - (this.area.width / 2)); - } - -}); - -/** -* @name Phaser.Particles.Arcade.Emitter#right -* @property {number} right - Gets the right position of the Emitter. -* @readonly -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "right", { - - get: function () { - return Math.floor(this.x + (this.area.width / 2)); - } - -}); - -/** -* @name Phaser.Particles.Arcade.Emitter#top -* @property {number} top - Gets the top position of the Emitter. -* @readonly -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "top", { - - get: function () { - return Math.floor(this.y - (this.area.height / 2)); - } - -}); - -/** -* @name Phaser.Particles.Arcade.Emitter#bottom -* @property {number} bottom - Gets the bottom position of the Emitter. -* @readonly -*/ -Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "bottom", { - - get: function () { - return Math.floor(this.y + (this.area.height / 2)); - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The Weapon Plugin provides the ability to easily create a bullet pool and manager. -* -* Weapons fire Phaser.Bullet objects, which are essentially Sprites with a few extra properties. -* The Bullets are enabled for Arcade Physics. They do not currently work with P2 Physics. -* -* The Bullets are created inside of `Weapon.bullets`, which is a Phaser.Group instance. Anything you -* can usually do with a Group, such as move it around the display list, iterate it, etc can be done -* to the bullets Group too. -* -* Bullets can have textures and even animations. You can control the speed at which they are fired, -* the firing rate, the firing angle, and even set things like gravity for them. -* -* A small example, assumed to be running from within a Phaser.State create method. -* -* `var weapon = this.add.weapon(10, 'bullet');` -* `weapon.fireFrom.set(300, 300);` -* `this.input.onDown.add(weapon.fire, this);` -* -* @class Phaser.Weapon -* @constructor -* @param {Phaser.Game} game - A reference to the current Phaser.Game instance. -* @param {Phaser.PluginManager} parent - The Phaser Plugin Manager which looks after this plugin. -*/ -Phaser.Weapon = function (game, parent) { - - Phaser.Plugin.call(this, game, parent); - - /** - * This is the Phaser.Group that contains all of the bullets managed by this plugin. - * @type {Phaser.Group} - */ - this.bullets = null; - - /** - * Should the bullet pool run out of bullets (i.e. they are all in flight) then this - * boolean controls if the Group will create a brand new bullet object or not. - * @type {boolean} - */ - this.autoExpandBulletsGroup = false; - - /** - * Will this weapon auto fire? If set to true then a new bullet will be fired - * based on the `fireRate` value. - * @type {boolean} - */ - this.autofire = false; - - /** - * The total number of bullets this Weapon has fired so far. - * You can limit the number of shots allowed (via `fireLimit`), and reset - * this total via `Weapon.resetShots`. - * @type {number} - */ - this.shots = 0; - - /** - * The maximum number of shots that this Weapon is allowed to fire before it stops. - * When the limit is his the `Weapon.onFireLimit` Signal is dispatched. - * You can reset the shot counter via `Weapon.resetShots`. - * @type {number} - */ - this.fireLimit = 0; - - /** - * The rate at which this Weapon can fire. The value is given in milliseconds. - * @type {number} - */ - this.fireRate = 100; - - /** - * This is a modifier that is added to the `fireRate` each update to add variety - * to the firing rate of the Weapon. The value is given in milliseconds. - * If you've a `fireRate` of 200 and a `fireRateVariance` of 50 then the actual - * firing rate of the Weapon will be between 150 and 250. - * @type {number} - */ - this.fireRateVariance = 0; - - /** - * This is a Rectangle from within which the bullets are fired. By default it's a 1x1 - * rectangle, the equivalent of a Point. But you can change the width and height, and if - * larger than 1x1 it'll pick a random point within the rectangle to launch the bullet from. - * @type {Phaser.Rectangle} - */ - this.fireFrom = new Phaser.Rectangle(0, 0, 1, 1); - - /** - * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP - * or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right. - * @type {integer} - */ - this.fireAngle = Phaser.ANGLE_UP; - - /** - * When a Bullet is fired it can optionally inherit the velocity of the `trackedSprite` if set. - * @type {boolean} - */ - this.bulletInheritSpriteSpeed = false; - - /** - * The string based name of the animation that the Bullet will be given on launch. - * This is set via `Weapon.addBulletAnimation`. - * @type {string} - */ - this.bulletAnimation = ''; - - /** - * If you've added a set of frames via `Weapon.setBulletFrames` then you can optionally - * chose for each Bullet fired to pick a random frame from the set. - * @type {boolean} - */ - this.bulletFrameRandom = false; - - /** - * If you've added a set of frames via `Weapon.setBulletFrames` then you can optionally - * chose for each Bullet fired to use the next frame in the set. The frame index is then - * advanced one frame until it reaches the end of the set, then it starts from the start - * again. Cycling frames like this allows you to create varied bullet effects via - * sprite sheets. - * @type {boolean} - */ - this.bulletFrameCycle = false; - - /** - * Should the Bullets wrap around the world bounds? This automatically calls - * `World.wrap` on the Bullet each frame. See the docs for that method for details. - * @type {boolean} - */ - this.bulletWorldWrap = false; - - /** - * If `bulletWorldWrap` is true then you can provide an optional padding value with this - * property. It's added to the calculations determining when the Bullet should wrap around - * the world or not. The value is given in pixels. - * @type {integer} - */ - this.bulletWorldWrapPadding = 0; - - /** - * An optional angle offset applied to the Bullets when they are launched. - * This is useful if for example your bullet sprites have been drawn facing up, instead of - * to the right, and you want to fire them at an angle. In which case you can set the - * angle offset to be 90 and they'll be properly rotated when fired. - * @type {number} - */ - this.bulletAngleOffset = 0; - - /** - * This is a variance added to the angle of Bullets when they are fired. - * If you fire from an angle of 90 and have a `bulletAngleVariance` of 20 then the actual - * angle of the Bullets will be between 70 and 110 degrees. This is a quick way to add a - * great 'spread' effect to a Weapon. - * @type {number} - */ - this.bulletAngleVariance = 0; - - /** - * The speed at which the bullets are fired. This value is given in pixels per second, and - * is used to set the starting velocity of the bullets. - * @type {number} - */ - this.bulletSpeed = 200; - - /** - * This is a variance added to the speed of Bullets when they are fired. - * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 - * then the actual speed of the Bullets will be between 150 and 250 pixels per second. - * @type {number} - */ - this.bulletSpeedVariance = 0; - - /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount - * of lifespan the Bullets have set on launch. The value is given in milliseconds. - * When a Bullet hits its lifespan limit it will be automatically killed. - * @type {number} - */ - this.bulletLifespan = 0; - - /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance - * the Bullet can travel before it is automatically killed. The distance is given in pixels. - * @type {number} - */ - this.bulletKillDistance = 0; - - /** - * This is the amount of gravity added to the Bullets physics body when fired. - * Gravity is expressed in pixels / second / second. - * @type {Phaser.Point} - */ - this.bulletGravity = new Phaser.Point(0, 0); - - /** - * Bullets can optionally adjust their rotation in-flight to match their velocity. - * This can create the effect of a bullet 'pointing' to the path it is following, for example - * an arrow being fired from a bow, and works especially well when added to `bulletGravity`. - * @type {boolean} - */ - this.bulletRotateToVelocity = false; - - /** - * The Texture Key that the Bullets use when rendering. - * Changing this has no effect on bullets in-flight, only on newly spawned bullets. - * @type {string} - */ - this.bulletKey = ''; - - /** - * The Texture Frame that the Bullets use when rendering. - * Changing this has no effect on bullets in-flight, only on newly spawned bullets. - * @type {string|integer} - */ - this.bulletFrame = ''; - - /** - * Private var that holds the public `bulletClass` property. - * @type {object} - * @private - */ - this._bulletClass = Phaser.Bullet; - - /** - * Private var that holds the public `bulletCollideWorldBounds` property. - * @type {boolean} - * @private - */ - this._bulletCollideWorldBounds = false; - - /** - * Private var that holds the public `bulletKillType` property. - * @type {integer} - * @private - */ - this._bulletKillType = Phaser.Weapon.KILL_WORLD_BOUNDS; - - /** - * Holds internal data about custom bullet body sizes. - * - * @type {Object} - * @private - */ - this._data = { - customBody: false, - width: 0, - height: 0, - offsetX: 0, - offsetY: 0 - }; - - /** - * This Rectangle defines the bounds that are used when determining if a Bullet should be killed or not. - * It's used in combination with `Weapon.bulletKillType` when that is set to either `Phaser.Weapon.KILL_WEAPON_BOUNDS` - * or `Phaser.Weapon.KILL_STATIC_BOUNDS`. If you are not using either of these kill types then the bounds are ignored. - * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. - * - * @type {Phaser.Rectangle} - */ - this.bounds = new Phaser.Rectangle(); - - /** - * The Rectangle used to calculate the bullet bounds from. - * - * @type {Phaser.Rectangle} - * @private - */ - this.bulletBounds = game.world.bounds; - - /** - * This array stores the frames added via `Weapon.setBulletFrames`. - * - * @type {Array} - * @protected - */ - this.bulletFrames = []; - - /** - * The index of the frame within `Weapon.bulletFrames` that is currently being used. - * This value is only used if `Weapon.bulletFrameCycle` is set to `true`. - * @type {number} - * @private - */ - this.bulletFrameIndex = 0; - - /** - * An internal object that stores the animation data added via `Weapon.addBulletAnimation`. - * @type {Object} - * @private - */ - this.anims = {}; - - /** - * The onFire Signal is dispatched each time `Weapon.fire` is called, and a Bullet is - * _successfully_ launched. The callback is set two arguments: a reference to the bullet sprite itself, - * and a reference to the Weapon that fired the bullet. - * - * @type {Phaser.Signal} - */ - this.onFire = new Phaser.Signal(); - - /** - * The onKill Signal is dispatched each time a Bullet that is in-flight is killed. This can be the result - * of leaving the Weapon bounds, an expiring lifespan, or exceeding a specified distance. - * The callback is sent one argument: A reference to the bullet sprite itself. - * - * @type {Phaser.Signal} - */ - this.onKill = new Phaser.Signal(); - - /** - * The onFireLimit Signal is dispatched if `Weapon.fireLimit` is > 0, and a bullet launch takes the number - * of shots fired to equal the fire limit. - * The callback is sent two arguments: A reference to the Weapon that hit the limit, and the value of - * `Weapon.fireLimit`. - * - * @type {Phaser.Signal} - */ - this.onFireLimit = new Phaser.Signal(); - - /** - * The Sprite currently being tracked by the Weapon, if any. - * This is set via the `Weapon.trackSprite` method. - * - * @type {Phaser.Sprite|Object} - */ - this.trackedSprite = null; - - /** - * The Pointer currently being tracked by the Weapon, if any. - * This is set via the `Weapon.trackPointer` method. - * - * @type {Phaser.Pointer} - */ - this.trackedPointer = null; - - /** - * If the Weapon is tracking a Sprite, should it also track the Sprites rotation? - * This is useful for a game such as Asteroids, where you want the weapon to fire based - * on the sprites rotation. - * - * @type {boolean} - */ - this.trackRotation = false; - - /** - * The Track Offset is a Point object that allows you to specify a pixel offset that bullets use - * when launching from a tracked Sprite or Pointer. For example if you've got a bullet that is 2x2 pixels - * in size, but you're tracking a Sprite that is 32x32, then you can set `trackOffset.x = 16` to have - * the bullet launched from the center of the Sprite. - * - * @type {Phaser.Point} - */ - this.trackOffset = new Phaser.Point(); - - /** - * Internal firing rate time tracking variable. - * - * @type {number} - * @private - */ - this._nextFire = 0; - -}; - -Phaser.Weapon.prototype = Object.create(Phaser.Plugin.prototype); -Phaser.Weapon.prototype.constructor = Phaser.Weapon; - -/** -* A `bulletKillType` constant that stops the bullets from ever being destroyed automatically. -* @constant -* @type {integer} -*/ -Phaser.Weapon.KILL_NEVER = 0; - -/** -* A `bulletKillType` constant that automatically kills the bullets when their `bulletLifespan` expires. -* @constant -* @type {integer} -*/ -Phaser.Weapon.KILL_LIFESPAN = 1; - -/** -* A `bulletKillType` constant that automatically kills the bullets after they -* exceed the `bulletDistance` from their original firing position. -* @constant -* @type {integer} -*/ -Phaser.Weapon.KILL_DISTANCE = 2; - -/** -* A `bulletKillType` constant that automatically kills the bullets when they leave the `Weapon.bounds` rectangle. -* @constant -* @type {integer} -*/ -Phaser.Weapon.KILL_WEAPON_BOUNDS = 3; - -/** -* A `bulletKillType` constant that automatically kills the bullets when they leave the `Camera.bounds` rectangle. -* @constant -* @type {integer} -*/ -Phaser.Weapon.KILL_CAMERA_BOUNDS = 4; - -/** -* A `bulletKillType` constant that automatically kills the bullets when they leave the `World.bounds` rectangle. -* @constant -* @type {integer} -*/ -Phaser.Weapon.KILL_WORLD_BOUNDS = 5; - -/** -* A `bulletKillType` constant that automatically kills the bullets when they leave the `Weapon.bounds` rectangle. -* @constant -* @type {integer} -*/ -Phaser.Weapon.KILL_STATIC_BOUNDS = 6; - -/** -* This method performs two actions: First it will check to see if the `Weapon.bullets` Group exists or not, -* and if not it creates it, adding it the `group` given as the 4th argument. -* -* Then it will seed the bullet pool with the `quantity` number of Bullets, using the texture key and frame -* provided (if any). -* -* If for example you set the quantity to be 10, then this Weapon will only ever be able to have 10 bullets -* in-flight simultaneously. If you try to fire an 11th bullet then nothing will happen until one, or more, of -* the in-flight bullets have been killed, freeing them up for use by the Weapon again. -* -* If you do not wish to have a limit set, then pass in -1 as the quantity. In this instance the Weapon will -* keep increasing the size of the bullet pool as needed. It will never reduce the size of the pool however, -* so be careful it doesn't grow too large. -* -* You can either set the texture key and frame here, or via the `Weapon.bulletKey` and `Weapon.bulletFrame` -* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a -* single Weapon instance must share the same texture key however. -* -* @method Phaser.Weapon#createBullets -* @param {integer} [quantity=1] - The quantity of bullets to seed the Weapon with. If -1 it will set the pool to automatically expand. -* @param {string} [key] - The Game.cache key of the image that this Sprite will use. -* @param {integer|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. -* @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.createBullets = function (quantity, key, frame, group) { - - if (quantity === undefined) { quantity = 1; } - if (group === undefined) { group = this.game.world; } - - if (!this.bullets) - { - this.bullets = this.game.add.physicsGroup(Phaser.Physics.ARCADE, group); - this.bullets.classType = this._bulletClass; - } - - if (quantity !== 0) - { - if (quantity === -1) - { - this.autoExpandBulletsGroup = true; - quantity = 1; - } - - this.bullets.createMultiple(quantity, key, frame); - - this.bullets.setAll('data.bulletManager', this); - - this.bulletKey = key; - this.bulletFrame = frame; - } - - return this; - -}; - -/** -* Call a function on each in-flight bullet in this Weapon. -* -* See {@link Phaser.Group#forEachExists forEachExists} for more details. -* -* @method Phaser.Weapon#forEach -* @param {function} callback - The function that will be called for each applicable child. The child will be passed as the first argument. -* @param {object} callbackContext - The context in which the function should be called (usually 'this'). -* @param {...any} [args=(none)] - Additional arguments to pass to the callback function, after the child item. -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.forEach = function (callback, callbackContext) { - - this.bullets.forEachExists(callback, callbackContext, arguments); - - return this; - -}; - -/** -* Sets `Body.enable` to `false` on each bullet in this Weapon. -* This has the effect of stopping them in-flight should they be moving. -* It also stops them being able to be checked for collision. -* -* @method Phaser.Weapon#pauseAll -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.pauseAll = function () { - - this.bullets.setAll('body.enable', false); - - return this; - -}; - -/** -* Sets `Body.enable` to `true` on each bullet in this Weapon. -* This has the effect of resuming their motion should they be in-flight. -* It also enables them for collision checks again. -* -* @method Phaser.Weapon#resumeAll -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.resumeAll = function () { - - this.bullets.setAll('body.enable', true); - - return this; - -}; - -/** -* Calls `Bullet.kill` on every in-flight bullet in this Weapon. -* Also re-enables their physics bodies, should they have been disabled via `pauseAll`. -* -* @method Phaser.Weapon#killAll -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.killAll = function () { - - this.bullets.callAllExists('kill', true); - - this.bullets.setAll('body.enable', true); - - return this; - -}; - -/** -* Resets the `Weapon.shots` counter back to zero. This is used when you've set -* `Weapon.fireLimit`, and have hit (or just wish to reset) your limit. -* -* @method Phaser.Weapon#resetShots -* @param {integer} [newLimit] - Optionally set a new `Weapon.fireLimit`. -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.resetShots = function (newLimit) { - - this.shots = 0; - - if (newLimit !== undefined) - { - this.fireLimit = newLimit; - } - - return this; - -}; - -/** -* Destroys this Weapon. It removes itself from the PluginManager, destroys -* the bullets Group, and nulls internal references. -* -* @method Phaser.Weapon#destroy -*/ -Phaser.Weapon.prototype.destroy = function () { - - this.parent.remove(this, false); - - this.bullets.destroy(); - - this.game = null; - this.parent = null; - this.active = false; - this.visible = false; - -}; - -/** -* Internal update method, called by the PluginManager. -* -* @method Phaser.Weapon#update -* @protected -*/ -Phaser.Weapon.prototype.update = function () { - - if (this._bulletKillType === Phaser.Weapon.KILL_WEAPON_BOUNDS) - { - if (this.trackedSprite) - { - this.trackedSprite.updateTransform(); - this.bounds.centerOn(this.trackedSprite.worldPosition.x, this.trackedSprite.worldPosition.y); - } - else if (this.trackedPointer) - { - this.bounds.centerOn(this.trackedPointer.worldX, this.trackedPointer.worldY); - } - } - - if (this.autofire && this.game.time.now < this._nextFire) - { - this.fire(); - } - -}; - -/** -* Sets this Weapon to track the given Sprite, or any Object with a public `world` Point object. -* When a Weapon tracks a Sprite it will automatically update its `fireFrom` value to match the Sprites -* position within the Game World, adjusting the coordinates based on the offset arguments. -* -* This allows you to lock a Weapon to a Sprite, so that bullets are always launched from its location. -* -* Calling `trackSprite` will reset `Weapon.trackedPointer` to null, should it have been set, as you can -* only track _either_ a Sprite, or a Pointer, at once, but not both. -* -* @method Phaser.Weapon#trackSprite -* @param {Phaser.Sprite|Object} sprite - The Sprite to track the position of. -* @param {integer} [offsetX=0] - The horizontal offset from the Sprites position to be applied to the Weapon. -* @param {integer} [offsetY=0] - The vertical offset from the Sprites position to be applied to the Weapon. -* @param {boolean} [trackRotation=false] - Should the Weapon also track the Sprites rotation? -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.trackSprite = function (sprite, offsetX, offsetY, trackRotation) { - - if (offsetX === undefined) { offsetX = 0; } - if (offsetY === undefined) { offsetY = 0; } - if (trackRotation === undefined) { trackRotation = false; } - - this.trackedPointer = null; - this.trackedSprite = sprite; - this.trackRotation = trackRotation; - - this.trackOffset.set(offsetX, offsetY); - - return this; - -}; - -/** -* Sets this Weapon to track the given Pointer. -* When a Weapon tracks a Pointer it will automatically update its `fireFrom` value to match the Pointers -* position within the Game World, adjusting the coordinates based on the offset arguments. -* -* This allows you to lock a Weapon to a Pointer, so that bullets are always launched from its location. -* -* Calling `trackPointer` will reset `Weapon.trackedSprite` to null, should it have been set, as you can -* only track _either_ a Pointer, or a Sprite, at once, but not both. -* -* @method Phaser.Weapon#trackPointer -* @param {Phaser.Pointer} [pointer] - The Pointer to track the position of. Defaults to `Input.activePointer` if not specified. -* @param {integer} [offsetX=0] - The horizontal offset from the Pointers position to be applied to the Weapon. -* @param {integer} [offsetY=0] - The vertical offset from the Pointers position to be applied to the Weapon. -* @return {Phaser.Weapon} This Weapon instance. -*/ -Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) { - - if (pointer === undefined) { pointer = this.game.input.activePointer; } - if (offsetX === undefined) { offsetX = 0; } - if (offsetY === undefined) { offsetY = 0; } - - this.trackedPointer = pointer; - this.trackedSprite = null; - this.trackRotation = false; - - this.trackOffset.set(offsetX, offsetY); - - return this; - -}; - -/** -* Attempts to fire a single Bullet. If there are no more bullets available in the pool, and the pool cannot be extended, -* then this method returns `false`. It will also return false if not enough time has expired since the last time -* the Weapon was fired, as defined in the `Weapon.fireRate` property. -* -* Otherwise the first available bullet is selected and launched. -* -* The arguments are all optional, but allow you to control both where the bullet is launched from, and aimed at. -* -* If you don't provide any of the arguments then it uses those set via properties such as `Weapon.trackedSprite`, -* `Weapon.bulletAngle` and so on. -* -* When the bullet is launched it has its texture and frame updated, as required. The velocity of the bullet is -* calculated based on Weapon properties like `bulletSpeed`. -* -* @method Phaser.Weapon#fire -* @param {Phaser.Sprite|Phaser.Point|Object} [from] - Optionally fires the bullet **from** the `x` and `y` properties of this object. If set this overrides `Weapon.trackedSprite` or `trackedPointer`. Pass `null` to ignore it. -* @param {number} [x] - The x coordinate, in world space, to fire the bullet **towards**. If left as `undefined` the bullet direction is based on its angle. -* @param {number} [y] - The y coordinate, in world space, to fire the bullet **towards**. If left as `undefined` the bullet direction is based on its angle. -* @return {boolean} True if a bullet was successfully fired, otherwise false. -*/ -Phaser.Weapon.prototype.fire = function (from, x, y) { - - if (this.game.time.now < this._nextFire || (this.fireLimit > 0 && this.shots === this.fireLimit)) - { - return false; - } - - var speed = this.bulletSpeed; - - // Apply +- speed variance - if (this.bulletSpeedVariance !== 0) - { - speed += Phaser.Math.between(-this.bulletSpeedVariance, this.bulletSpeedVariance); - } - - if (from) - { - if (this.fireFrom.width > 1) - { - this.fireFrom.centerOn(from.x, from.y); - } - else - { - this.fireFrom.x = from.x; - this.fireFrom.y = from.y; - } - } - else if (this.trackedSprite) - { - if (this.fireFrom.width > 1) - { - this.fireFrom.centerOn(this.trackedSprite.world.x + this.trackOffset.x, this.trackedSprite.world.y + this.trackOffset.y); - } - else - { - this.fireFrom.x = this.trackedSprite.world.x + this.trackOffset.x; - this.fireFrom.y = this.trackedSprite.world.y + this.trackOffset.y; - } - - if (this.bulletInheritSpriteSpeed) - { - speed += this.trackedSprite.body.speed; - } - } - else if (this.trackedPointer) - { - if (this.fireFrom.width > 1) - { - this.fireFrom.centerOn(this.trackedPointer.world.x + this.trackOffset.x, this.trackedPointer.world.y + this.trackOffset.y); - } - else - { - this.fireFrom.x = this.trackedPointer.world.x + this.trackOffset.x; - this.fireFrom.y = this.trackedPointer.world.y + this.trackOffset.y; - } - } - - var fromX = (this.fireFrom.width > 1) ? this.fireFrom.randomX : this.fireFrom.x; - var fromY = (this.fireFrom.height > 1) ? this.fireFrom.randomY : this.fireFrom.y; - - var angle = (this.trackRotation) ? this.trackedSprite.angle : this.fireAngle; - - // The position (in world space) to fire the bullet towards, if set - if (x !== undefined && y !== undefined) - { - angle = this.game.math.radToDeg(Math.atan2(y - fromY, x - fromX)); - } - - // Apply +- angle variance - if (this.bulletAngleVariance !== 0) - { - angle += Phaser.Math.between(-this.bulletAngleVariance, this.bulletAngleVariance); - } - - var moveX = 0; - var moveY = 0; - - // Avoid sin/cos for right-angled shots - if (angle === 0 || angle === 180) - { - moveX = Math.cos(this.game.math.degToRad(angle)) * speed; - } - else if (angle === 90 || angle === 270) - { - moveY = Math.sin(this.game.math.degToRad(angle)) * speed; - } - else - { - moveX = Math.cos(this.game.math.degToRad(angle)) * speed; - moveY = Math.sin(this.game.math.degToRad(angle)) * speed; - } - - var bullet = null; - - if (this.autoExpandBulletsGroup) - { - bullet = this.bullets.getFirstExists(false, true, fromX, fromY, this.bulletKey, this.bulletFrame); - - bullet.data.bulletManager = this; - } - else - { - bullet = this.bullets.getFirstExists(false); - } - - if (bullet) - { - bullet.reset(fromX, fromY); - - bullet.data.fromX = fromX; - bullet.data.fromY = fromY; - bullet.data.killType = this.bulletKillType; - bullet.data.killDistance = this.bulletKillDistance; - bullet.data.rotateToVelocity = this.bulletRotateToVelocity; - - if (this.bulletKillType === Phaser.Weapon.KILL_LIFESPAN) - { - bullet.lifespan = this.bulletLifespan; - } - - bullet.angle = angle + this.bulletAngleOffset; - - // Frames and Animations - if (this.bulletAnimation !== '') - { - if (bullet.animations.getAnimation(this.bulletAnimation) === null) - { - var anim = this.anims[this.bulletAnimation]; - - bullet.animations.add(anim.name, anim.frames, anim.frameRate, anim.loop, anim.useNumericIndex); - } - - bullet.animations.play(this.bulletAnimation); - } - else - { - if (this.bulletFrameCycle) - { - bullet.frame = this.bulletFrames[this.bulletFrameIndex]; - - this.bulletFrameIndex++; - - if (this.bulletFrameIndex >= this.bulletFrames.length) - { - this.bulletFrameIndex = 0; - } - } - else if (this.bulletFrameRandom) - { - bullet.frame = this.bulletFrames[Math.floor(Math.random() * this.bulletFrames.length)]; - } - } - - if (bullet.data.bodyDirty) - { - if (this._data.customBody) - { - bullet.body.setSize(this._data.width, this._data.height, this._data.offsetX, this._data.offsetY); - } - - bullet.body.collideWorldBounds = this.bulletCollideWorldBounds; - - bullet.data.bodyDirty = false; - } - - bullet.body.velocity.set(moveX, moveY); - bullet.body.gravity.set(this.bulletGravity.x, this.bulletGravity.y); - - this._nextFire = this.game.time.now + this.fireRate; - - this.shots++; - - this.onFire.dispatch(bullet, this, speed); - - if (this.fireLimit > 0 && this.shots === this.fireLimit) - { - this.onFireLimit.dispatch(this, this.fireLimit); - } - - } - -}; - -/** -* Fires a bullet **at** the given Pointer. The bullet will be launched from the `Weapon.fireFrom` position, -* or from a Tracked Sprite or Pointer, if you have one set. -* -* @method Phaser.Weapon#fireAtPointer -* @param {Phaser.Pointer} [pointer] - The Pointer to fire the bullet towards. -* @return {boolean} True if a bullet was successfully fired, otherwise false. -*/ -Phaser.Weapon.prototype.fireAtPointer = function (pointer) { - - if (pointer === undefined) { pointer = this.game.input.activePointer; } - - return this.fire(null, pointer.worldX, pointer.worldY); - -}; - -/** -* Fires a bullet **at** the given Sprite. The bullet will be launched from the `Weapon.fireFrom` position, -* or from a Tracked Sprite or Pointer, if you have one set. -* -* @method Phaser.Weapon#fireAtSprite -* @param {Phaser.Sprite} [sprite] - The Sprite to fire the bullet towards. -* @return {boolean} True if a bullet was successfully fired, otherwise false. -*/ -Phaser.Weapon.prototype.fireAtSprite = function (sprite) { - - return this.fire(null, sprite.world.x, sprite.world.y); - -}; - -/** -* Fires a bullet **at** the given coordinates. The bullet will be launched from the `Weapon.fireFrom` position, -* or from a Tracked Sprite or Pointer, if you have one set. -* -* @method Phaser.Weapon#fireAtXY -* @param {number} [x] - The x coordinate, in world space, to fire the bullet towards. -* @param {number} [y] - The y coordinate, in world space, to fire the bullet towards. -* @return {boolean} True if a bullet was successfully fired, otherwise false. -*/ -Phaser.Weapon.prototype.fireAtXY = function (x, y) { - - return this.fire(null, x, y); - -}; - -/** -* You can modify the size of the physics Body the Bullets use to be any dimension you need. -* This allows you to make it smaller, or larger, than the parent Sprite. -* You can also control the x and y offset of the Body. This is the position of the -* Body relative to the top-left of the Sprite _texture_. -* -* For example: If you have a Sprite with a texture that is 80x100 in size, -* and you want the physics body to be 32x32 pixels in the middle of the texture, you would do: -* -* `setSize(32, 32, 24, 34)` -* -* Where the first two parameters is the new Body size (32x32 pixels). -* 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 -* is the vertical offset. -* -* @method Phaser.Weapon#setBulletBodyOffset -* @param {number} width - The width of the Body. -* @param {number} height - The height of the Body. -* @param {number} [offsetX] - The X offset of the Body from the top-left of the Sprites texture. -* @param {number} [offsetY] - The Y offset of the Body from the top-left of the Sprites texture. -* @return {Phaser.Weapon} The Weapon Plugin. -*/ -Phaser.Weapon.prototype.setBulletBodyOffset = function (width, height, offsetX, offsetY) { - - if (offsetX === undefined) { offsetX = 0; } - if (offsetY === undefined) { offsetY = 0; } - - this._data.customBody = true; - this._data.width = width; - this._data.height = height; - this._data.offsetX = offsetX; - this._data.offsetY = offsetY; - - // Update all bullets in the pool - this.bullets.callAll('body.setSize', 'body', width, height, offsetX, offsetY); - this.bullets.setAll('data.bodyDirty', false); - - return this; - -}; - -/** -* Sets the texture frames that the bullets can use when being launched. -* -* This is intended for use when you've got numeric based frames, such as those loaded via a Sprite Sheet. -* -* It works by calling `Phaser.ArrayUtils.numberArray` internally, using the min and max values -* provided. Then it sets the frame index to be zero. -* -* You can optionally set the cycle and random booleans, to allow bullets to cycle through the frames -* when they're fired, or pick one at random. -* -* @method Phaser.Weapon#setBulletFrames -* @param {integer} min - The minimum value the frame can be. Usually zero. -* @param {integer} max - The maximum value the frame can be. -* @param {boolean} [cycle=true] - Should the bullet frames cycle as they are fired? -* @param {boolean} [random=false] - Should the bullet frames be picked at random as they are fired? -* @return {Phaser.Weapon} The Weapon Plugin. -*/ -Phaser.Weapon.prototype.setBulletFrames = function (min, max, cycle, random) { - - if (cycle === undefined) { cycle = true; } - if (random === undefined) { random = false; } - - this.bulletFrames = Phaser.ArrayUtils.numberArray(min, max); - - this.bulletFrameIndex = 0; - - this.bulletFrameCycle = cycle; - this.bulletFrameRandom = random; - - return this; - -}; - -/** -* Adds a new animation under the given key. Optionally set the frames, frame rate and loop. -* The arguments are all the same as for `Animation.add`, and work in the same way. -* -* `Weapon.bulletAnimation` will be set to this animation after it's created. From that point on, all -* bullets fired will play using this animation. You can swap between animations by calling this method -* several times, and then just changing the `Weapon.bulletAnimation` property to the name of the animation -* you wish to play for the next launched bullet. -* -* If you wish to stop using animations at all, set `Weapon.bulletAnimation` to '' (an empty string). -* -* @method Phaser.Weapon#addBulletAnimation -* @param {string} name - The unique (within the Weapon instance) name for the animation, i.e. "fire", "blast". -* @param {Array} [frames=null] - An array of numbers/strings that correspond to the frames to add to this animation and in which order. e.g. [1, 2, 3] or ['run0', 'run1', run2]). If null then all frames will be used. -* @param {number} [frameRate=60] - The speed at which the animation should play. The speed is given in frames per second. -* @param {boolean} [loop=false] - Whether or not the animation is looped or just plays once. -* @param {boolean} [useNumericIndex=true] - Are the given frames using numeric indexes (default) or strings? -* @return {Phaser.Weapon} The Weapon Plugin. -*/ -Phaser.Weapon.prototype.addBulletAnimation = function (name, frames, frameRate, loop, useNumericIndex) { - - this.anims[name] = { - name: name, - frames: frames, - frameRate: frameRate, - loop: loop, - useNumericIndex: useNumericIndex - }; - - // Add the animation to any existing bullets in the pool - this.bullets.callAll('animations.add', 'animations', name, frames, frameRate, loop, useNumericIndex); - - this.bulletAnimation = name; - - return this; - -}; - -/** -* Uses `Game.Debug` to draw some useful information about this Weapon, including the number of bullets -* both in-flight, and available. And optionally the physics debug bodies of the bullets. -* -* @method Phaser.Weapon#debug -* @param {integer} [x=16] - The coordinate, in screen space, at which to draw the Weapon debug data. -* @param {integer} [y=32] - The coordinate, in screen space, at which to draw the Weapon debug data. -* @param {boolean} [debugBodies=false] - Optionally draw the physics body of every bullet in-flight. -*/ -Phaser.Weapon.prototype.debug = function (x, y, debugBodies) { - - if (x === undefined) { x = 16; } - if (y === undefined) { y = 32; } - if (debugBodies === undefined) { debugBodies = false; } - - this.game.debug.text("Weapon Plugin", x, y); - this.game.debug.text("Bullets Alive: " + this.bullets.total + " - Total: " + this.bullets.length, x, y + 24); - - if (debugBodies) - { - this.bullets.forEachExists(this.game.debug.body, this.game.debug, 'rgba(255, 0, 255, 0.8)'); - } - -}; - -/** -* The Class of the bullets that are launched by this Weapon. Defaults `Phaser.Bullet`, but can be -* overridden before calling `createBullets` and set to your own class type. -* -* @name Phaser.Weapon#bulletClass -* @property {Object} bulletClass -*/ -Object.defineProperty(Phaser.Weapon.prototype, "bulletClass", { - - get: function () { - - return this._bulletClass; - - }, - - set: function (classType) { - - this._bulletClass = classType; - - this.bullets.classType = this._bulletClass; - - } - -}); - -/** -* This controls how the bullets will be killed. The default is `Phaser.Weapon.KILL_WORLD_BOUNDS`. -* -* There are 7 different "kill types" available: -* -* * `Phaser.Weapon.KILL_NEVER` -* The bullets are never destroyed by the Weapon. It's up to you to destroy them via your own code. -* -* * `Phaser.Weapon.KILL_LIFESPAN` -* The bullets are automatically killed when their `bulletLifespan` amount expires. -* -* * `Phaser.Weapon.KILL_DISTANCE` -* The bullets are automatically killed when they exceed `bulletDistance` pixels away from their original launch position. -* -* * `Phaser.Weapon.KILL_WEAPON_BOUNDS` -* The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. -* -* * `Phaser.Weapon.KILL_CAMERA_BOUNDS` -* The bullets are automatically killed when they no longer intersect with the `Camera.bounds` rectangle. -* -* * `Phaser.Weapon.KILL_WORLD_BOUNDS` -* The bullets are automatically killed when they no longer intersect with the `World.bounds` rectangle. -* -* * `Phaser.Weapon.KILL_STATIC_BOUNDS` -* The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. -* The difference between static bounds and weapon bounds, is that a static bounds will never be adjusted to -* match the position of a tracked sprite or pointer. -* -* @name Phaser.Weapon#bulletKillType -* @property {integer} bulletKillType -*/ -Object.defineProperty(Phaser.Weapon.prototype, "bulletKillType", { - - get: function () { - - return this._bulletKillType; - - }, - - set: function (type) { - - switch (type) - { - case Phaser.Weapon.KILL_STATIC_BOUNDS: - case Phaser.Weapon.KILL_WEAPON_BOUNDS: - this.bulletBounds = this.bounds; - break; - - case Phaser.Weapon.KILL_CAMERA_BOUNDS: - this.bulletBounds = this.game.camera.view; - break; - - case Phaser.Weapon.KILL_WORLD_BOUNDS: - this.bulletBounds = this.game.world.bounds; - break; - } - - this._bulletKillType = type; - - } - -}); - -/** -* Should bullets collide with the World bounds or not? -* -* @name Phaser.Weapon#bulletCollideWorldBounds -* @property {boolean} bulletCollideWorldBounds -*/ -Object.defineProperty(Phaser.Weapon.prototype, "bulletCollideWorldBounds", { - - get: function () { - - return this._bulletCollideWorldBounds; - - }, - - set: function (value) { - - this._bulletCollideWorldBounds = value; - - this.bullets.setAll('body.collideWorldBounds', value); - this.bullets.setAll('data.bodyDirty', false); - - } - -}); - -/** -* The x coordinate from which bullets are fired. This is the same as `Weapon.fireFrom.x`, and -* can be overridden by the `Weapon.fire` arguments. -* -* @name Phaser.Weapon#x -* @property {number} x -*/ -Object.defineProperty(Phaser.Weapon.prototype, "x", { - - get: function () { - - return this.fireFrom.x; - - }, - - set: function (value) { - - this.fireFrom.x = value; - } - -}); - -/** -* The y coordinate from which bullets are fired. This is the same as `Weapon.fireFrom.y`, and -* can be overridden by the `Weapon.fire` arguments. -* -* @name Phaser.Weapon#y -* @property {number} y -*/ -Object.defineProperty(Phaser.Weapon.prototype, "y", { - - get: function () { - - return this.fireFrom.y; - - }, - - set: function (value) { - - this.fireFrom.y = value; - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Create a new `Bullet` object. Bullets are used by the `Phaser.Weapon` class, and are normal Sprites, -* with a few extra properties in the data object to handle Weapon specific features. -* -* @class Phaser.Bullet -* @constructor -* @extends Phaser.Sprite -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Bullet = function (game, x, y, key, frame) { - - Phaser.Sprite.call(this, game, x, y, key, frame); - - this.anchor.set(0.5); - - this.data = { - bulletManager: null, - fromX: 0, - fromY: 0, - bodyDirty: true, - rotateToVelocity: false, - killType: 0, - killDistance: 0 - }; - -}; - -Phaser.Bullet.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.Bullet.prototype.constructor = Phaser.Bullet; - -/** -* Kills the Bullet, freeing it up for re-use by the Weapon bullet pool. -* Also dispatches the `Weapon.onKill` signal. -* -* @method Phaser.Bullet#kill -* @memberof Phaser.Bullet -*/ -Phaser.Bullet.prototype.kill = function () { - - this.alive = false; - this.exists = false; - this.visible = false; - - this.data.bulletManager.onKill.dispatch(this); - - return this; - -}; - -/** -* Updates the Bullet, killing as required. -* -* @method Phaser.Bullet#kill -* @memberof Phaser.Bullet -*/ -Phaser.Bullet.prototype.update = function () { - - if (!this.exists) - { - return; - } - - if (this.data.killType > Phaser.Weapon.KILL_LIFESPAN) - { - if (this.data.killType === Phaser.Weapon.KILL_DISTANCE) - { - if (this.game.physics.arcade.distanceToXY(this, this.data.fromX, this.data.fromY, true) > this.data.killDistance) - { - this.kill(); - } - } - else - { - if (!this.data.bulletManager.bulletBounds.intersects(this)) - { - this.kill(); - } - } - } - - if (this.data.rotateToVelocity) - { - this.rotation = Math.atan2(this.body.velocity.y, this.body.velocity.x); - } - - if (this.data.bulletManager.bulletWorldWrap) - { - this.game.world.wrap(this, this.data.bulletManager.bulletWorldWrapPadding); - } - -}; - -/** -* @author Richard Davey -* @author Kestrel Moon Studios -* @copyright 2016 Photon Storm Ltd and Kestrel Moon Studios -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Creature is a custom Game Object used in conjunction with the Creature Runtime libraries by Kestrel Moon Studios. -* -* It allows you to display animated Game Objects that were created with the [Creature Automated Animation Tool](http://www.kestrelmoon.com/creature/). -* -* Note 1: You can only use Phaser.Creature objects in WebGL enabled games. They do not work in Canvas mode games. -* -* Note 2: You must use a build of Phaser that includes the CreatureMeshBone.js runtime and gl-matrix.js, or have them -* loaded before your Phaser game boots. -* -* See the Phaser custom build process for more details. -* -* By default the Creature runtimes are NOT included in any pre-configured version of Phaser. -* -* So you'll need to do `grunt custom` to create a build that includes them. -* -* @class Phaser.Creature -* @extends PIXI.DisplayObjectContainer -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.Reset -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate of the Game Object. The coordinate is relative to any parent container this Game Object may be in. -* @param {number} y - The y coordinate of the Game Object. The coordinate is relative to any parent container this Game Object may be in. -* @param {string|PIXI.Texture} key - The texture used by the Creature Object during rendering. It can be a string which is a reference to the Cache entry, or an instance of a PIXI.Texture. -* @param {string} mesh - The mesh data for the Creature Object. It should be a string which is a reference to the Cache JSON entry. -* @param {string} [animation='default'] - The animation within the mesh data to play. -*/ -Phaser.Creature = function (game, x, y, key, mesh, animation) { - - if (animation === undefined) { animation = 'default'; } - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.CREATURE; - - if (!game.cache.checkJSONKey(mesh)) - { - console.warn('Phaser.Creature: Invalid mesh key given. Not found in Phaser.Cache'); - return; - } - - var meshData = game.cache.getJSON(mesh); - - /** - * @property {Creature} _creature - The Creature instance. - * @private - */ - this._creature = new Creature(meshData); - - /** - * @property {CreatureAnimation} animation - The CreatureAnimation instance. - */ - this.animation = new CreatureAnimation(meshData, animation, this._creature); - - /** - * @property {CreatureManager} manager - The CreatureManager instance for this object. - */ - this.manager = new CreatureManager(this._creature); - - /** - * @property {number} timeDelta - How quickly the animation advances. - * @default - */ - this.timeDelta = 0.05; - - if (typeof key === 'string') - { - var texture = new PIXI.Texture(game.cache.getBaseTexture(key)); - } - else - { - var texture = key; - } - - /** - * @property {PIXI.Texture} texture - The texture the animation is using. - */ - this.texture = texture; - - PIXI.DisplayObjectContainer.call(this); - - this.dirty = true; - this.blendMode = PIXI.blendModes.NORMAL; - - /** - * @property {Phaser.Point} creatureBoundsMin - The minimum bounds point. - * @protected - */ - this.creatureBoundsMin = new Phaser.Point(); - - /** - * @property {Phaser.Point} creatureBoundsMax - The maximum bounds point. - * @protected - */ - this.creatureBoundsMax = new Phaser.Point(); - - var target = this.manager.target_creature; - - /** - * @property {PIXI.Float32Array} vertices - The vertices data. - * @protected - */ - this.vertices = new PIXI.Float32Array(target.total_num_pts * 2); - - /** - * @property {PIXI.Float32Array} uvs - The UV data. - * @protected - */ - this.uvs = new PIXI.Float32Array(target.total_num_pts * 2); - - /** - * @property {PIXI.Uint16Array} indices - * @protected - */ - this.indices = new PIXI.Uint16Array(target.global_indices.length); - - for (var i = 0; i < this.indices.length; i++) - { - this.indices[i] = target.global_indices[i]; - } - - /** - * @property {PIXI.Uint16Array} colors - The vertices colors - * @protected - */ - this.colors = new PIXI.Float32Array([1, 1, 1, 1]); - - this.updateRenderData(target.global_pts, target.global_uvs); - - this.manager.AddAnimation(this.animation); - this.manager.SetActiveAnimationName(animation, false); - - Phaser.Component.Core.init.call(this, game, x, y); - -}; - -Phaser.Creature.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -Phaser.Creature.prototype.constructor = Phaser.Creature; - -Phaser.Component.Core.install.call(Phaser.Creature.prototype, [ - 'Angle', - 'AutoCull', - 'BringToTop', - 'Destroy', - 'FixedToCamera', - 'LifeSpan', - 'Reset' -]); - -Phaser.Creature.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Creature.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Creature#preUpdate -* @memberof Phaser.Creature -*/ -Phaser.Creature.prototype.preUpdate = function () { - - if (!this.preUpdateInWorld()) - { - return false; - } - - this.manager.Update(this.timeDelta); - - this.updateData(); - - return this.preUpdateCore(); - -}; - -/** -* -* -* @method Phaser.Creature#_initWebGL -* @memberof Phaser.Creature -* @private -*/ -Phaser.Creature.prototype._initWebGL = function (renderSession) { - - // build the strip! - var gl = renderSession.gl; - - this._vertexBuffer = gl.createBuffer(); - this._indexBuffer = gl.createBuffer(); - this._uvBuffer = gl.createBuffer(); - this._colorBuffer = gl.createBuffer(); - - gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); - - gl.bindBuffer(gl.ARRAY_BUFFER, this._uvBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.uvs, gl.DYNAMIC_DRAW); - - gl.bindBuffer(gl.ARRAY_BUFFER, this._colorBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.colors, gl.STATIC_DRAW); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); - -}; - -/** -* @method Phaser.Creature#_renderWebGL -* @memberof Phaser.Creature -* @private -*/ -Phaser.Creature.prototype._renderWebGL = function (renderSession) { - - // If the sprite is not visible or the alpha is 0 then no need to render this element - if (!this.visible || this.alpha <= 0) - { - return; - } - - renderSession.spriteBatch.stop(); - - // init! init! - if (!this._vertexBuffer) - { - this._initWebGL(renderSession); - } - - renderSession.shaderManager.setShader(renderSession.shaderManager.stripShader); - - this._renderCreature(renderSession); - - renderSession.spriteBatch.start(); - -}; - -/** -* @method Phaser.Creature#_renderCreature -* @memberof Phaser.Creature -* @private -*/ -Phaser.Creature.prototype._renderCreature = function (renderSession) { - - var gl = renderSession.gl; - - var projection = renderSession.projection; - var offset = renderSession.offset; - var shader = renderSession.shaderManager.stripShader; - - renderSession.blendModeManager.setBlendMode(this.blendMode); - - // Set uniforms - gl.uniformMatrix3fv(shader.translationMatrix, false, this.worldTransform.toArray(true)); - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - gl.uniform1f(shader.alpha, this.worldAlpha); - - if (!this.dirty) - { - gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer); - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertices); - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 0, 0); - - // Update the uvs - gl.bindBuffer(gl.ARRAY_BUFFER, this._uvBuffer); - gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, 0, 0); - - gl.activeTexture(gl.TEXTURE0); - - // Check if a texture is dirty.. - if (this.texture.baseTexture._dirty[gl.id]) - { - renderSession.renderer.updateTexture(this.texture.baseTexture); - } - else - { - // Bind the current texture - gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); - } - - // Don't need to upload! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer); - } - else - { - this.dirty = false; - - gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 0, 0); - - // Update the uvs - gl.bindBuffer(gl.ARRAY_BUFFER, this._uvBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.uvs, gl.DYNAMIC_DRAW); - gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, 0, 0); - - gl.activeTexture(gl.TEXTURE0); - - // Check if a texture is dirty - if (this.texture.baseTexture._dirty[gl.id]) - { - renderSession.renderer.updateTexture(this.texture.baseTexture); - } - else - { - gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); - } - - // Don't need to upload! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); - } - - gl.drawElements(gl.TRIANGLES, this.indices.length, gl.UNSIGNED_SHORT, 0); - -}; - -/** -* @method Phaser.Creature#updateCreatureBounds -* @memberof Phaser.Creature -* @private -*/ -Phaser.Creature.prototype.updateCreatureBounds = function () { - - // Update bounds based off world transform matrix - var target = this.manager.target_creature; - - target.ComputeBoundaryMinMax(); - - this.creatureBoundsMin.set(target.boundary_min[0], -target.boundary_min[1]); - this.creatureBoundsMax.set(target.boundary_max[0], -target.boundary_max[1]); - - this.worldTransform.apply(this.creatureBoundsMin, this.creatureBoundsMin); - this.worldTransform.apply(this.creatureBoundsMax, this.creatureBoundsMax); - -}; - -/** -* @method Phaser.Creature#updateData -* @memberof Phaser.Creature -* @private -*/ -Phaser.Creature.prototype.updateData = function () { - - var target = this.manager.target_creature; - - var read_pts = target.render_pts; - var read_uvs = target.global_uvs; - - this.updateRenderData(read_pts, read_uvs); - this.updateCreatureBounds(); - - this.dirty = true; - -}; - -/** -* @method Phaser.Creature#updateRenderData -* @memberof Phaser.Creature -* @private -*/ -Phaser.Creature.prototype.updateRenderData = function (verts, uvs) { - - var target = this.manager.target_creature; - - var pt_index = 0; - var uv_index = 0; - - var write_pt_index = 0; - - for (var i = 0; i < target.total_num_pts; i++) - { - this.vertices[write_pt_index] = verts[pt_index]; - this.vertices[write_pt_index + 1] = -verts[pt_index + 1]; - - this.uvs[uv_index] = uvs[uv_index]; - this.uvs[uv_index + 1] = uvs[uv_index + 1]; - - pt_index += 3; - uv_index += 2; - - write_pt_index += 2; - } - -}; - -/** -* Sets the Animation this Creature object will play, as defined in the mesh data. -* -* @method Phaser.Creature#setAnimation -* @memberof Phaser.Creature -* @param {string} key - The key of the animation to set, as defined in the mesh data. -*/ -Phaser.Creature.prototype.setAnimation = function (key) { - - this.manager.SetActiveAnimationName(key, true); - -}; - -/** -* Plays the currently set animation. -* -* @method Phaser.Creature#play -* @memberof Phaser.Creature -* @param {boolean} [loop=false] - Should the animation loop? -*/ -Phaser.Creature.prototype.play = function (loop) { - - if (loop === undefined) { loop = false; } - - this.loop = loop; - - this.manager.SetIsPlaying(true); - this.manager.RunAtTime(0); - -}; - -/** -* Stops the currently playing animation. -* -* @method Phaser.Creature#stop -* @memberof Phaser.Creature -*/ -Phaser.Creature.prototype.stop = function () { - - this.manager.SetIsPlaying(false); - -}; - -/** -* @name Phaser.Creature#isPlaying -* @property {boolean} isPlaying - Is the _current_ animation playing? -*/ -Object.defineProperty(Phaser.Creature.prototype, 'isPlaying', { - - get: function() { - - return this.manager.GetIsPlaying(); - - }, - - set: function(value) { - - this.manager.SetIsPlaying(value); - - } - -}); - -/** -* @name Phaser.Creature#loop -* @property {boolean} loop - Should the _current_ animation loop or not? -*/ -Object.defineProperty(Phaser.Creature.prototype, 'loop', { - - get: function() { - - return this.manager.should_loop; - - }, - - set: function(value) { - - this.manager.SetShouldLoop(value); - - } - -}); - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Video object that takes a previously loaded Video from the Phaser Cache and handles playback of it. -* -* Alternatively it takes a getUserMedia feed from an active webcam and streams the contents of that to -* the Video instead (see `startMediaStream` method) -* -* The video can then be applied to a Sprite as a texture. If multiple Sprites share the same Video texture and playback -* changes (i.e. you pause the video, or seek to a new time) then this change will be seen across all Sprites simultaneously. -* -* Due to a bug in IE11 you cannot play a video texture to a Sprite in WebGL. For IE11 force Canvas mode. -* -* If you need each Sprite to be able to play a video fully independently then you will need one Video object per Sprite. -* Please understand the obvious performance implications of doing this, and the memory required to hold videos in RAM. -* -* On some mobile browsers such as iOS Safari, you cannot play a video until the user has explicitly touched the screen. -* This works in the same way as audio unlocking. Phaser will handle the touch unlocking for you, however unlike with audio -* it's worth noting that every single Video needs to be touch unlocked, not just the first one. You can use the `changeSource` -* method to try and work around this limitation, but see the method help for details. -* -* Small screen devices, especially iPod and iPhone will launch the video in its own native video player, -* outside of the Safari browser. There is no way to avoid this, it's a device imposed limitation. -* -* Note: On iOS if you need to detect when the user presses the 'Done' button (before the video ends) -* then you need to add your own event listener -* -* @class Phaser.Video -* @constructor -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {string|null} [key=null] - The key of the video file in the Phaser.Cache that this Video object will play. Set to `null` or leave undefined if you wish to use a webcam as the source. See `startMediaStream` to start webcam capture. -* @param {string|null} [url=null] - If the video hasn't been loaded then you can provide a full URL to the file here (make sure to set key to null) -*/ -Phaser.Video = function (game, key, url) { - - if (key === undefined) { key = null; } - if (url === undefined) { url = null; } - - /** - * @property {Phaser.Game} game - A reference to the currently running game. - */ - this.game = game; - - /** - * @property {string} key - The key of the Video in the Cache, if stored there. Will be `null` if this Video is using the webcam instead. - * @default null - */ - this.key = key; - - /** - * @property {number} width - The width of the video in pixels. - * @default - */ - this.width = 0; - - /** - * @property {number} height - The height of the video in pixels. - * @default - */ - this.height = 0; - - /** - * @property {number} type - The const type of this object. - * @default - */ - this.type = Phaser.VIDEO; - - /** - * @property {boolean} disableTextureUpload - If true this video will never send its image data to the GPU when its dirty flag is true. This only applies in WebGL. - */ - this.disableTextureUpload = false; - - /** - * @property {boolean} touchLocked - true if this video is currently locked awaiting a touch event. This happens on some mobile devices, such as iOS. - * @default - */ - this.touchLocked = false; - - /** - * @property {Phaser.Signal} onPlay - This signal is dispatched when the Video starts to play. It sends 3 parameters: a reference to the Video object, if the video is set to loop or not and the playback rate. - */ - this.onPlay = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onChangeSource - This signal is dispatched if the Video source is changed. It sends 3 parameters: a reference to the Video object and the new width and height of the new video source. - */ - this.onChangeSource = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onComplete - This signal is dispatched when the Video completes playback, i.e. enters an 'ended' state. On iOS specifically it also fires if the user hits the 'Done' button at any point during playback. Videos set to loop will never dispatch this signal. - */ - this.onComplete = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onAccess - This signal is dispatched if the user allows access to their webcam. - */ - this.onAccess = new Phaser.Signal(); - - /** - * @property {Phaser.Signal} onError - This signal is dispatched if an error occurs either getting permission to use the webcam (for a Video Stream) or when trying to play back a video file. - */ - this.onError = new Phaser.Signal(); - - /** - * This signal is dispatched if when asking for permission to use the webcam no response is given within a the Video.timeout limit. - * This may be because the user has picked `Not now` in the permissions window, or there is a delay in establishing the LocalMediaStream. - * @property {Phaser.Signal} onTimeout - */ - this.onTimeout = new Phaser.Signal(); - - /** - * @property {integer} timeout - The amount of ms allowed to elapsed before the Video.onTimeout signal is dispatched while waiting for webcam access. - * @default - */ - this.timeout = 15000; - - /** - * @property {integer} _timeOutID - setTimeout ID. - * @private - */ - this._timeOutID = null; - - /** - * @property {HTMLVideoElement} video - The HTML Video Element that is added to the document. - */ - this.video = null; - - /** - * @property {MediaStream} videoStream - The Video Stream data. Only set if this Video is streaming from the webcam via `startMediaStream`. - */ - this.videoStream = null; - - /** - * @property {boolean} isStreaming - Is there a streaming video source? I.e. from a webcam. - */ - this.isStreaming = false; - - /** - * When starting playback of a video Phaser will monitor its readyState using a setTimeout call. - * The setTimeout happens once every `Video.retryInterval` ms. It will carry on monitoring the video - * state in this manner until the `retryLimit` is reached and then abort. - * @property {integer} retryLimit - * @default - */ - this.retryLimit = 20; - - /** - * @property {integer} retry - The current retry attempt. - * @default - */ - this.retry = 0; - - /** - * @property {integer} retryInterval - The number of ms between each retry at monitoring the status of a downloading video. - * @default - */ - this.retryInterval = 500; - - /** - * @property {integer} _retryID - The callback ID of the retry setTimeout. - * @private - */ - this._retryID = null; - - /** - * @property {boolean} _codeMuted - Internal mute tracking var. - * @private - * @default - */ - this._codeMuted = false; - - /** - * @property {boolean} _muted - Internal mute tracking var. - * @private - * @default - */ - this._muted = false; - - /** - * @property {boolean} _codePaused - Internal paused tracking var. - * @private - * @default - */ - this._codePaused = false; - - /** - * @property {boolean} _paused - Internal paused tracking var. - * @private - * @default - */ - this._paused = false; - - /** - * @property {boolean} _pending - Internal var tracking play pending. - * @private - * @default - */ - this._pending = false; - - /** - * @property {boolean} _autoplay - Internal var tracking autoplay when changing source. - * @private - * @default - */ - this._autoplay = false; - - /** - * @property {function} _endCallback - The addEventListener ended function. - * @private - */ - this._endCallback = null; - - /** - * @property {function} _playCallback - The addEventListener playing function. - * @private - */ - this._playCallback = null; - - if (key && this.game.cache.checkVideoKey(key)) - { - var _video = this.game.cache.getVideo(key); - - if (_video.isBlob) - { - this.createVideoFromBlob(_video.data); - } - else - { - this.video = _video.data; - } - - this.width = this.video.videoWidth; - this.height = this.video.videoHeight; - } - else if (url) - { - this.createVideoFromURL(url, false); - } - - /** - * @property {PIXI.BaseTexture} baseTexture - The PIXI.BaseTexture. - * @default - */ - if (this.video && !url) - { - this.baseTexture = new PIXI.BaseTexture(this.video); - this.baseTexture.forceLoaded(this.width, this.height); - } - else - { - this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); - this.baseTexture.forceLoaded(this.width, this.height); - } - - /** - * @property {PIXI.Texture} texture - The PIXI.Texture. - * @default - */ - this.texture = new PIXI.Texture(this.baseTexture); - - /** - * @property {Phaser.Frame} textureFrame - The Frame this video uses for rendering. - * @default - */ - this.textureFrame = new Phaser.Frame(0, 0, 0, this.width, this.height, 'video'); - - this.texture.setFrame(this.textureFrame); - - this.texture.valid = false; - - if (key !== null && this.video) - { - this.texture.valid = this.video.canplay; - } - - /** - * A snapshot grabbed from the video. This is initially black. Populate it by calling Video.grab(). - * When called the BitmapData is updated with a grab taken from the current video playing or active video stream. - * If Phaser has been compiled without BitmapData support this property will always be `null`. - * - * @property {Phaser.BitmapData} snapshot - * @readOnly - */ - this.snapshot = null; - - if (Phaser.BitmapData) - { - this.snapshot = new Phaser.BitmapData(this.game, '', this.width, this.height); - } - - if (!this.game.device.cocoonJS && (this.game.device.iOS || this.game.device.android) || (window['PhaserGlobal'] && window['PhaserGlobal'].fakeiOSTouchLock)) - { - this.setTouchLock(); - } - else - { - if (_video) - { - _video.locked = false; - } - } - -}; - -Phaser.Video.prototype = { - - /** - * Connects to an external media stream for the webcam, rather than using a local one. - * - * @method Phaser.Video#connectToMediaStream - * @param {HTMLVideoElement} video - The HTML Video Element that the stream uses. - * @param {MediaStream} stream - The Video Stream data. - * @return {Phaser.Video} This Video object for method chaining. - */ - connectToMediaStream: function (video, stream) { - - if (video && stream) - { - this.video = video; - this.videoStream = stream; - - this.isStreaming = true; - this.baseTexture.source = this.video; - this.updateTexture(null, this.video.videoWidth, this.video.videoHeight); - - this.onAccess.dispatch(this); - } - - return this; - - }, - - /** - * Instead of playing a video file this method allows you to stream video data from an attached webcam. - * - * As soon as this method is called the user will be prompted by their browser to "Allow" access to the webcam. - * If they allow it the webcam feed is directed to this Video. Call `Video.play` to start the stream. - * - * If they block the webcam the onError signal will be dispatched containing the NavigatorUserMediaError - * or MediaStreamError event. - * - * You can optionally set a width and height for the stream. If set the input will be cropped to these dimensions. - * If not given then as soon as the stream has enough data the video dimensions will be changed to match the webcam device. - * You can listen for this with the onChangeSource signal. - * - * @method Phaser.Video#startMediaStream - * @param {boolean} [captureAudio=false] - Controls if audio should be captured along with video in the video stream. - * @param {integer} [width] - The width is used to create the video stream. If not provided the video width will be set to the width of the webcam input source. - * @param {integer} [height] - The height is used to create the video stream. If not provided the video height will be set to the height of the webcam input source. - * @return {Phaser.Video} This Video object for method chaining or false if the device doesn't support getUserMedia. - */ - startMediaStream: function (captureAudio, width, height) { - - if (captureAudio === undefined) { captureAudio = false; } - if (width === undefined) { width = null; } - if (height === undefined) { height = null; } - - if (!this.game.device.getUserMedia) - { - this.onError.dispatch(this, 'No getUserMedia'); - return false; - } - - if (this.videoStream !== null) - { - if (this.videoStream['active']) - { - this.videoStream.active = false; - } - else - { - this.videoStream.stop(); - } - } - - this.removeVideoElement(); - - this.video = document.createElement("video"); - this.video.setAttribute('autoplay', 'autoplay'); - - if (width !== null) - { - this.video.width = width; - } - - if (height !== null) - { - this.video.height = height; - } - - // Request access to the webcam - - this._timeOutID = window.setTimeout(this.getUserMediaTimeout.bind(this), this.timeout); - - try { - navigator.getUserMedia( - { "audio": captureAudio, "video": true }, - this.getUserMediaSuccess.bind(this), - this.getUserMediaError.bind(this) - ); - } - catch (error) - { - this.getUserMediaError(error); - } - - return this; - - }, - - /** - * @method Phaser.Video#getUserMediaTimeout - * @private - */ - getUserMediaTimeout: function () { - - clearTimeout(this._timeOutID); - - this.onTimeout.dispatch(this); - - }, - - /** - * @method Phaser.Video#getUserMediaError - * @private - */ - getUserMediaError: function (event) { - - clearTimeout(this._timeOutID); - - this.onError.dispatch(this, event); - - }, - - /** - * @method Phaser.Video#getUserMediaSuccess - * @private - */ - getUserMediaSuccess: function (stream) { - - clearTimeout(this._timeOutID); - - // Attach the stream to the video - this.videoStream = stream; - - // Set the source of the video element with the stream from the camera - if (this.video.mozSrcObject !== undefined) - { - this.video.mozSrcObject = stream; - } - else - { - this.video.src = (window.URL && window.URL.createObjectURL(stream)) || stream; - } - - var self = this; - - this.video.onloadeddata = function () { - - var retry = 10; - - function checkStream () { - - if (retry > 0) - { - if (self.video.videoWidth > 0) - { - // Patch for Firefox bug where the height can't be read from the video - var width = self.video.videoWidth; - var height = self.video.videoHeight; - - if (isNaN(self.video.videoHeight)) - { - height = width / (4/3); - } - - self.video.play(); - - self.isStreaming = true; - self.baseTexture.source = self.video; - self.updateTexture(null, width, height); - self.onAccess.dispatch(self); - } - else - { - window.setTimeout(checkStream, 500); - } - } - else - { - console.warn('Unable to connect to video stream. Webcam error?'); - } - - retry--; - } - - checkStream(); - - }; - - }, - - /** - * Creates a new Video element from the given Blob. The Blob must contain the video data in the correct encoded format. - * This method is typically called by the Phaser.Loader and Phaser.Cache for you, but is exposed publicly for convenience. - * - * @method Phaser.Video#createVideoFromBlob - * @param {Blob} blob - The Blob containing the video data: `Blob([new Uint8Array(data)])` - * @return {Phaser.Video} This Video object for method chaining. - */ - createVideoFromBlob: function (blob) { - - var _this = this; - - this.video = document.createElement("video"); - this.video.controls = false; - this.video.setAttribute('autoplay', 'autoplay'); - this.video.addEventListener('loadeddata', function (event) { _this.updateTexture(event); }, true); - this.video.src = window.URL.createObjectURL(blob); - this.video.canplay = true; - - return this; - - }, - - /** - * Creates a new Video element from the given URL. - * - * @method Phaser.Video#createVideoFromURL - * @param {string} url - The URL of the video. - * @param {boolean} [autoplay=false] - Automatically start the video? - * @return {Phaser.Video} This Video object for method chaining. - */ - createVideoFromURL: function (url, autoplay) { - - if (autoplay === undefined) { autoplay = false; } - - // Invalidate the texture while we wait for the new one to load (crashes IE11 otherwise) - if (this.texture) - { - this.texture.valid = false; - } - - this.video = document.createElement("video"); - this.video.controls = false; - - if (autoplay) - { - this.video.setAttribute('autoplay', 'autoplay'); - } - - this.video.src = url; - - this.video.canplay = true; - - this.video.load(); - - this.retry = this.retryLimit; - - this._retryID = window.setTimeout(this.checkVideoProgress.bind(this), this.retryInterval); - - this.key = url; - - return this; - - }, - - /** - * Called automatically if the video source changes and updates the internal texture dimensions. - * Then dispatches the onChangeSource signal. - * - * @method Phaser.Video#updateTexture - * @param {object} [event] - The event which triggered the texture update. - * @param {integer} [width] - The new width of the video. If undefined `video.videoWidth` is used. - * @param {integer} [height] - The new height of the video. If undefined `video.videoHeight` is used. - */ - updateTexture: function (event, width, height) { - - var change = false; - - if (width === undefined || width === null) { width = this.video.videoWidth; change = true; } - if (height === undefined || height === null) { height = this.video.videoHeight; } - - this.width = width; - this.height = height; - - if (this.baseTexture.source !== this.video) - { - this.baseTexture.source = this.video; - } - - this.baseTexture.forceLoaded(width, height); - - this.texture.frame.resize(width, height); - - this.texture.width = width; - this.texture.height = height; - - this.texture.valid = true; - - if (this.snapshot) - { - this.snapshot.resize(width, height); - } - - if (change && this.key !== null) - { - this.onChangeSource.dispatch(this, width, height); - - if (this._autoplay) - { - this.video.play(); - this.onPlay.dispatch(this, this.loop, this.playbackRate); - } - } - - }, - - /** - * Called when the video completes playback (reaches and ended state). - * Dispatches the Video.onComplete signal. - * - * @method Phaser.Video#complete - */ - complete: function () { - - this.onComplete.dispatch(this); - - }, - - /** - * Starts this video playing if it's not already doing so. - * - * @method Phaser.Video#play - * @param {boolean} [loop=false] - Should the video loop automatically when it reaches the end? Please note that at present some browsers (i.e. Chrome) do not support *seamless* video looping. - * @param {number} [playbackRate=1] - The playback rate of the video. 1 is normal speed, 2 is x2 speed, and so on. You cannot set a negative playback rate. - * @return {Phaser.Video} This Video object for method chaining. - */ - play: function (loop, playbackRate) { - - if (loop === undefined) { loop = false; } - if (playbackRate === undefined) { playbackRate = 1; } - - if (this.game.sound.onMute) - { - this.game.sound.onMute.add(this.setMute, this); - this.game.sound.onUnMute.add(this.unsetMute, this); - - if (this.game.sound.mute) - { - this.setMute(); - } - } - - this.game.onPause.add(this.setPause, this); - this.game.onResume.add(this.setResume, this); - - this._endCallback = this.complete.bind(this); - - this.video.addEventListener('ended', this._endCallback, true); - this.video.addEventListener('webkitendfullscreen', this._endCallback, true); - - if (loop) - { - this.video.loop = 'loop'; - } - else - { - this.video.loop = ''; - } - - this.video.playbackRate = playbackRate; - - if (this.touchLocked) - { - this._pending = true; - } - else - { - this._pending = false; - - if (this.key !== null) - { - if (this.video.readyState !== 4) - { - this.retry = this.retryLimit; - this._retryID = window.setTimeout(this.checkVideoProgress.bind(this), this.retryInterval); - } - else - { - this._playCallback = this.playHandler.bind(this); - this.video.addEventListener('playing', this._playCallback, true); - } - } - - this.video.play(); - - this.onPlay.dispatch(this, loop, playbackRate); - } - - return this; - - }, - - /** - * Called when the video starts to play. Updates the texture. - * - * @method Phaser.Video#playHandler - * @private - */ - playHandler: function () { - - this.video.removeEventListener('playing', this._playCallback, true); - - this.updateTexture(); - - }, - - /** - * Stops the video playing. - * - * This removes all locally set signals. - * - * If you only wish to pause playback of the video, to resume at a later time, use `Video.paused = true` instead. - * If the video hasn't finished downloading calling `Video.stop` will not abort the download. To do that you need to - * call `Video.destroy` instead. - * - * If you are using a video stream from a webcam then calling Stop will disconnect the MediaStream session and disable the webcam. - * - * @method Phaser.Video#stop - * @return {Phaser.Video} This Video object for method chaining. - */ - stop: function () { - - if (this.game.sound.onMute) - { - this.game.sound.onMute.remove(this.setMute, this); - this.game.sound.onUnMute.remove(this.unsetMute, this); - } - - this.game.onPause.remove(this.setPause, this); - this.game.onResume.remove(this.setResume, this); - - // Stream or file? - - if (this.isStreaming) - { - if (this.video.mozSrcObject) - { - this.video.mozSrcObject.stop(); - this.video.src = null; - } - else - { - this.video.src = ""; - - if (this.videoStream['active']) - { - this.videoStream.active = false; - } - else - { - if (this.videoStream.getTracks) - { - this.videoStream.getTracks().forEach(function (track) { - track.stop(); - }); - } - else - { - this.videoStream.stop(); - } - - } - } - - this.videoStream = null; - this.isStreaming = false; - } - else - { - this.video.removeEventListener('ended', this._endCallback, true); - this.video.removeEventListener('webkitendfullscreen', this._endCallback, true); - this.video.removeEventListener('playing', this._playCallback, true); - - if (this.touchLocked) - { - this._pending = false; - } - else - { - this.video.pause(); - } - } - - return this; - - }, - - /** - * Updates the given Display Objects so they use this Video as their texture. - * This will replace any texture they will currently have set. - * - * @method Phaser.Video#add - * @param {Phaser.Sprite|Phaser.Sprite[]|Phaser.Image|Phaser.Image[]} object - Either a single Sprite/Image or an Array of Sprites/Images. - * @return {Phaser.Video} This Video object for method chaining. - */ - add: function (object) { - - if (Array.isArray(object)) - { - for (var i = 0; i < object.length; i++) - { - if (object[i]['loadTexture']) - { - object[i].loadTexture(this); - } - } - } - else - { - object.loadTexture(this); - } - - return this; - - }, - - /** - * Creates a new Phaser.Image object, assigns this Video to be its texture, adds it to the world then returns it. - * - * @method Phaser.Video#addToWorld - * @param {number} [x=0] - The x coordinate to place the Image at. - * @param {number} [y=0] - The y coordinate to place the Image at. - * @param {number} [anchorX=0] - Set the x anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @param {number} [anchorY=0] - Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. - * @param {number} [scaleX=1] - The horizontal scale factor of the Image. A value of 1 means no scaling. 2 would be twice the size, and so on. - * @param {number} [scaleY=1] - The vertical scale factor of the Image. A value of 1 means no scaling. 2 would be twice the size, and so on. - * @return {Phaser.Image} The newly added Image object. - */ - addToWorld: function (x, y, anchorX, anchorY, scaleX, scaleY) { - - scaleX = scaleX || 1; - scaleY = scaleY || 1; - - var image = this.game.add.image(x, y, this); - - image.anchor.set(anchorX, anchorY); - image.scale.set(scaleX, scaleY); - - return image; - - }, - - /** - * If the game is running in WebGL this will push the texture up to the GPU if it's dirty. - * This is called automatically if the Video is being used by a Sprite, otherwise you need to remember to call it in your render function. - * If you wish to suppress this functionality set Video.disableTextureUpload to `true`. - * - * @method Phaser.Video#render - */ - render: function () { - - if (!this.disableTextureUpload && this.playing) - { - this.baseTexture.dirty(); - } - - }, - - /** - * Internal handler called automatically by the Video.mute setter. - * - * @method Phaser.Video#setMute - * @private - */ - setMute: function () { - - if (this._muted) - { - return; - } - - this._muted = true; - - this.video.muted = true; - - }, - - /** - * Internal handler called automatically by the Video.mute setter. - * - * @method Phaser.Video#unsetMute - * @private - */ - unsetMute: function () { - - if (!this._muted || this._codeMuted) - { - return; - } - - this._muted = false; - - this.video.muted = false; - - }, - - /** - * Internal handler called automatically by the Video.paused setter. - * - * @method Phaser.Video#setPause - * @private - */ - setPause: function () { - - if (this._paused || this.touchLocked) - { - return; - } - - this._paused = true; - - this.video.pause(); - - }, - - /** - * Internal handler called automatically by the Video.paused setter. - * - * @method Phaser.Video#setResume - * @private - */ - setResume: function () { - - if (!this._paused || this._codePaused || this.touchLocked) - { - return; - } - - this._paused = false; - - if (!this.video.ended) - { - this.video.play(); - } - - }, - - /** - * On some mobile browsers you cannot play a video until the user has explicitly touched the video to allow it. - * Phaser handles this via the `setTouchLock` method. However if you have 3 different videos, maybe an "Intro", "Start" and "Game Over" - * split into three different Video objects, then you will need the user to touch-unlock every single one of them. - * - * You can avoid this by using just one Video object and simply changing the video source. Once a Video element is unlocked it remains - * unlocked, even if the source changes. So you can use this to your benefit to avoid forcing the user to 'touch' the video yet again. - * - * As you'd expect there are limitations. So far we've found that the videos need to be in the same encoding format and bitrate. - * This method will automatically handle a change in video dimensions, but if you try swapping to a different bitrate we've found it - * cannot render the new video on iOS (desktop browsers cope better). - * - * When the video source is changed the video file is requested over the network. Listen for the `onChangeSource` signal to know - * when the new video has downloaded enough content to be able to be played. Previous settings such as the volume and loop state - * are adopted automatically by the new video. - * - * @method Phaser.Video#changeSource - * @param {string} src - The new URL to change the video.src to. - * @param {boolean} [autoplay=true] - Should the video play automatically after the source has been updated? - * @return {Phaser.Video} This Video object for method chaining. - */ - changeSource: function (src, autoplay) { - - if (autoplay === undefined) { autoplay = true; } - - // Invalidate the texture while we wait for the new one to load (crashes IE11 otherwise) - this.texture.valid = false; - - this.video.pause(); - - this.retry = this.retryLimit; - - this._retryID = window.setTimeout(this.checkVideoProgress.bind(this), this.retryInterval); - - this.video.src = src; - - this.video.load(); - - this._autoplay = autoplay; - - if (!autoplay) - { - this.paused = true; - } - - return this; - - }, - - /** - * Internal callback that monitors the download progress of a video after changing its source. - * - * @method Phaser.Video#checkVideoProgress - * @private - */ - checkVideoProgress: function () { - - // if (this.video.readyState === 2 || this.video.readyState === 4) - if (this.video.readyState === 4) - { - // We've got enough data to update the texture for playback - this.updateTexture(); - } - else - { - this.retry--; - - if (this.retry > 0) - { - this._retryID = window.setTimeout(this.checkVideoProgress.bind(this), this.retryInterval); - } - else - { - console.warn('Phaser.Video: Unable to start downloading video in time', this.isStreaming); - } - } - - }, - - /** - * Sets the Input Manager touch callback to be Video.unlock. - * Required for mobile video unlocking. Mostly just used internally. - * - * @method Phaser.Video#setTouchLock - */ - setTouchLock: function () { - - this.game.input.touch.addTouchLockCallback(this.unlock, this); - this.touchLocked = true; - - }, - - /** - * Enables the video on mobile devices, usually after the first touch. - * If the SoundManager hasn't been unlocked then this will automatically unlock that as well. - * Only one video can be pending unlock at any one time. - * - * @method Phaser.Video#unlock - */ - unlock: function () { - - this.touchLocked = false; - - this.video.play(); - - this.onPlay.dispatch(this, this.loop, this.playbackRate); - - if (this.key) - { - var _video = this.game.cache.getVideo(this.key); - - if (_video && !_video.isBlob) - { - _video.locked = false; - } - } - - return true; - - }, - - /** - * Grabs the current frame from the Video or Video Stream and renders it to the Video.snapshot BitmapData. - * - * You can optionally set if the BitmapData should be cleared or not, the alpha and the blend mode of the draw. - * - * If you need more advanced control over the grabbing them call `Video.snapshot.copy` directly with the same parameters as BitmapData.copy. - * - * @method Phaser.Video#grab - * @param {boolean} [clear=false] - Should the BitmapData be cleared before the Video is grabbed? Unless you are using alpha or a blend mode you can usually leave this set to false. - * @param {number} [alpha=1] - The alpha that will be set on the video before drawing. A value between 0 (fully transparent) and 1, opaque. - * @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. - * @return {Phaser.BitmapData} A reference to the Video.snapshot BitmapData object for further method chaining. - */ - grab: function (clear, alpha, blendMode) { - - if (clear === undefined) { clear = false; } - if (alpha === undefined) { alpha = 1; } - if (blendMode === undefined) { blendMode = null; } - - if (this.snapshot === null) - { - console.warn('Video.grab cannot run because Phaser.BitmapData is unavailable'); - return; - } - - if (clear) - { - this.snapshot.cls(); - } - - this.snapshot.copy(this.video, 0, 0, this.width, this.height, 0, 0, this.width, this.height, 0, 0, 0, 1, 1, alpha, blendMode); - - return this.snapshot; - - }, - - /** - * Removes the Video element from the DOM by calling parentNode.removeChild on itself. - * Also removes the autoplay and src attributes and nulls the reference. - * - * @method Phaser.Video#removeVideoElement - */ - removeVideoElement: function () { - - if (!this.video) - { - return; - } - - if (this.video.parentNode) - { - this.video.parentNode.removeChild(this.video); - } - - while (this.video.hasChildNodes()) - { - this.video.removeChild(this.video.firstChild); - } - - this.video.removeAttribute('autoplay'); - this.video.removeAttribute('src'); - - this.video = null; - - }, - - /** - * Destroys the Video object. This calls `Video.stop` and then `Video.removeVideoElement`. - * If any Sprites are using this Video as their texture it is up to you to manage those. - * - * @method Phaser.Video#destroy - */ - destroy: function () { - - this.stop(); - - this.removeVideoElement(); - - if (this.touchLocked) - { - this.game.input.touch.removeTouchLockCallback(this.unlock, this); - } - - if (this._retryID) - { - window.clearTimeout(this._retryID); - } - - } - -}; - -/** -* @name Phaser.Video#currentTime -* @property {number} currentTime - The current time of the video in seconds. If set the video will attempt to seek to that point in time. -*/ -Object.defineProperty(Phaser.Video.prototype, "currentTime", { - - get: function () { - - return (this.video) ? this.video.currentTime : 0; - - }, - - set: function (value) { - - this.video.currentTime = value; - - } - -}); - -/** -* @name Phaser.Video#duration -* @property {number} duration - The duration of the video in seconds. -* @readOnly -*/ -Object.defineProperty(Phaser.Video.prototype, "duration", { - - get: function () { - - return (this.video) ? this.video.duration : 0; - - } - -}); - -/** -* @name Phaser.Video#progress -* @property {number} progress - The progress of this video. This is a value between 0 and 1, where 0 is the start and 1 is the end of the video. -* @readOnly -*/ -Object.defineProperty(Phaser.Video.prototype, "progress", { - - get: function () { - - return (this.video) ? (this.video.currentTime / this.video.duration) : 0; - - } - -}); - -/** -* @name Phaser.Video#mute -* @property {boolean} mute - Gets or sets the muted state of the Video. -*/ -Object.defineProperty(Phaser.Video.prototype, "mute", { - - get: function () { - - return this._muted; - - }, - - set: function (value) { - - value = value || null; - - if (value) - { - if (this._muted) - { - return; - } - - this._codeMuted = true; - this.setMute(); - } - else - { - if (!this._muted) - { - return; - } - - this._codeMuted = false; - this.unsetMute(); - } - } - -}); - -/** -* Gets or sets the paused state of the Video. -* If the video is still touch locked (such as on iOS devices) this call has no effect. -* -* @name Phaser.Video#paused -* @property {boolean} paused -*/ -Object.defineProperty(Phaser.Video.prototype, "paused", { - - get: function () { - - return this._paused; - - }, - - set: function (value) { - - value = value || null; - - if (this.touchLocked) - { - return; - } - - if (value) - { - if (this._paused) - { - return; - } - - this._codePaused = true; - this.setPause(); - } - else - { - if (!this._paused) - { - return; - } - - this._codePaused = false; - this.setResume(); - } - } - -}); - -/** -* @name Phaser.Video#volume -* @property {number} volume - Gets or sets the volume of the Video, a value between 0 and 1. The value given is clamped to the range 0 to 1. -*/ -Object.defineProperty(Phaser.Video.prototype, "volume", { - - get: function () { - - return (this.video) ? this.video.volume : 1; - - }, - - set: function (value) { - - if (value < 0) - { - value = 0; - } - else if (value > 1) - { - value = 1; - } - - if (this.video) - { - this.video.volume = value; - } - - } - -}); - -/** -* @name Phaser.Video#playbackRate -* @property {number} playbackRate - Gets or sets the playback rate of the Video. This is the speed at which the video is playing. -*/ -Object.defineProperty(Phaser.Video.prototype, "playbackRate", { - - get: function () { - - return (this.video) ? this.video.playbackRate : 1; - - }, - - set: function (value) { - - if (this.video) - { - this.video.playbackRate = value; - } - - } - -}); - -/** -* Gets or sets if the Video is set to loop. -* Please note that at present some browsers (i.e. Chrome) do not support *seamless* video looping. -* If the video isn't yet set this will always return false. -* -* @name Phaser.Video#loop -* @property {boolean} loop -*/ -Object.defineProperty(Phaser.Video.prototype, "loop", { - - get: function () { - - return (this.video) ? this.video.loop : false; - - }, - - set: function (value) { - - if (value && this.video) - { - this.video.loop = 'loop'; - } - else if (this.video) - { - this.video.loop = ''; - } - - } - -}); - -/** -* @name Phaser.Video#playing -* @property {boolean} playing - True if the video is currently playing (and not paused or ended), otherwise false. -* @readOnly -*/ -Object.defineProperty(Phaser.Video.prototype, "playing", { - - get: function () { - - return !(this.video.paused && this.video.ended); - - } - -}); - -Phaser.Video.prototype.constructor = Phaser.Video; - -/* global Phaser:true */ -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -// Pixi expects these globals to exist - -if (PIXI.blendModes === undefined) -{ - PIXI.blendModes = Phaser.blendModes; -} - -if (PIXI.scaleModes === undefined) -{ - PIXI.scaleModes = Phaser.scaleModes; -} - -if (PIXI.Texture.emptyTexture === undefined) -{ - PIXI.Texture.emptyTexture = new PIXI.Texture(new PIXI.BaseTexture()); -} - -if (PIXI.DisplayObject._tempMatrix === undefined) -{ - PIXI.DisplayObject._tempMatrix = new PIXI.Matrix(); -} - -if (PIXI.RenderTexture.tempMatrix === undefined) -{ - PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); -} - -if (PIXI.Graphics && PIXI.Graphics.POLY === undefined) -{ - PIXI.Graphics.POLY = Phaser.POLYGON; - PIXI.Graphics.RECT = Phaser.RECTANGLE; - PIXI.Graphics.CIRC = Phaser.CIRCLE; - PIXI.Graphics.ELIP = Phaser.ELLIPSE; - PIXI.Graphics.RREC = Phaser.ROUNDEDRECTANGLE; -} - -PIXI.TextureSilentFail = true; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = Phaser; - } - exports.Phaser = Phaser; - } else if (typeof define !== 'undefined' && define.amd) { - define('Phaser', (function() { return root.Phaser = Phaser; })() ); - } else { - root.Phaser = Phaser; - } - - return Phaser; -}).call(this); - -/* -* "What matters in this life is not what we do but what we do for others, the legacy we leave and the imprint we make." - Eric Meyer -*/ diff --git a/build/phaser-creature.map b/build/phaser-creature.map deleted file mode 100644 index 9e265dc00..000000000 --- a/build/phaser-creature.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["phaser-creature.js"],"names":["WheelEventProxy","scaleFactor","deltaMode","this","_scaleFactor","_deltaMode","originalEvent","root","Phaser","VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","PIXI","Math","trunc","x","ceil","floor","Function","prototype","bind","slice","Array","thisArg","bound","args","boundArgs","concat","call","arguments","target","apply","TypeError","F","proto","isArray","arg","Object","toString","forEach","fun","t","len","length","i","window","Uint32Array","CheapArray","type","constructor","console","log","assert","warn","Utils","reverseString","string","split","reverse","join","getProperty","obj","prop","parts","last","pop","l","current","setProperty","value","chanceRoll","chance","undefined","random","randomChoice","choice1","choice2","parseDimension","size","dimension","f","px","substr","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","src","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","key","get","set","defineProperty","from","to","o","childNodes","cloneNode","Circle","y","diameter","_diameter","_radius","circumference","PI","out","Point","u","r","cos","sin","radius","getBounds","Rectangle","setTo","copyFrom","source","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offset","dx","dy","offsetPoint","point","a","top","bottom","equals","b","intersects","degToRad","intersectsRectangle","c","cx","abs","halfWidth","xDist","cy","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","width","height","p","sqrt","normx","normy","Line","x1","y1","x2","y2","start","end","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","result","intersectsPoints","reflect","midPoint","centerOn","tx","ty","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","push","e2","atan2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","Matrix","d","fromArray","array","matrix","toArray","transpose","Float32Array","pos","newPos","applyInverse","id","translate","scale","tx1","append","d1","identity","identityMatrix","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","Error","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","j","ix","iy","jx","jy","y0","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","resize","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","position","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","EmptyRectangle","RoundedRectangle","Camera","game","world","view","bounds","deadzone","visible","roundPx","atLimit","displayObject","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","_shake","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","camera","Graphics","stage","addChild","preUpdate","follow","style","lerpX","lerpY","helper","w","h","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","color","clear","beginFill","drawRect","endFill","alpha","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","worldPosition","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","init","preload","loadUpdate","loadRender","create","preRender","render","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","splice","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","destroy","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","context","save","setTransform","restore","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","uniforms","fragmentSrc","passes","shaders","dirty","padding","prevPoint","Date","resolution","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","textureData","repeat","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","image","anchor","filters","Plugin","parent","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","DisplayObjectContainer","disableVisibilityChange","exists","worldTransform","currentRenderOrderID","_hiddenVar","_onChange","_bgColor","g","rgba","transparent","config","parseConfig","setBackgroundColor","DOM","getOffset","canvas","Canvas","setUserSelect","setTouchAction","checkVisibility","children","updateTransform","worldAlpha","document","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","z","physicsType","alive","ignoreDestroy","pendingDestroy","classType","Sprite","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","child","silent","index","body","removeFromHash","addChildAt","updateZ","enable","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","indexOf","addMultiple","moveAll","getAt","getChildAt","frame","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","child2","swapChildren","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","removeChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","filter","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","startIndex","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","removed","group","destroyTexture","removeBetween","endIndex","destroyChildren","soft","rotation","World","_definedSize","_width","_height","stateChange","setBounds","sprite","useBounds","_currentBounds","between","Game","renderer","antialias","physicsConfig","preserveDrawingBuffer","clearBeforeRender","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","CanvasRenderer","WebGLRenderer","contextLost","contextRestored","cocoonJS","screencanvas","smoothed","addToDOM","preventDefault","initContext","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","count","refresh","timeStep","enableStep","disableStep","step","stop","removeFromDOM","defaultRenderer","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","CanvasPool","getContext","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","wt","hitTest","localPoint","worldVisible","hitArea","TileSprite","texture","graphicsData","data","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","ignoreChildInput","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","worldScale","checkPixel","baseTexture","trim","crop","_dx","_dy","clearRect","drawImage","rgb","getImageData","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","offsetX","offsetY","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","navigator","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","_bounds","Bounds","container","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","cw","ch","_updateUvs","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","mask","renderable","transformCallback","transformCallbackContext","filterArea","_mask","_destroyCachedSprite","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","setFrame","scaleMode","RenderTexture","setTexture","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","valid","Tilemap","TilemapLayer","Texture","fromCanvas","img","getImage","base","skipRender","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","requiresReTint","tilingTexture","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","minX","minY","maxX","maxY","Smoothed","existing","weapon","Weapon","createBullets","Image","creature","mesh","Creature","tween","physicsGroup","spriteBatch","SpriteBatch","audio","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","graphics","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","renderTexture","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","smoothProperty","renderSession","getSmoothingPrefix","imageData","pixels","buffer","ArrayBuffer","BaseTexture","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","fillStyle","fillRect","generateTexture","toDataURL","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","putImageData","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","scaleX","scaleY","newWidth","newHeight","blendMode","getCanvas","tint","cachedTint","tintedTexture","CanvasTinter","getTintedTexture","globalAlpha","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","CanvasGraphics","renderGraphics","worldRotation","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","beginPath","arc","closePath","moveTo","lineTo","lineWidth","strokeStyle","stroke","textureLine","createPattern","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","globalCompositeOperation","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","_webGL","isMask","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","canvasBuffer","CanvasBuffer","_renderWebGL","_cacheAsBitmap","_generateCachedSprite","updateCachedSpriteTexture","_cachedSprite","blendModeManager","setBlendMode","maskManager","pushMask","_filters","filterManager","pushFilter","_filterBlock","currentBlendMode","blendModeWebGL","blendModesWebGL","gl","blendFunc","WebGLGraphics","popFilter","popMask","drawCount","_renderCanvas","_prevTint","transform","blendModesCanvas","shakeX","shakeY","w0","w1","h0","h1","x3","y3","x4","y4","tempPoint","Infinity","RECT","RREC","CIRC","ELIP","getLocalBounds","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","webGLData","projection","shader","shaderManager","primitiveShader","updateGraphics","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","setShader","uniformMatrix3fv","translationMatrix","uniform1f","flipY","uniform2f","projectionVector","offsetVector","uniform3fv","tintColor","hex2rgb","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","aVertexPosition","FLOAT","colorAttribute","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","dist","indexCount","indexStart","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","updateGraphicsTint","strokeRect","kappa","ox","oy","xe","ye","xm","ym","maxRadius","renderGraphicsMask","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","vertices","point1","point2","point3","_tempMatrix","renderXY","WEBGL_RENDERER","renderWebGL","renderCanvas","renderRawXY","textBounds","colors","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","isCocoonJS","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","updateTexture","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","pivot","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","idx","parseFloat","createElement","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","TilingSprite","tilePosition","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","item","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","Uint8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","range","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","s1","s2","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","complete","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","attributes","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","format","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","_glTextures","baseURL","isLoading","hasLoaded","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","temp","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hex","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","v2","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","Spring","broadphase","SAPBroadphase","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","on","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","removeBody","setImpactEvents","impactHandler","off","setPostBroadphaseCallback","postBroadphaseHandler","pairs","bodyA","bodyB","_bodyCallbacks","_bodyCallbackContext","shapeA","shapeB","_groupCallbacks","collisionGroup","_groupCallbackContext","contactEquations","setCollisionGroup","setWorldMaterial","material","shapes","updateBoundsCollisionGroup","setupWall","wall","addShape","Plane","addBody","fixedStepTime","solver","equations","removeAllEquations","cs","constraints","removeConstraint","bodies","springs","removeSpring","cms","contactMaterials","removeContactMaterial","impactCallback","addSpring","spring","RotationalSpring","createDistanceConstraint","localAnchorA","localAnchorB","maxForce","getBody","addConstraint","DistanceConstraint","createGearConstraint","ratio","GearConstraint","createRevoluteConstraint","pivotA","pivotB","worldPivot","RevoluteConstraint","createLockConstraint","LockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","PrismaticConstraint","constraint","addContactMaterial","getContactMaterial","materialA","materialB","setMaterial","createMaterial","Material","createContactMaterial","contact","ContactMaterial","getBodies","getSprings","getConstraints","worldPoint","precision","filterStatic","physicsPosition","query","STATIC","toJSON","createCollisionGroup","bitmask","collisionMask","createSpring","restLength","stiffness","damping","worldA","worldB","localA","localB","createRotationalSpring","restAngle","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","defaultContactMaterial","restitution","applySpringForces","applyDamping","applyGravity","solveConstraints","emitImpactEvent","sleepMode","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","sensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","adjustCenterOfMass","shapeChanged","getVelocityAtPoint","relativePoint","applyImpulse","impulse","applyImpulseLocal","localX","localY","applyForce","setZeroForce","setZeroRotation","setZeroVelocity","setZeroDamping","angularDamping","toLocalFrame","toWorldFrame","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","fixedRotation","updateSpriteTransform","resetDamping","resetMass","clearShapes","removeShape","addCircle","Box","addPlane","addParticle","Particle","addLine","addCapsule","Capsule","fromPolygon","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","aabbNeedsUpdate","generatedShapes","categoryBits","maskBits","isSensor","vec2","polygons","cm","Convex","sub","centerOfMass","updateTriangles","updateCenterOfMass","updateBoundingRadius","loadPolygon","DYNAMIC","KINEMATIC","allowSleep","angularForce","inertia","updateMassProperties","sleepSpeedLimit","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","x0","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","worldAnchorA","worldAnchorB","LinearSpring","localOffsetB","localAngleB","localAxisA","disableRotationalLock","localPivotA","localPivotB","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","requiresUpdate","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","tw","th","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","animation","meshData","_creature","CreatureAnimation","CreatureManager","timeDelta","creatureBoundsMin","creatureBoundsMax","target_creature","total_num_pts","uvs","global_indices","updateRenderData","global_pts","global_uvs","AddAnimation","SetActiveAnimationName","Update","updateData","_initWebGL","_vertexBuffer","_indexBuffer","_uvBuffer","_colorBuffer","DYNAMIC_DRAW","stripShader","_renderCreature","aTextureCoord","activeTexture","TEXTURE0","_dirty","bindTexture","TEXTURE_2D","bufferSubData","TRIANGLES","updateCreatureBounds","ComputeBoundaryMinMax","boundary_min","boundary_max","read_pts","render_pts","read_uvs","pt_index","uv_index","write_pt_index","setAnimation","SetIsPlaying","RunAtTime","GetIsPlaying","should_loop","SetShouldLoop","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","forceLoaded","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute","emptyTexture","DisplayObject","tempMatrix","TextureSilentFail","exports","module","define","amd"],"mappings":";;CAmCA,WAoweA,QAASA,GAAiBC,EAAaC,GAMnCC,KAAKC,aAAeH,EAMpBE,KAAKE,WAAaH,EAMlBC,KAAKG,cAAgB,KApxerB,GAAIC,GAAOJ,KAYXK,EAASA,IAOTC,QAAS,QAOTC,SAOAC,KAAM,EAONC,OAAQ,EAORC,MAAO,EAOPC,SAAU,EAOVC,KAAM,EAONC,KAAM,EAONC,MAAO,EAOPC,GAAI,EAOJC,KAAM,EAONC,OAAQ,EAORC,OAAQ,EAORC,MAAO,EAOPC,SAAU,EAOVC,KAAM,EAONC,WAAY,EAOZC,WAAY,EAOZC,MAAO,EAOPC,cAAe,EAOfC,QAAS,EAOTC,aAAc,GAOdC,QAAS,GAOTC,QAAS,GAOTC,WAAY,GAOZC,cAAe,GAOfC,aAAc,GAOdC,QAAS,GAOTC,YAAa,GAObC,UAAW,GAOXC,QAAS,GAOTC,KAAM,GAONC,OAAQ,GAORC,UAAW,GAOXC,KAAM,GAONC,OAAQ,GAORC,MAAO,GAOPC,iBAAkB,GAOlBC,SAAU,GAOVC,MAAO,GAOPC,cAAe,GAOfC,WAAY,EAOZC,SAAU,EAOVC,UAAW,EAOXC,SAAU,EAOVC,SAAU,IAOVC,WAAY,GAOZC,WAAY,IAOZC,YAAa,EAObC,iBAAkB,IAOlBC,iBAAkB,IAOlBC,iBAAkB,GAOlBC,iBAAkB,IAOlBC,SAAU,EAOVC,WAAY,EAOZC,UAAW,EAOXC,SAAU,EAOVC,YAAa,EAObC,YAAa,EAObC,OAAQ,EAORC,UAAW,EAOXC,aAAc,EAOdC,aAAc,EAOdC,YAAa,GAObC,cAAe,GAOfC,aAAc,GA2BdC,YACIC,OAAO,EACPC,IAAI,EACJC,SAAS,EACTC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,WAAW,GACXC,WAAW,GACXC,UAAU,GACVC,IAAI,GACJC,WAAW,GACXC,MAAM,GACNC,WAAW,IAgBfC,YACIC,QAAQ,EACRC,OAAO,EACPC,QAAQ,GAGZC,KAAMA,SA6GV,IAnGKC,KAAKC,QACND,KAAKC,MAAQ,SAAeC,GACxB,MAAW,GAAJA,EAAQF,KAAKG,KAAKD,GAAKF,KAAKI,MAAMF,KAO5CG,SAASC,UAAUC,OAGpBF,SAASC,UAAUC,KAAO,WAEtB,GAAIC,GAAQC,MAAMH,UAAUE,KAE5B,OAAO,UAAUE,GASb,QAASC,KACL,GAAIC,GAAOC,EAAUC,OAAON,EAAMO,KAAKC,WACvCC,GAAOC,MAAMjH,eAAgB0G,GAAQ1G,KAAOyG,EAASE,GATzD,GAAIK,GAAShH,KAAM4G,EAAYL,EAAMO,KAAKC,UAAW,EAErD,IAAsB,kBAAXC,GAEP,KAAM,IAAIE,UAqBd,OAbAR,GAAML,UAAY,QAAUc,GAAEC,GAM1B,MALIA,KAEAD,EAAEd,UAAYe,GAGZpH,eAAgBmH,GAAtB,OAGW,GAAIA,IAEhBH,EAAOX,WAEHK,OAQdF,MAAMa,UAEPb,MAAMa,QAAU,SAAUC,GAEtB,MAA8C,kBAAvCC,OAAOlB,UAAUmB,SAASV,KAAKQ,KAQzCd,MAAMH,UAAUoB,UAEjBjB,MAAMH,UAAUoB,QAAU,SAASC,GAE/B,YAEA,IAAa,SAAT1H,MAA4B,OAATA,KAEnB,KAAM,IAAIkH,UAGd,IAAIS,GAAIJ,OAAOvH,MACX4H,EAAMD,EAAEE,SAAW,CAEvB,IAAmB,kBAARH,GAEP,KAAM,IAAIR,UAKd,KAAK,GAFDT,GAAUM,UAAUc,QAAU,EAAId,UAAU,GAAK,OAE5Ce,EAAI,EAAOF,EAAJE,EAASA,IAEjBA,IAAKH,IAELD,EAAIZ,KAAKL,EAASkB,EAAEG,GAAIA,EAAGH,KAWT,kBAAvBI,QAAOC,aAA4D,gBAAvBD,QAAOC,YAC9D,CACI,GAAIC,GAAa,SAASC,GAEtB,GAAId,GAAQ,GAAIZ,MAEhBuB,QAAOG,GAAQ,SAASZ,GAEpB,GAAoB,gBAAV,GACV,CACId,MAAMM,KAAK9G,KAAMsH,GACjBtH,KAAK6H,OAASP,CAEd,KAAK,GAAIQ,GAAI,EAAGA,EAAI9H,KAAK6H,OAAQC,IAE7B9H,KAAK8H,GAAK,MAIlB,CACItB,MAAMM,KAAK9G,KAAMsH,EAAIO,QAErB7H,KAAK6H,OAASP,EAAIO,MAElB,KAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK6H,OAAQC,IAE7B9H,KAAK8H,GAAKR,EAAIQ,KAK1BC,OAAOG,GAAM7B,UAAYe,EACzBW,OAAOG,GAAMC,YAAcJ,OAAOG,GAGtCD,GAAW,eACXA,EAAW,cAMVF,OAAOK,UAERL,OAAOK,WACPL,OAAOK,QAAQC,IAAMN,OAAOK,QAAQE,OAAS,aAC7CP,OAAOK,QAAQG,KAAOR,OAAOK,QAAQE,OAAS,cAalDjI,EAAOmI,OAUHC,cAAe,SAAUC,GAErB,MAAOA,GAAOC,MAAM,IAAIC,UAAUC,KAAK,KAY3CC,YAAa,SAASC,EAAKC,GAQvB,IANA,GAAIC,GAAQD,EAAKL,MAAM,KACnBO,EAAOD,EAAME,MACbC,EAAIH,EAAMpB,OACVC,EAAI,EACJuB,EAAUJ,EAAM,GAETG,EAAJtB,IAAUiB,EAAMA,EAAIM,KAEvBA,EAAUJ,EAAMnB,GAChBA,GAGJ,OAAIiB,GAEOA,EAAIG,GAIJ,MAafI,YAAa,SAASP,EAAKC,EAAMO,GAQ7B,IANA,GAAIN,GAAQD,EAAKL,MAAM,KACnBO,EAAOD,EAAME,MACbC,EAAIH,EAAMpB,OACVC,EAAI,EACJuB,EAAUJ,EAAM,GAETG,EAAJtB,IAAUiB,EAAMA,EAAIM,KAEvBA,EAAUJ,EAAMnB,GAChBA,GAQJ,OALIiB,KAEAA,EAAIG,GAAQK,GAGTR,GAcXS,WAAY,SAAUC,GAElB,MADeC,UAAXD,IAAwBA,EAAS,IAC9BA,EAAS,GAAsB,IAAhB1D,KAAK4D,UAAkBF,GAWjDG,aAAc,SAAUC,EAASC,GAC7B,MAAQ/D,MAAK4D,SAAW,GAAOE,EAAUC,GAW7CC,eAAgB,SAAUC,EAAMC,GAE5B,GAAIC,GAAI,EACJC,EAAK,CA4BT,OA1BoB,gBAATH,GAGiB,MAApBA,EAAKI,OAAO,KAEZF,EAAIG,SAASL,EAAM,IAAM,IAIrBG,EAFc,IAAdF,EAEKlC,OAAOuC,WAAaJ,EAIpBnC,OAAOwC,YAAcL,GAK9BC,EAAKE,SAASL,EAAM,IAKxBG,EAAKH,EAGFG,GA+BXK,IAAK,SAAUC,EAAK7C,EAAK4C,EAAKE,GAE1B,GAAYhB,SAAR9B,EAAqB,GAAIA,GAAM,CACnC,IAAY8B,SAARc,EAAqB,GAAIA,GAAM,GACnC,IAAYd,SAARgB,EAAqB,GAAIA,GAAM,CAEnCD,GAAMA,EAAIjD,UAEV,IAAImD,GAAS,CAEb,IAAI/C,EAAM,GAAK6C,EAAI5C,OAEf,OAAQ6C,GAEJ,IAAK,GACDD,EAAM,GAAIjE,OAAMoB,EAAM,EAAI6C,EAAI5C,QAAQgB,KAAK2B,GAAOC,CAClD,MAEJ,KAAK,GACD,GAAIG,GAAQ7E,KAAKG,MAAMyE,EAAS/C,EAAM6C,EAAI5C,QAAU,GAChDgD,EAAOF,EAASC,CACpBH,GAAM,GAAIjE,OAAMqE,EAAK,GAAGhC,KAAK2B,GAAOC,EAAM,GAAIjE,OAAMoE,EAAM,GAAG/B,KAAK2B,EAClE,MAEJ,SACIC,GAAY,GAAIjE,OAAMoB,EAAM,EAAI6C,EAAI5C,QAAQgB,KAAK2B,GAK7D,MAAOC,IAWXK,cAAe,SAAU/B,GAMrB,GAAoB,gBAAV,IAAsBA,EAAIgC,UAAYhC,IAAQA,EAAIhB,OAExD,OAAO,CAOX,KACI,GAAIgB,EAAIZ,iBAAqB6C,eAAelE,KAAKiC,EAAIZ,YAAY9B,UAAW,iBAExE,OAAO,EAEb,MAAO4E,GACL,OAAO,EAKX,OAAO,GAWXC,OAAQ,WAEJ,GAAIC,GAASC,EAAMC,EAAKC,EAAMC,EAAaC,EACvCxE,EAASD,UAAU,OACnBe,EAAI,EACJD,EAASd,UAAUc,OACnB4D,GAAO,CAkBX,KAfsB,iBAAXzE,KAEPyE,EAAOzE,EACPA,EAASD,UAAU,OAEnBe,EAAI,GAIJD,IAAWC,IAEXd,EAAShH,OACP8H,GAGKD,EAAJC,EAAYA,IAGf,GAAgC,OAA3BqD,EAAUpE,UAAUe,IAGrB,IAAKsD,IAAQD,GAETE,EAAMrE,EAAOoE,GACbE,EAAOH,EAAQC,GAGXpE,IAAWsE,IAMXG,GAAQH,IAASjL,EAAOmI,MAAMsC,cAAcQ,KAAUC,EAAc/E,MAAMa,QAAQiE,MAE9EC,GAEAA,GAAc,EACdC,EAAQH,GAAO7E,MAAMa,QAAQgE,GAAOA,MAIpCG,EAAQH,GAAOhL,EAAOmI,MAAMsC,cAAcO,GAAOA,KAIrDrE,EAAOoE,GAAQ/K,EAAOmI,MAAM0C,OAAOO,EAAMD,EAAOF,IAIlC5B,SAAT4B,IAELtE,EAAOoE,GAAQE,GAO/B,OAAOtE,IAgBX0E,eAAgB,SAAU1E,EAAQ2E,EAAOC,GAErBlC,SAAZkC,IAAyBA,GAAU,EAIvC,KAAK,GAFDC,GAAYtE,OAAOuE,KAAKH,GAEnB7D,EAAI,EAAGA,EAAI+D,EAAUhE,OAAQC,IACtC,CACI,GAAIiE,GAAMF,EAAU/D,GAChByB,EAAQoC,EAAMI,IAEbH,GAAYG,IAAO/E,MAOhBuC,GACsB,kBAAdA,GAAMyC,KAA2C,kBAAdzC,GAAM0C,IAcjDjF,EAAO+E,GAAOxC,EAXa,kBAAhBA,GAAMiC,MAEbxE,EAAO+E,GAAOxC,EAAMiC,QAIpBjE,OAAO2E,eAAelF,EAAQ+E,EAAKxC,MAqBvDoC,MAAO,SAAUQ,EAAMC,GAEnB,IAAKD,GAA0B,gBAAX,GAEhB,MAAOC,EAGX,KAAK,GAAIL,KAAOI,GAChB,CACI,GAAIE,GAAIF,EAAKJ,EAEb,KAAIM,EAAEC,aAAcD,EAAEE,UAAtB,CAKA,GAAIrE,SAAeiE,GAAKJ,EAEnBI,GAAKJ,IAAiB,WAAT7D,QAOFkE,GAAGL,KAAU7D,EAErBkE,EAAGL,GAAO1L,EAAOmI,MAAMmD,MAAMQ,EAAKJ,GAAMK,EAAGL,IAI3CK,EAAGL,GAAO1L,EAAOmI,MAAMmD,MAAMQ,EAAKJ,GAAM,GAAIM,GAAElE,aAXlDiE,EAAGL,GAAOI,EAAKJ,IAgBvB,MAAOK,KAsBf/L,EAAOmM,OAAS,SAAUvG,EAAGwG,EAAGC,GAE5BzG,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTC,EAAWA,GAAY,EAKvB1M,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAMTzM,KAAK2M,UAAYD,EAMjB1M,KAAK4M,QAAU,EAEXF,EAAW,IAEX1M,KAAK4M,QAAqB,GAAXF,GAOnB1M,KAAKkI,KAAO7H,EAAOiC,QAIvBjC,EAAOmM,OAAOnG,WAQVwG,cAAe,WAEX,MAAO,IAAK9G,KAAK+G,GAAK9M,KAAK4M,UAY/BjD,OAAQ,SAAUoD,GAEFrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIrF,GAAI,EAAI5B,KAAK+G,GAAK/G,KAAK4D,SACvBsD,EAAIlH,KAAK4D,SAAW5D,KAAK4D,SACzBuD,EAAKD,EAAI,EAAK,EAAIA,EAAIA,EACtBhH,EAAIiH,EAAInH,KAAKoH,IAAIxF,GACjB8E,EAAIS,EAAInH,KAAKqH,IAAIzF,EAKrB,OAHAoF,GAAI9G,EAAIjG,KAAKiG,EAAKA,EAAIjG,KAAKqN,OAC3BN,EAAIN,EAAIzM,KAAKyM,EAAKA,EAAIzM,KAAKqN,OAEpBN,GAUXO,UAAW,WAEP,MAAO,IAAIjN,GAAOkN,UAAUvN,KAAKiG,EAAIjG,KAAKqN,OAAQrN,KAAKyM,EAAIzM,KAAKqN,OAAQrN,KAAK0M,SAAU1M,KAAK0M,WAYhGc,MAAO,SAAUvH,EAAGwG,EAAGC,GAOnB,MALA1M,MAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EACTzM,KAAK2M,UAAYD,EACjB1M,KAAK4M,QAAqB,GAAXF,EAER1M,MAUXyN,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,EAAGiB,EAAOhB,WAUjDiB,OAAQ,SAAUC,GAMd,MAJAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EACdmB,EAAKlB,SAAW1M,KAAK2M,UAEdiB,GAYXC,SAAU,SAAUD,EAAME,GAEtB,GAAID,GAAWxN,EAAO0F,KAAK8H,SAAS7N,KAAKiG,EAAGjG,KAAKyM,EAAGmB,EAAK3H,EAAG2H,EAAKnB,EACjE,OAAOqB,GAAQ/H,KAAK+H,MAAMD,GAAYA,GAU1CrC,MAAO,SAAUuC,GAWb,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOmM,OAAOxM,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK0M,UAIhDqB,EAAOP,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK0M,UAG/BqB,GAWXC,SAAU,SAAU/H,EAAGwG,GAEnB,MAAOpM,GAAOmM,OAAOwB,SAAShO,KAAMiG,EAAGwG,IAY3CwB,mBAAoB,SAAUC,EAAOC,EAAWpB,GAE5C,MAAO1M,GAAOmM,OAAOyB,mBAAmBjO,KAAMkO,EAAOC,EAAWpB,IAWpEqB,OAAQ,SAAUC,EAAIC,GAKlB,MAHAtO,MAAKiG,GAAKoI,EACVrO,KAAKyM,GAAK6B,EAEHtO,MAUXuO,YAAa,SAAUC,GACnB,MAAOxO,MAAKoO,OAAOI,EAAMvI,EAAGuI,EAAM/B,IAQtCjF,SAAU,WACN,MAAO,sBAAwBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,aAAezM,KAAK0M,SAAW,WAAa1M,KAAKqN,OAAS,QAK3HhN,EAAOmM,OAAOnG,UAAU8B,YAAc9H,EAAOmM,OAQ7CjF,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,YAE3C2F,IAAK,WACD,MAAOhM,MAAK2M,WAGhBV,IAAK,SAAU1C,GAEPA,EAAQ,IAERvJ,KAAK2M,UAAYpD,EACjBvJ,KAAK4M,QAAkB,GAARrD,MAW3BhC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,UAE3C2F,IAAK,WACD,MAAOhM,MAAK4M,SAGhBX,IAAK,SAAU1C,GAEPA,EAAQ,IAERvJ,KAAK4M,QAAUrD,EACfvJ,KAAK2M,UAAoB,EAARpD,MAY7BhC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,QAE3C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKiG,GAEbjG,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAASrN,KAAKiG,EAAIsD,KAYnChC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,SAE3C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKiG,GAEbjG,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAAS9D,EAAQvJ,KAAKiG,KAYvCsB,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,OAE3C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKyM,GAEbzM,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAASrN,KAAKyM,EAAIlD,KAYnChC,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,UAE3C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAK4M,SAGzBX,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKyM,GAEbzM,KAAK4M,QAAU,EACf5M,KAAK2M,UAAY,GAIjB3M,KAAKqN,OAAS9D,EAAQvJ,KAAKyM,KAavClF,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,QAE3C2F,IAAK,WAED,MAAIhM,MAAK4M,QAAU,EAER7G,KAAK+G,GAAK9M,KAAK4M,QAAU5M,KAAK4M,QAI9B,KAanBrF,OAAO2E,eAAe7L,EAAOmM,OAAOnG,UAAW,SAE3C2F,IAAK,WACD,MAA2B,KAAnBhM,KAAK2M,WAGjBV,IAAK,SAAU1C,GAEPA,KAAU,GAEVvJ,KAAKwN,MAAM,EAAG,EAAG,MAe7BnN,EAAOmM,OAAOwB,SAAW,SAAUS,EAAGxI,EAAGwG,GAGrC,GAAIgC,EAAEpB,OAAS,GAAKpH,GAAKwI,EAAE5D,MAAQ5E,GAAKwI,EAAE7D,OAAS6B,GAAKgC,EAAEC,KAAOjC,GAAKgC,EAAEE,OACxE,CACI,GAAIN,IAAMI,EAAExI,EAAIA,IAAMwI,EAAExI,EAAIA,GACxBqI,GAAMG,EAAEhC,EAAIA,IAAMgC,EAAEhC,EAAIA,EAE5B,OAAQ4B,GAAKC,GAAQG,EAAEpB,OAASoB,EAAEpB,OAIlC,OAAO,GAYfhN,EAAOmM,OAAOoC,OAAS,SAAUH,EAAGI,GAChC,MAAQJ,GAAExI,GAAK4I,EAAE5I,GAAKwI,EAAEhC,GAAKoC,EAAEpC,GAAKgC,EAAE/B,UAAYmC,EAAEnC,UAWxDrM,EAAOmM,OAAOsC,WAAa,SAAUL,EAAGI,GACpC,MAAQxO,GAAO0F,KAAK8H,SAASY,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,IAAOgC,EAAEpB,OAASwB,EAAExB,QAYtEhN,EAAOmM,OAAOyB,mBAAqB,SAAUQ,EAAGP,EAAOC,EAAWpB,GAa9D,MAXkBrD,UAAdyE,IAA2BA,GAAY,GAC/BzE,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEtCmB,KAAc,IAEdD,EAAQ7N,EAAO0F,KAAKgJ,SAASb,IAGjCnB,EAAI9G,EAAIwI,EAAExI,EAAIwI,EAAEpB,OAAStH,KAAKoH,IAAIe,GAClCnB,EAAIN,EAAIgC,EAAEhC,EAAIgC,EAAEpB,OAAStH,KAAKqH,IAAIc,GAE3BnB,GAWX1M,EAAOmM,OAAOwC,oBAAsB,SAAUC,EAAG/B,GAE7C,GAAIgC,GAAKnJ,KAAKoJ,IAAIF,EAAEhJ,EAAIiH,EAAEjH,EAAIiH,EAAEkC,WAC5BC,EAAQnC,EAAEkC,UAAYH,EAAE5B,MAE5B,IAAI6B,EAAKG,EAEL,OAAO,CAGX,IAAIC,GAAKvJ,KAAKoJ,IAAIF,EAAExC,EAAIS,EAAET,EAAIS,EAAEqC,YAC5BC,EAAQtC,EAAEqC,WAAaN,EAAE5B,MAE7B,IAAIiC,EAAKE,EAEL,OAAO,CAGX,IAAIN,GAAMhC,EAAEkC,WAAaE,GAAMpC,EAAEqC,WAE7B,OAAO,CAGX,IAAIE,GAAcP,EAAKhC,EAAEkC,UACrBM,EAAcJ,EAAKpC,EAAEqC,WACrBI,EAAgBF,EAAcA,EAC9BG,EAAgBF,EAAcA,EAC9BG,EAAkBZ,EAAE5B,OAAS4B,EAAE5B,MAEnC,OAAwCwC,IAAjCF,EAAgBC,GAK3B9J,KAAK0G,OAASnM,EAAOmM,OAmBrBnM,EAAOyP,QAAU,SAAU7J,EAAGwG,EAAGsD,EAAOC,GAEpC/J,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTsD,EAAQA,GAAS,EACjBC,EAASA,GAAU,EAKnBhQ,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAMdhQ,KAAKkI,KAAO7H,EAAO4B,SAIvB5B,EAAOyP,QAAQzJ,WAWXmH,MAAO,SAAUvH,EAAGwG,EAAGsD,EAAOC,GAO1B,MALAhQ,MAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EACTzM,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEPhQ,MAUXsN,UAAW,WAEP,MAAO,IAAIjN,GAAOkN,UAAUvN,KAAKiG,EAAIjG,KAAK+P,MAAO/P,KAAKyM,EAAIzM,KAAKgQ,OAAQhQ,KAAK+P,MAAO/P,KAAKgQ,SAW5FvC,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,EAAGiB,EAAOqC,MAAOrC,EAAOsC,SAU/DrC,OAAQ,SAASC,GAOb,MALAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EACdmB,EAAKmC,MAAQ/P,KAAK+P,MAClBnC,EAAKoC,OAAShQ,KAAKgQ,OAEZpC,GAUXpC,MAAO,SAASuC,GAWZ,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOyP,QAAQ9P,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAI7DjC,EAAOP,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAG3CjC,GAYXC,SAAU,SAAU/H,EAAGwG,GAEnB,MAAOpM,GAAOyP,QAAQ9B,SAAShO,KAAMiG,EAAGwG,IAY5C9C,OAAQ,SAAUoD,GAEFrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIiD,GAAIlK,KAAK4D,SAAW5D,KAAK+G,GAAK,EAC9BI,EAAInH,KAAK4D,QAQb,OANAoD,GAAI9G,EAAIF,KAAKmK,KAAKhD,GAAKnH,KAAKoH,IAAI8C,GAChClD,EAAIN,EAAI1G,KAAKmK,KAAKhD,GAAKnH,KAAKqH,IAAI6C,GAEhClD,EAAI9G,EAAIjG,KAAKiG,EAAK8G,EAAI9G,EAAIjG,KAAK+P,MAAQ,EACvChD,EAAIN,EAAIzM,KAAKyM,EAAKM,EAAIN,EAAIzM,KAAKgQ,OAAS,EAEjCjD,GASXvF,SAAU,WACN,MAAO,uBAAyBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,UAAYzM,KAAK+P,MAAQ,WAAa/P,KAAKgQ,OAAS,QAKtH3P,EAAOyP,QAAQzJ,UAAU8B,YAAc9H,EAAOyP,QAO9CvI,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAKiG,GAGhBgG,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAIsD,KAWjBhC,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,SAE5C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK+P,OAGzB9D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKiG,EAEbjG,KAAK+P,MAAQ,EAIb/P,KAAK+P,MAAQxG,EAAQvJ,KAAKiG,KAWtCsB,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,OAE5C2F,IAAK,WACD,MAAOhM,MAAKyM,GAGhBR,IAAK,SAAU1C,GACXvJ,KAAKyM,EAAIlD,KAUjBhC,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,UAE5C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAKgQ,QAGzB/D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKyM,EAEbzM,KAAKgQ,OAAS,EAIdhQ,KAAKgQ,OAASzG,EAAQvJ,KAAKyM,KAYvClF,OAAO2E,eAAe7L,EAAOyP,QAAQzJ,UAAW,SAE5C2F,IAAK,WACD,MAAuB,KAAfhM,KAAK+P,OAA+B,IAAhB/P,KAAKgQ,QAGrC/D,IAAK,SAAU1C,GAEPA,KAAU,GAEVvJ,KAAKwN,MAAM,EAAG,EAAG,EAAG,MAgBhCnN,EAAOyP,QAAQ9B,SAAW,SAAUS,EAAGxI,EAAGwG,GAEtC,GAAIgC,EAAEsB,OAAS,GAAKtB,EAAEuB,QAAU,EAC5B,OAAO,CAIX,IAAIG,IAAUlK,EAAIwI,EAAExI,GAAKwI,EAAEsB,MAAS,GAChCK,GAAU3D,EAAIgC,EAAEhC,GAAKgC,EAAEuB,OAAU,EAKrC,OAHAG,IAASA,EACTC,GAASA,EAEe,IAAhBD,EAAQC,GAKpBtK,KAAKgK,QAAUzP,EAAOyP,QAkBtBzP,EAAOgQ,KAAO,SAAUC,EAAIC,EAAIC,EAAIC,GAEhCH,EAAKA,GAAM,EACXC,EAAKA,GAAM,EACXC,EAAKA,GAAM,EACXC,EAAKA,GAAM,EAKXzQ,KAAK0Q,MAAQ,GAAIrQ,GAAO2M,MAAMsD,EAAIC,GAKlCvQ,KAAK2Q,IAAM,GAAItQ,GAAO2M,MAAMwD,EAAIC,GAMhCzQ,KAAKkI,KAAO7H,EAAOmC,MAIvBnC,EAAOgQ,KAAKhK,WAYRmH,MAAO,SAAU8C,EAAIC,EAAIC,EAAIC,GAKzB,MAHAzQ,MAAK0Q,MAAMlD,MAAM8C,EAAIC,GACrBvQ,KAAK2Q,IAAInD,MAAMgD,EAAIC,GAEZzQ,MAcX4Q,WAAY,SAAUC,EAAaC,EAAWC,GAI1C,MAFkBrH,UAAdqH,IAA2BA,GAAY,GAEvCA,EAEO/Q,KAAKwN,MAAMqD,EAAYG,OAAO/K,EAAG4K,EAAYG,OAAOvE,EAAGqE,EAAUE,OAAO/K,EAAG6K,EAAUE,OAAOvE,GAGhGzM,KAAKwN,MAAMqD,EAAY5K,EAAG4K,EAAYpE,EAAGqE,EAAU7K,EAAG6K,EAAUrE,IAc3EwE,UAAW,SAAUhL,EAAGwG,EAAGyB,EAAOrG,GAK9B,MAHA7H,MAAK0Q,MAAMlD,MAAMvH,EAAGwG,GACpBzM,KAAK2Q,IAAInD,MAAMvH,EAAKF,KAAKoH,IAAIe,GAASrG,EAAS4E,EAAK1G,KAAKqH,IAAIc,GAASrG,GAE/D7H,MAiBXkR,OAAQ,SAAUhD,EAAOC,GAErB,GAAIe,IAAMlP,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,GAAK,EACnCqJ,GAAMtP,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,GAAK,CAKvC,OAHAzM,MAAK0Q,MAAMQ,OAAOhC,EAAII,EAAIpB,EAAOC,GACjCnO,KAAK2Q,IAAIO,OAAOhC,EAAII,EAAIpB,EAAOC,GAExBnO,MAgBXmR,aAAc,SAAUlL,EAAGwG,EAAGyB,EAAOC,GAKjC,MAHAnO,MAAK0Q,MAAMQ,OAAOjL,EAAGwG,EAAGyB,EAAOC,GAC/BnO,KAAK2Q,IAAIO,OAAOjL,EAAGwG,EAAGyB,EAAOC,GAEtBnO,MAeX8O,WAAY,SAAUsC,EAAMC,EAAWC,GAEnC,MAAOjR,GAAOgQ,KAAKkB,iBAAiBvR,KAAK0Q,MAAO1Q,KAAK2Q,IAAKS,EAAKV,MAAOU,EAAKT,IAAKU,EAAWC,IAY/FE,QAAS,SAAUJ,GAEf,MAAO/Q,GAAOgQ,KAAKmB,QAAQxR,KAAMoR,IAWrCK,SAAU,SAAU1E,GAOhB,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,GAAKjG,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,GAAK,EACtC8G,EAAIN,GAAKzM,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,GAAK,EAE/BM,GAeX2E,SAAU,SAAUzL,EAAGwG,GAEnB,GAAIyC,IAAMlP,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,GAAK,EACnCqJ,GAAMtP,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,GAAK,EAEnCkF,EAAK1L,EAAIiJ,EACT0C,EAAKnF,EAAI6C,CAEbtP,MAAK0Q,MAAMmB,IAAIF,EAAIC,GACnB5R,KAAK2Q,IAAIkB,IAAIF,EAAIC,IAYrBE,YAAa,SAAU7L,EAAGwG,GAEtB,OAASxG,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,MAAQzM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMwG,EAAIzM,KAAK0Q,MAAMjE,IAY/GsF,eAAgB,SAAU9L,EAAGwG,GAEzB,GAAIuF,GAAOjM,KAAKkM,IAAIjS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,GACvCiM,EAAOnM,KAAKoM,IAAInS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,GACvCmM,EAAOrM,KAAKkM,IAAIjS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,GACvC4F,EAAOtM,KAAKoM,IAAInS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,EAE3C,OAAQzM,MAAK8R,YAAY7L,EAAGwG,IAAOxG,GAAK+L,GAAaE,GAALjM,GAAewG,GAAK2F,GAAaC,GAAL5F,GAYhF9C,OAAQ,SAAUoD,GAEFrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIrF,GAAI5B,KAAK4D,QAKb,OAHAoD,GAAI9G,EAAIjG,KAAK0Q,MAAMzK,EAAI0B,GAAK3H,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,GACpD8G,EAAIN,EAAIzM,KAAK0Q,MAAMjE,EAAI9E,GAAK3H,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,GAE7CM,GAaXuF,kBAAmB,SAAUC,EAAUC,GAElB9I,SAAb6I,IAA0BA,EAAW,GACzB7I,SAAZ8I,IAAyBA,KAE7B,IAAIlC,GAAKvK,KAAK+H,MAAM9N,KAAK0Q,MAAMzK,GAC3BsK,EAAKxK,KAAK+H,MAAM9N,KAAK0Q,MAAMjE,GAC3B+D,EAAKzK,KAAK+H,MAAM9N,KAAK2Q,IAAI1K,GACzBwK,EAAK1K,KAAK+H,MAAM9N,KAAK2Q,IAAIlE,GAEzB4B,EAAKtI,KAAKoJ,IAAIqB,EAAKF,GACnBhC,EAAKvI,KAAKoJ,IAAIsB,EAAKF,GACnBkC,EAAWjC,EAALF,EAAW,EAAI,GACrBoC,EAAWjC,EAALF,EAAW,EAAI,GACrBoC,EAAMtE,EAAKC,CAEfkE,GAAQI,MAAMtC,EAAIC,GAIlB,KAFA,GAAIzI,GAAI,EAEEwI,GAAME,GAAQD,GAAME,GAC9B,CACI,GAAIoC,GAAKF,GAAO,CAEZE,IAAMvE,IAENqE,GAAOrE,EACPgC,GAAMmC,GAGDpE,EAALwE,IAEAF,GAAOtE,EACPkC,GAAMmC,GAGN5K,EAAIyK,IAAa,GAEjBC,EAAQI,MAAMtC,EAAIC,IAGtBzI,IAIJ,MAAO0K,IAUXhH,MAAO,SAAUuC,GAWb,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOgQ,KAAKrQ,KAAK0Q,MAAMzK,EAAGjG,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAI1K,EAAGjG,KAAK2Q,IAAIlE,GAI1EsB,EAAOP,MAAMxN,KAAK0Q,MAAMzK,EAAGjG,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAI1K,EAAGjG,KAAK2Q,IAAIlE,GAG3DsB,IAWfxG,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,UAEzC2F,IAAK,WACD,MAAOjG,MAAKmK,MAAMlQ,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,IAAMzM,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,OAU5IlF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,MAAOjG,MAAK+M,MAAM9S,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,MAU7EsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,OAAQhM,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,IAAMzM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,MAUtEsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,aAEzC2F,IAAK,WACD,SAAUhM,KAAK2Q,IAAI1K,EAAIjG,KAAK0Q,MAAMzK,IAAMjG,KAAK2Q,IAAIlE,EAAIzM,KAAK0Q,MAAMjE,OAUxElF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,KAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,MAU/CsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,KAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,MAU/ClF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,QAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,MAU/CsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,MAAOjG,MAAKoM,IAAInS,KAAK0Q,MAAMzK,EAAGjG,KAAK2Q,IAAI1K,MAU/CsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,OAEzC2F,IAAK,WACD,MAAOjG,MAAKkM,IAAIjS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,MAU/ClF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,UAEzC2F,IAAK,WACD,MAAOjG,MAAKoM,IAAInS,KAAK0Q,MAAMjE,EAAGzM,KAAK2Q,IAAIlE,MAU/ClF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,SAEzC2F,IAAK,WACD,MAAOjG,MAAKoJ,IAAInP,KAAK0Q,MAAMzK,EAAIjG,KAAK2Q,IAAI1K,MAUhDsB,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,UAEzC2F,IAAK,WACD,MAAOjG,MAAKoJ,IAAInP,KAAK0Q,MAAMjE,EAAIzM,KAAK2Q,IAAIlE,MAUhDlF,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,WAEzC2F,IAAK,WACD,MAAOjG,MAAKoH,IAAInN,KAAKkO,MAAQ,uBAUrC3G,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,WAEzC2F,IAAK,WACD,MAAOjG,MAAKqH,IAAIpN,KAAKkO,MAAQ,uBAUrC3G,OAAO2E,eAAe7L,EAAOgQ,KAAKhK,UAAW,eAEzC2F,IAAK,WACD,MAAO3L,GAAO0F,KAAKgN,KAAK/S,KAAKkO,MAAQ,oBAAqBnI,KAAK+G,GAAI/G,KAAK+G,OAoBhFzM,EAAOgQ,KAAKkB,iBAAmB,SAAU9C,EAAGI,EAAG5D,EAAGf,EAAGmH,EAAWC,GAE1C5H,SAAd2H,IAA2BA,GAAY,GAC5B3H,SAAX4H,IAAwBA,EAAS,GAAIjR,GAAO2M,MAEhD,IAAIgG,GAAKnE,EAAEpC,EAAIgC,EAAEhC,EACbwG,EAAK/I,EAAEuC,EAAIxB,EAAEwB,EACbyG,EAAKzE,EAAExI,EAAI4I,EAAE5I,EACbkN,EAAKlI,EAAEhF,EAAIiE,EAAEjE,EACbmN,EAAMvE,EAAE5I,EAAIwI,EAAEhC,EAAMgC,EAAExI,EAAI4I,EAAEpC,EAC5B4G,EAAMnJ,EAAEjE,EAAIgF,EAAEwB,EAAMxB,EAAEhF,EAAIiE,EAAEuC,EAC5B6G,EAASN,EAAKG,EAAOF,EAAKC,CAE9B,IAAc,IAAVI,EAEA,MAAO,KAMX,IAHAhC,EAAOrL,GAAMiN,EAAKG,EAAOF,EAAKC,GAAOE,EACrChC,EAAO7E,GAAMwG,EAAKG,EAAOJ,EAAKK,GAAOC,EAEjCjC,EACJ,CACI,GAAIkC,IAAOrJ,EAAEuC,EAAIxB,EAAEwB,IAAMoC,EAAE5I,EAAIwI,EAAExI,IAAMiE,EAAEjE,EAAIgF,EAAEhF,IAAM4I,EAAEpC,EAAIgC,EAAEhC,GACzD+G,IAAQtJ,EAAEjE,EAAIgF,EAAEhF,IAAMwI,EAAEhC,EAAIxB,EAAEwB,IAAOvC,EAAEuC,EAAIxB,EAAEwB,IAAMgC,EAAExI,EAAIgF,EAAEhF,IAAMsN,EACjEE,IAAQ5E,EAAE5I,EAAIwI,EAAExI,IAAMwI,EAAEhC,EAAIxB,EAAEwB,IAAQoC,EAAEpC,EAAIgC,EAAEhC,IAAMgC,EAAExI,EAAIgF,EAAEhF,IAAOsN,CAEvE,OAAIC,IAAM,GAAW,GAANA,GAAWC,GAAM,GAAW,GAANA,EAE1BnC,EAIA,KAIf,MAAOA,IAkBXjR,EAAOgQ,KAAKvB,WAAa,SAAUL,EAAGI,EAAGwC,EAAWC,GAEhD,MAAOjR,GAAOgQ,KAAKkB,iBAAiB9C,EAAEiC,MAAOjC,EAAEkC,IAAK9B,EAAE6B,MAAO7B,EAAE8B,IAAKU,EAAWC,IAoBnFjR,EAAOgQ,KAAKrB,oBAAsB,SAAUoC,EAAMsC,GAG9C,IAAKrT,EAAOkN,UAAUuB,WAAWsC,EAAMsC,GAEnC,OAAO,CAGX,IAAIpD,GAAKc,EAAKV,MAAMzK,EAChBsK,EAAKa,EAAKV,MAAMjE,EAEhB+D,EAAKY,EAAKT,IAAI1K,EACdwK,EAAKW,EAAKT,IAAIlE,EAEdkH,EAAMD,EAAKzN,EACX2N,EAAMF,EAAKjH,EACXoH,EAAMH,EAAK9I,MACXkJ,EAAMJ,EAAK/E,OAEXhH,EAAI,CAKR,IAAK2I,GAAMqD,GAAaE,GAANvD,GAAaC,GAAMqD,GAAaE,GAANvD,GACvCC,GAAMmD,GAAaE,GAANrD,GAAaC,GAAMmD,GAAaE,GAANrD,EAExC,OAAO,CAGX,IAASkD,EAALrD,GAAYE,GAAMmD,GAKlB,GAFAhM,EAAI4I,GAAME,EAAKF,IAAOoD,EAAMrD,IAAOE,EAAKF,GAEpC3I,EAAIiM,GAAYE,GAALnM,EAEX,OAAO,MAGV,IAAI2I,EAAKuD,GAAaA,GAANrD,IAGjB7I,EAAI4I,GAAME,EAAKF,IAAOsD,EAAMvD,IAAOE,EAAKF,GAEpC3I,GAAKiM,GAAYE,GAALnM,GAEZ,OAAO,CAIf,IAASiM,EAALrD,GAAYE,GAAMmD,GAKlB,GAFAjM,EAAI2I,GAAME,EAAKF,IAAOsD,EAAMrD,IAAOE,EAAKF,GAEpC5I,GAAKgM,GAAYE,GAALlM,EAEZ,OAAO,MAGV,IAAI4I,EAAKuD,GAAaA,GAANrD,IAGjB9I,EAAI2I,GAAME,EAAKF,IAAOwD,EAAMvD,IAAOE,EAAKF,GAEpC5I,GAAKgM,GAAYE,GAALlM,GAEZ,OAAO,CAIf,QAAO,GAaXtH,EAAOgQ,KAAKmB,QAAU,SAAU/C,EAAGI,GAE/B,MAAO,GAAIA,EAAEkF,YAAc,kBAAoBtF,EAAEP,OA6BrD7N,EAAO2T,OAAS,SAAUvF,EAAGI,EAAGI,EAAGgF,EAAGtC,EAAIC,GAE5BlI,SAAN+E,GAAyB,OAANA,IAAcA,EAAI,GAC/B/E,SAANmF,GAAyB,OAANA,IAAcA,EAAI,GAC/BnF,SAANuF,GAAyB,OAANA,IAAcA,EAAI,GAC/BvF,SAANuK,GAAyB,OAANA,IAAcA,EAAI,GAC9BvK,SAAPiI,GAA2B,OAAPA,IAAeA,EAAK,GACjCjI,SAAPkI,GAA2B,OAAPA,IAAeA,EAAK,GAM5C5R,KAAKyO,EAAIA,EAMTzO,KAAK6O,EAAIA,EAMT7O,KAAKiP,EAAIA,EAMTjP,KAAKiU,EAAIA,EAMTjU,KAAK2R,GAAKA,EAMV3R,KAAK4R,GAAKA,EAMV5R,KAAKkI,KAAO7H,EAAOoC,QAIvBpC,EAAO2T,OAAO3N,WAkBV6N,UAAW,SAAUC,GAEjB,MAAOnU,MAAKwN,MAAM2G,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAgB9E3G,MAAO,SAAUiB,EAAGI,EAAGI,EAAGgF,EAAGtC,EAAIC,GAS7B,MAPA5R,MAAKyO,EAAIA,EACTzO,KAAK6O,EAAIA,EACT7O,KAAKiP,EAAIA,EACTjP,KAAKiU,EAAIA,EACTjU,KAAK2R,GAAKA,EACV3R,KAAK4R,GAAKA,EAEH5R,MAaXwL,MAAO,SAAUuC,GAgBb,MAderE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAO2T,OAAOhU,KAAKyO,EAAGzO,KAAK6O,EAAG7O,KAAKiP,EAAGjP,KAAKiU,EAAGjU,KAAK2R,GAAI3R,KAAK4R,KAIzE7D,EAAOU,EAAIzO,KAAKyO,EAChBV,EAAOc,EAAI7O,KAAK6O,EAChBd,EAAOkB,EAAIjP,KAAKiP,EAChBlB,EAAOkG,EAAIjU,KAAKiU,EAChBlG,EAAO4D,GAAK3R,KAAK2R,GACjB5D,EAAO6D,GAAK5R,KAAK4R,IAGd7D,GAWXJ,OAAQ,SAAUyG,GAId,MAFAA,GAAO3G,SAASzN,MAEToU,GAWX3G,SAAU,SAAU2G,GAShB,MAPApU,MAAKyO,EAAI2F,EAAO3F,EAChBzO,KAAK6O,EAAIuF,EAAOvF,EAChB7O,KAAKiP,EAAImF,EAAOnF,EAChBjP,KAAKiU,EAAIG,EAAOH,EAChBjU,KAAK2R,GAAKyC,EAAOzC,GACjB3R,KAAK4R,GAAKwC,EAAOxC,GAEV5R,MAYXqU,QAAS,SAAUC,EAAWH,GA6B1B,MA3BczK,UAAVyK,IAAuBA,EAAQ,GAAIrO,MAAKyO,aAAa,IAErDD,GAEAH,EAAM,GAAKnU,KAAKyO,EAChB0F,EAAM,GAAKnU,KAAK6O,EAChBsF,EAAM,GAAK,EACXA,EAAM,GAAKnU,KAAKiP,EAChBkF,EAAM,GAAKnU,KAAKiU,EAChBE,EAAM,GAAK,EACXA,EAAM,GAAKnU,KAAK2R,GAChBwC,EAAM,GAAKnU,KAAK4R,GAChBuC,EAAM,GAAK,IAIXA,EAAM,GAAKnU,KAAKyO,EAChB0F,EAAM,GAAKnU,KAAKiP,EAChBkF,EAAM,GAAKnU,KAAK2R,GAChBwC,EAAM,GAAKnU,KAAK6O,EAChBsF,EAAM,GAAKnU,KAAKiU,EAChBE,EAAM,GAAKnU,KAAK4R,GAChBuC,EAAM,GAAK,EACXA,EAAM,GAAK,EACXA,EAAM,GAAK,GAGRA,GAcXlN,MAAO,SAAUuN,EAAKC,GAOlB,MALe/K,UAAX+K,IAAwBA,EAAS,GAAIpU,GAAO2M,OAEhDyH,EAAOxO,EAAIjG,KAAKyO,EAAI+F,EAAIvO,EAAIjG,KAAKiP,EAAIuF,EAAI/H,EAAIzM,KAAK2R,GAClD8C,EAAOhI,EAAIzM,KAAK6O,EAAI2F,EAAIvO,EAAIjG,KAAKiU,EAAIO,EAAI/H,EAAIzM,KAAK4R,GAE3C6C,GAcXC,aAAc,SAAUF,EAAKC,GAEV/K,SAAX+K,IAAwBA,EAAS,GAAIpU,GAAO2M,MAEhD,IAAI2H,GAAK,GAAK3U,KAAKyO,EAAIzO,KAAKiU,EAAIjU,KAAKiP,GAAKjP,KAAK6O,GAC3C5I,EAAIuO,EAAIvO,EACRwG,EAAI+H,EAAI/H,CAKZ,OAHAgI,GAAOxO,EAAIjG,KAAKiU,EAAIU,EAAK1O,GAAKjG,KAAKiP,EAAI0F,EAAKlI,GAAKzM,KAAK4R,GAAK5R,KAAKiP,EAAIjP,KAAK2R,GAAK3R,KAAKiU,GAAKU,EACxFF,EAAOhI,EAAIzM,KAAKyO,EAAIkG,EAAKlI,GAAKzM,KAAK6O,EAAI8F,EAAK1O,IAAMjG,KAAK4R,GAAK5R,KAAKyO,EAAIzO,KAAK2R,GAAK3R,KAAK6O,GAAK8F,EAElFF,GAaXG,UAAW,SAAU3O,EAAGwG,GAKpB,MAHAzM,MAAK2R,IAAM1L,EACXjG,KAAK4R,IAAMnF,EAEJzM,MAYX6U,MAAO,SAAU5O,EAAGwG,GAShB,MAPAzM,MAAKyO,GAAKxI,EACVjG,KAAKiU,GAAKxH,EACVzM,KAAKiP,GAAKhJ,EACVjG,KAAK6O,GAAKpC,EACVzM,KAAK2R,IAAM1L,EACXjG,KAAK4R,IAAMnF,EAEJzM,MAWXkR,OAAQ,SAAUhD,GAEd,GAAIf,GAAMpH,KAAKoH,IAAIe,GACfd,EAAMrH,KAAKqH,IAAIc,GAEf8E,EAAKhT,KAAKyO,EACV2E,EAAKpT,KAAKiP,EACV6F,EAAM9U,KAAK2R,EASf,OAPA3R,MAAKyO,EAAIuE,EAAK7F,EAAInN,KAAK6O,EAAIzB,EAC3BpN,KAAK6O,EAAImE,EAAK5F,EAAIpN,KAAK6O,EAAI1B,EAC3BnN,KAAKiP,EAAImE,EAAKjG,EAAInN,KAAKiU,EAAI7G,EAC3BpN,KAAKiU,EAAIb,EAAKhG,EAAIpN,KAAKiU,EAAI9G,EAC3BnN,KAAK2R,GAAKmD,EAAM3H,EAAMnN,KAAK4R,GAAKxE,EAChCpN,KAAK4R,GAAKkD,EAAM1H,EAAMpN,KAAK4R,GAAKzE,EAEzBnN,MAWX+U,OAAQ,SAAUX,GAEd,GAAIpB,GAAKhT,KAAKyO,EACVyE,EAAKlT,KAAK6O,EACVuE,EAAKpT,KAAKiP,EACV+F,EAAKhV,KAAKiU,CAUd,OARAjU,MAAKyO,EAAK2F,EAAO3F,EAAIuE,EAAKoB,EAAOvF,EAAIuE,EACrCpT,KAAK6O,EAAKuF,EAAO3F,EAAIyE,EAAKkB,EAAOvF,EAAImG,EACrChV,KAAKiP,EAAKmF,EAAOnF,EAAI+D,EAAKoB,EAAOH,EAAIb,EACrCpT,KAAKiU,EAAKG,EAAOnF,EAAIiE,EAAKkB,EAAOH,EAAIe,EAErChV,KAAK2R,GAAKyC,EAAOzC,GAAKqB,EAAKoB,EAAOxC,GAAKwB,EAAKpT,KAAK2R,GACjD3R,KAAK4R,GAAKwC,EAAOzC,GAAKuB,EAAKkB,EAAOxC,GAAKoD,EAAKhV,KAAK4R,GAE1C5R,MAUXiV,SAAU,WAEN,MAAOjV,MAAKwN,MAAM,EAAG,EAAG,EAAG,EAAG,EAAG,KAMzCnN,EAAO6U,eAAiB,GAAI7U,GAAO2T,OAGnClO,KAAKkO,OAAS3T,EAAO2T,OACrBlO,KAAKoP,eAAiB7U,EAAO6U,eAmB7B7U,EAAO2M,MAAQ,SAAU/G,EAAGwG,GAExBxG,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EAKTzM,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAMTzM,KAAKkI,KAAO7H,EAAOqC,OAIvBrC,EAAO2M,MAAM3G,WASToH,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,IAUvC0I,OAAQ,WAEJ,MAAOnV,MAAKwN,MAAMxN,KAAKyM,EAAGzM,KAAKiG,IAcnCuH,MAAO,SAAUvH,EAAGwG,GAKhB,MAHAzM,MAAKiG,EAAIA,GAAK,EACdjG,KAAKyM,EAAIA,IAAc,IAANA,EAAWzM,KAAKiG,EAAI,GAE9BjG,MAcXiM,IAAK,SAAUhG,EAAGwG,GAKd,MAHAzM,MAAKiG,EAAIA,GAAK,EACdjG,KAAKyM,EAAIA,IAAc,IAANA,EAAWzM,KAAKiG,EAAI,GAE9BjG,MAYX6R,IAAK,SAAU5L,EAAGwG,GAId,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXoV,SAAU,SAAUnP,EAAGwG,GAInB,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXqV,SAAU,SAAUpP,EAAGwG,GAInB,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXsV,OAAQ,SAAUrP,EAAGwG,GAIjB,MAFAzM,MAAKiG,GAAKA,EACVjG,KAAKyM,GAAKA,EACHzM,MAYXuV,OAAQ,SAAUtD,EAAKE,GAGnB,MADAnS,MAAKiG,EAAI5F,EAAO0F,KAAKyP,MAAMxV,KAAKiG,EAAGgM,EAAKE,GACjCnS,MAYXyV,OAAQ,SAAUxD,EAAKE,GAGnB,MADAnS,MAAKyM,EAAIpM,EAAO0F,KAAKyP,MAAMxV,KAAKyM,EAAGwF,EAAKE,GACjCnS,MAYXwV,MAAO,SAAUvD,EAAKE,GAIlB,MAFAnS,MAAKiG,EAAI5F,EAAO0F,KAAKyP,MAAMxV,KAAKiG,EAAGgM,EAAKE,GACxCnS,KAAKyM,EAAIpM,EAAO0F,KAAKyP,MAAMxV,KAAKyM,EAAGwF,EAAKE,GACjCnS,MAWXwL,MAAO,SAAUuC,GAWb,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAO2M,MAAMhN,KAAKiG,EAAGjG,KAAKyM,GAIvCsB,EAAOP,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GAGvBsB,GAWXJ,OAAQ,SAAUC,GAKd,MAHAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EAEPmB,GAYXC,SAAU,SAAUD,EAAME,GAEtB,MAAOzN,GAAO2M,MAAMa,SAAS7N,KAAM4N,EAAME,IAW7Cc,OAAQ,SAAUH,GAEd,MAAQA,GAAExI,IAAMjG,KAAKiG,GAAKwI,EAAEhC,IAAMzM,KAAKyM,GAY3CyB,MAAO,SAAUO,EAAGN,GAIhB,MAFkBzE,UAAdyE,IAA2BA,GAAY,GAEvCA,EAEO9N,EAAO0F,KAAK2P,SAAS3P,KAAK+M,MAAMrE,EAAEhC,EAAIzM,KAAKyM,EAAGgC,EAAExI,EAAIjG,KAAKiG,IAIzDF,KAAK+M,MAAMrE,EAAEhC,EAAIzM,KAAKyM,EAAGgC,EAAExI,EAAIjG,KAAKiG,IAgBnDiL,OAAQ,SAAUjL,EAAGwG,EAAGyB,EAAOC,EAAWN,GAEtC,MAAOxN,GAAO2M,MAAMkE,OAAOlR,KAAMiG,EAAGwG,EAAGyB,EAAOC,EAAWN,IAU7D8H,aAAc,WAEV,MAAO5P,MAAKmK,KAAMlQ,KAAKiG,EAAIjG,KAAKiG,EAAMjG,KAAKyM,EAAIzM,KAAKyM,IAUxDmJ,eAAgB,WAEZ,MAAQ5V,MAAKiG,EAAIjG,KAAKiG,EAAMjG,KAAKyM,EAAIzM,KAAKyM,GAW9CoJ,aAAc,SAAUC,GAEpB,MAAO9V,MAAK+V,YAAYV,SAASS,EAAWA,IAUhDC,UAAW,WAEP,IAAK/V,KAAKgW,SACV,CACI,GAAIC,GAAIjW,KAAK2V,cACb3V,MAAKiG,GAAKgQ,EACVjW,KAAKyM,GAAKwJ,EAGd,MAAOjW,OAUXgW,OAAQ,WAEJ,MAAmB,KAAXhW,KAAKiG,GAAsB,IAAXjG,KAAKyM,GAWjCyJ,IAAK,SAAUzH,GAEX,MAASzO,MAAKiG,EAAIwI,EAAExI,EAAMjG,KAAKyM,EAAIgC,EAAEhC,GAWzC0J,MAAO,SAAU1H,GAEb,MAASzO,MAAKiG,EAAIwI,EAAEhC,EAAMzM,KAAKyM,EAAIgC,EAAExI,GAUzCmQ,KAAM,WAEF,MAAOpW,MAAKwN,OAAOxN,KAAKyM,EAAGzM,KAAKiG,IAUpCoQ,MAAO,WAEH,MAAOrW,MAAKwN,MAAMxN,KAAKyM,GAAIzM,KAAKiG,IAUpCqQ,gBAAiB,WAEb,MAAOtW,MAAKwN,MAAe,GAATxN,KAAKyM,EAAQzM,KAAKiG,IAUxCE,MAAO,WAEH,MAAOnG,MAAKwN,MAAMzH,KAAKI,MAAMnG,KAAKiG,GAAIF,KAAKI,MAAMnG,KAAKyM,KAU1DvG,KAAM,WAEF,MAAOlG,MAAKwN,MAAMzH,KAAKG,KAAKlG,KAAKiG,GAAIF,KAAKG,KAAKlG,KAAKyM,KAUxDjF,SAAU,WAEN,MAAO,cAAgBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,QAMzDpM,EAAO2M,MAAM3G,UAAU8B,YAAc9H,EAAO2M,MAW5C3M,EAAO2M,MAAM6E,IAAM,SAAUpD,EAAGI,EAAG9B,GAO/B,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAaX1M,EAAO2M,MAAMoI,SAAW,SAAU3G,EAAGI,EAAG9B,GAOpC,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAaX1M,EAAO2M,MAAMqI,SAAW,SAAU5G,EAAGI,EAAG9B,GAOpC,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAaX1M,EAAO2M,MAAMsI,OAAS,SAAU7G,EAAGI,EAAG9B,GAOlC,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIwI,EAAExI,EAAI4I,EAAE5I,EAChB8G,EAAIN,EAAIgC,EAAEhC,EAAIoC,EAAEpC,EAETM,GAYX1M,EAAO2M,MAAM4B,OAAS,SAAUH,EAAGI,GAE/B,MAAQJ,GAAExI,IAAM4I,EAAE5I,GAAKwI,EAAEhC,IAAMoC,EAAEpC,GAYrCpM,EAAO2M,MAAMkB,MAAQ,SAAUO,EAAGI,GAG9B,MAAO9I,MAAK+M,MAAMrE,EAAEhC,EAAIoC,EAAEpC,EAAGgC,EAAExI,EAAI4I,EAAE5I,IAYzC5F,EAAO2M,MAAMuJ,SAAW,SAAU9H,EAAG1B,GAIjC,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,OAAOiB,EAAExI,GAAIwI,EAAEhC,IAc9BpM,EAAO2M,MAAMwJ,YAAc,SAAU/H,EAAGI,EAAG4H,EAAG1J,GAI1C,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAMiB,EAAExI,EAAI4I,EAAE5I,EAAIwQ,EAAGhI,EAAEhC,EAAIoC,EAAEpC,EAAIgK,IAchDpW,EAAO2M,MAAM0J,YAAc,SAAUjI,EAAGI,EAAG3E,EAAG6C,GAI1C,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAMiB,EAAExI,GAAK4I,EAAE5I,EAAIwI,EAAExI,GAAKiE,EAAGuE,EAAEhC,GAAKoC,EAAEpC,EAAIgC,EAAEhC,GAAKvC,IAYhE7J,EAAO2M,MAAMoJ,KAAO,SAAU3H,EAAG1B,GAI7B,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,OAAOiB,EAAEhC,EAAGgC,EAAExI,IAY7B5F,EAAO2M,MAAMqJ,MAAQ,SAAU5H,EAAG1B,GAI9B,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAMiB,EAAEhC,GAAIgC,EAAExI,IAa7B5F,EAAO2M,MAAMa,SAAW,SAAUY,EAAGI,EAAGf,GAEpC,GAAID,GAAWxN,EAAO0F,KAAK8H,SAASY,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EACrD,OAAOqB,GAAQ/H,KAAK+H,MAAMD,GAAYA,GAa1CxN,EAAO2M,MAAM2J,QAAU,SAAUlI,EAAGI,EAAG9B,GAEvBrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAI4J,GAAMnI,EAAEyH,IAAIrH,GAAKA,EAAE+G,gBAOvB,OALY,KAARgB,GAEA7J,EAAIS,MAAMoJ,EAAM/H,EAAE5I,EAAG2Q,EAAM/H,EAAEpC,GAG1BM,GAaX1M,EAAO2M,MAAM6J,YAAc,SAAUpI,EAAGI,EAAG9B,GAE3BrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAI4J,GAAMnI,EAAEyH,IAAIrH,EAOhB,OALY,KAAR+H,GAEA7J,EAAIS,MAAMoJ,EAAM/H,EAAE5I,EAAG2Q,EAAM/H,EAAEpC,GAG1BM,GAYX1M,EAAO2M,MAAMsJ,gBAAkB,SAAU7H,EAAG1B,GAIxC,MAFYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEnCD,EAAIS,MAAY,GAANiB,EAAEhC,EAAQgC,EAAExI,IAYjC5F,EAAO2M,MAAM+I,UAAY,SAAUtH,EAAG1B,GAEtBrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,MAE1C,IAAIiJ,GAAIxH,EAAEkH,cAOV,OALU,KAANM,GAEAlJ,EAAIS,MAAMiB,EAAExI,EAAIgQ,EAAGxH,EAAEhC,EAAIwJ,GAGtBlJ,GAqBX1M,EAAO2M,MAAMkE,OAAS,SAAUzC,EAAGxI,EAAGwG,EAAGyB,EAAOC,EAAWN,GAIvD,GAFIM,IAAaD,EAAQ7N,EAAO0F,KAAKgJ,SAASb,IAE7BxE,SAAbmE,EACJ,CACIY,EAAE2G,SAASnP,EAAGwG,EAEd,IAAIgK,GAAI1Q,KAAKqH,IAAIc,GACbe,EAAIlJ,KAAKoH,IAAIe,GAEbyD,EAAK1C,EAAIR,EAAExI,EAAIwQ,EAAIhI,EAAEhC,EACrBmF,EAAK6E,EAAIhI,EAAExI,EAAIgJ,EAAIR,EAAEhC,CAEzBgC,GAAExI,EAAI0L,EAAK1L,EACXwI,EAAEhC,EAAImF,EAAKnF,MAGf,CACI,GAAI9E,GAAIuG,EAAQnI,KAAK+M,MAAMrE,EAAEhC,EAAIA,EAAGgC,EAAExI,EAAIA,EAC1CwI,GAAExI,EAAIA,EAAI4H,EAAW9H,KAAKoH,IAAIxF,GAC9B8G,EAAEhC,EAAIA,EAAIoB,EAAW9H,KAAKqH,IAAIzF,GAGlC,MAAO8G,IAYXpO,EAAO2M,MAAM8J,SAAW,SAAUC,EAAQhK,GAItC,GAFYrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAEK,mBAA3CzF,OAAOlB,UAAUmB,SAASV,KAAKiQ,GAE/B,KAAM,IAAIC,OAAM,oDAGpB,IAAIC,GAAeF,EAAOlP,MAE1B,IAAmB,EAAfoP,EAEA,KAAM,IAAID,OAAM,2DAGpB,IAAqB,IAAjBC,EAGA,MADAlK,GAAIU,SAASsJ,EAAO,IACbhK,CAGX,KAAK,GAAIjF,GAAI,EAAOmP,EAAJnP,EAAkBA,IAE9BzH,EAAO2M,MAAM6E,IAAI9E,EAAKgK,EAAOjP,GAAIiF,EAKrC,OAFAA,GAAIuI,OAAO2B,EAAcA,GAElBlK,GAeX1M,EAAO2M,MAAMkK,MAAQ,SAASnO,EAAKoO,EAAOC,GAEtCD,EAAQA,GAAS,IACjBC,EAAQA,GAAS,GAEjB,IAAI5I,GAAQ,GAAInO,GAAO2M,KAYvB,OAVIjE,GAAIoO,KAEJ3I,EAAMvI,EAAIoE,SAAStB,EAAIoO,GAAQ,KAG/BpO,EAAIqO,KAEJ5I,EAAM/B,EAAIpC,SAAStB,EAAIqO,GAAQ,KAG5B5I,GAKX1I,KAAKkH,MAAQ3M,EAAO2M,MAyBpB3M,EAAOgX,QAAU,WAKbrX,KAAKsX,KAAO,EAMZtX,KAAKuX,WAEDxQ,UAAUc,OAAS,GAEnB7H,KAAKwN,MAAMvG,MAAMjH,KAAM+G,WAM3B/G,KAAKwX,QAAS,EAKdxX,KAAKyX,WAAY,EAKjBzX,KAAKkI,KAAO7H,EAAOwB,SAIvBxB,EAAOgX,QAAQhR,WASXqR,cAAe,SAAU3J,GAENrE,SAAXqE,IAAwBA,KAE5B,KAAK,GAAIjG,GAAI,EAAGA,EAAI9H,KAAKuX,QAAQ1P,OAAQC,IAEN,gBAApB9H,MAAKuX,QAAQzP,IAEpBiG,EAAO6E,KAAK5S,KAAKuX,QAAQzP,IACzBiG,EAAO6E,KAAK5S,KAAKuX,QAAQzP,EAAI,IAC7BA,MAIAiG,EAAO6E,KAAK5S,KAAKuX,QAAQzP,GAAG7B,GAC5B8H,EAAO6E,KAAK5S,KAAKuX,QAAQzP,GAAG2E,GAIpC,OAAOsB,IAYX4J,QAAS,WAML,MAJA3X,MAAKuX,QAAUvX,KAAK0X,gBAEpB1X,KAAKyX,WAAY,EAEVzX,MAYXwL,MAAO,SAAUuC,GAEb,GAAIgJ,GAAS/W,KAAKuX,QAAQhR,OAW1B,OATemD,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOgX,QAAQN,GAI5BhJ,EAAOP,MAAMuJ,GAGVhJ,GAYXC,SAAU,SAAU/H,EAAGwG,GAInB,GAAImL,IAAS,CAEb,IAAI5X,KAAKyX,UAEL,IAAK,GAAI3P,GAAI,GAAI+P,EAAI7X,KAAKuX,QAAQ1P,OAAS,GAAIC,GAAK,GAAK9H,KAAKuX,QAAQ1P,OAAQgQ,EAAI/P,EAClF,CACI,GAAIgQ,GAAK9X,KAAKuX,QAAQzP,GAClBiQ,EAAK/X,KAAKuX,QAAQzP,EAAI,GAEtBkQ,EAAKhY,KAAKuX,QAAQM,GAClBI,EAAKjY,KAAKuX,QAAQM,EAAI,IAEdpL,GAANsL,GAAeE,EAAJxL,GAAkBA,GAANwL,GAAeF,EAAJtL,KAAkBuL,EAAKF,IAAOrL,EAAIsL,IAAOE,EAAKF,GAAMD,EAAvC7R,IAEjD2R,GAAUA,OAOlB,KAAK,GAAI9P,GAAI,GAAI+P,EAAI7X,KAAKuX,QAAQ1P,OAAS,IAAKC,EAAI9H,KAAKuX,QAAQ1P,OAAQgQ,EAAI/P,EAC7E,CACI,GAAIgQ,GAAK9X,KAAKuX,QAAQzP,GAAG7B,EACrB8R,EAAK/X,KAAKuX,QAAQzP,GAAG2E,EAErBuL,EAAKhY,KAAKuX,QAAQM,GAAG5R,EACrBgS,EAAKjY,KAAKuX,QAAQM,GAAGpL,GAEbA,GAANsL,GAAeE,EAAJxL,GAAkBA,GAANwL,GAAeF,EAAJtL,KAAkBuL,EAAKF,IAAOrL,EAAIsL,IAAOE,EAAKF,GAAMD,EAAvC7R,IAEjD2R,GAAUA,GAKtB,MAAOA,IAuBXpK,MAAO,SAAUuJ,GAKb,GAHA/W,KAAKsX,KAAO,EACZtX,KAAKuX,WAEDxQ,UAAUc,OAAS,EACvB,CAESrB,MAAMa,QAAQ0P,KAEfA,EAASvQ,MAAMH,UAAUE,MAAMO,KAAKC,WAMxC,KAAK,GAHDmR,GAAKC,OAAOC,UAGPtQ,EAAI,EAAGF,EAAMmP,EAAOlP,OAAYD,EAAJE,EAASA,IAC9C,CACI,GAAyB,gBAAdiP,GAAOjP,GAClB,CACI,GAAImI,GAAI,GAAInK,MAAKkH,MAAM+J,EAAOjP,GAAIiP,EAAOjP,EAAI,GAC7CA,SAEC,IAAItB,MAAMa,QAAQ0P,EAAOjP,IAE1B,GAAImI,GAAI,GAAInK,MAAKkH,MAAM+J,EAAOjP,GAAG,GAAIiP,EAAOjP,GAAG,QAI/C,IAAImI,GAAI,GAAInK,MAAKkH,MAAM+J,EAAOjP,GAAG7B,EAAG8Q,EAAOjP,GAAG2E,EAGlDzM,MAAKuX,QAAQ3E,KAAK3C,GAGdA,EAAExD,EAAIyL,IAENA,EAAKjI,EAAExD,GAIfzM,KAAKqY,cAAcH,GAGvB,MAAOlY,OAYXqY,cAAe,SAAUH,GAOrB,IAAK,GALDI,GACAC,EACAC,EACAzI,EAEKjI,EAAI,EAAGF,EAAM5H,KAAKuX,QAAQ1P,OAAYD,EAAJE,EAASA,IAEhDwQ,EAAKtY,KAAKuX,QAAQzP,GAIdyQ,EAFAzQ,IAAMF,EAAM,EAEP5H,KAAKuX,QAAQ,GAIbvX,KAAKuX,QAAQzP,EAAI,GAG1B0Q,GAAcF,EAAG7L,EAAIyL,GAAOK,EAAG9L,EAAIyL,IAAO,EAC1CnI,EAAQuI,EAAGrS,EAAIsS,EAAGtS,EAClBjG,KAAKsX,MAAQkB,EAAYzI,CAG7B,OAAO/P,MAAKsX,OAMpBjX,EAAOgX,QAAQhR,UAAU8B,YAAc9H,EAAOgX,QAW9C9P,OAAO2E,eAAe7L,EAAOgX,QAAQhR,UAAW,UAE5C2F,IAAK,WACD,MAAOhM,MAAKuX,SAGhBtL,IAAK,SAAS8K,GAEI,MAAVA,EAEA/W,KAAKwN,MAAMuJ,GAKX/W,KAAKwN,WAQjB1H,KAAKuR,QAAUhX,EAAOgX,QAmBtBhX,EAAOkN,UAAY,SAAUtH,EAAGwG,EAAGsD,EAAOC,GAEtC/J,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTsD,EAAQA,GAAS,EACjBC,EAASA,GAAU,EAKnBhQ,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAMdhQ,KAAKkI,KAAO7H,EAAOkC,WAIvBlC,EAAOkN,UAAUlH,WASb+H,OAAQ,SAAUC,EAAIC,GAKlB,MAHAtO,MAAKiG,GAAKoI,EACVrO,KAAKyM,GAAK6B,EAEHtO,MAUXuO,YAAa,SAAUC,GAEnB,MAAOxO,MAAKoO,OAAOI,EAAMvI,EAAGuI,EAAM/B,IAatCe,MAAO,SAAUvH,EAAGwG,EAAGsD,EAAOC,GAO1B,MALAhQ,MAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EACTzM,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEPhQ,MAYX6U,MAAO,SAAU5O,EAAGwG,GAOhB,MALU/C,UAAN+C,IAAmBA,EAAIxG,GAE3BjG,KAAK+P,OAAS9J,EACdjG,KAAKgQ,QAAUvD,EAERzM,MAYX0R,SAAU,SAAUzL,EAAGwG,GAKnB,MAHAzM,MAAKyY,QAAUxS,EACfjG,KAAK0Y,QAAUjM,EAERzM,MAQXmG,MAAO,WAEHnG,KAAKiG,EAAIF,KAAKI,MAAMnG,KAAKiG,GACzBjG,KAAKyM,EAAI1G,KAAKI,MAAMnG,KAAKyM,IAQ7BkM,SAAU,WAEN3Y,KAAKiG,EAAIF,KAAKI,MAAMnG,KAAKiG,GACzBjG,KAAKyM,EAAI1G,KAAKI,MAAMnG,KAAKyM,GACzBzM,KAAK+P,MAAQhK,KAAKI,MAAMnG,KAAK+P,OAC7B/P,KAAKgQ,OAASjK,KAAKI,MAAMnG,KAAKgQ,SAQlC9J,KAAM,WAEFlG,KAAKiG,EAAIF,KAAKG,KAAKlG,KAAKiG,GACxBjG,KAAKyM,EAAI1G,KAAKG,KAAKlG,KAAKyM,IAQ5BmM,QAAS,WAEL5Y,KAAKiG,EAAIF,KAAKG,KAAKlG,KAAKiG,GACxBjG,KAAKyM,EAAI1G,KAAKG,KAAKlG,KAAKyM,GACxBzM,KAAK+P,MAAQhK,KAAKG,KAAKlG,KAAK+P,OAC5B/P,KAAKgQ,OAASjK,KAAKG,KAAKlG,KAAKgQ,SAUjCvC,SAAU,SAAUC,GAEhB,MAAO1N,MAAKwN,MAAME,EAAOzH,EAAGyH,EAAOjB,EAAGiB,EAAOqC,MAAOrC,EAAOsC,SAU/DrC,OAAQ,SAAUC,GAOd,MALAA,GAAK3H,EAAIjG,KAAKiG,EACd2H,EAAKnB,EAAIzM,KAAKyM,EACdmB,EAAKmC,MAAQ/P,KAAK+P,MAClBnC,EAAKoC,OAAShQ,KAAKgQ,OAEZpC,GAWXiL,QAAS,SAAUxK,EAAIC,GAEnB,MAAOjO,GAAOkN,UAAUsL,QAAQ7Y,KAAMqO,EAAIC,IAU9CtE,KAAM,SAAU+D,GAEZ,MAAO1N,GAAOkN,UAAUvD,KAAKhK,KAAM+N,IAavC+K,OAAQ,SAAU/I,EAAOC,GAKrB,MAHAhQ,MAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEPhQ,MAUXwL,MAAO,SAAUuC,GAEb,MAAO1N,GAAOkN,UAAU/B,MAAMxL,KAAM+N,IAWxCC,SAAU,SAAU/H,EAAGwG,GAEnB,MAAOpM,GAAOkN,UAAUS,SAAShO,KAAMiG,EAAGwG,IAW9CsM,aAAc,SAAUlK,GAEpB,MAAOxO,GAAOkN,UAAUwL,aAAalK,EAAG7O,OAW5C4O,OAAQ,SAAUC,GAEd,MAAOxO,GAAOkN,UAAUqB,OAAO5O,KAAM6O,IAWzCmK,aAAc,SAAUnK,EAAG9B,GAEvB,MAAO1M,GAAOkN,UAAUyL,aAAahZ,KAAM6O,EAAG9B,IAYlD+B,WAAY,SAAUD,GAElB,MAAOxO,GAAOkN,UAAUuB,WAAW9O,KAAM6O,IAe7CoK,cAAe,SAAUpO,EAAMD,EAAO8D,EAAKC,EAAQuK,GAE/C,MAAO7Y,GAAOkN,UAAU0L,cAAcjZ,KAAM6K,EAAMD,EAAO8D,EAAKC,EAAQuK,IAW1EC,MAAO,SAAUtK,EAAG9B,GAEhB,MAAO1M,GAAOkN,UAAU4L,MAAMnZ,KAAM6O,EAAG9B,IAY3CpD,OAAQ,SAAUoD,GAOd,MALYrD,UAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAE1CD,EAAI9G,EAAIjG,KAAKoZ,QACbrM,EAAIN,EAAIzM,KAAKqZ,QAENtM,GAoBXuM,SAAU,SAAUC,EAAUxM,GAI1B,OAFYrD,SAARqD,IAAqBA,EAAM,GAAI1M,GAAO2M,OAElCuM,GAEJ,QACA,IAAKlZ,GAAOsD,SACR,MAAOoJ,GAAId,IAAIjM,KAAKiG,EAAGjG,KAAKyM,EAEhC,KAAKpM,GAAOuD,WACR,MAAOmJ,GAAId,IAAIjM,KAAKyY,QAASzY,KAAKyM,EAEtC,KAAKpM,GAAOwD,UACR,MAAOkJ,GAAId,IAAIjM,KAAK4K,MAAO5K,KAAKyM,EAEpC,KAAKpM,GAAO0D,YACR,MAAOgJ,GAAId,IAAIjM,KAAKiG,EAAGjG,KAAK0Y,QAEhC,KAAKrY,GAAO4D,OACR,MAAO8I,GAAId,IAAIjM,KAAKyY,QAASzY,KAAK0Y,QAEtC,KAAKrY,GAAO8D,aACR,MAAO4I,GAAId,IAAIjM,KAAK4K,MAAO5K,KAAK0Y,QAEpC,KAAKrY,GAAOgE,YACR,MAAO0I,GAAId,IAAIjM,KAAKiG,EAAGjG,KAAK2O,OAEhC,KAAKtO,GAAOiE,cACR,MAAOyI,GAAId,IAAIjM,KAAKyY,QAASzY,KAAK2O,OAEtC,KAAKtO,GAAOkE,aACR,MAAOwI,GAAId,IAAIjM,KAAK4K,MAAO5K,KAAK2O,UAU5CnH,SAAU,WAEN,MAAO,kBAAoBxH,KAAKiG,EAAI,MAAQjG,KAAKyM,EAAI,UAAYzM,KAAK+P,MAAQ,WAAa/P,KAAKgQ,OAAS,UAAYhQ,KAAKwZ,MAAQ,QAW1IjS,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,aAE9C2F,IAAK,WACD,MAAOjG,MAAK+H,MAAM9N,KAAK+P,MAAQ,MAUvCxI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,cAE9C2F,IAAK,WACD,MAAOjG,MAAK+H,MAAM9N,KAAKgQ,OAAS,MAUxCzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,UAE9C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAKgQ,QAGzB/D,IAAK,SAAU1C,GAEPA,GAASvJ,KAAKyM,EAEdzM,KAAKgQ,OAAS,EAIdhQ,KAAKgQ,OAASzG,EAAQvJ,KAAKyM,KAYvClF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,cAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAKiG,EAAGjG,KAAK2O,SAGzC1C,IAAK,SAAU1C,GACXvJ,KAAKiG,EAAIsD,EAAMtD,EACfjG,KAAK2O,OAASpF,EAAMkD,KAU5BlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,eAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAK4K,MAAO5K,KAAK2O,SAG7C1C,IAAK,SAAU1C,GACXvJ,KAAK4K,MAAQrB,EAAMtD,EACnBjG,KAAK2O,OAASpF,EAAMkD,KAU5BlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,QAE9C2F,IAAK,WACD,MAAOhM,MAAKiG,GAGhBgG,IAAK,SAAU1C,GACPA,GAASvJ,KAAK4K,MACd5K,KAAK+P,MAAQ,EAEb/P,KAAK+P,MAAQ/P,KAAK4K,MAAQrB,EAE9BvJ,KAAKiG,EAAIsD,KAUjBhC,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,SAE9C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAK+P,OAGzB9D,IAAK,SAAU1C,GACPA,GAASvJ,KAAKiG,EACdjG,KAAK+P,MAAQ,EAEb/P,KAAK+P,MAAQxG,EAAQvJ,KAAKiG,KAYtCsB,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,UAE9C2F,IAAK,WACD,MAAOhM,MAAK+P,MAAQ/P,KAAKgQ,UAWjCzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,aAE9C2F,IAAK,WACD,MAAqB,GAAbhM,KAAK+P,MAA4B,EAAd/P,KAAKgQ,UAUxCzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WACD,MAAOhM,MAAKiG,EAAIjG,KAAKoP,WAGzBnD,IAAK,SAAU1C,GACXvJ,KAAKiG,EAAIsD,EAAQvJ,KAAKoP,aAU9B7H,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WACD,MAAOhM,MAAKyM,EAAIzM,KAAKuP,YAGzBtD,IAAK,SAAU1C,GACXvJ,KAAKyM,EAAIlD,EAAQvJ,KAAKuP,cAW9BhI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WAED,MAAOhM,MAAKiG,EAAKF,KAAK4D,SAAW3J,KAAK+P,SAY9CxI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WAED,MAAOhM,MAAKyM,EAAK1G,KAAK4D,SAAW3J,KAAKgQ,UAY9CzI,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,OAE9C2F,IAAK,WACD,MAAOhM,MAAKyM,GAGhBR,IAAK,SAAU1C,GACPA,GAASvJ,KAAK2O,QACd3O,KAAKgQ,OAAS,EACdhQ,KAAKyM,EAAIlD,GAETvJ,KAAKgQ,OAAUhQ,KAAK2O,OAASpF,KAWzChC,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,WAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAKiG,EAAGjG,KAAKyM,IAGzCR,IAAK,SAAU1C,GACXvJ,KAAKiG,EAAIsD,EAAMtD,EACfjG,KAAKyM,EAAIlD,EAAMkD,KAUvBlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,YAE9C2F,IAAK,WACD,MAAO,IAAI3L,GAAO2M,MAAMhN,KAAKiG,EAAIjG,KAAK+P,MAAO/P,KAAKyM,IAGtDR,IAAK,SAAU1C,GACXvJ,KAAK4K,MAAQrB,EAAMtD,EACnBjG,KAAKyM,EAAIlD,EAAMkD,KAWvBlF,OAAO2E,eAAe7L,EAAOkN,UAAUlH,UAAW,SAE9C2F,IAAK,WACD,OAAShM,KAAK+P,QAAU/P,KAAKgQ,QAGjC/D,IAAK,SAAU1C,GAEPA,KAAU,GAEVvJ,KAAKwN,MAAM,EAAG,EAAG,EAAG,MAOhCnN,EAAOkN,UAAUlH,UAAU8B,YAAc9H,EAAOkN,UAUhDlN,EAAOkN,UAAUsL,QAAU,SAAUpK,EAAGJ,EAAIC,GAOxC,MALAG,GAAExI,GAAKoI,EACPI,EAAEsB,OAAS,EAAI1B,EACfI,EAAEhC,GAAK6B,EACPG,EAAEuB,QAAU,EAAI1B,EAETG,GAWXpO,EAAOkN,UAAUkM,aAAe,SAAUhL,EAAGD,GAEzC,MAAOnO,GAAOkN,UAAUsL,QAAQpK,EAAGD,EAAMvI,EAAGuI,EAAM/B,IAWtDpM,EAAOkN,UAAUvD,KAAO,SAAUyE,EAAGV,GAWjC,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAO2M,MAAMyB,EAAEsB,MAAOtB,EAAEuB,QAIrCjC,EAAOP,MAAMiB,EAAEsB,MAAOtB,EAAEuB,QAGrBjC,GAWX1N,EAAOkN,UAAU/B,MAAQ,SAAUiD,EAAGV,GAWlC,MATerE,UAAXqE,GAAmC,OAAXA,EAExBA,EAAS,GAAI1N,GAAOkN,UAAUkB,EAAExI,EAAGwI,EAAEhC,EAAGgC,EAAEsB,MAAOtB,EAAEuB,QAInDjC,EAAOP,MAAMiB,EAAExI,EAAGwI,EAAEhC,EAAGgC,EAAEsB,MAAOtB,EAAEuB,QAG/BjC,GAYX1N,EAAOkN,UAAUS,SAAW,SAAUS,EAAGxI,EAAGwG,GAExC,MAAIgC,GAAEsB,OAAS,GAAKtB,EAAEuB,QAAU,GAErB,EAGH/J,GAAKwI,EAAExI,GAAKA,EAAIwI,EAAE7D,OAAS6B,GAAKgC,EAAEhC,GAAKA,EAAIgC,EAAEE,QAezDtO,EAAOkN,UAAUmM,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAI7T,EAAGwG,GAExD,MAAQxG,IAAK0T,GAAWA,EAAKE,EAAV5T,GAAiBwG,GAAKmN,GAAWA,EAAKE,EAAVrN,GAWnDpM,EAAOkN,UAAUwM,cAAgB,SAAUtL,EAAGD,GAE1C,MAAOnO,GAAOkN,UAAUS,SAASS,EAAGD,EAAMvI,EAAGuI,EAAM/B,IAYvDpM,EAAOkN,UAAUwL,aAAe,SAAUtK,EAAGI,GAGzC,MAAIJ,GAAEuL,OAASnL,EAAEmL,QAEN,EAGHvL,EAAExI,GAAK4I,EAAE5I,GAAKwI,EAAEhC,GAAKoC,EAAEpC,GAAKgC,EAAE7D,MAAQiE,EAAEjE,OAAS6D,EAAEE,OAASE,EAAEF,QAY1EtO,EAAOkN,UAAUqB,OAAS,SAAUH,EAAGI,GAEnC,MAAQJ,GAAExI,GAAK4I,EAAE5I,GAAKwI,EAAEhC,GAAKoC,EAAEpC,GAAKgC,EAAEsB,OAASlB,EAAEkB,OAAStB,EAAEuB,QAAUnB,EAAEmB,QAW5E3P,EAAOkN,UAAU0M,eAAiB,SAAUxL,EAAGI,GAE3C,MAAQJ,GAAEsB,QAAUlB,EAAEkB,OAAStB,EAAEuB,SAAWnB,EAAEmB,QAYlD3P,EAAOkN,UAAUyL,aAAe,SAAUvK,EAAGI,EAAGd,GAe5C,MAberE,UAAXqE,IAEAA,EAAS,GAAI1N,GAAOkN,WAGpBlN,EAAOkN,UAAUuB,WAAWL,EAAGI,KAE/Bd,EAAO9H,EAAIF,KAAKoM,IAAI1D,EAAExI,EAAG4I,EAAE5I,GAC3B8H,EAAOtB,EAAI1G,KAAKoM,IAAI1D,EAAEhC,EAAGoC,EAAEpC,GAC3BsB,EAAOgC,MAAQhK,KAAKkM,IAAIxD,EAAE7D,MAAOiE,EAAEjE,OAASmD,EAAO9H,EACnD8H,EAAOiC,OAASjK,KAAKkM,IAAIxD,EAAEE,OAAQE,EAAEF,QAAUZ,EAAOtB,GAGnDsB,GAYX1N,EAAOkN,UAAUuB,WAAa,SAAUL,EAAGI,GAEvC,MAAIJ,GAAEsB,OAAS,GAAKtB,EAAEuB,QAAU,GAAKnB,EAAEkB,OAAS,GAAKlB,EAAEmB,QAAU,GAEtD,IAGFvB,EAAE7D,MAAQiE,EAAE5I,GAAKwI,EAAEE,OAASE,EAAEpC,GAAKgC,EAAExI,EAAI4I,EAAEjE,OAAS6D,EAAEhC,EAAIoC,EAAEF,SAczEtO,EAAOkN,UAAU0L,cAAgB,SAAUxK,EAAG5D,EAAMD,EAAO8D,EAAKC,EAAQuK,GAIpE,MAFkBxP,UAAdwP,IAA2BA,EAAY,KAElCrO,EAAO4D,EAAE7D,MAAQsO,GAAatO,EAAQ6D,EAAE5D,KAAOqO,GAAaxK,EAAMD,EAAEE,OAASuK,GAAavK,EAASF,EAAEC,IAAMwK,IAYxH7Y,EAAOkN,UAAU4L,MAAQ,SAAU1K,EAAGI,EAAGd,GAOrC,MALerE,UAAXqE,IAEAA,EAAS,GAAI1N,GAAOkN,WAGjBQ,EAAOP,MAAMzH,KAAKkM,IAAIxD,EAAExI,EAAG4I,EAAE5I,GAAIF,KAAKkM,IAAIxD,EAAEhC,EAAGoC,EAAEpC,GAAI1G,KAAKoM,IAAI1D,EAAE7D,MAAOiE,EAAEjE,OAAS7E,KAAKkM,IAAIxD,EAAE5D,KAAMgE,EAAEhE,MAAO9E,KAAKoM,IAAI1D,EAAEE,OAAQE,EAAEF,QAAU5I,KAAKkM,IAAIxD,EAAEC,IAAKG,EAAEH,OAaxKrO,EAAOkN,UAAU2M,KAAO,SAASnD,EAAQhK,GAEzBrD,SAARqD,IACAA,EAAM,GAAI1M,GAAOkN,UAGrB,IAAI2E,GAAOiG,OAAOgC,kBACdnI,EAAOmG,OAAOiC,kBACd/H,EAAO8F,OAAOgC,kBACd/H,EAAO+F,OAAOiC,iBAoBlB,OAlBArD,GAAOtP,QAAQ,SAAS+G,GAChBA,EAAMvI,EAAIiM,IACVA,EAAO1D,EAAMvI,GAEbuI,EAAMvI,EAAI+L,IACVA,EAAOxD,EAAMvI,GAGbuI,EAAM/B,EAAI4F,IACVA,EAAO7D,EAAM/B,GAEb+B,EAAM/B,EAAI2F,IACVA,EAAO5D,EAAM/B,KAIrBM,EAAIS,MAAMwE,EAAMI,EAAMF,EAAOF,EAAMK,EAAOD,GAEnCrF,GAIXjH,KAAKyH,UAAYlN,EAAOkN,UACxBzH,KAAKuU,eAAiB,GAAIha,GAAOkN,UAAU,EAAG,EAAG,EAAG,GAqBpDlN,EAAOia,iBAAmB,SAASrU,EAAGwG,EAAGsD,EAAOC,EAAQ3C,GAE1C3D,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ,GACpBrG,SAAXsG,IAAwBA,EAAS,GACtBtG,SAAX2D,IAAwBA,EAAS,IAKrCrN,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAKdhQ,KAAKqN,OAASA,GAAU,GAMxBrN,KAAKkI,KAAO7H,EAAOsC,kBAGvBtC,EAAOia,iBAAiBjU,WASpBmF,MAAO,WAEH,MAAO,IAAInL,GAAOia,iBAAiBta,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,OAAQhQ,KAAKqN,SAYrFW,SAAU,SAAU/H,EAAGwG,GAEnB,GAAIzM,KAAK+P,OAAS,GAAK/P,KAAKgQ,QAAU,EAElC,OAAO,CAGX,IAAIM,GAAKtQ,KAAKiG,CAEd,IAAIA,GAAKqK,GAAMrK,GAAKqK,EAAKtQ,KAAK+P,MAC9B,CACI,GAAIQ,GAAKvQ,KAAKyM,CAEd,IAAIA,GAAK8D,GAAM9D,GAAK8D,EAAKvQ,KAAKgQ,OAE1B,OAAO,EAIf,OAAO,IAMf3P,EAAOia,iBAAiBjU,UAAU8B,YAAc9H,EAAOia,iBAGvDxU,KAAKwU,iBAAmBja,EAAOia,iBAqB/Bja,EAAOka,OAAS,SAAUC,EAAM7F,EAAI1O,EAAGwG,EAAGsD,EAAOC,GAK7ChQ,KAAKwa,KAAOA,EAKZxa,KAAKya,MAAQD,EAAKC,MAMlBza,KAAK2U,GAAK,EASV3U,KAAK0a,KAAO,GAAIra,GAAOkN,UAAUtH,EAAGwG,EAAGsD,EAAOC,GAS9ChQ,KAAK2a,OAAS,GAAIta,GAAOkN,UAAUtH,EAAGwG,EAAGsD,EAAOC,GAKhDhQ,KAAK4a,SAAW,KAMhB5a,KAAK6a,SAAU,EAMf7a,KAAK8a,SAAU,EAKf9a,KAAK+a,SAAY9U,GAAG,EAAOwG,GAAG,GAM9BzM,KAAKgH,OAAS,KAKdhH,KAAKgb,cAAgB,KAKrBhb,KAAK6U,MAAQ,KAMb7U,KAAKib,YAAc,EAWnBjb,KAAKkb,KAAO,GAAI7a,GAAO2M,MAAM,EAAG,GAKhChN,KAAKmb,gBAAkB,GAAI9a,GAAO+a,OAKlCpb,KAAKqb,gBAAkB,GAAIhb,GAAO+a,OASlCpb,KAAKsb,eAAiB,GAAIjb,GAAO+a,OAOjCpb,KAAKub,GAAK,KAMVvb,KAAKwb,gBAAkB,GAAInb,GAAO2M,MAOlChN,KAAKyb,MAAQ,EAObzb,KAAK0b,UAAY,GAAIrb,GAAO2M,MAM5BhN,KAAK2b,QACDC,UAAW,EACXC,SAAU,EACVC,YAAY,EACZC,UAAU,EACVC,aAAa,EACb/V,EAAG,EACHwG,EAAG,GAOPzM,KAAKic,YAAc,EAMnBjc,KAAKkc,QAAU,GAQnB7b,EAAOka,OAAO4B,cAAgB;AAM9B9b,EAAOka,OAAO6B,kBAAoB,EAMlC/b,EAAOka,OAAO8B,eAAiB,EAM/Bhc,EAAOka,OAAO+B,qBAAuB,EAMrCjc,EAAOka,OAAOgC,WAAa,EAM3Blc,EAAOka,OAAOiC,iBAAmB,EAMjCnc,EAAOka,OAAOkC,eAAiB,EAM/Bpc,EAAOka,OAAOmC,WAAY,EAE1Brc,EAAOka,OAAOlU,WAQVsW,KAAM,WAEF3c,KAAKgb,cAAgBhb,KAAKwa,KAAKC,MAE/Bza,KAAK6U,MAAQ7U,KAAKwa,KAAKC,MAAM5F,MAE7B7U,KAAKwa,KAAKoC,OAAS5c,KAEfK,EAAOwc,UAAYxc,EAAOka,OAAOmC,YAEjC1c,KAAKub,GAAK,GAAIlb,GAAOwc,SAAS7c,KAAKwa,MAEnCxa,KAAKwa,KAAKsC,MAAMC,SAAS/c,KAAKub,MAUtCyB,UAAW,WAEPhd,KAAKib,YAAc,GAmBvBgC,OAAQ,SAAUjW,EAAQkW,EAAOC,EAAOC,GAEtB1T,SAAVwT,IAAuBA,EAAQ7c,EAAOka,OAAO4B,eACnCzS,SAAVyT,IAAuBA,EAAQ,GACrBzT,SAAV0T,IAAuBA,EAAQ,GAEnCpd,KAAKgH,OAASA,EACdhH,KAAKkb,KAAKjP,IAAIkR,EAAOC,EAErB,IAAIC,EAEJ,QAAQH,GAEJ,IAAK7c,GAAOka,OAAO6B,kBACf,GAAIkB,GAAItd,KAAK+P,MAAQ,EACjBwN,EAAIvd,KAAKgQ,OAAS,CACtBhQ,MAAK4a,SAAW,GAAIva,GAAOkN,WAAWvN,KAAK+P,MAAQuN,GAAK,GAAItd,KAAKgQ,OAASuN,GAAK,EAAQ,IAAJA,EAAUD,EAAGC,EAChG,MAEJ,KAAKld,GAAOka,OAAO8B,eACfgB,EAAStX,KAAKoM,IAAInS,KAAK+P,MAAO/P,KAAKgQ,QAAU,EAC7ChQ,KAAK4a,SAAW,GAAIva,GAAOkN,WAAWvN,KAAK+P,MAAQsN,GAAU,GAAIrd,KAAKgQ,OAASqN,GAAU,EAAGA,EAAQA,EACpG,MAEJ,KAAKhd,GAAOka,OAAO+B,qBACfe,EAAStX,KAAKoM,IAAInS,KAAK+P,MAAO/P,KAAKgQ,QAAU,EAC7ChQ,KAAK4a,SAAW,GAAIva,GAAOkN,WAAWvN,KAAK+P,MAAQsN,GAAU,GAAIrd,KAAKgQ,OAASqN,GAAU,EAAGA,EAAQA,EACpG,MAEJ,KAAKhd,GAAOka,OAAO4B,cACfnc,KAAK4a,SAAW,IAChB,MAEJ,SACI5a,KAAK4a,SAAW,OAW5B4C,SAAU,WAENxd,KAAKgH,OAAS,MASlByW,QAAS,SAAUzC,GAEfhb,KAAK0d,YAAY3X,KAAK+H,MAAMkN,EAAc/U,EAAIjG,KAAK0a,KAAKtL,WAAYrJ,KAAK+H,MAAMkN,EAAcvO,EAAIzM,KAAK0a,KAAKnL,cAU/GoO,UAAW,SAAU1X,EAAGwG,GAEpBzM,KAAK0d,YAAY3X,KAAK+H,MAAM7H,EAAIjG,KAAK0a,KAAKtL,WAAYrJ,KAAK+H,MAAMrB,EAAIzM,KAAK0a,KAAKnL,cAmBnFqO,MAAO,SAAUhC,EAAWC,EAAUgC,EAAOC,EAAW9B,GAQpD,MANkBtS,UAAdkS,IAA2BA,EAAY,KAC1BlS,SAAbmS,IAA0BA,EAAW,KAC3BnS,SAAVmU,IAAuBA,GAAQ,GACjBnU,SAAdoU,IAA2BA,EAAYzd,EAAOka,OAAOgC,YACrC7S,SAAhBsS,IAA6BA,GAAc,IAE1C6B,GAAS7d,KAAK2b,OAAOE,SAAW,GAG1B,GAGX7b,KAAK2b,OAAOC,UAAYA,EACxB5b,KAAK2b,OAAOE,SAAWA,EACvB7b,KAAK2b,OAAOK,YAAcA,EAE1Bhc,KAAK2b,OAAO1V,EAAI,EAChBjG,KAAK2b,OAAOlP,EAAI,EAEhBzM,KAAK2b,OAAOG,WAAcgC,IAAczd,EAAOka,OAAOgC,YAAcuB,IAAczd,EAAOka,OAAOiC,iBAChGxc,KAAK2b,OAAOI,SAAY+B,IAAczd,EAAOka,OAAOgC,YAAcuB,IAAczd,EAAOka,OAAOkC,gBAEvF,IAkBXsB,MAAO,SAAUC,EAAOnC,EAAUgC,GAM9B,MAJcnU,UAAVsU,IAAuBA,EAAQ,UAClBtU,SAAbmS,IAA0BA,EAAW,KAC3BnS,SAAVmU,IAAuBA,GAAQ,IAE9B7d,KAAKub,KAAQsC,GAAS7d,KAAKic,YAAc,GAEnC,GAGXjc,KAAKub,GAAG0C,QAERje,KAAKub,GAAG2C,UAAUF,GAClBhe,KAAKub,GAAG4C,SAAS,EAAG,EAAGne,KAAK+P,MAAO/P,KAAKgQ,QACxChQ,KAAKub,GAAG6C,UAERpe,KAAKub,GAAG8C,MAAQ,EAEhBre,KAAKic,YAAcJ,EACnB7b,KAAKkc,QAAU,GAER,IAuBXoC,KAAM,SAAUN,EAAOnC,EAAUgC,GAM7B,MAJcnU,UAAVsU,IAAuBA,EAAQ,GAClBtU,SAAbmS,IAA0BA,EAAW,KAC3BnS,SAAVmU,IAAuBA,GAAQ,IAE9B7d,KAAKub,KAAQsC,GAAS7d,KAAKic,YAAc,GAEnC,GAGXjc,KAAKub,GAAG0C,QAERje,KAAKub,GAAG2C,UAAUF,GAClBhe,KAAKub,GAAG4C,SAAS,EAAG,EAAGne,KAAK+P,MAAO/P,KAAKgQ,QACxChQ,KAAKub,GAAG6C,UAERpe,KAAKub,GAAG8C,MAAQ,EAEhBre,KAAKic,YAAcJ,EACnB7b,KAAKkc,QAAU,GAER,IAUXqC,OAAQ,WAEAve,KAAKic,YAAc,GAEnBjc,KAAKwe,WAGLxe,KAAK2b,OAAOE,SAAW,GAEvB7b,KAAKye,cAGLze,KAAK2a,QAEL3a,KAAK0e,cAGL1e,KAAK8a,UAEL9a,KAAK0a,KAAKvU,QACVnG,KAAK2b,OAAO1V,EAAIF,KAAKI,MAAMnG,KAAK2b,OAAO1V,GACvCjG,KAAK2b,OAAOlP,EAAI1G,KAAKI,MAAMnG,KAAK2b,OAAOlP,IAG3CzM,KAAKgb,cAAczB,SAAStT,GAAKjG,KAAK0a,KAAKzU,EAC3CjG,KAAKgb,cAAczB,SAAS9M,GAAKzM,KAAK0a,KAAKjO,GAU/C+R,SAAU,WAEe,IAAjBxe,KAAKkc,SAGLlc,KAAKub,GAAG8C,OAASre,KAAKwa,KAAKmE,KAAKC,UAAY5e,KAAKic,YAE7Cjc,KAAKub,GAAG8C,OAAS,IAEjBre,KAAKic,YAAc,EACnBjc,KAAKub,GAAG8C,MAAQ,EAChBre,KAAKqb,gBAAgBwD,cAMzB7e,KAAKub,GAAG8C,OAASre,KAAKwa,KAAKmE,KAAKC,UAAY5e,KAAKic,YAE7Cjc,KAAKub,GAAG8C,OAAS,IAEjBre,KAAKic,YAAc,EACnBjc,KAAKub,GAAG8C,MAAQ,EAChBre,KAAKsb,eAAeuD,cAYhCJ,YAAa,WAETze,KAAK2b,OAAOE,UAAY7b,KAAKwa,KAAKmE,KAAKC,UAEnC5e,KAAK2b,OAAOE,UAAY,GAExB7b,KAAKmb,gBAAgB0D,WACrB7e,KAAK2b,OAAO1V,EAAI,EAChBjG,KAAK2b,OAAOlP,EAAI,IAIZzM,KAAK2b,OAAOG,aAEZ9b,KAAK2b,OAAO1V,EAAIjG,KAAKwa,KAAKsE,IAAIC,OAAS/e,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK3K,MAAQ,EAAI/P,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK3K,OAGvH/P,KAAK2b,OAAOI,WAEZ/b,KAAK2b,OAAOlP,EAAIzM,KAAKwa,KAAKsE,IAAIC,OAAS/e,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK1K,OAAS,EAAIhQ,KAAK2b,OAAOC,UAAY5b,KAAK0a,KAAK1K,UAYpIgP,aAAc,WAEVhf,KAAKwb,gBAAgBvV,EAAIjG,KAAK0a,KAAKzU,EAAIjG,KAAKgH,OAAOiY,cAAchZ,EACjEjG,KAAKwb,gBAAgB/O,EAAIzM,KAAK0a,KAAKjO,EAAIzM,KAAKgH,OAAOiY,cAAcxS,EAE7DzM,KAAK4a,UAEL5a,KAAKyb,MAAQzb,KAAKwb,gBAAgBvV,EAAIjG,KAAK0a,KAAKzU,EAE5CjG,KAAKyb,MAAQzb,KAAK4a,SAAS/P,KAE3B7K,KAAK0a,KAAKzU,EAAIjG,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKzU,EAAGjG,KAAKwb,gBAAgBvV,EAAIjG,KAAK4a,SAAS/P,KAAM7K,KAAKkb,KAAKjV,GAEnGjG,KAAKyb,MAAQzb,KAAK4a,SAAShQ,QAEhC5K,KAAK0a,KAAKzU,EAAIjG,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKzU,EAAGjG,KAAKwb,gBAAgBvV,EAAIjG,KAAK4a,SAAShQ,MAAO5K,KAAKkb,KAAKjV,IAG7GjG,KAAKyb,MAAQzb,KAAKwb,gBAAgB/O,EAAIzM,KAAK0a,KAAKjO,EAE5CzM,KAAKyb,MAAQzb,KAAK4a,SAASlM,IAE3B1O,KAAK0a,KAAKjO,EAAIzM,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKjO,EAAGzM,KAAKwb,gBAAgB/O,EAAIzM,KAAK4a,SAASlM,IAAK1O,KAAKkb,KAAKzO,GAElGzM,KAAKyb,MAAQzb,KAAK4a,SAASjM,SAEhC3O,KAAK0a,KAAKjO,EAAIzM,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKjO,EAAGzM,KAAKwb,gBAAgB/O,EAAIzM,KAAK4a,SAASjM,OAAQ3O,KAAKkb,KAAKzO,MAK9GzM,KAAK0a,KAAKzU,EAAIjG,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKzU,EAAGjG,KAAKwb,gBAAgBvV,EAAIjG,KAAK0a,KAAKtL,UAAWpP,KAAKkb,KAAKjV,GACzGjG,KAAK0a,KAAKjO,EAAIzM,KAAKwa,KAAK0E,KAAKC,OAAOnf,KAAK0a,KAAKjO,EAAGzM,KAAKwb,gBAAgB/O,EAAIzM,KAAK0a,KAAKnL,WAAYvP,KAAKkb,KAAKzO,IAG1GzM,KAAK2a,QAEL3a,KAAK0e,cAGL1e,KAAK8a,SAEL9a,KAAK0a,KAAKvU,QAGdnG,KAAKgb,cAAczB,SAAStT,GAAKjG,KAAK0a,KAAKzU,EAC3CjG,KAAKgb,cAAczB,SAAS9M,GAAKzM,KAAK0a,KAAKjO,GAS/C2S,iBAAkB,WAEVpf,KAAK2a,QAEL3a,KAAK2a,OAAOlN,SAASzN,KAAKwa,KAAKC,MAAME,SAY7C+D,YAAa,WAET1e,KAAK+a,QAAQ9U,GAAI,EACjBjG,KAAK+a,QAAQtO,GAAI,CAEjB,IAAI4S,GAAKrf,KAAK0a,KAAKzU,EAAIjG,KAAK2b,OAAO1V,EAC/BqZ,EAAKtf,KAAK0a,KAAK9P,MAAQ5K,KAAK2b,OAAO1V,EACnCsZ,EAAKvf,KAAK0a,KAAKjO,EAAIzM,KAAK2b,OAAOlP,EAC/B+S,EAAKxf,KAAK0a,KAAK/L,OAAS3O,KAAK2b,OAAOlP,CAGpC4S,IAAMrf,KAAK2a,OAAO1U,EAAIjG,KAAK6U,MAAM5O,IAEjCjG,KAAK+a,QAAQ9U,GAAI,EACjBjG,KAAK0a,KAAKzU,EAAIjG,KAAK2a,OAAO1U,EAAIjG,KAAK6U,MAAM5O,EAEpCjG,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAO1V,EAAI,IAIpBqZ,GAAMtf,KAAK2a,OAAO/P,MAAQ5K,KAAK6U,MAAM5O,IAErCjG,KAAK+a,QAAQ9U,GAAI,EACjBjG,KAAK0a,KAAKzU,EAAKjG,KAAK2a,OAAO/P,MAAQ5K,KAAK6U,MAAM5O,EAAKjG,KAAK+P,MAEnD/P,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAO1V,EAAI,IAIpBsZ,GAAMvf,KAAK2a,OAAOjM,IAAM1O,KAAK6U,MAAMpI,IAEnCzM,KAAK+a,QAAQtO,GAAI,EACjBzM,KAAK0a,KAAKjO,EAAIzM,KAAK2a,OAAOjM,IAAM1O,KAAK6U,MAAMpI,EAEtCzM,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAOlP,EAAI,IAIpB+S,GAAMxf,KAAK2a,OAAOhM,OAAS3O,KAAK6U,MAAMpI,IAEtCzM,KAAK+a,QAAQtO,GAAI,EACjBzM,KAAK0a,KAAKjO,EAAKzM,KAAK2a,OAAOhM,OAAS3O,KAAK6U,MAAMpI,EAAKzM,KAAKgQ,OAEpDhQ,KAAK2b,OAAOK,cAGbhc,KAAK2b,OAAOlP,EAAI,KAc5BiR,YAAa,SAAUzX,EAAGwG,GAEtBzM,KAAK0a,KAAKzU,EAAIA,EACdjG,KAAK0a,KAAKjO,EAAIA,EAEVzM,KAAK2a,QAEL3a,KAAK0e,eAYbe,QAAS,SAAU1P,EAAOC,GAEtBhQ,KAAK0a,KAAK3K,MAAQA,EAClB/P,KAAK0a,KAAK1K,OAASA,GAWvB0P,MAAO,WAEH1f,KAAKgH,OAAS,KAEdhH,KAAK0a,KAAKzU,EAAI,EACdjG,KAAK0a,KAAKjO,EAAI,EAEdzM,KAAK2b,OAAOE,SAAW,EAEvB7b,KAAK2f,WAUTA,QAAS,WAEL3f,KAAKub,GAAG0C,QAERje,KAAKub,GAAG8C,MAAQ,EAEhBre,KAAKic,YAAc,IAM3B5b,EAAOka,OAAOlU,UAAU8B,YAAc9H,EAAOka,OAO7ChT,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAKzU,GAIrBgG,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAKzU,EAAIsD,EAEVvJ,KAAK2a,QAEL3a,KAAK0e,iBAWjBnX,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAKjO,GAIrBR,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAKjO,EAAIlD,EAEVvJ,KAAK2a,QAEL3a,KAAK0e,iBAWjBnX,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,YAE3C2F,IAAK,WAID,MAFAhM,MAAK0b,UAAUzP,IAAIjM,KAAK0a,KAAKzU,EAAGjG,KAAK0a,KAAKjO,GAEnCzM,KAAK0b,WAIhBzP,IAAK,SAAU1C,GAEY,mBAAZA,GAAMtD,IAAqBjG,KAAK0a,KAAKzU,EAAIsD,EAAMtD,GACnC,mBAAZsD,GAAMkD,IAAqBzM,KAAK0a,KAAKjO,EAAIlD,EAAMkD,GAEtDzM,KAAK2a,QAEL3a,KAAK0e,iBAWjBnX,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,SAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAK3K,OAIrB9D,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAK3K,MAAQxG,KAW1BhC,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,UAE3C2F,IAAK,WAED,MAAOhM,MAAK0a,KAAK1K,QAIrB/D,IAAK,SAAU1C,GAEXvJ,KAAK0a,KAAK1K,OAASzG,KAY3BhC,OAAO2E,eAAe7L,EAAOka,OAAOlU,UAAW,kBAE3C2F,IAAK,WAED,MAAOhM,MAAK2b,OAAOC,WAIvB3P,IAAK,SAAU1C,GAEXvJ,KAAK2b,OAAOC,UAAYrS,KAmBhClJ,EAAOuf,MAAQ,WAKX5f,KAAKwa,KAAO,KAKZxa,KAAK+L,IAAM,GAKX/L,KAAK6R,IAAM,KAKX7R,KAAK6f,KAAO,KAKZ7f,KAAK4c,OAAS,KAKd5c,KAAK8f,MAAQ,KAKb9f,KAAK+f,MAAQ,KAKb/f,KAAKggB,KAAO,KAKZhgB,KAAKkf,KAAO,KAKZlf,KAAKigB,MAAQ,KAKbjgB,KAAK6U,MAAQ,KAKb7U,KAAK8c,MAAQ,KAKb9c,KAAKkgB,MAAQ,KAKblgB,KAAK2e,KAAO,KAKZ3e,KAAKmgB,OAAS,KAKdngB,KAAKya,MAAQ,KAKbza,KAAKogB,UAAY,KAKjBpgB,KAAKqgB,QAAU,KAKfrgB,KAAK8e,IAAM,MAIfze,EAAOuf,MAAMvZ,WASTia,KAAM,aAUNC,QAAS,aAQTC,WAAY,aASZC,WAAY,aASZC,OAAQ,aAURnC,OAAQ,aAQRoC,UAAW,aAUXC,OAAQ,aAQR9H,OAAQ,aAQR+H,OAAQ,aAQRC,QAAS,aAQTC,YAAa,aAQbC,SAAU,cAKd3gB,EAAOuf,MAAMvZ,UAAU8B,YAAc9H,EAAOuf,MAkB5Cvf,EAAO4gB,aAAe,SAAUzG,EAAM0G,GAKlClhB,KAAKwa,KAAOA,EAKZxa,KAAKmhB,UAMLnhB,KAAKohB,cAAgB,KAEO,mBAAjBF,IAAiD,OAAjBA,IAEvClhB,KAAKohB,cAAgBF,GAOzBlhB,KAAKqhB,aAAc,EAMnBrhB,KAAKshB,aAAc,EAMnBthB,KAAKuhB,UAAW,EAMhBvhB,KAAKwhB,SAMLxhB,KAAKqJ,QAAU,GAcfrJ,KAAKyhB,cAAgB,GAAIphB,GAAO+a,OAMhCpb,KAAK0hB,eAAiB,KAMtB1hB,KAAK2hB,kBAAoB,KAMzB3hB,KAAK4hB,iBAAmB,KAMxB5hB,KAAK6hB,iBAAmB,KAMxB7hB,KAAK8hB,iBAAmB,KAMxB9hB,KAAK+hB,iBAAmB,KAMxB/hB,KAAKgiB,oBAAsB,KAM3BhiB,KAAKiiB,qBAAuB,KAM5BjiB,KAAKkiB,qBAAuB,KAM5BliB,KAAKmiB,iBAAmB,KAMxBniB,KAAKoiB,kBAAoB,KAMzBpiB,KAAKqiB,sBAAwB,KAM7BriB,KAAKsiB,mBAAqB,MAI9BjiB,EAAO4gB,aAAa5a,WAOhBsW,KAAM,WAEF3c,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAKwiB,MAAOxiB,MAClCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAK0iB,OAAQ1iB,MAET,OAAvBA,KAAKohB,eAAwD,gBAAvBphB,MAAKohB,eAE3CphB,KAAK6R,IAAI,UAAW7R,KAAKohB,eAAe,IAehDvP,IAAK,SAAU9F,EAAKmU,EAAOyC,GAELjZ,SAAdiZ,IAA2BA,GAAY,EAE3C,IAAIC,EA8BJ,OA5BI1C,aAAiB7f,GAAOuf,MAExBgD,EAAW1C,EAEW,gBAAVA,IAEZ0C,EAAW1C,EACX0C,EAASpI,KAAOxa,KAAKwa,MAEC,kBAAV0F,KAEZ0C,EAAW,GAAI1C,GAAMlgB,KAAKwa,OAG9Bxa,KAAKmhB,OAAOpV,GAAO6W,EAEfD,IAEI3iB,KAAKwa,KAAKqI,SAEV7iB,KAAK0Q,MAAM3E,GAIX/L,KAAKohB,cAAgBrV,GAItB6W,GASXE,OAAQ,SAAU/W,GAEV/L,KAAKqJ,UAAY0C,IAEjB/L,KAAK+iB,gBAAkB,KAEvB/iB,KAAK0hB,eAAiB,KACtB1hB,KAAKsiB,mBAAqB,KAE1BtiB,KAAK2hB,kBAAoB,KACzB3hB,KAAKkiB,qBAAuB,KAC5BliB,KAAKiiB,qBAAuB,KAC5BjiB,KAAK4hB,iBAAmB,KACxB5hB,KAAK6hB,iBAAmB,KACxB7hB,KAAKgiB,oBAAsB,KAC3BhiB,KAAK8hB,iBAAmB,KACxB9hB,KAAK+hB,iBAAmB,KACxB/hB,KAAKmiB,iBAAmB,KACxBniB,KAAKoiB,kBAAoB,KACzBpiB,KAAKqiB,sBAAwB,YAG1BriB,MAAKmhB,OAAOpV,IAavB2E,MAAO,SAAU3E,EAAKiX,EAAYC,GAEXvZ,SAAfsZ,IAA4BA,GAAa,GAC1BtZ,SAAfuZ,IAA4BA,GAAa,GAEzCjjB,KAAKkjB,WAAWnX,KAGhB/L,KAAKohB,cAAgBrV,EACrB/L,KAAKqhB,YAAc2B,EACnBhjB,KAAKshB,YAAc2B,EAEflc,UAAUc,OAAS,IAEnB7H,KAAKwhB,MAAQhb,MAAMH,UAAU8c,OAAOrc,KAAKC,UAAW,MAchEqc,QAAS,SAAUJ,EAAYC,GAERvZ,SAAfsZ,IAA4BA,GAAa,GAC1BtZ,SAAfuZ,IAA4BA,GAAa,GAG7CjjB,KAAKohB,cAAgBphB,KAAKqJ,QAC1BrJ,KAAKqhB,YAAc2B,EACnBhjB,KAAKshB,YAAc2B,EAEflc,UAAUc,OAAS,IAEnB7H,KAAKwhB,MAAQhb,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KAU3Dsc,MAAO,aAQPrG,UAAW,WAEP,GAAIhd,KAAKohB,eAAiBphB,KAAKwa,KAAKqI,SACpC,CACI,GAAIS,GAAmBtjB,KAAKqJ,OAS5B,IANArJ,KAAKujB,oBAELvjB,KAAKwjB,gBAAgBxjB,KAAKohB,eAE1BphB,KAAKyhB,cAAc5C,SAAS7e,KAAKqJ,QAASia,GAEtCtjB,KAAKqJ,UAAYrJ,KAAKohB,cAEtB,MAIAphB,MAAKohB,cAAgB,KAKrBphB,KAAK2hB,mBAEL3hB,KAAKwa,KAAKwF,KAAKN,OAAM,GACrB1f,KAAK2hB,kBAAkB7a,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAGb,IAAtCxa,KAAKwa,KAAKwF,KAAKyD,oBAAkE,IAAtCzjB,KAAKwa,KAAKwF,KAAK0D,mBAE1D1jB,KAAK2jB,eAKL3jB,KAAKwa,KAAKwF,KAAKtP,SAMnB1Q,KAAK2jB,iBAYjBJ,kBAAmB,WAEXvjB,KAAKqJ,UAEDrJ,KAAKsiB,oBAELtiB,KAAKsiB,mBAAmBxb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAG5Dxa,KAAKwa,KAAK2F,OAAOyD,YAEjB5jB,KAAKwa,KAAKoC,OAAO8C,QAEjB1f,KAAKwa,KAAKuF,MAAML,OAAM,GAEtB1f,KAAKwa,KAAK6F,QAAQpC,QAElBje,KAAKwa,KAAKmE,KAAKiF,YAEf5jB,KAAKwa,KAAK3F,MAAM6K,MAAM1f,KAAKqhB,aAEvBrhB,KAAKwa,KAAKqJ,OAEV7jB,KAAKwa,KAAKqJ,MAAMnE,QAGhB1f,KAAKqhB,cAELrhB,KAAKwa,KAAKC,MAAMuG,WAEZhhB,KAAKshB,aAELthB,KAAKwa,KAAKsF,MAAMgE,aAchCZ,WAAY,SAAUnX,GAElB,MAAI/L,MAAKmhB,OAAOpV,GAER/L,KAAKmhB,OAAOpV,GAAc,SAAK/L,KAAKmhB,OAAOpV,GAAa,QAAK/L,KAAKmhB,OAAOpV,GAAa,QAAK/L,KAAKmhB,OAAOpV,GAAa,QAE7G,GAIP3D,QAAQG,KAAK,gIACN,IAKXH,QAAQG,KAAK,sDAAwDwD,IAC9D,IAYfgY,KAAM,SAAUhY,GAEZ/L,KAAKmhB,OAAOpV,GAAKyO,KAAOxa,KAAKwa,KAC7Bxa,KAAKmhB,OAAOpV,GAAK8F,IAAM7R,KAAKwa,KAAK3I,IACjC7R,KAAKmhB,OAAOpV,GAAK8T,KAAO7f,KAAKwa,KAAKqF,KAClC7f,KAAKmhB,OAAOpV,GAAK6Q,OAAS5c,KAAKwa,KAAKoC,OACpC5c,KAAKmhB,OAAOpV,GAAK+T,MAAQ9f,KAAKwa,KAAKsF,MACnC9f,KAAKmhB,OAAOpV,GAAKgU,MAAQ/f,KAAKwa,KAAKuF,MACnC/f,KAAKmhB,OAAOpV,GAAKiU,KAAOhgB,KAAKwa,KAAKwF,KAClChgB,KAAKmhB,OAAOpV,GAAKmT,KAAOlf,KAAKwa,KAAK0E,KAClClf,KAAKmhB,OAAOpV,GAAKkU,MAAQjgB,KAAKwa,KAAKyF,MACnCjgB,KAAKmhB,OAAOpV,GAAK8I,MAAQ7U,KAAKwa,KAAK3F,MACnC7U,KAAKmhB,OAAOpV,GAAKmU,MAAQlgB,KACzBA,KAAKmhB,OAAOpV,GAAK+Q,MAAQ9c,KAAKwa,KAAKsC,MACnC9c,KAAKmhB,OAAOpV,GAAK4S,KAAO3e,KAAKwa,KAAKmE,KAClC3e,KAAKmhB,OAAOpV,GAAKoU,OAASngB,KAAKwa,KAAK2F,OACpCngB,KAAKmhB,OAAOpV,GAAK0O,MAAQza,KAAKwa,KAAKC,MACnCza,KAAKmhB,OAAOpV,GAAKqU,UAAYpgB,KAAKwa,KAAK4F,UACvCpgB,KAAKmhB,OAAOpV,GAAK+S,IAAM9e,KAAKwa,KAAKsE,IACjC9e,KAAKmhB,OAAOpV,GAAKsU,QAAUrgB,KAAKwa,KAAK6F,QACrCrgB,KAAKmhB,OAAOpV,GAAKA,IAAMA,GAW3BiY,OAAQ,SAAUjY,GAEV/L,KAAKmhB,OAAOpV,KAEZ/L,KAAKmhB,OAAOpV,GAAKyO,KAAO,KACxBxa,KAAKmhB,OAAOpV,GAAK8F,IAAM,KACvB7R,KAAKmhB,OAAOpV,GAAK8T,KAAO,KACxB7f,KAAKmhB,OAAOpV,GAAK6Q,OAAS,KAC1B5c,KAAKmhB,OAAOpV,GAAK+T,MAAQ,KACzB9f,KAAKmhB,OAAOpV,GAAKgU,MAAQ,KACzB/f,KAAKmhB,OAAOpV,GAAKiU,KAAO,KACxBhgB,KAAKmhB,OAAOpV,GAAKmT,KAAO,KACxBlf,KAAKmhB,OAAOpV,GAAKkU,MAAQ,KACzBjgB,KAAKmhB,OAAOpV,GAAK8I,MAAQ,KACzB7U,KAAKmhB,OAAOpV,GAAKmU,MAAQ,KACzBlgB,KAAKmhB,OAAOpV,GAAK+Q,MAAQ,KACzB9c,KAAKmhB,OAAOpV,GAAK4S,KAAO,KACxB3e,KAAKmhB,OAAOpV,GAAKoU,OAAS,KAC1BngB,KAAKmhB,OAAOpV,GAAK0O,MAAQ,KACzBza,KAAKmhB,OAAOpV,GAAKqU,UAAY,KAC7BpgB,KAAKmhB,OAAOpV,GAAK+S,IAAM,KACvB9e,KAAKmhB,OAAOpV,GAAKsU,QAAU,OAYnCmD,gBAAiB,SAAUzX,GAEvB/L,KAAK+iB,gBAAkB/iB,KAAKmhB,OAAOpV,GAEnC/L,KAAK+jB,KAAKhY,GAGV/L,KAAK0hB,eAAiB1hB,KAAKmhB,OAAOpV,GAAW,MAAK/L,KAAKqjB,MAEvDrjB,KAAK2hB,kBAAoB3hB,KAAKmhB,OAAOpV,GAAc,SAAK,KACxD/L,KAAKkiB,qBAAuBliB,KAAKmhB,OAAOpV,GAAiB,YAAK,KAC9D/L,KAAKiiB,qBAAuBjiB,KAAKmhB,OAAOpV,GAAiB,YAAK,KAC9D/L,KAAK4hB,iBAAmB5hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAK6hB,iBAAmB7hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAKgiB,oBAAsBhiB,KAAKmhB,OAAOpV,GAAgB,WAAK,KAC5D/L,KAAK8hB,iBAAmB9hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAK+hB,iBAAmB/hB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAKmiB,iBAAmBniB,KAAKmhB,OAAOpV,GAAa,QAAK,KACtD/L,KAAKoiB,kBAAoBpiB,KAAKmhB,OAAOpV,GAAc,SAAK,KACxD/L,KAAKqiB,sBAAwBriB,KAAKmhB,OAAOpV,GAAkB,aAAK,KAGhE/L,KAAKsiB,mBAAqBtiB,KAAKmhB,OAAOpV,GAAe,UAAK/L,KAAKqjB,MAG1C,KAAjBrjB,KAAKqJ,SAELrJ,KAAKwa,KAAK6F,QAAQX,QAGtB1f,KAAKqJ,QAAU0C,EACf/L,KAAKuhB,UAAW,EAGhBvhB,KAAK0hB,eAAeza,MAAMjH,KAAK+iB,gBAAiB/iB,KAAKwhB,OAGjDzV,IAAQ/L,KAAKohB,gBAEbphB,KAAKwhB,UAGTxhB,KAAKwa,KAAKyJ,YAAa,GAW3BC,gBAAiB,WACb,MAAOlkB,MAAKmhB,OAAOnhB,KAAKqJ,UAO5Bsa,aAAc,WAGN3jB,KAAKuhB,YAAa,GAASvhB,KAAKiiB,sBAEhCjiB,KAAKiiB,qBAAqBnb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAG1Dxa,KAAKuhB,YAAa,GAASvhB,KAAK4hB,kBAEhC5hB,KAAKuhB,UAAW,EAChBvhB,KAAK4hB,iBAAiB9a,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAItDxa,KAAKuhB,UAAW,GASxBiB,MAAO,WAECxiB,KAAKuhB,UAAYvhB,KAAKmiB,kBAEtBniB,KAAKmiB,iBAAiBrb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAS9DkI,OAAQ,WAEA1iB,KAAKuhB,UAAYvhB,KAAKoiB,mBAEtBpiB,KAAKoiB,kBAAkBtb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAS/D+D,OAAQ,WAEAve,KAAKuhB,SAEDvhB,KAAK6hB,kBAEL7hB,KAAK6hB,iBAAiB/a,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAKtDxa,KAAKiiB,sBAELjiB,KAAKiiB,qBAAqBnb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAUtEuG,YAAa,WAEL/gB,KAAKuhB,SAEDvhB,KAAKqiB,uBAELriB,KAAKqiB,sBAAsBvb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MAK3Dxa,KAAKiiB,sBAELjiB,KAAKiiB,qBAAqBnb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAWtEmG,UAAW,SAAUwD,GAEbnkB,KAAKuhB,UAAYvhB,KAAKgiB,qBAEtBhiB,KAAKgiB,oBAAoBlb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,KAAM2J,IASvErL,OAAQ,SAAU/I,EAAOC,GAEjBhQ,KAAK+hB,kBAEL/hB,KAAK+hB,iBAAiBjb,KAAK9G,KAAK+iB,gBAAiBhT,EAAOC,IAShE4Q,OAAQ,WAEA5gB,KAAKuhB,SAEDvhB,KAAK8hB,mBAED9hB,KAAKwa,KAAK4J,aAAe/jB,EAAOI,QAEhCT,KAAKwa,KAAK6J,QAAQC,OAClBtkB,KAAKwa,KAAK6J,QAAQE,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9CvkB,KAAK8hB,iBAAiBhb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,MACtDxa,KAAKwa,KAAK6J,QAAQG,WAIlBxkB,KAAK8hB,iBAAiBhb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAM1Dxa,KAAKkiB,sBAELliB,KAAKkiB,qBAAqBpb,KAAK9G,KAAK+iB,gBAAiB/iB,KAAKwa,OAWtEsJ,QAAS,WAEL9jB,KAAKqhB,aAAc,EACnBrhB,KAAKshB,aAAc,EAEnBthB,KAAKujB,oBAELvjB,KAAK+iB,gBAAkB,KAEvB/iB,KAAK0hB,eAAiB,KACtB1hB,KAAKsiB,mBAAqB,KAE1BtiB,KAAK2hB,kBAAoB,KACzB3hB,KAAKkiB,qBAAuB,KAC5BliB,KAAKiiB,qBAAuB,KAC5BjiB,KAAK4hB,iBAAmB,KACxB5hB,KAAK6hB,iBAAmB,KACxB7hB,KAAK8hB,iBAAmB,KACxB9hB,KAAKmiB,iBAAmB,KACxBniB,KAAKoiB,kBAAoB,KACzBpiB,KAAKqiB,sBAAwB,KAE7BriB,KAAKwa,KAAO,KACZxa,KAAKmhB,UACLnhB,KAAKohB,cAAgB,KACrBphB,KAAKqJ,QAAU,KAMvBhJ,EAAO4gB,aAAa5a,UAAU8B,YAAc9H,EAAO4gB,aAOnD1Z,OAAO2E,eAAe7L,EAAO4gB,aAAa5a,UAAW,WAEjD2F,IAAK,WAED,MAAOhM,MAAKuhB,YAqEpBlhB,EAAO+a,OAAS,aAEhB/a,EAAO+a,OAAO/U,WAMVoe,UAAW,KAMXC,YAAa,KAUbC,UAAU,EAMVC,kBAAkB,EAUlBC,QAAQ,EAMRC,gBAAgB,EAQhBC,iBAAkB,SAAUC,EAAUC,GAElC,GAAwB,kBAAbD,GAEP,KAAM,IAAIhO,OAAM,kFAAkFpL,QAAQ,OAAQqZ,KAc1HC,kBAAmB,SAAUF,EAAUG,EAAQC,EAAiBC,EAAU1e,GAEtE,GACI2e,GADAC,EAAYvlB,KAAKwlB,iBAAiBR,EAAUI,EAGhD,IAAkB,KAAdG,GAIA,GAFAD,EAAUtlB,KAAKykB,UAAUc,GAErBD,EAAQH,WAAaA,EAErB,KAAM,IAAInO,OAAM,kBAAoBmO,EAAS,GAAK,QAAU,eAAkBA,EAAc,OAAL,IAAe,qEAK1GG,GAAU,GAAIjlB,GAAOolB,cAAczlB,KAAMglB,EAAUG,EAAQC,EAAiBC,EAAU1e,GACtF3G,KAAK0lB,YAAYJ,EAQrB,OALItlB,MAAK2kB,UAAY3kB,KAAK0kB,aAEtBY,EAAQK,QAAQ3lB,KAAK0kB,aAGlBY,GASXI,YAAa,SAAUJ,GAEdtlB,KAAKykB,YAENzkB,KAAKykB,aAIT,IAAImB,GAAI5lB,KAAKykB,UAAU5c,MAEvB,GACI+d,WAEG5lB,KAAKykB,UAAUmB,IAAMN,EAAQO,WAAa7lB,KAAKykB,UAAUmB,GAAGC,UAEnE7lB,MAAKykB,UAAUtB,OAAOyC,EAAI,EAAG,EAAGN,IAWpCE,iBAAkB,SAAUR,EAAUX,GAElC,IAAKrkB,KAAKykB,UAEN,MAAO,EAGK/a,UAAZ2a,IAAyBA,EAAU,KAKvC,KAHA,GACIyB,GADAF,EAAI5lB,KAAKykB,UAAU5c,OAGhB+d,KAIH,GAFAE,EAAM9lB,KAAKykB,UAAUmB,GAEjBE,EAAIC,YAAcf,GAAYc,EAAIzB,UAAYA,EAE9C,MAAOuB,EAIf,OAAO,IAYXI,IAAK,SAAUhB,EAAUX,GAErB,MAAoD,KAA7CrkB,KAAKwlB,iBAAiBR,EAAUX,IA4B3CxS,IAAK,SAAUmT,EAAUI,EAAiBC,GAEtCrlB,KAAK+kB,iBAAiBC,EAAU,MAEhC,IAAIre,KAEJ,IAAII,UAAUc,OAAS,EAEnB,IAAK,GAAIC,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,GAI5B,OAAO9H,MAAKklB,kBAAkBF,GAAU,EAAOI,EAAiBC,EAAU1e,IAiB9Esf,QAAS,SAAUjB,EAAUI,EAAiBC,GAE1CrlB,KAAK+kB,iBAAiBC,EAAU,UAEhC,IAAIre,KAEJ,IAAII,UAAUc,OAAS,EAEnB,IAAK,GAAIC,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,GAI5B,OAAO9H,MAAKklB,kBAAkBF,GAAU,EAAMI,EAAiBC,EAAU1e,IAY7Emc,OAAQ,SAAUkC,EAAUX,GAExBrkB,KAAK+kB,iBAAiBC,EAAU,SAEhC,IAAIld,GAAI9H,KAAKwlB,iBAAiBR,EAAUX,EAQxC,OANU,KAANvc,IAEA9H,KAAKykB,UAAU3c,GAAGoe,WAClBlmB,KAAKykB,UAAUtB,OAAOrb,EAAG,IAGtBkd,GAUXpB,UAAW,SAAUS,GAIjB,GAFgB3a,SAAZ2a,IAAyBA,EAAU,MAElCrkB,KAAKykB,UAAV,CAOA,IAFA,GAAImB,GAAI5lB,KAAKykB,UAAU5c,OAEhB+d,KAECvB,EAEIrkB,KAAKykB,UAAUmB,GAAGvB,UAAYA,IAE9BrkB,KAAKykB,UAAUmB,GAAGM,WAClBlmB,KAAKykB,UAAUtB,OAAOyC,EAAG,IAK7B5lB,KAAKykB,UAAUmB,GAAGM,UAIrB7B,KAEDrkB,KAAKykB,UAAU5c,OAAS,KAWhCse,gBAAiB,WAEb,MAAOnmB,MAAKykB,UAAYzkB,KAAKykB,UAAU5c,OAAS,GAYpDue,KAAM,WAEFpmB,KAAK4kB,kBAAmB,GAY5B/F,SAAU,WAEN,GAAK7e,KAAK6kB,QAAW7kB,KAAKykB,UAA1B,CAKA,GAEI4B,GAFAC,EAAY9f,MAAMH,UAAUE,MAAMO,KAAKC,WACvC6e,EAAI5lB,KAAKykB,UAAU5c,MAQvB,IALI7H,KAAK2kB,WAEL3kB,KAAK0kB,YAAc4B,GAGlBV,EAAL,CAMAS,EAAWrmB,KAAKykB,UAAUle,QAC1BvG,KAAK4kB,kBAAmB,CAIxB,GACIgB,WAEGS,EAAST,IAAM5lB,KAAK4kB,kBAAoByB,EAAST,GAAGD,QAAQW,MAAe,MAStFC,OAAQ,WAEAvmB,KAAK0kB,cAEL1kB,KAAK0kB,YAAc,OAa3B8B,QAAS,WAELxmB,KAAK4jB,YAEL5jB,KAAKykB,UAAY,KACbzkB,KAAK0kB,cAEL1kB,KAAK0kB,YAAc,OAW3Bld,SAAU,WAEN,MAAO,yBAA0BxH,KAAK6kB,OAAQ,iBAAkB7kB,KAAKmmB,kBAAmB,MAehG5e,OAAO2E,eAAe7L,EAAO+a,OAAO/U,UAAW,iBAE3C2F,IAAK,WACD,GAAIya,GAAQzmB,IACZ,OAAOA,MAAK8kB,iBAAmB9kB,KAAK8kB,eAAiB,WACjD,MAAO2B,GAAM5H,SAAS5X,MAAMwf,EAAO1f,gBAM/C1G,EAAO+a,OAAO/U,UAAU8B,YAAc9H,EAAO+a,OAuB7C/a,EAAOolB,cAAgB,SAAUiB,EAAQ1B,EAAUG,EAAQC,EAAiBC,EAAU1e,GAMlF3G,KAAK+lB,UAAYf,EAEbG,IAEAnlB,KAAK2mB,SAAU,GAGI,MAAnBvB,IAEAplB,KAAKqkB,QAAUe,GAOnBplB,KAAK4mB,QAAUF,EAEXrB,IAEArlB,KAAK6lB,UAAYR,GAGjB1e,GAAQA,EAAKkB,SAEb7H,KAAKwhB,MAAQ7a,IAKrBtG,EAAOolB,cAAcpf,WAKjBge,QAAS,KAMTsC,SAAS,EAMTd,UAAW,EAMXrE,MAAO,KAKPqF,UAAW,EAOXhC,QAAQ,EAORiC,OAAQ,KASRnB,QAAS,SAASW,GAEd,GAAIS,GAAeD,CAqBnB,OAnBI9mB,MAAK6kB,QAAY7kB,KAAK+lB,YAEtBe,EAAS9mB,KAAK8mB,OAAS9mB,KAAK8mB,OAAOjgB,OAAOyf,GAAaA,EAEnDtmB,KAAKwhB,QAELsF,EAASA,EAAOjgB,OAAO7G,KAAKwhB,QAGhCuF,EAAgB/mB,KAAK+lB,UAAU9e,MAAMjH,KAAKqkB,QAASyC,GAEnD9mB,KAAK6mB,YAED7mB,KAAK2mB,SAEL3mB,KAAKgnB,UAIND,GAUXC,OAAQ,WACJ,MAAOhnB,MAAKinB,UAAYjnB,KAAK4mB,QAAQ9D,OAAO9iB,KAAK+lB,UAAW/lB,KAAKqkB,SAAW,MAOhF4C,QAAS,WACL,QAAUjnB,KAAK4mB,WAAa5mB,KAAK+lB,WAOrCZ,OAAQ,WACJ,MAAOnlB,MAAK2mB,SAOhBO,YAAa,WACT,MAAOlnB,MAAK+lB,WAOhBoB,UAAW,WACP,MAAOnnB,MAAK4mB,SAQhBV,SAAU,iBACClmB,MAAK4mB,cACL5mB,MAAK+lB,gBACL/lB,MAAKqkB,SAOhB7c,SAAU,WACN,MAAO,gCAAkCxH,KAAK2mB,QAAS,aAAc3mB,KAAKinB,UAAW,YAAcjnB,KAAK6kB,OAAS,MAKzHxkB,EAAOolB,cAAcpf,UAAU8B,YAAc9H,EAAOolB,cAoBpDplB,EAAO+mB,OAAS,SAAU5M,EAAM6M,EAAUC,GAKtCtnB,KAAKwa,KAAOA,EAMZxa,KAAKkI,KAAO7H,EAAO2B,aAQnBhC,KAAKunB,QAAUvnB,MAMfA,KAAKwnB,WAMLxnB,KAAKynB,OAAQ,EAMbznB,KAAK0nB,QAAU,EAKf1nB,KAAK2nB,UAAY,GAAItnB,GAAO2M,KAM5B,IAAIiH,GAAI,GAAI2T,KAoBZ,IAfA5nB,KAAKqnB,UAEDQ,YAAc3f,KAAM,KAAMqB,OAAStD,EAAG,IAAKwG,EAAG,MAC9CkS,MAAQzW,KAAM,KAAMqB,MAAO,GAC3Bue,OAAS5f,KAAM,KAAMqB,OAAStD,EAAG,EAAKwG,EAAG,IACzCsb,MAAQ7f,KAAM,MAAOqB,OAAS0K,EAAE+T,cAAgB/T,EAAEgU,WAAahU,EAAEiU,UAAyB,GAAdjU,EAAEkU,WAAiB,GAAsB,GAAjBlU,EAAEmU,aAAoBnU,EAAEoU,eAC5HC,YAAcpgB,KAAM,KAAMqB,MAAO,OACjCgf,WAAargB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,IACpEC,WAAaxgB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,IACpEE,WAAazgB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,IACpEG,WAAa1gB,KAAM,YAAaqB,MAAO,KAAMif,aAAeC,QAAQ,KAKpEpB,EAEA,IAAK,GAAItb,KAAOsb,GAEZrnB,KAAKqnB,SAAStb,GAAOsb,EAAStb,EAOtC/L,MAAKsnB,YAAcA,GAAe,IAItCjnB,EAAO+mB,OAAO/gB,WAMVia,KAAM,aAUNuI,cAAe,SAAU9Y,EAAOC,GAE5BhQ,KAAKqnB,SAASQ,WAAWte,MAAMtD,EAAI8J,EACnC/P,KAAKqnB,SAASQ,WAAWte,MAAMkD,EAAIuD,GASvCuO,OAAQ,SAAUuK,GAEd,GAAuB,mBAAZA,GACX,CACI,GAAI7iB,GAAI6iB,EAAQ7iB,EAAIjG,KAAKwa,KAAKzK,MAC1BtD,EAAI,EAAIqc,EAAQrc,EAAIzM,KAAKwa,KAAKxK,MAE9B/J,KAAMjG,KAAK2nB,UAAU1hB,GAAKwG,IAAMzM,KAAK2nB,UAAUlb,IAE/CzM,KAAKqnB,SAASS,MAAMve,MAAMtD,EAAIA,EAAE8iB,QAAQ,GACxC/oB,KAAKqnB,SAASS,MAAMve,MAAMkD,EAAIA,EAAEsc,QAAQ,GACxC/oB,KAAK2nB,UAAU1b,IAAIhG,EAAGwG,IAI9BzM,KAAKqnB,SAAS1I,KAAKpV,MAAQvJ,KAAKwa,KAAKmE,KAAKqK,uBAsB9CC,WAAY,SAAUhjB,EAAGwG,EAAGsD,EAAOC,EAAQkZ,EAASC,GAEhCzf,SAAZwf,IAAyBA,EAAU,GACvBxf,SAAZyf,IAAyBA,EAAU,GAEzBzf,SAAVqG,GAAiC,OAAVA,EAEvB/P,KAAK+P,MAAQA,EAIbA,EAAQ/P,KAAK+P,MAGFrG,SAAXsG,GAAmC,OAAXA,EAExBhQ,KAAKgQ,OAASA,EAIdA,EAAShQ,KAAKgQ,MAGlB,IAAIoZ,GAAQppB,KAAKwa,KAAK3I,IAAIuX,MAAMnjB,EAAGwG,EAAG,YAStC,OAPA2c,GAAMrZ,MAAQA,EACdqZ,EAAMpZ,OAASA,EAEfoZ,EAAMC,OAAOpd,IAAIid,EAASC,GAE1BC,EAAME,SAAYtpB,MAEXopB,GAQXtF,QAAS,WAEL9jB,KAAKwa,KAAO,OAMpBna,EAAO+mB,OAAO/gB,UAAU8B,YAAc9H,EAAO+mB,OAM7C7f,OAAO2E,eAAe7L,EAAO+mB,OAAO/gB,UAAW,SAE3C2F,IAAK,WACD,MAAOhM,MAAKqnB,SAASQ,WAAWte,MAAMtD,GAG1CgG,IAAK,SAAS1C,GACVvJ,KAAKqnB,SAASQ,WAAWte,MAAMtD,EAAIsD,KAS3ChC,OAAO2E,eAAe7L,EAAO+mB,OAAO/gB,UAAW,UAE3C2F,IAAK,WACD,MAAOhM,MAAKqnB,SAASQ,WAAWte,MAAMkD,GAG1CR,IAAK,SAAS1C,GACVvJ,KAAKqnB,SAASQ,WAAWte,MAAMkD,EAAIlD,KAmB3ClJ,EAAOkpB,OAAS,SAAU/O,EAAMgP,GAEb9f,SAAX8f,IAAwBA,EAAS,MAKrCxpB,KAAKwa,KAAOA,EAKZxa,KAAKwpB,OAASA,EAMdxpB,KAAK6kB,QAAS,EAMd7kB,KAAK6a,SAAU,EAMf7a,KAAKypB,cAAe,EAMpBzpB,KAAK0pB,WAAY,EAMjB1pB,KAAK2pB,eAAgB,EAMrB3pB,KAAK4pB,WAAY,EAMjB5pB,KAAK6pB,eAAgB,GAIzBxpB,EAAOkpB,OAAOljB,WAOV2W,UAAW,aAQXuB,OAAQ,aAQRqC,OAAQ,aAQRkJ,WAAY,aAOZhG,QAAS,WAEL9jB,KAAKwa,KAAO,KACZxa,KAAKwpB,OAAS,KACdxpB,KAAK6kB,QAAS,EACd7kB,KAAK6a,SAAU,IAMvBxa,EAAOkpB,OAAOljB,UAAU8B,YAAc9H,EAAOkpB,OAiB7ClpB,EAAO0pB,cAAgB,SAASvP,GAK5Bxa,KAAKwa,KAAOA,EAKZxa,KAAKgqB,WAMLhqB,KAAKiqB,KAAO,EAMZjqB,KAAKkqB,GAAK,GAId7pB,EAAO0pB,cAAc1jB,WAWjBwL,IAAK,SAAUsY,GAEX,GAAIxjB,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAC7CuK,GAAS,CA6Cb,OA1CsB,kBAAX6Y,GAEPA,EAAS,GAAIA,GAAOnqB,KAAKwa,KAAMxa,OAI/BmqB,EAAO3P,KAAOxa,KAAKwa,KACnB2P,EAAOX,OAASxpB,MAIe,kBAAxBmqB,GAAkB,YAEzBA,EAAOV,cAAe,EACtBnY,GAAS,GAGmB,kBAArB6Y,GAAe,SAEtBA,EAAOT,WAAY,EACnBpY,GAAS,GAGuB,kBAAzB6Y,GAAmB,aAE1BA,EAAOR,eAAgB,EACvBrY,GAAS,GAGmB,kBAArB6Y,GAAe,SAEtBA,EAAOP,WAAY,EACnBtY,GAAS,GAGuB,kBAAzB6Y,GAAmB,aAE1BA,EAAON,eAAgB,EACvBvY,GAAS,GAITA,IAEI6Y,EAAOV,cAAgBU,EAAOT,WAAaS,EAAOR,iBAElDQ,EAAOtF,QAAS,IAGhBsF,EAAOP,WAAaO,EAAON,iBAE3BM,EAAOtP,SAAU,GAGrB7a,KAAKiqB,KAAOjqB,KAAKgqB,QAAQpX,KAAKuX,GAGA,kBAAnBA,GAAa,MAEpBA,EAAO7J,KAAKrZ,MAAMkjB,EAAQxjB,GAGvBwjB,GAIA,MAWfrH,OAAQ,SAAUqH,EAAQrG,GAMtB,IAJgBpa,SAAZoa,IAAyBA,GAAU,GAEvC9jB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAER,GAAIlqB,KAAKgqB,QAAQhqB,KAAKkqB,MAAQC,EAS1B,MAPIrG,IAEAqG,EAAOrG,UAGX9jB,KAAKgqB,QAAQ7G,OAAOnjB,KAAKkqB,GAAI,OAC7BlqB,MAAKiqB,QAYjBrG,UAAW,WAIP,IAFA5jB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAERlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIpG,SAG1B9jB,MAAKgqB,QAAQniB,OAAS,EACtB7H,KAAKiqB,KAAO,GAUhBjN,UAAW,WAIP,IAFAhd,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrF,QAAU7kB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIT,cAEtDzpB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIlN,aAYlCuB,OAAQ,WAIJ,IAFAve,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrF,QAAU7kB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIR,WAEtD1pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAI3L,UAalC6L,WAAY,WAIR,IAFApqB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrF,QAAU7kB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIP,eAEtD3pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIE,cAYlCxJ,OAAQ,WAIJ,IAFA5gB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrP,SAAW7a,KAAKgqB,QAAQhqB,KAAKkqB,IAAIN,WAEvD5pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAItJ,UAYlCkJ,WAAY,WAIR,IAFA9pB,KAAKkqB,GAAKlqB,KAAKiqB,KAERjqB,KAAKkqB,MAEJlqB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIrP,SAAW7a,KAAKgqB,QAAQhqB,KAAKkqB,IAAIL,eAEvD7pB,KAAKgqB,QAAQhqB,KAAKkqB,IAAIJ,cAWlChG,QAAS,WAEL9jB,KAAK4jB,YAEL5jB,KAAKwa,KAAO,OAMpBna,EAAO0pB,cAAc1jB,UAAU8B,YAAc9H,EAAO0pB,cAiBpD1pB,EAAOgqB,MAAQ,SAAU7P,GAKrBxa,KAAKwa,KAAOA,EAEZ1U,KAAKwkB,uBAAuBxjB,KAAK9G,MAMjCA,KAAKoL,KAAO,cAWZpL,KAAKuqB,yBAA0B,EAM/BvqB,KAAKwqB,QAAS,EAOdxqB,KAAKyqB,eAAiB,GAAI3kB,MAAKkO,OAO/BhU,KAAK8c,MAAQ9c,KAKbA,KAAK0qB,qBAAuB,EAM5B1qB,KAAK2qB,WAAa,SAMlB3qB,KAAK4qB,UAAY,KAMjB5qB,KAAK6qB,UAAa3d,EAAG,EAAG4d,EAAG,EAAGjc,EAAG,EAAGJ,EAAG,EAAGuP,MAAO,EAAG+M,KAAM,WAErD/qB,KAAKwa,KAAKwQ,cAGXhrB,KAAK6qB,SAASpc,EAAI,GAGlB+L,EAAKyQ,QAELjrB,KAAKkrB,YAAY1Q,EAAKyQ,SAK9B5qB,EAAOgqB,MAAMhkB,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACnEhG,EAAOgqB,MAAMhkB,UAAU8B,YAAc9H,EAAOgqB,MAS5ChqB,EAAOgqB,MAAMhkB,UAAU6kB,YAAc,SAAUD,GAEvCA,EAAgC,0BAEhCjrB,KAAKuqB,wBAA0BU,EAAgC,yBAG/DA,EAAwB,iBAExBjrB,KAAKmrB,mBAAmBF,EAAwB,kBAUxD5qB,EAAOgqB,MAAMhkB,UAAUsW,KAAO,WAE1Btc,EAAO+qB,IAAIC,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,QAE5C/N,EAAOkrB,OAAOC,cAAcxrB,KAAKwa,KAAK8Q,OAAQ,QAC9CjrB,EAAOkrB,OAAOE,eAAezrB,KAAKwa,KAAK8Q,OAAQ,QAE/CtrB,KAAK0rB,mBAUTrrB,EAAOgqB,MAAMhkB,UAAU2W,UAAY,WAE/Bhd,KAAK0qB,qBAAuB,CAG5B,KAAK,GAAI5iB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGkV,aAUzB3c,EAAOgqB,MAAMhkB,UAAUkY,OAAS,WAK5B,IAFA,GAAIzW,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEH9H,KAAK2rB,SAAS7jB,GAAGyW,UAYzBle,EAAOgqB,MAAMhkB,UAAU+jB,WAAa,WAGhCpqB,KAAKwa,KAAKoC,OAAO2B,SAGbve,KAAKwa,KAAKoC,OAAO5V,SAEjBhH,KAAKwa,KAAKoC,OAAO5V,OAAOojB,aAExBpqB,KAAK4rB,kBAEL5rB,KAAKwa,KAAKoC,OAAOoC,eAGrB,KAAK,GAAIlX,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGsiB,YAGrBpqB,MAAK4rB,mBAUTvrB,EAAOgqB,MAAMhkB,UAAUulB,gBAAkB,WAErC5rB,KAAK6rB,WAAa,CAElB,KAAK,GAAI/jB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAG8jB,mBAWzBvrB,EAAOgqB,MAAMhkB,UAAUqlB,gBAAkB,WAEPhiB,SAA1BoiB,SAASC,aAET/rB,KAAK2qB,WAAa,yBAEUjhB,SAAvBoiB,SAASE,UAEdhsB,KAAK2qB,WAAa,sBAESjhB,SAAtBoiB,SAASG,SAEdjsB,KAAK2qB,WAAa,qBAEOjhB,SAApBoiB,SAASI,OAEdlsB,KAAK2qB,WAAa,mBAIlB3qB,KAAK2qB,WAAa,IAGtB,IAAIlE,GAAQzmB,IAEZA,MAAK4qB,UAAY,SAAUuB,GACvB,MAAO1F,GAAM2F,iBAAiBD,IAI9BnsB,KAAK2qB,YAELmB,SAASO,iBAAiBrsB,KAAK2qB,WAAY3qB,KAAK4qB,WAAW,GAG/D7iB,OAAOukB,OAAStsB,KAAK4qB,UACrB7iB,OAAOwkB,QAAUvsB,KAAK4qB,UAEtB7iB,OAAOykB,WAAaxsB,KAAK4qB,UACzB7iB,OAAO0kB,WAAazsB,KAAK4qB,UAErB5qB,KAAKwa,KAAKkS,OAAOC,cAEjBC,SAASC,IAAIC,YAAYT,iBAAiB,WACtChsB,EAAOgqB,MAAMhkB,UAAU+lB,iBAAiBtlB,KAAK2f,GAASve,KAAM,YAGhE0kB,SAASC,IAAIE,YAAYV,iBAAiB,WACtChsB,EAAOgqB,MAAMhkB,UAAU+lB,iBAAiBtlB,KAAK2f,GAASve,KAAM,eAYxE7H,EAAOgqB,MAAMhkB,UAAU+lB,iBAAmB,SAAUD,GAEhD,MAAmB,aAAfA,EAAMjkB,MAAsC,SAAfikB,EAAMjkB,MAAkC,aAAfikB,EAAMjkB,MAAsC,UAAfikB,EAAMjkB,UAEtE,aAAfikB,EAAMjkB,MAAsC,SAAfikB,EAAMjkB,KAEnClI,KAAKwa,KAAKwS,UAAUb,GAEA,aAAfA,EAAMjkB,MAAsC,UAAfikB,EAAMjkB,MAExClI,KAAKwa,KAAKyS,UAAUd,SAMxBnsB,KAAKuqB,0BAKLuB,SAASI,QAAUJ,SAASE,WAAaF,SAASG,UAAYH,SAASC,cAA+B,UAAfI,EAAMjkB,KAE7FlI,KAAKwa,KAAK0S,WAAWf,GAIrBnsB,KAAKwa,KAAK2S,YAAYhB,MAiB9B9rB,EAAOgqB,MAAMhkB,UAAU8kB,mBAAqB,SAAUnN,GAE9Che,KAAKwa,KAAKwQ,cAEd3qB,EAAO+sB,MAAMC,aAAarP,EAAOhe,KAAK6qB,UACtCxqB,EAAO+sB,MAAME,YAAYttB,KAAK6qB,UAG9B7qB,KAAK6qB,SAAS3d,GAAK,IACnBlN,KAAK6qB,SAASC,GAAK,IACnB9qB,KAAK6qB,SAAShc,GAAK,IACnB7O,KAAK6qB,SAASpc,EAAI,IAStBpO,EAAOgqB,MAAMhkB,UAAUyd,QAAU,WAEzB9jB,KAAK2qB,YAELmB,SAASyB,oBAAoBvtB,KAAK2qB,WAAY3qB,KAAK4qB,WAAW,GAGlE7iB,OAAOykB,WAAa,KACpBzkB,OAAO0kB,WAAa,KAEpB1kB,OAAOukB,OAAS,KAChBvkB,OAAOwkB,QAAU,MAQrBhlB,OAAO2E,eAAe7L,EAAOgqB,MAAMhkB,UAAW,mBAE1C2F,IAAK,WAED,MAAOhM,MAAK6qB,SAAS7M,OAIzB/R,IAAK,SAAU+R,GAEXhe,KAAKmrB,mBAAmBnN,MAYhCzW,OAAO2E,eAAe7L,EAAOgqB,MAAMhkB,UAAW,YAE1C2F,IAAK,WAED,MAAOlG,MAAKJ,WAAWC,UAAYG,KAAKJ,WAAWE,QAIvDqG,IAAK,SAAU1C,GAEPA,EAEAzD,KAAKJ,WAAWC,QAAUG,KAAKJ,WAAWE,OAI1CE,KAAKJ,WAAWC,QAAUG,KAAKJ,WAAWG,WAgCtDxF,EAAOmtB,MAAQ,SAAUhT,EAAMgP,EAAQpe,EAAMqiB,EAAYC,EAAYC,GAE9CjkB,SAAf+jB,IAA4BA,GAAa,GAC1B/jB,SAAfgkB,IAA4BA,GAAa,GACrBhkB,SAApBikB,IAAiCA,EAAkBttB,EAAOutB,QAAQC,QAOtE7tB,KAAKwa,KAAOA,EAEG9Q,SAAX8f,IAEAA,EAAShP,EAAKC,OAOlBza,KAAKoL,KAAOA,GAAQ,QAQpBpL,KAAK8tB,EAAI,EAEThoB,KAAKwkB,uBAAuBxjB,KAAK9G,MAE7BytB,GAEAztB,KAAKwa,KAAKsC,MAAMC,SAAS/c,MACzBA,KAAK8tB,EAAI9tB,KAAKwa,KAAKsC,MAAM6O,SAAS9jB,QAI9B2hB,IAEAA,EAAOzM,SAAS/c,MAChBA,KAAK8tB,EAAItE,EAAOmC,SAAS9jB,QASjC7H,KAAKkI,KAAO7H,EAAOmB,MAMnBxB,KAAK+tB,YAAc1tB,EAAOmB,MAO1BxB,KAAKguB,OAAQ,EAObhuB,KAAKwqB,QAAS,EAOdxqB,KAAKiuB,eAAgB,EAYrBjuB,KAAKkuB,gBAAiB,EAWtBluB,KAAKmuB,UAAY9tB,EAAO+tB,OAQxBpuB,KAAKquB,OAAS,KAWdruB,KAAKsuB,qBAAsB,EAY3BtuB,KAAKuuB,iBAAmB,GAAIluB,GAAO+a,OAanCpb,KAAKwuB,eAAiB,GAAInuB,GAAO+a,OAYjCpb,KAAKyuB,iBAAmB,GAAIpuB,GAAO+a,OAYnCpb,KAAK0uB,gBAAkB,GAAIruB,GAAO+a,OAUlCpb,KAAK0tB,WAAaA,EASlB1tB,KAAK2uB,iBAAkB,EAQvB3uB,KAAK2tB,gBAAkBA,EAkBvB3tB,KAAK4uB,qBAAuB,KAM5B5uB,KAAK6uB,UAAY,GAAIxuB,GAAO+a,OAM5Bpb,KAAK8uB,YAAc,EAUnB9uB,KAAK+uB,eAAgB,EAOrB/uB,KAAKgvB,aAAe,GAAI3uB,GAAO2M,MAa/BhN,KAAKivB,QAOLjvB,KAAKkvB,cAAgB,KAIzB7uB,EAAOmtB,MAAMnnB,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACnEhG,EAAOmtB,MAAMnnB,UAAU8B,YAAc9H,EAAOmtB,MAO5CntB,EAAOmtB,MAAM2B,YAAc,EAO3B9uB,EAAOmtB,MAAM4B,aAAe,EAO5B/uB,EAAOmtB,MAAM6B,aAAe,EAO5BhvB,EAAOmtB,MAAM8B,eAAiB,GAO9BjvB,EAAOmtB,MAAM+B,gBAAkB,EAwB/BlvB,EAAOmtB,MAAMnnB,UAAUwL,IAAM,SAAU2d,EAAOC,EAAQC,GAIlD,MAFehmB,UAAX+lB,IAAwBA,GAAS,GAEjCD,EAAMhG,SAAWxpB,KAEVwvB,GAGPA,EAAMG,MAAQH,EAAMhG,QAAUgG,EAAMhG,OAAOyF,MAE3CO,EAAMhG,OAAOoG,eAAeJ,GAGlB9lB,SAAVgmB,GAEAF,EAAM1B,EAAI9tB,KAAK2rB,SAAS9jB,OAExB7H,KAAK+c,SAASyS,KAIdxvB,KAAK6vB,WAAWL,EAAOE,GAEvB1vB,KAAK8vB,WAGL9vB,KAAK0tB,YAAc8B,EAAMxkB,eAAe,SAA0B,OAAfwkB,EAAMG,KAEzD3vB,KAAKwa,KAAK6F,QAAQ0P,OAAOP,EAAOxvB,KAAK2tB,iBAEhC6B,EAAMG,MAEX3vB,KAAKgwB,UAAUR,GAGfxvB,KAAKsuB,sBAAwBkB,EAAMS,eAEnCT,EAAMS,cAAe,IAGpBR,GAAUD,EAAMU,QAEjBV,EAAMU,OAAOC,wBAAwBX,EAAOxvB,MAG5B,OAAhBA,KAAKquB,SAELruB,KAAKquB,OAASmB,GAGXA,IAmBXnvB,EAAOmtB,MAAMnnB,UAAU+pB,MAAQ,SAAUZ,EAAOE,EAAOD,GAEnDzvB,KAAK6R,IAAI2d,EAAOC,EAAQC,IAY5BrvB,EAAOmtB,MAAMnnB,UAAU2pB,UAAY,SAAUR,GAEzC,GAAIA,EAAMhG,SAAWxpB,KACrB,CACI,GAAI0vB,GAAQ1vB,KAAKivB,KAAKoB,QAAQb,EAE9B,IAAc,KAAVE,EAGA,MADA1vB,MAAKivB,KAAKrc,KAAK4c,IACR,EAIf,OAAO,GAYXnvB,EAAOmtB,MAAMnnB,UAAUupB,eAAiB,SAAUJ,GAE9C,GAAIA,EACJ,CACI,GAAIE,GAAQ1vB,KAAKivB,KAAKoB,QAAQb,EAE9B,IAAc,KAAVE,EAGA,MADA1vB,MAAKivB,KAAK9L,OAAOuM,EAAO,IACjB,EAIf,OAAO,GAqBXrvB,EAAOmtB,MAAMnnB,UAAUiqB,YAAc,SAAU3E,EAAU8D,GAErD,GAAI9D,YAAoBtrB,GAAOmtB,MAE3B7B,EAAS4E,QAAQvwB,KAAMyvB,OAEtB,IAAIjpB,MAAMa,QAAQskB,GAEnB,IAAK,GAAI7jB,GAAI,EAAGA,EAAI6jB,EAAS9jB,OAAQC,IAEjC9H,KAAK6R,IAAI8Z,EAAS7jB,GAAI2nB,EAI9B,OAAO9D,IAWXtrB,EAAOmtB,MAAMnnB,UAAUmqB,MAAQ,SAAUd,GAErC,MAAY,GAARA,GAAaA,GAAS1vB,KAAK2rB,SAAS9jB,OAE7B,GAIA7H,KAAKywB,WAAWf,IA4B/BrvB,EAAOmtB,MAAMnnB,UAAUqa,OAAS,SAAUza,EAAGwG,EAAGV,EAAK2kB,EAAOlG,EAAQkF,GAEjDhmB,SAAX8gB,IAAwBA,GAAS,EAErC,IAAIgF,GAAQ,GAAIxvB,MAAKmuB,UAAUnuB,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK2kB,EAMrD,OAJAlB,GAAMhF,OAASA,EACfgF,EAAM3U,QAAU2P,EAChBgF,EAAMxB,MAAQxD,EAEPxqB,KAAK6R,IAAI2d,GAAO,EAAOE,IAmDlCrvB,EAAOmtB,MAAMnnB,UAAUsqB,eAAiB,SAAUC,EAAU7kB,EAAK2kB,EAAOlG,GAEtD9gB,SAAVgnB,IAAuBA,EAAQ,GACpBhnB,SAAX8gB,IAAwBA,GAAS,GAEhChkB,MAAMa,QAAQ0E,KAEfA,GAAQA,IAGPvF,MAAMa,QAAQqpB,KAEfA,GAAUA,GAGd,IAAIjK,GAAQzmB,KACR2rB,IAeJ,OAbA5f,GAAItE,QAAQ,SAASopB,GAEjBH,EAAMjpB,QAAQ,SAASqpB,GAEnB,IAAK,GAAIhpB,GAAI,EAAO8oB,EAAJ9oB,EAAcA,IAE1B6jB,EAAS/Y,KAAK6T,EAAM/F,OAAO,EAAG,EAAGmQ,EAAWC,EAAatG,QAO9DmB,GAYXtrB,EAAOmtB,MAAMnnB,UAAUypB,QAAU,WAI7B,IAFA,GAAIhoB,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEH9H,KAAK2rB,SAAS7jB,GAAGgmB,EAAIhmB,GAwD7BzH,EAAOmtB,MAAMnnB,UAAU0qB,MAAQ,SAAUC,EAAMC,EAASC,EAAWC,EAAY5X,EAAUnL,GAKrF,GAHiB1E,SAAb6P,IAA0BA,EAAWlZ,EAAOsD,UACjC+F,SAAX0E,IAAwBA,EAAS,KAER,IAAzBpO,KAAK2rB,SAAS9jB,QAAgBuG,EAASpO,KAAK2rB,SAAS9jB,QAAoB,KAATmpB,GAA2B,KAAZC,GASnF,IAAK,GAJD/jB,GAAI,GAAI7M,GAAOkN,UAAU,EAAG,EAAG2jB,EAAWC,GAC1C7T,EAAK0T,EAAOE,EACZ3T,EAAK0T,EAAUE,EAEVrpB,EAAIsG,EAAQtG,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAC/C,CACI,GAAI0nB,GAAQxvB,KAAK2rB,SAAS7jB,EAE1B,IAAI0nB,EAAe,QASnB,GAPIA,EAAM4B,QAAQlkB,EAAGqM,GAOR,KAATyX,EAGA9jB,EAAET,GAAK0kB,EAEHjkB,EAAET,IAAM8Q,IAERrQ,EAAEjH,GAAKirB,EACPhkB,EAAET,EAAI,OAGT,IAAgB,KAAZwkB,EAGL/jB,EAAEjH,GAAKirB,EAEHhkB,EAAEjH,IAAMqX,IAERpQ,EAAEjH,EAAI,EACNiH,EAAET,GAAK0kB,OAQX,IAFAjkB,EAAEjH,GAAKirB,EAEHhkB,EAAEjH,IAAMqX,IAERpQ,EAAEjH,EAAI,EACNiH,EAAET,GAAK0kB,EAEHjkB,EAAET,IAAM8Q,GAGR,SAiBpBld,EAAOmtB,MAAMnnB,UAAUgrB,YAAc,SAAU3B,GAS3C,MAPchmB,UAAVgmB,IAAuBA,EAAQ,GAE/BA,EAAQ1vB,KAAK2rB,SAAS9jB,OAAS,IAE/B6nB,EAAQ,GAGR1vB,KAAKquB,QAELruB,KAAK8uB,YAAcY,EACnB1vB,KAAKquB,OAASruB,KAAK2rB,SAAS3rB,KAAK8uB,aAC1B9uB,KAAKquB,QAJhB,QAiBJhuB,EAAOmtB,MAAMnnB,UAAUirB,KAAO,WAE1B,MAAItxB,MAAKquB,QAGDruB,KAAK8uB,aAAe9uB,KAAK2rB,SAAS9jB,OAAS,EAE3C7H,KAAK8uB,YAAc,EAInB9uB,KAAK8uB,cAGT9uB,KAAKquB,OAASruB,KAAK2rB,SAAS3rB,KAAK8uB,aAE1B9uB,KAAKquB,QAdhB,QA2BJhuB,EAAOmtB,MAAMnnB,UAAUkrB,SAAW,WAE9B,MAAIvxB,MAAKquB,QAGoB,IAArBruB,KAAK8uB,YAEL9uB,KAAK8uB,YAAc9uB,KAAK2rB,SAAS9jB,OAAS,EAI1C7H,KAAK8uB,cAGT9uB,KAAKquB,OAASruB,KAAK2rB,SAAS3rB,KAAK8uB,aAE1B9uB,KAAKquB,QAdhB,QA4BJhuB,EAAOmtB,MAAMnnB,UAAUmrB,KAAO,SAAUC,EAAQC,GAE5C1xB,KAAK2xB,aAAaF,EAAQC,GAC1B1xB,KAAK8vB,WAWTzvB,EAAOmtB,MAAMnnB,UAAUurB,WAAa,SAAUpC,GAQ1C,MANIA,GAAMhG,SAAWxpB,MAAQA,KAAK6xB,SAASrC,GAASxvB,KAAK2rB,SAAS9jB,SAE9D7H,KAAK8iB,OAAO0M,GAAO,GAAO,GAC1BxvB,KAAK6R,IAAI2d,GAAO,IAGbA,GAWXnvB,EAAOmtB,MAAMnnB,UAAUyrB,WAAa,SAAUtC,GAQ1C,MANIA,GAAMhG,SAAWxpB,MAAQA,KAAK6xB,SAASrC,GAAS,IAEhDxvB,KAAK8iB,OAAO0M,GAAO,GAAO,GAC1BxvB,KAAKowB,MAAMZ,EAAO,GAAG,IAGlBA,GAWXnvB,EAAOmtB,MAAMnnB,UAAU0rB,OAAS,SAAUvC,GAEtC,GAAIA,EAAMhG,SAAWxpB,MAAQA,KAAK6xB,SAASrC,GAASxvB,KAAK2rB,SAAS9jB,OAAS,EAC3E,CACI,GAAI4G,GAAIzO,KAAK6xB,SAASrC,GAClB3gB,EAAI7O,KAAKwwB,MAAM/hB,EAAI,EAEnBI,IAEA7O,KAAKwxB,KAAKhC,EAAO3gB,GAIzB,MAAO2gB,IAWXnvB,EAAOmtB,MAAMnnB,UAAU2rB,SAAW,SAAUxC,GAExC,GAAIA,EAAMhG,SAAWxpB,MAAQA,KAAK6xB,SAASrC,GAAS,EACpD,CACI,GAAI/gB,GAAIzO,KAAK6xB,SAASrC,GAClB3gB,EAAI7O,KAAKwwB,MAAM/hB,EAAI,EAEnBI,IAEA7O,KAAKwxB,KAAKhC,EAAO3gB,GAIzB,MAAO2gB,IAYXnvB,EAAOmtB,MAAMnnB,UAAU4rB,GAAK,SAAUvC,EAAOzpB,EAAGwG,GAE5C,MAAY,GAARijB,GAAaA,EAAQ1vB,KAAK2rB,SAAS9jB,OAE5B,IAIP7H,KAAKywB,WAAWf,GAAOzpB,EAAIA,OAC3BjG,KAAKywB,WAAWf,GAAOjjB,EAAIA,KAYnCpM,EAAOmtB,MAAMnnB,UAAUuC,QAAU,WAE7B5I,KAAK2rB,SAAS/iB,UACd5I,KAAK8vB,WAWTzvB,EAAOmtB,MAAMnnB,UAAUwrB,SAAW,SAAUrC,GAExC,MAAOxvB,MAAK2rB,SAAS0E,QAAQb,IAajCnvB,EAAOmtB,MAAMnnB,UAAU6rB,UAAY,SAAU9mB,GAEzC,IAAK,GAAItD,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC,GAAI9H,KAAK2rB,SAAS7jB,GAAGsD,OAASA,EAE1B,MAAOpL,MAAK2rB,SAAS7jB,EAI7B,OAAO,OAgBXzH,EAAOmtB,MAAMnnB,UAAUuF,QAAU,SAAUumB,EAAUC,GAEjD,GAAI1C,GAAQ1vB,KAAK6xB,SAASM,EAE1B,OAAc,KAAVzC,GAEI0C,EAAS5I,SAEL4I,EAAS5I,iBAAkBnpB,GAAOmtB,MAElC4E,EAAS5I,OAAO1G,OAAOsP,GAIvBA,EAAS5I,OAAO6I,YAAYD,IAIpCpyB,KAAK8iB,OAAOqP,GAEZnyB,KAAKowB,MAAMgC,EAAU1C;AAEdyC,GAlBX,QAiCJ9xB,EAAOmtB,MAAMnnB,UAAUisB,YAAc,SAAU9C,EAAOzjB,GAElD,GAAInE,GAAMmE,EAAIlE,MAEd,OAAY,KAARD,GAAamE,EAAI,IAAMyjB,IAEhB,EAEM,IAAR5nB,GAAamE,EAAI,IAAMyjB,IAASzjB,EAAI,IAAMyjB,GAAMzjB,EAAI,KAElD,EAEM,IAARnE,GAAamE,EAAI,IAAMyjB,IAASzjB,EAAI,IAAMyjB,GAAMzjB,EAAI,KAAOA,EAAI,IAAMyjB,GAAMzjB,EAAI,IAAIA,EAAI,KAErF,EAEM,IAARnE,GAAamE,EAAI,IAAMyjB,IAASzjB,EAAI,IAAMyjB,GAAMzjB,EAAI,KAAOA,EAAI,IAAMyjB,GAAMzjB,EAAI,IAAIA,EAAI,KAAOA,EAAI,IAAMyjB,GAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KA2B/I1L,EAAOmtB,MAAMnnB,UAAUiD,YAAc,SAAUkmB,EAAOzjB,EAAKxC,EAAOgpB,EAAW1U,GAgBzE,GAdcnU,SAAVmU,IAAuBA,GAAQ,GAEnC0U,EAAYA,GAAa,GAYpBvyB,KAAKsyB,YAAY9C,EAAOzjB,MAAU8R,GAAS0U,EAAY,GAExD,OAAO,CAGX,IAAI3qB,GAAMmE,EAAIlE,MAmCd,OAjCY,KAARD,EAEkB,IAAd2qB,EAAmB/C,EAAMzjB,EAAI,IAAMxC,EACjB,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,KAAOxC,EACtB,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,KAAOxC,EACtB,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,KAAOxC,EACtB,GAAbgpB,IAAkB/C,EAAMzjB,EAAI,KAAOxC,GAE/B,IAAR3B,EAEa,IAAd2qB,EAAmB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAMxC,EACzB,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,KAAOxC,EAC9B,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,KAAOxC,EAC9B,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,KAAOxC,EAC9B,GAAbgpB,IAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,KAAOxC,GAEvC,IAAR3B,EAEa,IAAd2qB,EAAmB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAMxC,EACjC,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EACtC,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EACtC,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EACtC,GAAbgpB,IAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,GAE/C,IAAR3B,IAEa,IAAd2qB,EAAmB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAMxC,EACzC,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EAC9C,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EAC9C,GAAbgpB,EAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,EAC9C,GAAbgpB,IAAkB/C,EAAMzjB,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOxC,KAGjE,GAcXlJ,EAAOmtB,MAAMnnB,UAAUmsB,cAAgB,SAAUhD,EAAOzjB,EAAKxC,EAAOsU,GAKhE,MAHcnU,UAAVmU,IAAuBA,GAAQ,IAG9Bxd,EAAOmI,MAAMM,YAAY0mB,EAAOzjB,IAAQ8R,GAElC,EAGPxd,EAAOmI,MAAMM,YAAY0mB,EAAOzjB,KAASxC,GAwBjDlJ,EAAOmtB,MAAMnnB,UAAU4F,IAAM,SAAUujB,EAAOzjB,EAAKxC,EAAOkpB,EAAYC,EAAcH,EAAW1U,GAS3F,MAPcnU,UAAVmU,IAAuBA,GAAQ,GAEnC9R,EAAMA,EAAIpD,MAAM,KAEGe,SAAf+oB,IAA4BA,GAAa,GACxB/oB,SAAjBgpB,IAA8BA,GAAe,IAE5CD,KAAe,GAAUA,GAAcjD,EAAMxB,SAAY0E,KAAiB,GAAUA,GAAgBlD,EAAM3U,SAEpG7a,KAAKsJ,YAAYkmB,EAAOzjB,EAAKxC,EAAOgpB,EAAW1U,GAF1D,QAuBJxd,EAAOmtB,MAAMnnB,UAAUssB,OAAS,SAAU5mB,EAAKxC,EAAOkpB,EAAYC,EAAcH,EAAW1U,GAEpEnU,SAAf+oB,IAA4BA,GAAa,GACxB/oB,SAAjBgpB,IAA8BA,GAAe,GACnChpB,SAAVmU,IAAuBA,GAAQ,GAEnC9R,EAAMA,EAAIpD,MAAM,KAChB4pB,EAAYA,GAAa,CAEzB,KAAK,GAAIzqB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEhC2qB,GAAeA,GAAczyB,KAAK2rB,SAAS7jB,GAAGkmB,UAAa0E,GAAiBA,GAAgB1yB,KAAK2rB,SAAS7jB,GAAG+S,UAE/G7a,KAAKsJ,YAAYtJ,KAAK2rB,SAAS7jB,GAAIiE,EAAKxC,EAAOgpB,EAAW1U,IAsBtExd,EAAOmtB,MAAMnnB,UAAUusB,eAAiB,SAAU7mB,EAAKxC,EAAOkpB,EAAYC,EAAcH,EAAW1U,GAE5EnU,SAAf+oB,IAA4BA,GAAa,GACxB/oB,SAAjBgpB,IAA8BA,GAAe,GACnChpB,SAAVmU,IAAuBA,GAAQ,GAEnC0U,EAAYA,GAAa,CAEzB,KAAK,GAAIzqB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEhC2qB,GAAeA,GAAczyB,KAAK2rB,SAAS7jB,GAAGkmB,UAAa0E,GAAiBA,GAAgB1yB,KAAK2rB,SAAS7jB,GAAG+S,WAE3G7a,KAAK2rB,SAAS7jB,YAAczH,GAAOmtB,MAEnCxtB,KAAK2rB,SAAS7jB,GAAG8qB,eAAe7mB,EAAKxC,EAAOkpB,EAAYC,EAAcH,EAAW1U,GAIjF7d,KAAKsJ,YAAYtJ,KAAK2rB,SAAS7jB,GAAIiE,EAAIpD,MAAM,KAAMY,EAAOgpB,EAAW1U,KAmBrFxd,EAAOmtB,MAAMnnB,UAAUwsB,SAAW,SAAU9mB,EAAKxC,EAAOkpB,EAAYC,EAAc7U,GAE3DnU,SAAf+oB,IAA4BA,GAAa,GACxB/oB,SAAjBgpB,IAA8BA,GAAe,GACnChpB,SAAVmU,IAAuBA,GAAQ,EAEnC,KAAK,GAAI/V,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC,KAAM2qB,GAAeA,GAAczyB,KAAK2rB,SAAS7jB,GAAGkmB,UAAa0E,GAAiBA,GAAgB1yB,KAAK2rB,SAAS7jB,GAAG+S,WAE1G7a,KAAKwyB,cAAcxyB,KAAK2rB,SAAS7jB,GAAIiE,EAAKxC,EAAOsU,GAElD,OAAO,CAKnB,QAAO,GAeXxd,EAAOmtB,MAAMnnB,UAAUysB,OAAS,SAAUC,EAAUC,EAAQP,EAAYC,GAEpE1yB,KAAK2yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAe5DryB,EAAOmtB,MAAMnnB,UAAU4sB,OAAS,SAAUF,EAAUC,EAAQP,EAAYC,GAEpE1yB,KAAK2yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAe5DryB,EAAOmtB,MAAMnnB,UAAU6sB,YAAc,SAAUH,EAAUC,EAAQP,EAAYC,GAEzE1yB,KAAK2yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAe5DryB,EAAOmtB,MAAMnnB,UAAU8sB,UAAY,SAAUJ,EAAUC,EAAQP,EAAYC,GAEvE1yB,KAAK2yB,OAAOI,EAAUC,EAAQP,EAAYC,EAAc,IAc5DryB,EAAOmtB,MAAMnnB,UAAU+sB,cAAgB,SAAUC,EAAUC,GAEvD,GAAI3sB,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,IAEA,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B,IAAK,GAAIA,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAElC9H,KAAK2rB,SAAS7jB,GAAG0iB,SAAW8I,GAAetzB,KAAK2rB,SAAS7jB,GAAGurB,IAE5DrzB,KAAK2rB,SAAS7jB,GAAGurB,GAAUpsB,MAAMjH,KAAK2rB,SAAS7jB,GAAInB,IAe/DtG,EAAOmtB,MAAMnnB,UAAUktB,kBAAoB,SAAU/D,EAAO6D,EAAUxrB,GAIlE,GAAc,GAAVA,GAEA,GAAI2nB,EAAM6D,EAAS,IAEf,MAAO7D,GAAM6D,EAAS,QAGzB,IAAc,GAAVxrB,GAEL,GAAI2nB,EAAM6D,EAAS,IAAIA,EAAS,IAE5B,MAAO7D,GAAM6D,EAAS,IAAIA,EAAS,QAGtC,IAAc,GAAVxrB,GAEL,GAAI2nB,EAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAEzC,MAAO7D,GAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,QAGnD,IAAc,GAAVxrB,GAEL,GAAI2nB,EAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAEtD,MAAO7D,GAAM6D,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAAIA,EAAS,QAKjE,IAAI7D,EAAM6D,GAEN,MAAO7D,GAAM6D,EAIrB,QAAO,GAeXhzB,EAAOmtB,MAAMnnB,UAAUmtB,QAAU,SAAUC,EAAQpP,GAE/C,GAAe3a,SAAX+pB,EAAJ,CAMAA,EAASA,EAAO9qB,MAAM,IAEtB,IAAI+qB,GAAeD,EAAO5rB,MAE1B,IAAgB6B,SAAZ2a,GAAqC,OAAZA,GAAgC,KAAZA,EAE7CA,EAAU,SAKV,IAAuB,gBAAZA,GACX,CACIA,EAAUA,EAAQ1b,MAAM,IACxB,IAAIgrB,GAAgBtP,EAAQxc,OAIpC,GAAIlB,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,IAEA,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAO5B,IAAK,GAHDurB,GAAW,KACXtQ,EAAkB,KAEbjb,EAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtCurB,EAAWrzB,KAAKuzB,kBAAkBvzB,KAAK2rB,SAAS7jB,GAAI2rB,EAAQC,GAExDrP,GAAWgP,GAEXtQ,EAAkB/iB,KAAKuzB,kBAAkBvzB,KAAK2rB,SAAS7jB,GAAIuc,EAASsP,GAEhEN,GAEAA,EAASpsB,MAAM8b,EAAiBpc,IAG/B0sB,GAELA,EAASpsB,MAAMjH,KAAK2rB,SAAS7jB,GAAInB,KAW7CtG,EAAOmtB,MAAMnnB,UAAU2W,UAAY,WAE/B,GAAIhd,KAAKkuB,eAGL,MADAluB,MAAK8jB,WACE,CAGX,KAAK9jB,KAAKwqB,SAAWxqB,KAAKwpB,OAAOgB,OAG7B,MADAxqB,MAAK4zB,cAAgB,IACd,CAGX,KAAK,GAAI9rB,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGkV,WAGrB,QAAO,GASX3c,EAAOmtB,MAAMnnB,UAAUkY,OAAS,WAK5B,IAFA,GAAIzW,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEH9H,KAAK2rB,SAAS7jB,GAAGyW,UAUzBle,EAAOmtB,MAAMnnB,UAAU+jB,WAAa,WAG5BpqB,KAAK+uB,gBAEL/uB,KAAKiG,EAAIjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,EACrDjG,KAAKyM,EAAIzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,EAGzD,KAAK,GAAI3E,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGsiB,cAsBzB/pB,EAAOmtB,MAAMnnB,UAAUwtB,OAAS,SAAUC,EAAWC,GAMjD,IAJA,GAAIrE,GAAQ,GACR7nB,EAAS7H,KAAK2rB,SAAS9jB,OACvB2K,OAEKkd,EAAQ7nB,GACjB,CACI,GAAI2nB,GAAQxvB,KAAK2rB,SAAS+D,KAErBqE,GAAgBA,GAAevE,EAAMhF,SAElCsJ,EAAUtE,EAAOE,EAAO1vB,KAAK2rB,WAE7BnZ,EAAQI,KAAK4c,GAKzB,MAAO,IAAInvB,GAAO2zB,SAASxhB,IAqB/BnS,EAAOmtB,MAAMnnB,UAAUoB,QAAU,SAAU4rB,EAAUtQ,EAAiBgR,GAIlE,GAFoBrqB,SAAhBqqB,IAA6BA,GAAc,GAE3ChtB,UAAUc,QAAU,EAEpB,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEjCisB,GAAgBA,GAAe/zB,KAAK2rB,SAAS7jB,GAAG0iB,SAEjD6I,EAASvsB,KAAKic,EAAiB/iB,KAAK2rB,SAAS7jB,QAKzD,CAKI,IAAK,GAFDnB,IAAQ,MAEHmB,EAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,GAGxB,KAAK,GAAIA,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,MAEjCisB,GAAgBA,GAAe/zB,KAAK2rB,SAAS7jB,GAAG0iB,UAEjD7jB,EAAK,GAAK3G,KAAK2rB,SAAS7jB,GACxBurB,EAASpsB,MAAM8b,EAAiBpc,MAiBhDtG,EAAOmtB,MAAMnnB,UAAU4tB,cAAgB,SAAUZ,EAAUtQ,GAEvD,GAAIpc,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,GAAQ,KAER,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B9H,KAAKk0B,QAAQ,UAAU,EAAM7zB,EAAOmtB,MAAM4B,aAAciE,EAAUtQ,EAAiBpc,IAcvFtG,EAAOmtB,MAAMnnB,UAAU8tB,aAAe,SAAUd,EAAUtQ,GAEtD,GAAIpc,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,GAAQ,KAER,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B9H,KAAKk0B,QAAQ,SAAS,EAAM7zB,EAAOmtB,MAAM4B,aAAciE,EAAUtQ,EAAiBpc,IActFtG,EAAOmtB,MAAMnnB,UAAU+tB,YAAc,SAAUf,EAAUtQ,GAErD,GAAIpc,EAEJ,IAAII,UAAUc,OAAS,EACvB,CACIlB,GAAQ,KAER,KAAK,GAAImB,GAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAElCnB,EAAKiM,KAAK7L,UAAUe,IAI5B9H,KAAKk0B,QAAQ,SAAS,EAAO7zB,EAAOmtB,MAAM4B,aAAciE,EAAUtQ,EAAiBpc,IAkBvFtG,EAAOmtB,MAAMnnB,UAAUguB,KAAO,SAAUtoB,EAAKuoB,GAErCt0B,KAAK2rB,SAAS9jB,OAAS,IAMf6B,SAARqC,IAAqBA,EAAM,KACjBrC,SAAV4qB,IAAuBA,EAAQj0B,EAAOmtB,MAAM8B,gBAEhDtvB,KAAKkvB,cAAgBnjB,EAEjBuoB,IAAUj0B,EAAOmtB,MAAM8B,eAEvBtvB,KAAK2rB,SAAS0I,KAAKr0B,KAAKu0B,qBAAqBjuB,KAAKtG,OAIlDA,KAAK2rB,SAAS0I,KAAKr0B,KAAKw0B,sBAAsBluB,KAAKtG,OAGvDA,KAAK8vB,YAcTzvB,EAAOmtB,MAAMnnB,UAAUouB,WAAa,SAAUC,EAAarQ,GAEnDrkB,KAAK2rB,SAAS9jB,OAAS,IAM3B7H,KAAK2rB,SAAS0I,KAAKK,EAAYpuB,KAAK+d,IAEpCrkB,KAAK8vB,YAYTzvB,EAAOmtB,MAAMnnB,UAAUkuB,qBAAuB,SAAU9lB,EAAGI,GAEvD,MAAIJ,GAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,eAExB,GAEFzgB,EAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,eAE7B,EAIHzgB,EAAEqf,EAAIjf,EAAEif,EAED,GAIA,GAcnBztB,EAAOmtB,MAAMnnB,UAAUmuB,sBAAwB,SAAU/lB,EAAGI,GAExD,MAAIJ,GAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,eAExB,EAEFzgB,EAAEzO,KAAKkvB,eAAiBrgB,EAAE7O,KAAKkvB,eAE7B,GAIA,GAiCf7uB,EAAOmtB,MAAMnnB,UAAU6tB,QAAU,SAAUnoB,EAAKxC,EAAOorB,EAAYtB,EAAUtQ,EAAiBpc,GAE1F,GAAIguB,IAAet0B,EAAOmtB,MAAM4B,cAAyC,IAAzBpvB,KAAK2rB,SAAS9jB,OAE1D,MAAO,EAKX,KAAK,GAFD+sB,GAAQ,EAEH9sB,EAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC,GAAI9H,KAAK2rB,SAAS7jB,GAAGiE,KAASxC,IAE1BqrB,IAEIvB,IAEI1sB,GAEAA,EAAK,GAAK3G,KAAK2rB,SAAS7jB,GACxBurB,EAASpsB,MAAM8b,EAAiBpc,IAIhC0sB,EAASvsB,KAAKic,EAAiB/iB,KAAK2rB,SAAS7jB,KAIjD6sB,IAAet0B,EAAOmtB,MAAM6B,cAE5B,MAAOrvB,MAAK2rB,SAAS7jB,EAKjC,OAAI6sB,KAAet0B,EAAOmtB,MAAM4B,aAErBwF,EAIJ,MAuBXv0B,EAAOmtB,MAAMnnB,UAAUwuB,eAAiB,SAAUrK,EAAQsK,EAAc7uB,EAAGwG,EAAGV,EAAK2kB,GAE1DhnB,SAAjBorB,IAA8BA,GAAe,GAE3B,iBAAXtK,KAEPA,GAAS,EAGb,IAAIgF,GAAQxvB,KAAKk0B,QAAQ,SAAU1J,EAAQnqB,EAAOmtB,MAAM6B,aAExD,OAAkB,QAAVG,GAAkBsF,EAAgB90B,KAAK0gB,OAAOza,EAAGwG,EAAGV,EAAK2kB,GAAS1wB,KAAK+0B,WAAWvF,EAAOvpB,EAAGwG,EAAGV,EAAK2kB,IAwBhHrwB,EAAOmtB,MAAMnnB,UAAU2uB,cAAgB,SAAUF,EAAc7uB,EAAGwG,EAAGV,EAAK2kB,GAEjDhnB,SAAjBorB,IAA8BA,GAAe,EAEjD,IAAItF,GAAQxvB,KAAKk0B,QAAQ,SAAS,EAAM7zB,EAAOmtB,MAAM6B,aAErD,OAAkB,QAAVG,GAAkBsF,EAAgB90B,KAAK0gB,OAAOza,EAAGwG,EAAGV,EAAK2kB,GAAS1wB,KAAK+0B,WAAWvF,EAAOvpB,EAAGwG,EAAGV,EAAK2kB,IAwBhHrwB,EAAOmtB,MAAMnnB,UAAU4uB,aAAe,SAAUH,EAAc7uB,EAAGwG,EAAGV,EAAK2kB,GAEhDhnB,SAAjBorB,IAA8BA,GAAe,EAEjD,IAAItF,GAAQxvB,KAAKk0B,QAAQ,SAAS,EAAO7zB,EAAOmtB,MAAM6B,aAEtD,OAAkB,QAAVG,GAAkBsF,EAAgB90B,KAAK0gB,OAAOza,EAAGwG,EAAGV,EAAK2kB,GAAS1wB,KAAK+0B,WAAWvF,EAAOvpB,EAAGwG,EAAGV,EAAK2kB,IAmBhHrwB,EAAOmtB,MAAMnnB,UAAU0uB,WAAa,SAAUvF,EAAOvpB,EAAGwG,EAAGV,EAAK2kB,GAE5D,MAAc,QAAVlB,EAEO,MAGD9lB,SAANzD,IAAmBA,EAAI,MACjByD,SAAN+C,IAAmBA,EAAI,MAEjB,OAANxG,GAAoB,OAANwG,GAEd+iB,EAAM9P,MAAMzZ,EAAGwG,GAGP/C,SAARqC,GAEAyjB,EAAM0F,YAAYnpB,EAAK2kB,GAGpBlB,IAYXnvB,EAAOmtB,MAAMnnB,UAAU8uB,OAAS,WAE5B,MAAIn1B,MAAK2rB,SAAS9jB,OAAS,EAEhB7H,KAAK2rB,SAAS3rB,KAAK2rB,SAAS9jB,OAAS,GAFhD,QAeJxH,EAAOmtB,MAAMnnB,UAAU+uB,UAAY,WAE/B,MAAIp1B,MAAK2rB,SAAS9jB,OAAS,EAEhB7H,KAAK2rB,SAAS,GAFzB,QAyBJtrB,EAAOmtB,MAAMnnB,UAAUgvB,aAAe,SAAUC,EAAQjC,EAAUtQ,GAM9D,IAAK,GAJDlV,GAAWsK,OAAOC,UAClBmd,EAAe,EACfjkB,EAAS,KAEJxJ,EAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAC1C,CACI,GAAI0nB,GAAQxvB,KAAK2rB,SAAS7jB,EAEtB0nB,GAAMhF,SAEN+K,EAAexvB,KAAKoJ,IAAI9O,EAAO2M,MAAMa,SAASynB,EAAQ9F,IAEnC3hB,EAAf0nB,KAA6BlC,GAAYA,EAASvsB,KAAKic,EAAiByM,EAAO+F,MAE/E1nB,EAAW0nB,EACXjkB,EAASke,IAKrB,MAAOle,IAsBXjR,EAAOmtB,MAAMnnB,UAAUmvB,gBAAkB,SAAUF,EAAQjC,EAAUtQ,GAMjE,IAAK,GAJDlV,GAAW,EACX0nB,EAAe,EACfjkB,EAAS,KAEJxJ,EAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAC1C,CACI,GAAI0nB,GAAQxvB,KAAK2rB,SAAS7jB,EAEtB0nB,GAAMhF,SAEN+K,EAAexvB,KAAKoJ,IAAI9O,EAAO2M,MAAMa,SAASynB,EAAQ9F,IAElD+F,EAAe1nB,KAAcwlB,GAAYA,EAASvsB,KAAKic,EAAiByM,EAAO+F,MAE/E1nB,EAAW0nB,EACXjkB,EAASke,IAKrB,MAAOle,IAUXjR,EAAOmtB,MAAMnnB,UAAUovB,YAAc,WAEjC,MAAOz1B,MAAKk0B,QAAQ,SAAS,EAAM7zB,EAAOmtB,MAAM4B,eAUpD/uB,EAAOmtB,MAAMnnB,UAAUqvB,UAAY,WAE/B,MAAO11B,MAAKk0B,QAAQ,SAAS,EAAO7zB,EAAOmtB,MAAM4B,eAYrD/uB,EAAOmtB,MAAMnnB,UAAUsvB,UAAY,SAAUC,EAAY/tB,GAErD,MAA6B,KAAzB7H,KAAK2rB,SAAS9jB,OAEP,MAGX+tB,EAAaA,GAAc,EAC3B/tB,EAASA,GAAU7H,KAAK2rB,SAAS9jB,OAE1BxH,EAAOw1B,WAAWC,cAAc91B,KAAK2rB,SAAUiK,EAAY/tB,KAiBtExH,EAAOmtB,MAAMnnB,UAAUyc,OAAS,SAAU0M,EAAO1L,EAAS2L,GAKtD,GAHgB/lB,SAAZoa,IAAyBA,GAAU,GACxBpa,SAAX+lB,IAAwBA,GAAS,GAER,IAAzBzvB,KAAK2rB,SAAS9jB,QAAiD,KAAjC7H,KAAK2rB,SAAS0E,QAAQb,GAEpD,OAAO,CAGNC,KAAUD,EAAMU,QAAWV,EAAMuG,cAElCvG,EAAMU,OAAO8F,4BAA4BxG,EAAOxvB,KAGpD,IAAIi2B,GAAUj2B,KAAKqyB,YAAY7C,EAgB/B,OAdAxvB,MAAK4vB,eAAeJ,GAEpBxvB,KAAK8vB,UAED9vB,KAAKquB,SAAWmB,GAEhBxvB,KAAKsxB,OAGLxN,GAAWmS,GAEXA,EAAQnS,SAAQ,IAGb,GAYXzjB,EAAOmtB,MAAMnnB,UAAUkqB,QAAU,SAAU2F,EAAOzG,GAI9C,GAFe/lB,SAAX+lB,IAAwBA,GAAS,GAEjCzvB,KAAK2rB,SAAS9jB,OAAS,GAAKquB,YAAiB71B,GAAOmtB,MACxD,CACI,EAEI0I,GAAMrkB,IAAI7R,KAAK2rB,SAAS,GAAI8D,SAEzBzvB,KAAK2rB,SAAS9jB,OAAS,EAE9B7H,MAAKivB,QAELjvB,KAAKquB,OAAS,KAGlB,MAAO6H,IAiBX71B,EAAOmtB,MAAMnnB,UAAUud,UAAY,SAAUE,EAAS2L,EAAQ0G,GAM1D,GAJgBzsB,SAAZoa,IAAyBA,GAAU,GACxBpa,SAAX+lB,IAAwBA,GAAS,GACd/lB,SAAnBysB,IAAgCA,GAAiB,GAExB,IAAzBn2B,KAAK2rB,SAAS9jB,OAAlB,CAKA,EACA,EACS4nB,GAAUzvB,KAAK2rB,SAAS,GAAGuE,QAE5BlwB,KAAK2rB,SAAS,GAAGuE,OAAO8F,4BAA4Bh2B,KAAK2rB,SAAS,GAAI3rB,KAG1E,IAAIi2B,GAAUj2B,KAAKqyB,YAAYryB,KAAK2rB,SAAS,GAE7C3rB,MAAK4vB,eAAeqG,GAEhBnS,GAAWmS,GAEXA,EAAQnS,SAAQ,EAAMqS,SAGvBn2B,KAAK2rB,SAAS9jB,OAAS,EAE9B7H,MAAKivB,QAELjvB,KAAKquB,OAAS,OAalBhuB,EAAOmtB,MAAMnnB,UAAU+vB,cAAgB,SAAUR,EAAYS,EAAUvS,EAAS2L,GAM5E,GAJiB/lB,SAAb2sB,IAA0BA,EAAWr2B,KAAK2rB,SAAS9jB,OAAS,GAChD6B,SAAZoa,IAAyBA,GAAU,GACxBpa,SAAX+lB,IAAwBA,GAAS,GAER,IAAzBzvB,KAAK2rB,SAAS9jB,OAAlB,CAKA,GAAI+tB,EAAaS,GAAyB,EAAbT,GAAkBS,EAAWr2B,KAAK2rB,SAAS9jB,OAEpE,OAAO,CAKX,KAFA,GAAIC,GAAIuuB,EAEDvuB,GAAK8tB,GACZ,EACSnG,GAAUzvB,KAAK2rB,SAAS7jB,GAAGooB,QAE5BlwB,KAAK2rB,SAAS7jB,GAAGooB,OAAO8F,4BAA4Bh2B,KAAK2rB,SAAS7jB,GAAI9H,KAG1E,IAAIi2B,GAAUj2B,KAAKqyB,YAAYryB,KAAK2rB,SAAS7jB,GAE7C9H,MAAK4vB,eAAeqG,GAEhBnS,GAAWmS,GAEXA,EAAQnS,SAAQ,GAGhB9jB,KAAKquB,SAAWruB,KAAK2rB,SAAS7jB,KAE9B9H,KAAKquB,OAAS,MAGlBvmB,IAGJ9H,KAAK8vB,YAaTzvB,EAAOmtB,MAAMnnB,UAAUyd,QAAU,SAAUwS,EAAiBC,GAEtC,OAAdv2B,KAAKwa,MAAiBxa,KAAKiuB,gBAEPvkB,SAApB4sB,IAAiCA,GAAkB,GAC1C5sB,SAAT6sB,IAAsBA,GAAO,GAEjCv2B,KAAK6uB,UAAUhQ,SAAS7e,KAAMs2B,EAAiBC,GAE/Cv2B,KAAK4jB,UAAU0S,GAEft2B,KAAKquB,OAAS,KACdruB,KAAKspB,QAAU,KACftpB,KAAKkuB,gBAAiB,EAEjBqI,IAEGv2B,KAAKwpB,QAELxpB,KAAKwpB,OAAO6I,YAAYryB,MAG5BA,KAAKwa,KAAO,KACZxa,KAAKwqB,QAAS,KAYtBjjB,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,SAE1C2F,IAAK,WAED,MAAOhM,MAAKk0B,QAAQ,UAAU,EAAM7zB,EAAOmtB,MAAM4B,iBAazD7nB,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,UAE1C2F,IAAK,WAED,MAAOhM,MAAK2rB,SAAS9jB,UAiB7BN,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,SAE1C2F,IAAK,WACD,MAAO3L,GAAO0F,KAAK2P,SAAS1V,KAAKw2B,WAGrCvqB,IAAK,SAAS1C,GACVvJ,KAAKw2B,SAAWn2B,EAAO0F,KAAKgJ,SAASxF,MAmB7ChC,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,WAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYmL,SAI5BxM,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKiG,EAAIiH,EAAEjH,CAExBjG,MAAKiG,EAAKsD,EAAQ6E,EAAUlB,EAAEkC,aAoBtC7H,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,WAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYoL,SAI5BzM,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKyM,EAAIS,EAAET,CAExBzM,MAAKyM,EAAKlD,EAAQ6E,EAAUlB,EAAEqC,cAoBtChI,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,QAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYzC,MAI5BoB,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKiG,EAAIiH,EAAEjH,CAExBjG,MAAKiG,EAAIsD,EAAQ6E,KAoBzB7G,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,SAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAY1C,OAI5BqB,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKiG,EAAIiH,EAAEjH,CAExBjG,MAAKiG,EAAKsD,EAAQ6E,EAAUlB,EAAE6C,SAoBtCxI,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,OAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYoB,KAI5BzC,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKyM,EAAIS,EAAET,CAExBzM,MAAKyM,EAAKlD,EAAQ6E,KAoB1B7G,OAAO2E,eAAe7L,EAAOmtB,MAAMnnB,UAAW,UAE1C2F,IAAK,WAED,MAAOhM,MAAKsN,YAAYqB,QAI5B1C,IAAK,SAAU1C,GAEX,GAAI2D,GAAIlN,KAAKsN,YACTc,EAASpO,KAAKyM,EAAIS,EAAET,CAExBzM,MAAKyM,EAAKlD,EAAQ6E,EAAUlB,EAAE8C,UAiKtC3P,EAAOo2B,MAAQ,SAAUjc,GAErBna,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,EAAM,KAAM,WAAW,GAS/Cxa,KAAK2a,OAAS,GAAIta,GAAOkN,UAAU,EAAG,EAAGiN,EAAKzK,MAAOyK,EAAKxK,QAK1DhQ,KAAK4c,OAAS,KAMd5c,KAAK02B,cAAe,EAKpB12B,KAAK22B,OAASnc,EAAKzK,MAKnB/P,KAAK42B,QAAUpc,EAAKxK,OAEpBhQ,KAAKwa,KAAK0F,MAAMuB,cAAc5P,IAAI7R,KAAK62B,YAAa72B,OAIxDK,EAAOo2B,MAAMpwB,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACpDhG,EAAOo2B,MAAMpwB,UAAU8B,YAAc9H,EAAOo2B,MAQ5Cp2B,EAAOo2B,MAAMpwB,UAAUsW,KAAO,WAE1B3c,KAAK4c,OAAS,GAAIvc,GAAOka,OAAOva,KAAKwa,KAAM,EAAG,EAAG,EAAGxa,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAE/EhQ,KAAKwa,KAAKsC,MAAMC,SAAS/c,MAEzBA,KAAK4c,OAAOD,QAahBtc,EAAOo2B,MAAMpwB,UAAUwwB,YAAc,WAEjC72B,KAAKiG,EAAI,EACTjG,KAAKyM,EAAI,EAETzM,KAAK4c,OAAO8C,SAchBrf,EAAOo2B,MAAMpwB,UAAUywB,UAAY,SAAU7wB,EAAGwG,EAAGsD,EAAOC,GAEtDhQ,KAAK02B,cAAe,EACpB12B,KAAK22B,OAAS5mB,EACd/P,KAAK42B,QAAU5mB,EAEfhQ,KAAK2a,OAAOnN,MAAMvH,EAAGwG,EAAGsD,EAAOC,GAE/BhQ,KAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EAELzM,KAAK4c,OAAOjC,QAGZ3a,KAAK4c,OAAOjC,OAAOnN,MAAMvH,EAAGwG,EAAG1G,KAAKoM,IAAIpC,EAAO/P,KAAKwa,KAAKzK,OAAQhK,KAAKoM,IAAInC,EAAQhQ,KAAKwa,KAAKxK,SAGhGhQ,KAAKwa,KAAK6F,QAAQjB,oBAWtB/e,EAAOo2B,MAAMpwB,UAAUyS,OAAS,SAAU/I,EAAOC,GAIzChQ,KAAK02B,eAED3mB,EAAQ/P,KAAK22B,SAEb5mB,EAAQ/P,KAAK22B,QAGb3mB,EAAShQ,KAAK42B,UAEd5mB,EAAShQ,KAAK42B,UAItB52B,KAAK2a,OAAO5K,MAAQA,EACpB/P,KAAK2a,OAAO3K,OAASA,EAErBhQ,KAAKwa,KAAKoC,OAAOwC,mBAEjBpf,KAAKwa,KAAK6F,QAAQjB,oBAStB/e,EAAOo2B,MAAMpwB,UAAU2a,SAAW,WAG9BhhB,KAAK8jB,SAAQ,GAAM,IAmBvBzjB,EAAOo2B,MAAMpwB,UAAU0M,KAAO,SAAUgkB,EAAQrP,EAASsP,EAAWlb,EAAYC,GAE5DrS,SAAZge,IAAyBA,EAAU,GACrBhe,SAAdstB,IAA2BA,GAAY,GACxBttB,SAAfoS,IAA4BA,GAAa,GAC5BpS,SAAbqS,IAA0BA,GAAW,GAEpCib,GAsBDD,EAAOzpB,YAEHwO,IAEKib,EAAO9wB,EAAI8wB,EAAOE,eAAelnB,MAAS/P,KAAK2a,OAAO1U,EAEvD8wB,EAAO9wB,EAAIjG,KAAK2a,OAAO/P,MAElBmsB,EAAO9wB,EAAIjG,KAAK2a,OAAO/P,QAE5BmsB,EAAO9wB,EAAIjG,KAAK2a,OAAO9P,OAI3BkR,IAEKgb,EAAOtqB,EAAIsqB,EAAOE,eAAejnB,OAAUhQ,KAAK2a,OAAOjM,IAExDqoB,EAAOtqB,EAAIzM,KAAK2a,OAAOhM,OAElBooB,EAAOtqB,EAAIzM,KAAK2a,OAAOhM,SAE5BooB,EAAOtqB,EAAIzM,KAAK2a,OAAOjM,QA1C3BoN,GAAcib,EAAO9wB,EAAIyhB,EAAU1nB,KAAK2a,OAAO1U,EAE/C8wB,EAAO9wB,EAAIjG,KAAK2a,OAAO/P,MAAQ8c,EAE1B5L,GAAcib,EAAO9wB,EAAIyhB,EAAU1nB,KAAK2a,OAAO/P,QAEpDmsB,EAAO9wB,EAAIjG,KAAK2a,OAAO9P,KAAO6c,GAG9B3L,GAAYgb,EAAOtqB,EAAIib,EAAU1nB,KAAK2a,OAAOjM,IAE7CqoB,EAAOtqB,EAAIzM,KAAK2a,OAAOhM,OAAS+Y,EAE3B3L,GAAYgb,EAAOtqB,EAAIib,EAAU1nB,KAAK2a,OAAOhM,SAElDooB,EAAOtqB,EAAIzM,KAAK2a,OAAOjM,IAAMgZ,KAsCzCngB,OAAO2E,eAAe7L,EAAOo2B,MAAMpwB,UAAW,SAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAO5K,OAGvB9D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKwa,KAAKzK,QAElBxG,EAAQvJ,KAAKwa,KAAKzK,OAGtB/P,KAAK2a,OAAO5K,MAAQxG,EACpBvJ,KAAK22B,OAASptB,EACdvJ,KAAK02B,cAAe,KAU5BnvB,OAAO2E,eAAe7L,EAAOo2B,MAAMpwB,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAO3K,QAGvB/D,IAAK,SAAU1C,GAEPA,EAAQvJ,KAAKwa,KAAKxK,SAElBzG,EAAQvJ,KAAKwa,KAAKxK,QAGtBhQ,KAAK2a,OAAO3K,OAASzG,EACrBvJ,KAAK42B,QAAUrtB,EACfvJ,KAAK02B,cAAe,KAW5BnvB,OAAO2E,eAAe7L,EAAOo2B,MAAMpwB,UAAW,WAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAOvL,UAAYpP,KAAK2a,OAAO1U,KAUnDsB,OAAO2E,eAAe7L,EAAOo2B,MAAMpwB,UAAW,WAE1C2F,IAAK,WACD,MAAOhM,MAAK2a,OAAOpL,WAAavP,KAAK2a,OAAOlO,KAUpDlF,OAAO2E,eAAe7L,EAAOo2B,MAAMpwB,UAAW,WAE1C2F,IAAK,WAED,MAAIhM,MAAK2a,OAAO1U,EAAI,EAETjG,KAAKwa,KAAKsE,IAAIoY,QAAQl3B,KAAK2a,OAAO1U,EAAIjG,KAAK2a,OAAO5K,MAAQhK,KAAKoJ,IAAInP,KAAK2a,OAAO1U,IAI/EjG,KAAKwa,KAAKsE,IAAIoY,QAAQl3B,KAAK2a,OAAO1U,EAAGjG,KAAK2a,OAAO5K,UAYpExI,OAAO2E,eAAe7L,EAAOo2B,MAAMpwB,UAAW,WAE1C2F,IAAK,WAED,MAAIhM,MAAK2a,OAAOlO,EAAI,EAETzM,KAAKwa,KAAKsE,IAAIoY,QAAQl3B,KAAK2a,OAAOlO,EAAIzM,KAAK2a,OAAO3K,OAASjK,KAAKoJ,IAAInP,KAAK2a,OAAOlO,IAIhFzM,KAAKwa,KAAKsE,IAAIoY,QAAQl3B,KAAK2a,OAAOlO,EAAGzM,KAAK2a,OAAO3K,WA+BpE3P,EAAO82B,KAAO,SAAUpnB,EAAOC,EAAQonB,EAAU5N,EAAQtJ,EAAO8K,EAAaqM,EAAWC,GAyZpF,MAnZAt3B,MAAK2U,GAAKtU,EAAOE,MAAMqS,KAAK5S,MAAQ,EAKpCA,KAAKirB,OAAS,KAKdjrB,KAAKs3B,cAAgBA,EAMrBt3B,KAAKwpB,OAAS,GAWdxpB,KAAK+P,MAAQ,IAWb/P,KAAKgQ,OAAS,IASdhQ,KAAK6nB,WAAa,EAMlB7nB,KAAK22B,OAAS,IAMd32B,KAAK42B,QAAU,IAMf52B,KAAKgrB,aAAc,EAMnBhrB,KAAKq3B,WAAY,EAMjBr3B,KAAKu3B,uBAAwB,EAQ7Bv3B,KAAKw3B,mBAAoB,EAMzBx3B,KAAKo3B,SAAW,KAMhBp3B,KAAKokB,WAAa/jB,EAAOG,KAKzBR,KAAKkgB,MAAQ,KAMblgB,KAAK6iB,UAAW,EAMhB7iB,KAAKy3B,WAAY,EAMjBz3B,KAAK03B,IAAM,KAKX13B,KAAK6R,IAAM,KAKX7R,KAAK6f,KAAO,KAKZ7f,KAAK8f,MAAQ,KAKb9f,KAAK+f,MAAQ,KAKb/f,KAAKggB,KAAO,KAKZhgB,KAAKkf,KAAO,KAKZlf,KAAK23B,IAAM,KAKX33B,KAAK6U,MAAQ,KAKb7U,KAAKigB,MAAQ,KAKbjgB,KAAK8c,MAAQ,KAKb9c,KAAK2e,KAAO,KAKZ3e,KAAKmgB,OAAS,KAKdngB,KAAKya,MAAQ,KAKbza,KAAKqgB,QAAU,KAKfrgB,KAAKgqB,QAAU,KAKfhqB,KAAK8e,IAAM,KAKX9e,KAAK0sB,OAASrsB,EAAOu3B,OAKrB53B,KAAK4c,OAAS,KAKd5c,KAAKsrB,OAAS,KAKdtrB,KAAKqkB,QAAU,KAKfrkB,KAAK6jB,MAAQ,KAKb7jB,KAAKogB,UAAY,KAKjBpgB,KAAK0gB,OAAS,KASd1gB,KAAK63B,YAAa,EAOlB73B,KAAK83B,UAAW,EAOhB93B,KAAK+3B,aAAc,EAOnB/3B,KAAKg4B,UAAY,EAKjBh4B,KAAKuiB,QAAU,KAKfviB,KAAKyiB,SAAW,KAKhBziB,KAAKi4B,OAAS,KAKdj4B,KAAKk4B,QAAU,KAMfl4B,KAAKm4B,SAAU,EAMfn4B,KAAKo4B,aAAc,EAQnBp4B,KAAKq4B,gBAAkB,EAOvBr4B,KAAKs4B,iBAAmB,EAMxBt4B,KAAKu4B,WAAa,EAMlBv4B,KAAKw4B,WAAa,EAMlBx4B,KAAKy4B,WAAa,EAMlBz4B,KAAKikB,YAAa,EAQlBjkB,KAAK04B,mBAAqB,GAAIr4B,GAAO+a,OAKrCpb,KAAK24B,mBAAoB,EAMzB34B,KAAK44B,qBAAuB,EAGH,IAArB7xB,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C/G,KAAKkrB,YAAYnkB,UAAU,KAI3B/G,KAAKirB,QAAW4N,aAAa,GAER,mBAAV9oB,KAEP/P,KAAK22B,OAAS5mB,GAGI,mBAAXC,KAEPhQ,KAAK42B,QAAU5mB,GAGK,mBAAbonB,KAEPp3B,KAAKokB,WAAagT,GAGA,mBAAX5N,KAEPxpB,KAAKwpB,OAASA,GAGS,mBAAhBwB,KAEPhrB,KAAKgrB,YAAcA,GAGE,mBAAdqM,KAEPr3B,KAAKq3B,UAAYA,GAGrBr3B,KAAK8e,IAAM,GAAIze,GAAOy4B,sBAAsBlR,KAAKmR,MAAQhzB,KAAK4D,UAAUnC,aAExExH,KAAKkgB,MAAQ,GAAI7f,GAAO4gB,aAAajhB,KAAMkgB,IAG/ClgB,KAAK0sB,OAAOsM,UAAUh5B,KAAK2c,KAAM3c,MAE1BA,MAIXK,EAAO82B,KAAK9wB,WAQR6kB,YAAa,SAAUD,GAEnBjrB,KAAKirB,OAASA,EAEgBvhB,SAA1BuhB,EAAoB,cAEpBjrB,KAAKirB,OAAO4N,aAAc,GAG1B5N,EAAc,QAEdjrB,KAAK22B,OAAS1L,EAAc,OAG5BA,EAAe,SAEfjrB,KAAK42B,QAAU3L,EAAe,QAG9BA,EAAiB,WAEjBjrB,KAAKokB,WAAa6G,EAAiB,UAGnCA,EAAe,SAEfjrB,KAAKwpB,OAASyB,EAAe,QAGHvhB,SAA1BuhB,EAAoB,cAEpBjrB,KAAKgrB,YAAcC,EAAoB,aAGfvhB,SAAxBuhB,EAAkB,YAElBjrB,KAAKq3B,UAAYpM,EAAkB,WAGnCA,EAAmB,aAEnBjrB,KAAK6nB,WAAaoD,EAAmB,YAGDvhB,SAApCuhB,EAA8B,wBAE9BjrB,KAAKu3B,sBAAwBtM,EAA8B,uBAG3DA,EAAsB,gBAEtBjrB,KAAKs3B,cAAgBrM,EAAsB,cAG/C,IAAIgO,KAASrR,KAAKmR,MAAQhzB,KAAK4D,UAAUnC,WAErCyjB,GAAa,OAEbgO,EAAOhO,EAAa,MAGxBjrB,KAAK8e,IAAM,GAAIze,GAAOy4B,oBAAoBG,EAE1C,IAAI/Y,GAAQ,IAER+K,GAAc,QAEd/K,EAAQ+K,EAAc,OAG1BjrB,KAAKkgB,MAAQ,GAAI7f,GAAO4gB,aAAajhB,KAAMkgB,IAU/CvD,KAAM,WAEE3c,KAAK6iB,WAKT7iB,KAAKuiB,QAAU,GAAIliB,GAAO+a,OAC1Bpb,KAAKyiB,SAAW,GAAIpiB,GAAO+a,OAC3Bpb,KAAKi4B,OAAS,GAAI53B,GAAO+a,OACzBpb,KAAKk4B,QAAU,GAAI73B,GAAO+a,OAE1Bpb,KAAK6iB,UAAW,EAEhB/c,KAAK0U,KAAOxa,KAEZA,KAAKkf,KAAO7e,EAAO0F,KAEnB/F,KAAK6U,MAAQ,GAAIxU,GAAO64B,aAAal5B,KAAMA,KAAK22B,OAAQ32B,KAAK42B,SAC7D52B,KAAK8c,MAAQ,GAAIzc,GAAOgqB,MAAMrqB,MAE9BA,KAAKm5B,gBAELn5B,KAAKya,MAAQ,GAAIpa,GAAOo2B,MAAMz2B,MAC9BA,KAAK6R,IAAM,GAAIxR,GAAO+4B,kBAAkBp5B,MACxCA,KAAK6f,KAAO,GAAIxf,GAAOg5B,kBAAkBr5B,MACzCA,KAAK8f,MAAQ,GAAIzf,GAAOi5B,MAAMt5B,MAC9BA,KAAKggB,KAAO,GAAI3f,GAAOk5B,OAAOv5B,MAC9BA,KAAK2e,KAAO,GAAIte,GAAOm5B,KAAKx5B,MAC5BA,KAAKmgB,OAAS,GAAI9f,GAAOo5B,aAAaz5B,MACtCA,KAAK+f,MAAQ,GAAI1f,GAAOq5B,MAAM15B,MAC9BA,KAAKigB,MAAQ,GAAI5f,GAAOs5B,aAAa35B,MACrCA,KAAKqgB,QAAU,GAAIhgB,GAAOutB,QAAQ5tB,KAAMA,KAAKs3B,eAC7Ct3B,KAAKogB,UAAY,GAAI/f,GAAOu5B,UAAU55B,MACtCA,KAAK0gB,OAAS,GAAIrgB,GAAOw5B,OAAO75B,MAChCA,KAAKgqB,QAAU,GAAI3pB,GAAO0pB,cAAc/pB,MACxCA,KAAK23B,IAAM,GAAIt3B,GAAOy5B,IAAI95B,MAE1BA,KAAK2e,KAAKhC,OACV3c,KAAK8c,MAAMH,OACX3c,KAAKya,MAAMkC,OACX3c,KAAK6U,MAAM8H,OACX3c,KAAK+f,MAAMpD,OACX3c,KAAKigB,MAAMtD,OACX3c,KAAKkgB,MAAMvD,OAEP3c,KAAKirB,OAAoB,aAEzBjrB,KAAK6jB,MAAQ,GAAIxjB,GAAOmI,MAAMuxB,MAAM/5B,MACpCA,KAAK6jB,MAAMlH,QAIX3c,KAAK6jB,OAAU7G,UAAW,aAAgBuB,OAAQ,aAAgBmB,MAAO,cAG7E1f,KAAKg6B,kBAELh6B,KAAKy3B,WAAY,EAEbz3B,KAAKirB,QAAUjrB,KAAKirB,OAAwB,gBAE5CjrB,KAAK03B,IAAM,GAAIr3B,GAAO45B,sBAAsBj6B,KAAMA,KAAKirB,OAAwB,iBAI/EjrB,KAAK03B,IAAM,GAAIr3B,GAAO45B,sBAAsBj6B,MAAM,GAGtDA,KAAKikB,YAAa,EAEdlc,OAAc,SAETA,OAAqB,cAAMA,OAAqB,eAAMA,OAAqB,aAAEmyB,YAE9EnyB,OAAOoyB,QAIfn6B,KAAK03B,IAAIhnB,UAUbspB,gBAAiB,WAEb,IAAIjyB,OAAqB,eAAKA,OAAqB,aAAEqyB,WAArD,CAKA,GAAIC,GAAIh6B,EAAOC,QACX4M,EAAI,SACJuB,EAAI,aACJQ,EAAI,CAkBR,IAhBIjP,KAAKokB,aAAe/jB,EAAOK,OAE3BwM,EAAI,QACJ+B,KAEKjP,KAAKokB,YAAc/jB,EAAOM,WAE/BuM,EAAI,YAGJlN,KAAK0sB,OAAO4N,WAEZ7rB,EAAI,WACJQ,KAGAjP,KAAK0sB,OAAO6N,OAChB,CAWI,IAAK,GAVD5zB,IACA,oBAAsB0zB,EAAI,gBAAkBntB,EAAI,MAAQuB,EAAI,wCAC5D,sBACA,sBACA,uCACA,sBACA,sBACA,uBAGK3G,EAAI,EAAO,EAAJA,EAAOA,IAEXmH,EAAJnH,EAEAnB,EAAKiM,KAAK,oCAIVjM,EAAKiM,KAAK,mCAIlBxK,SAAQC,IAAIpB,MAAMmB,QAASzB,OAEtBoB,QAAgB,SAErBK,QAAQC,IAAI,WAAagyB,EAAI,cAAgBv0B,KAAKxF,QAAU,MAAQ4M,EAAI,MAAQuB,EAAI,yBAW5F0qB,cAAe,WAoBX,GAlBIn5B,KAAKirB,OAAe,OAEpBjrB,KAAKsrB,OAAStrB,KAAKirB,OAAe,OAIlCjrB,KAAKsrB,OAASjrB,EAAOkrB,OAAO7K,OAAO1gB,KAAMA,KAAK+P,MAAO/P,KAAKgQ,OAAQhQ,KAAKirB,OAAiB,UAAG,GAG3FjrB,KAAKirB,OAAoB,YAEzBjrB,KAAKsrB,OAAOpO,MAAQld,KAAKirB,OAAoB,YAI7CjrB,KAAKsrB,OAAOpO,MAAM,uBAAyB,4BAG3Cld,KAAKokB,aAAe/jB,EAAOM,UAAYX,KAAKokB,aAAe/jB,EAAOI,QAAWT,KAAKokB,aAAe/jB,EAAOG,OAASR,KAAK0sB,OAAO8N,MACjI,CACI,IAAIx6B,KAAK0sB,OAAOpB,OAWZ,KAAM,IAAItU,OAAM,iEARhBhX,MAAKokB,WAAa/jB,EAAOI,OAEzBT,KAAKo3B,SAAW,GAAItxB,MAAK20B,eAAez6B,MAExCA,KAAKqkB,QAAUrkB,KAAKo3B,SAAS/S,YAUjCrkB,MAAKokB,WAAa/jB,EAAOK,MAEzBV,KAAKo3B,SAAW,GAAItxB,MAAK40B,cAAc16B,MAEvCA,KAAKqkB,QAAU,KAEfrkB,KAAKsrB,OAAOe,iBAAiB,mBAAoBrsB,KAAK26B,YAAYr0B,KAAKtG,OAAO,GAC9EA,KAAKsrB,OAAOe,iBAAiB,uBAAwBrsB,KAAK46B,gBAAgBt0B,KAAKtG,OAAO,EAGtFA,MAAK0sB,OAAOmO,WAEZ76B,KAAKsrB,OAAOwP,aAAgB96B,KAAKokB,aAAe/jB,EAAOI,QAGvDT,KAAKokB,aAAe/jB,EAAOM,WAE3BX,KAAK8c,MAAMie,SAAW/6B,KAAKq3B,UAE3Bh3B,EAAOkrB,OAAOyP,SAASh7B,KAAKsrB,OAAQtrB,KAAKwpB,QAAQ,GACjDnpB,EAAOkrB,OAAOE,eAAezrB,KAAKsrB,UAY1CqP,YAAa,SAAUxO,GAEnBA,EAAM8O,iBAENj7B,KAAKo3B,SAASuD,aAAc,GAUhCC,gBAAiB,WAEb56B,KAAKo3B,SAAS8D,cAEdl7B,KAAK8f,MAAMqb,kBAEXn7B,KAAKo3B,SAASuD,aAAc,GAWhCpc,OAAQ,SAAUI,GAId,GAFA3e,KAAK2e,KAAKJ,OAAOI,GAEb3e,KAAKikB,WASL,MAPAjkB,MAAKo7B,YAAYp7B,KAAK2e,KAAK0c,gBAG3Br7B,KAAKs7B,aAAat7B,KAAK2e,KAAK4c,WAAav7B,KAAK2e,KAAK6c,iBAEnDx7B,KAAKikB,YAAa,EAMtB,IAAIjkB,KAAKy4B,WAAa,IAAMz4B,KAAK24B,kBAGzB34B,KAAK2e,KAAKA,KAAO3e,KAAK44B,uBAGtB54B,KAAK44B,qBAAuB54B,KAAK2e,KAAKA,KAAO,IAG7C3e,KAAK04B,mBAAmB7Z,YAI5B7e,KAAKu4B,WAAa,EAClBv4B,KAAKy4B,WAAa,EAGlBz4B,KAAKs7B,aAAat7B,KAAK2e,KAAK4c,WAAav7B,KAAK2e,KAAK6c,gBAGvD,CAEI,GAAIC,GAAkC,IAAvBz7B,KAAK2e,KAAK4c,WAAsBv7B,KAAK2e,KAAK6c,UAGzDx7B,MAAKu4B,YAAcxyB,KAAKoM,IAAIpM,KAAKkM,IAAe,EAAXwpB,EAAcz7B,KAAK2e,KAAK+c,SAAU,EAIvE,IAAIC,GAAQ,CASZ,KAPA37B,KAAKs4B,iBAAmBvyB,KAAKI,MAAMnG,KAAKu4B,WAAakD,GAEjDz7B,KAAK24B,oBAEL34B,KAAKs4B,iBAAmBvyB,KAAKkM,IAAI,EAAGjS,KAAKs4B,mBAGtCt4B,KAAKu4B,YAAckD,IAEtBz7B,KAAKu4B,YAAckD,EACnBz7B,KAAKq4B,gBAAkBsD,EAEvB37B,KAAKo7B,YAAYp7B,KAAK2e,KAAK0c,gBAE3BM,KAEI37B,KAAK24B,mBAA+B,IAAVgD,IAM1B37B,KAAK2e,KAAKid,SAKdD,GAAQ37B,KAAKw4B,WAEbx4B,KAAKy4B,aAEAkD,EAAQ37B,KAAKw4B,aAGlBx4B,KAAKy4B,WAAa,GAGtBz4B,KAAKw4B,WAAamD,EAGlB37B,KAAKs7B,aAAat7B,KAAKu4B,WAAakD,KAY5CL,YAAa,SAAUS,GAEd77B,KAAKm4B,SAAYn4B,KAAK+3B,aA8BvB/3B,KAAK6U,MAAMkM,cACX/gB,KAAKkgB,MAAMa,cACX/gB,KAAK6jB,MAAM7G,cA9BPhd,KAAK83B,WAEL93B,KAAK+3B,aAAc,GAGvB/3B,KAAK6U,MAAMmI,YACXhd,KAAK6jB,MAAM7G,YACXhd,KAAK4c,OAAOI,YACZhd,KAAKqgB,QAAQrD,YACbhd,KAAKkgB,MAAMlD,UAAU6e,GACrB77B,KAAKgqB,QAAQhN,UAAU6e,GACvB77B,KAAK8c,MAAME,YAEXhd,KAAKkgB,MAAM3B,SACXve,KAAK8c,MAAMyB,SACXve,KAAKmgB,OAAO5B,SACZve,KAAKigB,MAAM1B,SACXve,KAAK+f,MAAMxB,SACXve,KAAKqgB,QAAQ9B,SACbve,KAAKogB,UAAU7B,SACfve,KAAKgqB,QAAQzL,SAEbve,KAAK8c,MAAMsN,aACXpqB,KAAKgqB,QAAQI,cAUjBpqB,KAAK8c,MAAM8O,mBAmBf0P,aAAc,SAAUnX,GAEhBnkB,KAAK63B,aAKT73B,KAAKkgB,MAAMS,UAAUwD,GAEjBnkB,KAAKokB,aAAe/jB,EAAOM,WAE3BX,KAAKo3B,SAASxW,OAAO5gB,KAAK8c,OAE1B9c,KAAKgqB,QAAQpJ,OAAOuD,GAEpBnkB,KAAKkgB,MAAMU,OAAOuD,IAGtBnkB,KAAKgqB,QAAQF,WAAW3F,KAU5B2X,WAAY,WAER97B,KAAK83B,UAAW,EAChB93B,KAAK+3B,aAAc,EACnB/3B,KAAKg4B,UAAY,GASrB+D,YAAa,WAET/7B,KAAK83B,UAAW,EAChB93B,KAAK+3B,aAAc,GAUvBiE,KAAM,WAEFh8B,KAAK+3B,aAAc,EACnB/3B,KAAKg4B,aAcTlU,QAAS,WAEL9jB,KAAK03B,IAAIuE,OAETj8B,KAAKkgB,MAAM4D,UACX9jB,KAAKigB,MAAM6D,UACX9jB,KAAK6U,MAAMiP,UACX9jB,KAAK8c,MAAMgH,UACX9jB,KAAK+f,MAAM+D,UACX9jB,KAAKqgB,QAAQyD,UACb9jB,KAAKgqB,QAAQlG,UAEb9jB,KAAKkgB,MAAQ,KACblgB,KAAKigB,MAAQ,KACbjgB,KAAK6U,MAAQ,KACb7U,KAAK8c,MAAQ,KACb9c,KAAK+f,MAAQ,KACb/f,KAAKqgB,QAAU,KACfrgB,KAAKgqB,QAAU,KAEfhqB,KAAK8f,MAAQ,KACb9f,KAAKggB,KAAO,KACZhgB,KAAK2e,KAAO,KACZ3e,KAAKya,MAAQ,KAEbza,KAAK6iB,UAAW,EAEhB7iB,KAAKo3B,SAAStT,SAAQ,GAEtBzjB,EAAOkrB,OAAO2Q,cAAcl8B,KAAKsrB,QAEjCxlB,KAAKq2B,gBAAkB,KAEvB97B,EAAOE,MAAMP,KAAK2U,IAAM,MAW5BuY,WAAY,SAAUf,GAGbnsB,KAAKm4B,UAENn4B,KAAKm4B,SAAU,EAEfn4B,KAAK2e,KAAKuO,aAENltB,KAAKigB,MAAMmc,aAEXp8B,KAAKigB,MAAMoc,UAGfr8B,KAAKuiB,QAAQ1D,SAASsN,GAGlBnsB,KAAK0sB,OAAO4P,SAAWt8B,KAAK0sB,OAAO6P,MAEnCv8B,KAAK63B,YAAa,KAa9B1K,YAAa,SAAUhB,GAGfnsB,KAAKm4B,UAAYn4B,KAAKo4B,cAEtBp4B,KAAKm4B,SAAU,EAEfn4B,KAAK2e,KAAKwO,cAEVntB,KAAK+f,MAAML,QAEP1f,KAAKigB,MAAMmc,aAEXp8B,KAAKigB,MAAMuc,YAGfx8B,KAAKyiB,SAAS5D,SAASsN,GAGnBnsB,KAAK0sB,OAAO4P,SAAWt8B,KAAK0sB,OAAO6P,MAEnCv8B,KAAK63B,YAAa,KAa9B7K,UAAW,SAAUb,GAEjBnsB,KAAKi4B,OAAOpZ,SAASsN,GAEhBnsB,KAAK8c,MAAMyN,yBAEZvqB,KAAKktB,WAAWf,IAYxBc,UAAW,SAAUd,GAEjBnsB,KAAKk4B,QAAQrZ,SAASsN,GAEjBnsB,KAAK8c,MAAMyN,yBAEZvqB,KAAKmtB,YAAYhB,KAO7B9rB,EAAO82B,KAAK9wB,UAAU8B,YAAc9H,EAAO82B,KAQ3C5vB,OAAO2E,eAAe7L,EAAO82B,KAAK9wB,UAAW,UAEzC2F,IAAK,WACD,MAAOhM,MAAKm4B,SAGhBlsB,IAAK,SAAU1C,GAEPA,KAAU,GAENvJ,KAAKm4B,WAAY,IAEjBn4B,KAAKm4B,SAAU,EACfn4B,KAAKigB,MAAMoc,UACXr8B,KAAK2e,KAAKuO,aACVltB,KAAKuiB,QAAQ1D,SAAS7e,OAE1BA,KAAKo4B,aAAc,IAIfp4B,KAAKm4B,UAELn4B,KAAKm4B,SAAU,EACfn4B,KAAK+f,MAAML,QACX1f,KAAKigB,MAAMuc,YACXx8B,KAAK2e,KAAKwO,cACVntB,KAAKyiB,SAAS5D,SAAS7e,OAE3BA,KAAKo4B,aAAc,MA6B/B/3B,EAAOq5B,MAAQ,SAAUlf,GAKrBxa,KAAKwa,KAAOA,EAMZxa,KAAKy8B,UAAY,KAMjBz8B,KAAK08B,WAAa,KAQlB18B,KAAK28B,iBAML38B,KAAK48B,uBAAyB,KAM9B58B,KAAK68B,8BAAgC,KAMrC78B,KAAK88B,SAAW,EAShB98B,KAAK+8B,SAAU,EAMf/8B,KAAKg9B,mBAAqB38B,EAAOq5B,MAAMuD,oBAMvCj9B,KAAKuZ,SAAW,KAKhBvZ,KAAKk9B,MAAQ,KAObl9B,KAAKm9B,OAAS,KAKdn9B,KAAK6U,MAAQ,KAMb7U,KAAKo9B,YAAc,GAMnBp9B,KAAKq9B,QAAU,IAMfr9B,KAAKs9B,cAAgB,IAMrBt9B,KAAKu9B,SAAW,IAMhBv9B,KAAKw9B,gBAAkB,IAMvBx9B,KAAKy9B,iBAAmB,IASxBz9B,KAAK09B,sBAAuB,EAM5B19B,KAAK29B,WAAa,IAQlB39B,KAAK49B,YAAc,IAKnB59B,KAAK69B,SAAW,KAKhB79B,KAAK89B,SAAW,KAKhB99B,KAAK+9B,SAAW,KAKhB/9B,KAAKg+B,SAAW,KAKhBh+B,KAAKi+B,SAAW,KAKhBj+B,KAAKk+B,SAAW,KAKhBl+B,KAAKm+B,SAAW,KAKhBn+B,KAAKo+B,SAAW,KAKhBp+B,KAAKq+B,SAAW,KAKhBr+B,KAAKs+B,UAAY,KASjBt+B,KAAKu+B,YASLv+B,KAAKw+B,cAAgB,KAOrBx+B,KAAKy+B,aAAe,KAUpBz+B,KAAK8nB,MAAQ,KAOb9nB,KAAK0+B,SAAW,KAUhB1+B,KAAK2+B,MAAQ,KAUb3+B,KAAK4+B,UAAY,KAOjB5+B,KAAK6+B,QAAU,KAQf7+B,KAAK8+B,aAAc,EAMnB9+B,KAAK++B,OAAS,KAMd/+B,KAAKg/B,KAAO,KAMZh/B,KAAKi/B,MAAQ,KAMbj/B,KAAKk/B,OAAS,KAQdl/B,KAAKm/B,cAAgB,EAMrBn/B,KAAKo/B,iBAAmB,GAAI/+B,GAAO2zB,SAMnCh0B,KAAKq/B,YAAc,GAAIh/B,GAAO2M,MAM9BhN,KAAKs/B,aAAe,EAMpBt/B,KAAKu/B,aAAe,KAMpBv/B,KAAKw/B,GAAK,EAMVx/B,KAAKy/B,GAAK,GAQdp/B,EAAOq5B,MAAMgG,sBAAwB,EAMrCr/B,EAAOq5B,MAAMiG,sBAAwB,EAMrCt/B,EAAOq5B,MAAMuD,oBAAsB,EAOnC58B,EAAOq5B,MAAMkG,aAAe,GAE5Bv/B,EAAOq5B,MAAMrzB,WAQTsW,KAAM,WAEF3c,KAAKy+B,aAAe,GAAIp+B,GAAOw/B,QAAQ7/B,KAAKwa,KAAM,EAAGna,EAAOy/B,YAAYC,QACxE//B,KAAKggC,aACLhgC,KAAKggC,aAELhgC,KAAK8nB,MAAQ,GAAIznB,GAAO4/B,MAAMjgC,KAAKwa,MACnCxa,KAAK2+B,MAAQ,GAAIt+B,GAAO6/B,MAAMlgC,KAAKwa,MACnCxa,KAAK4+B,UAAY,GAAIv+B,GAAO8/B,UAAUngC,KAAKwa,MAEvCna,EAAO+/B,WAEPpgC,KAAK0+B,SAAW,GAAIr+B,GAAO+/B,SAASpgC,KAAKwa,OAGzCna,EAAOggC,UAEPrgC,KAAK6+B,QAAU,GAAIx+B,GAAOggC,QAAQrgC,KAAKwa,OAG3Cxa,KAAK++B,OAAS,GAAI1+B,GAAO+a,OACzBpb,KAAKg/B,KAAO,GAAI3+B,GAAO+a,OACvBpb,KAAKi/B,MAAQ,GAAI5+B,GAAO+a,OACxBpb,KAAKk/B,OAAS,GAAI7+B,GAAO+a,OAEzBpb,KAAK6U,MAAQ,GAAIxU,GAAO2M,MAAM,EAAG,GACjChN,KAAKk9B,MAAQ,GAAI78B,GAAO2M,MACxBhN,KAAKuZ,SAAW,GAAIlZ,GAAO2M,MAC3BhN,KAAKu/B,aAAe,GAAIl/B,GAAO2M,MAE/BhN,KAAKm9B,OAAS,GAAI98B,GAAOmM,OAAO,EAAG,EAAG,IAEtCxM,KAAKw+B,cAAgBx+B,KAAKy+B,aAE1Bz+B,KAAKy8B,UAAY32B,KAAKw6B,WAAW5f,OAAO1gB,KAAM,EAAG,GACjDA,KAAK08B,WAAa18B,KAAKy8B,UAAU8D,WAAW,MAE5CvgC,KAAK8nB,MAAMpX,QACX1Q,KAAK2+B,MAAMjuB,QACX1Q,KAAK4+B,UAAUluB,QACf1Q,KAAKy+B,aAAa5Z,QAAS,EAEvB7kB,KAAK0+B,UAEL1+B,KAAK0+B,SAAShuB,OAGlB,IAAI+V,GAAQzmB,IAEZA,MAAKwgC,mBAAqB,SAAUrU,GAChC1F,EAAMga,kBAAkBtU,IAG5BnsB,KAAKwa,KAAK8Q,OAAOe,iBAAiB,QAASrsB,KAAKwgC,oBAAoB,IASxE1c,QAAS,WAEL9jB,KAAK8nB,MAAMmU,OACXj8B,KAAK2+B,MAAM1C,OACXj8B,KAAK4+B,UAAU3C,OAEXj8B,KAAK0+B,UAEL1+B,KAAK0+B,SAASzC,OAGdj8B,KAAK6+B,SAEL7+B,KAAK6+B,QAAQ5C,OAGjBj8B,KAAK28B,iBAEL72B,KAAKw6B,WAAWxd,OAAO9iB,MAEvBA,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,QAASvtB,KAAKwgC,qBA0BvDE,+BAAgC,SAAUrN,EAAUhP,GAEhDrkB,KAAK48B,uBAAyBvJ,EAC9BrzB,KAAK68B,8BAAgCxY,GAuBzCsc,gBAAiB,SAAUtN,EAAUhP,GAEjCrkB,KAAK28B,cAAc/pB,MAAOygB,SAAUA,EAAUhP,QAASA,KAW3Duc,mBAAoB,SAAUvN,EAAUhP,GAIpC,IAFA,GAAIvc,GAAI9H,KAAK28B,cAAc90B,OAEpBC,KAEH,GAAI9H,KAAK28B,cAAc70B,GAAGurB,WAAaA,GAAYrzB,KAAK28B,cAAc70B,GAAGuc,UAAYA,EAGjF,WADArkB,MAAK28B,cAAcxZ,OAAOrb,EAAG,IAezCk4B,WAAY,WAER,GAAIhgC,KAAKu+B,SAAS12B,QAAUxH,EAAOq5B,MAAMkG,aAGrC,MADAx3B,SAAQG,KAAK,6CAA+ClI,EAAOq5B,MAAMkG,aAAe,sBACjF,IAGX,IAAIjrB,GAAK3U,KAAKu+B,SAAS12B,OAAS,EAC5BihB,EAAU,GAAIzoB,GAAOw/B,QAAQ7/B,KAAKwa,KAAM7F,EAAItU,EAAOy/B,YAAYe,MAKnE,OAHA7gC,MAAKu+B,SAAS3rB,KAAKkW,GACnB9oB,KAAK,UAAY2U,GAAMmU,EAEhBA,GAUXvK,OAAQ,WAOJ,GALIve,KAAK0+B,UAEL1+B,KAAK0+B,SAASngB,SAGdve,KAAK88B,SAAW,GAAK98B,KAAKs/B,aAAet/B,KAAK88B,SAG9C,WADA98B,MAAKs/B,cAITt/B,MAAKk9B,MAAMj3B,EAAIjG,KAAKuZ,SAAStT,EAAIjG,KAAKu/B,aAAat5B,EACnDjG,KAAKk9B,MAAMzwB,EAAIzM,KAAKuZ,SAAS9M,EAAIzM,KAAKu/B,aAAa9yB,EAEnDzM,KAAKu/B,aAAa9xB,SAASzN,KAAKuZ,UAChCvZ,KAAKy+B,aAAalgB,SAEdve,KAAK6+B,SAAW7+B,KAAK6+B,QAAQha,QAE7B7kB,KAAK6+B,QAAQtgB,QAGjB,KAAK,GAAIzW,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAEtC9H,KAAKu+B,SAASz2B,GAAGyW,QAGrBve,MAAKs/B,aAAe,GAexB5f,MAAO,SAAUohB,GAEb,GAAK9gC,KAAKwa,KAAKqI,WAAY7iB,KAAK8+B,YAAhC,CAKap1B,SAATo3B,IAAsBA,GAAO,GAEjC9gC,KAAKy+B,aAAa/e,QAEd1f,KAAK0+B,UAEL1+B,KAAK0+B,SAAShf,MAAMohB,GAGpB9gC,KAAK6+B,SAEL7+B,KAAK6+B,QAAQnf,OAGjB,KAAK,GAAI5X,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAEtC9H,KAAKu+B,SAASz2B,GAAG4X,OAGiB,UAAlC1f,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,SAEvBruB,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,WAGhCyS,IAEA9gC,KAAK++B,OAAOvY,UACZxmB,KAAKg/B,KAAKxY,UACVxmB,KAAKi/B,MAAMzY,UACXxmB,KAAKk/B,OAAO1Y,UACZxmB,KAAK++B,OAAS,GAAI1+B,GAAO+a,OACzBpb,KAAKg/B,KAAO,GAAI3+B,GAAO+a,OACvBpb,KAAKi/B,MAAQ,GAAI5+B,GAAO+a,OACxBpb,KAAKk/B,OAAS,GAAI7+B,GAAO+a,OACzBpb,KAAK28B,kBAGT38B,KAAKs/B,aAAe,IAWxByB,WAAY,SAAU96B,EAAGwG,GAErBzM,KAAKu/B,aAAa/xB,MAAMvH,EAAGwG,GAC3BzM,KAAKk9B,MAAM1vB,MAAM,EAAG,IAaxBwzB,aAAc,SAAU7U,GAEpB,GAAInsB,KAAKo9B,aAAe,GAAKp9B,KAAKihC,oBAAoBjhC,KAAKo9B,cAAgBp9B,KAAKo9B,YAE5E,MAAO,KAGX,KAAKp9B,KAAK69B,SAAShZ,OAEf,MAAO7kB,MAAK69B,SAASntB,MAAMyb,EAG/B,KAAKnsB,KAAK89B,SAASjZ,OAEf,MAAO7kB,MAAK89B,SAASptB,MAAMyb,EAG/B,KAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAKu+B,SAASz2B,EAE5B,KAAKghB,EAAQjE,OAET,MAAOiE,GAAQpY,MAAMyb,GAI7B,MAAO,OAaX+U,cAAe,SAAU/U,GAErB,GAAInsB,KAAK69B,SAAShZ,QAAU7kB,KAAK69B,SAASsD,aAAehV,EAAMgV,WAE3D,MAAOnhC,MAAK69B,SAASuD,KAAKjV,EAG9B,IAAInsB,KAAK89B,SAASjZ,QAAU7kB,KAAK89B,SAASqD,aAAehV,EAAMgV,WAE3D,MAAOnhC,MAAK89B,SAASsD,KAAKjV,EAG9B,KAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAKu+B,SAASz2B,EAE5B,IAAIghB,EAAQjE,QAAUiE,EAAQqY,aAAehV,EAAMgV,WAE/C,MAAOrY,GAAQsY,KAAKjV,GAI5B,MAAO,OAYXkV,YAAa,SAAUlV,GAEnB,GAAInsB,KAAK69B,SAAShZ,QAAU7kB,KAAK69B,SAASsD,aAAehV,EAAMgV,WAE3D,MAAOnhC,MAAK69B,SAAS5B,KAAK9P,EAG9B,IAAInsB,KAAK89B,SAASjZ,QAAU7kB,KAAK89B,SAASqD,aAAehV,EAAMgV,WAE3D,MAAOnhC,MAAK89B,SAAS7B,KAAK9P,EAG9B,KAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAKu+B,SAASz2B,EAE5B,IAAIghB,EAAQjE,QAAUiE,EAAQqY,aAAehV,EAAMgV,WAE/C,MAAOrY,GAAQmT,KAAK9P,GAI5B,MAAO,OAYX8U,oBAAqB,SAAUK,GAEb53B,SAAV43B,IAAuBA,EAAQthC,KAAKu+B,SAAS12B,OAIjD,KAAK,GAFD8zB,GAAQ2F,EAEHx5B,EAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,QAAU8zB,EAAQ,EAAG7zB,IACvD,CACI,GAAIghB,GAAU9oB,KAAKu+B,SAASz2B,EAExBghB,GAAQjE,QAER8W,IAIR,MAAQ2F,GAAQ3F,GAWpB4F,WAAY,SAAUC,GAED93B,SAAb83B,IAA0BA,GAAW,EAEzC,KAAK,GAAI15B,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAKu+B,SAASz2B,EAE5B,IAAIghB,EAAQjE,SAAW2c,EAEnB,MAAO1Y,GAIf,MAAO,OAeX2Y,yBAA0B,SAAUN,GAEhC,IAAK,GAAIr5B,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAKu+B,SAASz2B,EAE5B,IAAIghB,EAAQqY,aAAeA,EAEvB,MAAOrY,GAIf,MAAO,OAcX4Y,iBAAkB,SAAUC,GAExB,IAAK,GAAI75B,GAAI,EAAGA,EAAI9H,KAAKu+B,SAAS12B,OAAQC,IAC1C,CACI,GAAIghB,GAAU9oB,KAAKu+B,SAASz2B,EAE5B,IAAIghB,EAAQ6Y,YAAcA,EAEtB,MAAO7Y,GAIf,MAAO,OAYX8Y,iBAAkB,SAAU5mB,EAAe8N,EAAS/a,GAEjCrE,SAAXqE,IAAwBA,EAAS,GAAI1N,GAAO2M,MAEhD,IAAI60B,GAAK7mB,EAAcyP,eACnB9V,EAAK,GAAKktB,EAAGpzB,EAAIozB,EAAG5tB,EAAI4tB,EAAG5yB,GAAK4yB,EAAGhzB,EAEvC,OAAOd,GAAOP,MACVq0B,EAAG5tB,EAAIU,EAAKmU,EAAQ7iB,GAAK47B,EAAG5yB,EAAI0F,EAAKmU,EAAQrc,GAAKo1B,EAAGjwB,GAAKiwB,EAAG5yB,EAAI4yB,EAAGlwB,GAAKkwB,EAAG5tB,GAAKU,EACjFktB,EAAGpzB,EAAIkG,EAAKmU,EAAQrc,GAAKo1B,EAAGhzB,EAAI8F,EAAKmU,EAAQ7iB,IAAM47B,EAAGjwB,GAAKiwB,EAAGpzB,EAAIozB,EAAGlwB,GAAKkwB,EAAGhzB,GAAK8F,IAa1FmtB,QAAS,SAAU9mB,EAAe8N,EAASiZ,GAEvC,IAAK/mB,EAAcgnB,aAEf,OAAO,CAOX,IAJAhiC,KAAK4hC,iBAAiB5mB,EAAe8N,EAAS9oB,KAAKq/B,aAEnD0C,EAAWt0B,SAASzN,KAAKq/B,aAErBrkB,EAAcinB,SAAWjnB,EAAcinB,QAAQj0B,SAE/C,MAAQgN,GAAcinB,QAAQj0B,SAAShO,KAAKq/B,YAAYp5B,EAAGjG,KAAKq/B,YAAY5yB,EAE3E,IAAIuO,YAAyB3a,GAAO6hC,WACzC,CACI,GAAInyB,GAAQiL,EAAcjL,MACtBC,EAASgL,EAAchL,OACvBM,GAAMP,EAAQiL,EAAcqO,OAAOpjB,CAEvC,IAAIjG,KAAKq/B,YAAYp5B,GAAKqK,GAAMtQ,KAAKq/B,YAAYp5B,EAAIqK,EAAKP,EAC1D,CACI,GAAIQ,IAAMP,EAASgL,EAAcqO,OAAO5c,CAExC,IAAIzM,KAAKq/B,YAAY5yB,GAAK8D,GAAMvQ,KAAKq/B,YAAY5yB,EAAI8D,EAAKP,EAEtD,OAAO,OAId,IAAIgL,YAAyBlV,MAAKsoB,OACvC,CACI,GAAIre,GAAQiL,EAAcmnB,QAAQzR,MAAM3gB,MACpCC,EAASgL,EAAcmnB,QAAQzR,MAAM1gB,OACrCM,GAAMP,EAAQiL,EAAcqO,OAAOpjB,CAEvC,IAAIjG,KAAKq/B,YAAYp5B,GAAKqK,GAAMtQ,KAAKq/B,YAAYp5B,EAAIqK,EAAKP,EAC1D,CACI,GAAIQ,IAAMP,EAASgL,EAAcqO,OAAO5c,CAExC,IAAIzM,KAAKq/B,YAAY5yB,GAAK8D,GAAMvQ,KAAKq/B,YAAY5yB,EAAI8D,EAAKP,EAEtD,OAAO,OAId,IAAIgL,YAAyB3a,GAAOwc,SAErC,IAAK,GAAI/U,GAAI,EAAGA,EAAIkT,EAAconB,aAAav6B,OAAQC,IACvD,CACI,GAAIu6B,GAAOrnB,EAAconB,aAAat6B,EAEtC,IAAKu6B,EAAKC,MAMND,EAAKE,OAASF,EAAKE,MAAMv0B,SAAShO,KAAKq/B,YAAYp5B,EAAGjG,KAAKq/B,YAAY5yB,GAEvE,OAAO,EAOnB,IAAK,GAAI3E,GAAI,EAAGA,EAAIkT,EAAc2Q,SAAS9jB,OAAQC,IAE/C,GAAI9H,KAAK8hC,QAAQ9mB,EAAc2Q,SAAS7jB,GAAIghB,EAASiZ,GAEjD,OAAO,CAIf,QAAO,GASXtB,kBAAmB,WAIfzgC,KAAKw+B,cAAcgE,4BAM3BniC,EAAOq5B,MAAMrzB,UAAU8B,YAAc9H,EAAOq5B,MAQ5CnyB,OAAO2E,eAAe7L,EAAOq5B,MAAMrzB,UAAW,KAE1C2F,IAAK,WACD,MAAOhM,MAAKw/B,IAGhBvzB,IAAK,SAAU1C,GACXvJ,KAAKw/B,GAAKz5B,KAAKI,MAAMoD,MAW7BhC,OAAO2E,eAAe7L,EAAOq5B,MAAMrzB,UAAW,KAE1C2F,IAAK,WACD,MAAOhM,MAAKy/B,IAGhBxzB,IAAK,SAAU1C,GACXvJ,KAAKy/B,GAAK15B,KAAKI,MAAMoD,MAW7BhC,OAAO2E,eAAe7L,EAAOq5B,MAAMrzB,UAAW,cAE1C2F,IAAK,WACD,MAAQhM,MAAK88B,SAAW,GAAK98B,KAAKs/B,aAAet/B,KAAK88B,YAW9Dv1B,OAAO2E,eAAe7L,EAAOq5B,MAAMrzB,UAAW,yBAE1C2F,IAAK,WACD,MAAOhM,MAAKu+B,SAAS12B,OAAS7H,KAAKihC,yBAW3C15B,OAAO2E,eAAe7L,EAAOq5B,MAAMrzB,UAAW,uBAE1C2F,IAAK,WACD,MAAOhM,MAAKihC,yBAWpB15B,OAAO2E,eAAe7L,EAAOq5B,MAAMrzB,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKiG,KAW9CsB,OAAO2E,eAAe7L,EAAOq5B,MAAMrzB,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKyM,KAyB9CpM,EAAO4/B,MAAQ,SAAUzlB,GAKrBxa,KAAKwa,KAAOA,EAMZxa,KAAK+f,MAAQvF,EAAKuF,MAKlB/f,KAAK+iB,gBAAkB/iB,KAAKwa,KAK5Bxa,KAAKyiC,kBAAoB,KAKzBziC,KAAK0iC,gBAAkB,KAKvB1iC,KAAK2iC,iBAAmB,KAKxB3iC,KAAK4iC,kBAAoB,KAKzB5iC,KAAK6iC,mBAAqB,KAK1B7iC,KAAK8iC,SAAU,EASf9iC,KAAK+iC,OAAS,GAMd/iC,KAAKgjC,WAAa,EAOlBhjC,KAAK+8B,SAAU,EAMf/8B,KAAKijC,QAAS,EAMdjjC,KAAKkjC,eAAgB,EAMrBljC,KAAKmjC,YAAc,GAAI9iC,GAAO+a,OAQ9Bpb,KAAKmsB,MAAQ,KAMbnsB,KAAKojC,aAAe,KAMpBpjC,KAAKqjC,aAAe,KAMpBrjC,KAAKsjC,WAAa,KAMlBtjC,KAAKujC,YAAc,KAMnBvjC,KAAKwjC,aAAe,KAMpBxjC,KAAKyjC,cAAgB,KAOrBzjC,KAAK0jC,YAAc,MAQvBrjC,EAAO4/B,MAAM0D,UAAY;AAMzBtjC,EAAO4/B,MAAM2D,YAAc,EAM3BvjC,EAAO4/B,MAAM4D,cAAgB,EAM7BxjC,EAAO4/B,MAAM6D,aAAe,EAM5BzjC,EAAO4/B,MAAM8D,YAAc,EAM3B1jC,EAAO4/B,MAAM+D,eAAiB,EAM9B3jC,EAAO4/B,MAAMgE,SAAW,EAMxB5jC,EAAO4/B,MAAMiE,WAAa,GAE1B7jC,EAAO4/B,MAAM55B,WAMTqK,MAAO,WAEH,KAAI1Q,KAAKwa,KAAKkS,OAAOyX,SAAWnkC,KAAKwa,KAAKkS,OAAO6N,UAAW,IAMlC,OAAtBv6B,KAAKojC,aAAT,CAMA,GAAI3c,GAAQzmB,IAEZA,MAAKojC,aAAe,SAAUjX,GAC1B,MAAO1F,GAAM2d,YAAYjY,IAG7BnsB,KAAKqjC,aAAe,SAAUlX,GAC1B,MAAO1F,GAAM4d,YAAYlY,IAG7BnsB,KAAKsjC,WAAa,SAAUnX,GACxB,MAAO1F,GAAM6d,UAAUnY,IAG3BnsB,KAAKukC,iBAAmB,SAAUpY,GAC9B,MAAO1F,GAAM+d,gBAAgBrY,IAGjCnsB,KAAKykC,kBAAoB,SAAUtY,GAC/B,MAAO1F,GAAMie,iBAAiBvY,IAGlCnsB,KAAKujC,YAAc,SAAUpX,GACzB,MAAO1F,GAAMke,WAAWxY,IAG5BnsB,KAAKwjC,aAAe,SAAUrX,GAC1B,MAAO1F,GAAMme,YAAYzY,IAG7BnsB,KAAKyjC,cAAgB,SAAUtX,GAC3B,MAAO1F,GAAMoe,aAAa1Y,GAG9B,IAAIb,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOe,iBAAiB,YAAarsB,KAAKojC,cAAc,GACxD9X,EAAOe,iBAAiB,YAAarsB,KAAKqjC,cAAc,GACxD/X,EAAOe,iBAAiB,UAAWrsB,KAAKsjC,YAAY,GAE/CtjC,KAAKwa,KAAKkS,OAAOmO,WAElB9yB,OAAOskB,iBAAiB,UAAWrsB,KAAKukC,kBAAkB,GAC1Dx8B,OAAOskB,iBAAiB,WAAYrsB,KAAKykC,mBAAmB,GAC5DnZ,EAAOe,iBAAiB,YAAarsB,KAAKwjC,cAAc,GACxDlY,EAAOe,iBAAiB,WAAYrsB,KAAKujC,aAAa,GAG1D,IAAIuB,GAAa9kC,KAAKwa,KAAKkS,OAAOoY,UAE9BA,KAEAxZ,EAAOe,iBAAiByY,EAAY9kC,KAAKyjC,eAAe,GAErC,eAAfqB,EAEA9kC,KAAK0jC,YAAc,GAAI7jC,GAAgB,GAAG,GAAI,GAE1B,mBAAfilC,IAEL9kC,KAAK0jC,YAAc,GAAI7jC,GAAgB,EAAG,OAWtDukC,YAAa,SAAUjY,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGNj7B,KAAKyiC,mBAELziC,KAAKyiC,kBAAkB37B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,UAKjC5Q,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM0e,aAAa/tB,MAAMyb,KASlCkY,YAAa,SAAUlY,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGNj7B,KAAK+kC,mBAEL/kC,KAAK+kC,kBAAkBj+B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,UAKjC5Q,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM0e,aAAa2C,KAAKjV,KASjCmY,UAAW,SAAUnY,GAEjBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGNj7B,KAAK0iC,iBAEL1iC,KAAK0iC,gBAAgB57B,KAAK9G,KAAK+iB,gBAAiBoJ,GAG/CnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,UAKjC5Q,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM0e,aAAaxC,KAAK9P,KAUjCqY,gBAAiB,SAAUrY,GAElBnsB,KAAK+f,MAAM0e,aAAauG,aAErBhlC,KAAK0iC,iBAEL1iC,KAAK0iC,gBAAgB57B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGpDA,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM0e,aAAaxC,KAAK9P,KAWrCuY,iBAAkB,SAAUvY,GAExBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGVj7B,KAAK+f,MAAM0e,aAAauG,YAAa,EAEhChlC,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,UAajC/8B,KAAK+f,MAAM0e,aAAaxC,KAAK9P,GAC7BnsB,KAAK+f,MAAM0e,aAAawG,WAAWhJ,KAAK9P,GACxCnsB,KAAK+f,MAAM0e,aAAayG,YAAYjJ,KAAK9P,KAU7CwY,WAAY,SAAUxY,GAElBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGVj7B,KAAK+f,MAAM0e,aAAauG,YAAa,EAEjChlC,KAAK2iC,kBAEL3iC,KAAK2iC,iBAAiB77B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGhDnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,SAK7B/8B,KAAKkjC,gBAEL/W,EAAkB,WAAI,EAEtBnsB,KAAK+f,MAAM0e,aAAaxC,KAAK9P,KAWrCyY,YAAa,SAAUzY,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGVj7B,KAAK+f,MAAM0e,aAAauG,YAAa,EAEjChlC,KAAK4iC,mBAEL5iC,KAAK4iC,kBAAkB97B,KAAK9G,KAAK+iB,gBAAiBoJ,IAW1D0Y,aAAc,SAAU1Y,GAEhBnsB,KAAK0jC,cACLvX,EAAQnsB,KAAK0jC,YAAYyB,UAAUhZ,IAGvCnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAIVj7B,KAAKgjC,WAAa3iC,EAAO0F,KAAKyP,OAAO2W,EAAMiZ,OAAQ,GAAI,GAEnDplC,KAAK6iC,oBAEL7iC,KAAK6iC,mBAAmB/7B,KAAK9G,KAAK+iB,gBAAiBoJ,IAW3DkZ,mBAAoB,WAEhB,GAAIrlC,KAAKwa,KAAKkS,OAAOyW,YACrB,CACI,GAAImC,GAAUtlC,KAAKwa,KAAK8Q,MAExBga,GAAQD,mBAAqBC,EAAQD,oBAAsBC,EAAQC,uBAAyBD,EAAQE,yBAEpGF,EAAQD,oBAER,IAAI5e,GAAQzmB,IAEZA,MAAKylC,mBAAqB,SAAUtZ,GAChC,MAAO1F,GAAMif,kBAAkBvZ,IAGnCL,SAASO,iBAAiB,oBAAqBrsB,KAAKylC,oBAAoB,GACxE3Z,SAASO,iBAAiB,uBAAwBrsB,KAAKylC,oBAAoB,GAC3E3Z,SAASO,iBAAiB,0BAA2BrsB,KAAKylC,oBAAoB,KAWtFC,kBAAmB,SAAUvZ,GAEzB,GAAImZ,GAAUtlC,KAAKwa,KAAK8Q,MAEpBQ,UAAS6Z,qBAAuBL,GAAWxZ,SAAS8Z,wBAA0BN,GAAWxZ,SAAS+Z,2BAA6BP,GAG/HtlC,KAAKijC,QAAS,EACdjjC,KAAKmjC,YAAYtkB,UAAS,EAAMsN,KAKhCnsB,KAAKijC,QAAS,EACdjjC,KAAKmjC,YAAYtkB,UAAS,EAAOsN,KASzC2Z,mBAAoB,WAEhBha,SAASia,gBAAkBja,SAASia,iBAAmBja,SAASka,oBAAsBla,SAASma,sBAE/Fna,SAASia,kBAETja,SAASyB,oBAAoB,oBAAqBvtB,KAAKylC,oBAAoB,GAC3E3Z,SAASyB,oBAAoB,uBAAwBvtB,KAAKylC,oBAAoB,GAC9E3Z,SAASyB,oBAAoB,0BAA2BvtB,KAAKylC,oBAAoB,IAQrFxJ,KAAM,WAEF,GAAI3Q,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOiC,oBAAoB,YAAavtB,KAAKojC,cAAc,GAC3D9X,EAAOiC,oBAAoB,YAAavtB,KAAKqjC,cAAc,GAC3D/X,EAAOiC,oBAAoB,UAAWvtB,KAAKsjC,YAAY,GACvDhY,EAAOiC,oBAAoB,YAAavtB,KAAKwjC,cAAc,GAC3DlY,EAAOiC,oBAAoB,WAAYvtB,KAAKujC,aAAa,EAEzD,IAAIuB,GAAa9kC,KAAKwa,KAAKkS,OAAOoY,UAE9BA,IAEAxZ,EAAOiC,oBAAoBuX,EAAY9kC,KAAKyjC,eAAe,GAG/D17B,OAAOwlB,oBAAoB,UAAWvtB,KAAKukC,kBAAkB,GAC7Dx8B,OAAOwlB,oBAAoB,WAAYvtB,KAAKykC,mBAAmB,GAE/D3Y,SAASyB,oBAAoB,oBAAqBvtB,KAAKylC,oBAAoB,GAC3E3Z,SAASyB,oBAAoB,uBAAwBvtB,KAAKylC,oBAAoB,GAC9E3Z,SAASyB,oBAAoB,0BAA2BvtB,KAAKylC,oBAAoB,KAMzFplC,EAAO4/B,MAAM55B,UAAU8B,YAAc9H,EAAO4/B,MAoC5CpgC,EAAgBwG,aAChBxG,EAAgBwG,UAAU8B,YAActI,EAExCA,EAAgBwG,UAAU8+B,UAAY,SAAUhZ,GAG5C,IAAKtsB,EAAgBqmC,iBAAmB/Z,EACxC,CACI,GAAIga,GAAa,SAAU/6B,GAEvB,MAAO,YACH,GAAIivB,GAAIr6B,KAAKG,cAAciL,EAC3B,OAAoB,kBAANivB,GAAmBA,EAAIA,EAAE/zB,KAAKtG,KAAKG,gBAKzD,KAAK,GAAI6I,KAAQmjB,GAEPnjB,IAAQnJ,GAAgBwG,WAE1BkB,OAAO2E,eAAerM,EAAgBwG,UAAW2C,GAC7CgD,IAAKm6B,EAAWn9B,IAI5BnJ,GAAgBqmC,iBAAkB,EAItC,MADAlmC,MAAKG,cAAgBgsB,EACdnsB,MAIXuH,OAAO6+B,iBAAiBvmC,EAAgBwG,WACpC6B,MAAUqB,MAAO,SACjBxJ,WAAeiM,IAAK,WAAc,MAAOhM,MAAKE,aAC9CklC,QACIp5B,IAAK,WACD,MAAQhM,MAAKC,cAAgBD,KAAKG,cAAc6iC,YAAchjC,KAAKG,cAAckmC,SAAY,IAGrGC,QACIt6B,IAAK,WACD,MAAQhM,MAAKC,aAAeD,KAAKG,cAAcomC,aAAgB,IAGvEC,QAAYj9B,MAAO,KAyBvBlJ,EAAO8/B,UAAY,SAAU3lB,GAKzBxa,KAAKwa,KAAOA,EAMZxa,KAAK+f,MAAQvF,EAAKuF,MAKlB/f,KAAK+iB,gBAAkB/iB,KAAKwa,KAK5Bxa,KAAKymC,oBAAsB,KAK3BzmC,KAAK0mC,oBAAsB,KAK3B1mC,KAAK2mC,kBAAoB,KAKzB3mC,KAAK8iC,SAAU,EAQf9iC,KAAK+iC,OAAS,GAQd/iC,KAAKmsB,MAAQ,KAObnsB,KAAK+8B,SAAU,EAMf/8B,KAAK4mC,iBAAmB,KAMxB5mC,KAAK6mC,iBAAmB,KAMxB7mC,KAAK8mC,eAAiB,KAMtB9mC,KAAK+mC,qBAAuB,KAM5B/mC,KAAKgnC,gBAAkB,KAMvBhnC,KAAKinC,iBAAmB,MAI5B5mC,EAAO8/B,UAAU95B,WAMbqK,MAAO,WAEH,GAA8B,OAA1B1Q,KAAK4mC,iBAAT,CAMA,GAAIngB,GAAQzmB,IAEZ,IAAIA,KAAKwa,KAAKkS,OAAOkS,UACrB,CACI5+B,KAAK4mC,iBAAmB,SAAUza,GAC9B,MAAO1F,GAAMygB,cAAc/a,IAG/BnsB,KAAK6mC,iBAAmB,SAAU1a,GAC9B,MAAO1F,GAAM0gB,cAAchb,IAG/BnsB,KAAK8mC,eAAiB,SAAU3a,GAC5B,MAAO1F,GAAM2gB,YAAYjb,IAG7BnsB,KAAK+mC,qBAAuB,SAAU5a,GAClC,MAAO1F,GAAM4gB,kBAAkBlb,IAGnCnsB,KAAKgnC,gBAAkB,SAAU7a,GAC7B,MAAO1F,GAAM6gB,aAAanb,IAG9BnsB,KAAKinC,iBAAmB,SAAU9a,GAC9B,MAAO1F,GAAM8gB,cAAcpb,GAG/B,IAAIb,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOe,iBAAiB,gBAAiBrsB,KAAK4mC,kBAAkB,GAChEtb,EAAOe,iBAAiB,gBAAiBrsB,KAAK6mC,kBAAkB,GAChEvb,EAAOe,iBAAiB,cAAersB,KAAK8mC,gBAAgB,GAG5Dxb,EAAOe,iBAAiB,cAAersB,KAAK4mC,kBAAkB,GAC9Dtb,EAAOe,iBAAiB,cAAersB,KAAK6mC,kBAAkB,GAC9Dvb,EAAOe,iBAAiB,YAAarsB,KAAK8mC,gBAAgB,GAE1Dxb,EAAOpO,MAAM,uBAAyB,OACtCoO,EAAOpO,MAAM,oBAAsB,OAE9Bld,KAAKwa,KAAKkS,OAAOmO,WAElB9yB,OAAOskB,iBAAiB,cAAersB,KAAK+mC,sBAAsB,GAClEzb,EAAOe,iBAAiB,gBAAiBrsB,KAAKinC,kBAAkB,GAChE3b,EAAOe,iBAAiB,eAAgBrsB,KAAKgnC,iBAAiB,GAG9Dj/B,OAAOskB,iBAAiB,YAAarsB,KAAK+mC,sBAAsB,GAChEzb,EAAOe,iBAAiB,cAAersB,KAAKinC,kBAAkB,GAC9D3b,EAAOe,iBAAiB,aAAcrsB,KAAKgnC,iBAAiB,OAYxEE,cAAe,SAAU/a,GAErBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGNj7B,KAAKymC,qBAELzmC,KAAKymC,oBAAoB3/B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,UAKjC5Q,EAAMgV,WAAahV,EAAMwV,UAEC,UAAtBxV,EAAMqb,aAAiD,IAAtBrb,EAAMqb,YAEvCxnC,KAAK+f,MAAM0e,aAAa/tB,MAAMyb,GAI9BnsB,KAAK+f,MAAMihB,aAAa7U,KAUhCgb,cAAe,SAAUhb,GAErBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGNj7B,KAAK0mC,qBAEL1mC,KAAK0mC,oBAAoB5/B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,UAKjC5Q,EAAMgV,WAAahV,EAAMwV,UAEC,UAAtBxV,EAAMqb,aAAiD,IAAtBrb,EAAMqb,YAEvCxnC,KAAK+f,MAAM0e,aAAa2C,KAAKjV,GAI7BnsB,KAAK+f,MAAMmhB,cAAc/U,KAUjCib,YAAa,SAAUjb,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGNj7B,KAAK2mC,mBAEL3mC,KAAK2mC,kBAAkB7/B,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,UAKjC5Q,EAAMgV,WAAahV,EAAMwV,UAEC,UAAtBxV,EAAMqb,aAAiD,IAAtBrb,EAAMqb,YAEvCxnC,KAAK+f,MAAM0e,aAAaxC,KAAK9P,GAI7BnsB,KAAK+f,MAAMshB,YAAYlV,KAW/Bkb,kBAAmB,SAAUlb,GAEzB,GAA2B,UAAtBA,EAAMqb,aAAiD,IAAtBrb,EAAMqb,aAAgCxnC,KAAK+f,MAAM0e,aAAauG,WAKpG,CACI,GAAIlc,GAAU9oB,KAAK+f,MAAM0hB,yBAAyBtV,EAAMgV,WAEpDrY,IAAWA,EAAQkc,YAEnBhlC,KAAKonC,YAAYjb,OARrBnsB,MAAKonC,YAAYjb,IAoBzBmb,aAAc,SAAUnb,GASpB,GAPAnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGgB,UAAtB9O,EAAMqb,aAAiD,IAAtBrb,EAAMqb,YAEvCxnC,KAAK+f,MAAM0e,aAAauG,YAAa,MAGzC,CACI,GAAIlc,GAAU9oB,KAAK+f,MAAM0hB,yBAAyBtV,EAAMgV,WAEpDrY,KAEAA,EAAQkc,YAAa,GAIzBhlC,KAAK+f,MAAM+H,MAAM6a,kBAEjB3iC,KAAK+f,MAAM+H,MAAM6a,iBAAiB77B,KAAK9G,KAAK+f,MAAM+H,MAAM/E,gBAAiBoJ,GAGxEnsB,KAAK+f,MAAMgd,SAAY/8B,KAAK+8B,SAK7B/8B,KAAK+f,MAAM+H,MAAMob,gBAEjB/W,EAAkB,WAAI,EAElBrD,EAEAA,EAAQmT,KAAK9P,GAIbnsB,KAAK+f,MAAM0e,aAAaxC,KAAK9P,KAYzCob,cAAe,SAAUpb,GASrB,GAPAnsB,KAAKmsB,MAAQA,EAETnsB,KAAK8iC,SAEL3W,EAAM8O,iBAGgB,UAAtB9O,EAAMqb,aAAiD,IAAtBrb,EAAMqb,YAEvCxnC,KAAK+f,MAAM0e,aAAauG,YAAa,MAGzC,CACI,GAAIlc,GAAU9oB,KAAK+f,MAAM0hB,yBAAyBtV,EAAMgV,WAEpDrY,KAEAA,EAAQkc,YAAa,GAIzBhlC,KAAK+f,MAAM+H,MAAM8a,mBAEjB5iC,KAAK+f,MAAM+H,MAAM8a,kBAAkB97B,KAAK9G,KAAK+f,MAAM+H,MAAM/E,gBAAiBoJ,IASlF8P,KAAM,WAEF,GAAI3Q,GAAStrB,KAAKwa,KAAK8Q,MAEvBA,GAAOiC,oBAAoB,gBAAiBvtB,KAAK4mC,kBAAkB,GACnEtb,EAAOiC,oBAAoB,gBAAiBvtB,KAAK6mC,kBAAkB,GACnEvb,EAAOiC,oBAAoB,cAAevtB,KAAK8mC,gBAAgB,GAG/Dxb,EAAOiC,oBAAoB,cAAevtB,KAAK4mC,kBAAkB,GACjEtb,EAAOiC,oBAAoB,cAAevtB,KAAK6mC,kBAAkB,GACjEvb,EAAOiC,oBAAoB,YAAavtB,KAAK8mC,gBAAgB,GAE7D/+B,OAAOwlB,oBAAoB,cAAevtB,KAAK+mC,sBAAsB,GACrEzb,EAAOiC,oBAAoB,gBAAiBvtB,KAAKinC,kBAAkB,GACnE3b,EAAOiC,oBAAoB,eAAgBvtB,KAAKgnC,iBAAiB,GAGjEj/B,OAAOwlB,oBAAoB,YAAavtB,KAAK+mC,sBAAsB,GACnEzb,EAAOiC,oBAAoB,cAAevtB,KAAKinC,kBAAkB,GACjE3b,EAAOiC,oBAAoB,aAAcvtB,KAAKgnC,iBAAiB,KAMvE3mC,EAAO8/B,UAAU95B,UAAU8B,YAAc9H,EAAO8/B,UAgChD9/B,EAAOonC,aAAe,SAAUje,EAAQke,GAKpC1nC,KAAKwpB,OAASA,EAKdxpB,KAAKwa,KAAOgP,EAAOhP,KAMnBxa,KAAKmsB,MAAQ,KAMbnsB,KAAK2nC,QAAS,EAMd3nC,KAAK4nC,MAAO,EAMZ5nC,KAAK6nC,SAAW,EAMhB7nC,KAAK8nC,OAAS,EAQd9nC,KAAK+nC,QAAU,EAQf/nC,KAAKgoC,QAAS,EAQdhoC,KAAKioC,UAAW,EAQhBjoC,KAAKkoC,SAAU,EAMfloC,KAAKuJ,MAAQ,EAKbvJ,KAAK0nC,WAAaA,EAQlB1nC,KAAK++B,OAAS,GAAI1+B,GAAO+a,OAQzBpb,KAAKg/B,KAAO,GAAI3+B,GAAO+a,OAQvBpb,KAAKmoC,QAAU,GAAI9nC,GAAO+a,QAI9B/a,EAAOonC,aAAaphC,WAWhBqK,MAAO,SAAUyb,EAAO5iB,GAEhBvJ,KAAK2nC,SAKT3nC,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,EACZ5nC,KAAK6nC,SAAW7nC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAK+nC,QAAU,EAEf/nC,KAAKmsB,MAAQA,EACbnsB,KAAKuJ,MAAQA,EAET4iB,IAEAnsB,KAAKgoC,OAAS7b,EAAM6b,OACpBhoC,KAAKioC,SAAW9b,EAAM8b,SACtBjoC,KAAKkoC,QAAU/b,EAAM+b,SAGzBloC,KAAK++B,OAAOlgB,SAAS7e,KAAMuJ,KAa/B0yB,KAAM,SAAU9P,EAAO5iB,GAEfvJ,KAAK4nC,OAKT5nC,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,EACZ5nC,KAAK8nC,OAAS9nC,KAAKwa,KAAKmE,KAAKA,KAE7B3e,KAAKmsB,MAAQA,EACbnsB,KAAKuJ,MAAQA,EAET4iB,IAEAnsB,KAAKgoC,OAAS7b,EAAM6b,OACpBhoC,KAAKioC,SAAW9b,EAAM8b,SACtBjoC,KAAKkoC,QAAU/b,EAAM+b,SAGzBloC,KAAKg/B,KAAKngB,SAAS7e,KAAMuJ,KAW7B6+B,SAAU,SAAU7+B,GAEhBvJ,KAAKuJ,MAAQA,EAEbvJ,KAAKmoC,QAAQtpB,SAAS7e,KAAMuJ,IAYhC8+B,YAAa,SAAUxsB,GAInB,MAFAA,GAAWA,GAAY,IAEf7b,KAAK2nC,QAAW3nC,KAAK6nC,SAAWhsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MAYvE2pB,aAAc,SAAUzsB,GAIpB,MAFAA,GAAWA,GAAY,IAEf7b,KAAK4nC,MAAS5nC,KAAK8nC,OAASjsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MASnEe,MAAO,WAEH1f,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,EAEZ5nC,KAAK6nC,SAAW7nC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAK+nC,QAAU,EAEf/nC,KAAKgoC,QAAS,EACdhoC,KAAKioC,UAAW,EAChBjoC,KAAKkoC,SAAU,GAUnBpkB,QAAS,WAEL9jB,KAAK++B,OAAOvY,UACZxmB,KAAKg/B,KAAKxY,UACVxmB,KAAKmoC,QAAQ3hB,UAEbxmB,KAAKwpB,OAAS,KACdxpB,KAAKwa,KAAO,OAMpBna,EAAOonC,aAAaphC,UAAU8B,YAAc9H,EAAOonC,aAUnDlgC,OAAO2E,eAAe7L,EAAOonC,aAAaphC,UAAW,YAEjD2F,IAAK,WAED,MAAIhM,MAAK4nC,KAEE,GAGJ5nC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK6nC,YAqB1CxnC,EAAOw/B,QAAU,SAAUrlB,EAAM7F,EAAI4zB,GAKjCvoC,KAAKwa,KAAOA,EAKZxa,KAAK2U,GAAKA,EAMV3U,KAAKkI,KAAO7H,EAAO+B,QAMnBpC,KAAKwqB,QAAS,EAMdxqB,KAAKmhC,WAAa,EAMlBnhC,KAAK2hC,UAAY,KAKjB3hC,KAAKuoC,YAAcA,GAAgBloC,EAAOy/B,YAAYC,OAAS1/B,EAAOy/B,YAAY0I,QAMlFxoC,KAAKgH,OAAS,KASdhH,KAAK+iC,OAAS,KAWd/iC,KAAKilC,WAAa,GAAI5kC,GAAOonC,aAAaznC,KAAMK,EAAOw/B,QAAQ+D,aAa/D5jC,KAAKyoC,aAAe,GAAIpoC,GAAOonC,aAAaznC,KAAMK,EAAOw/B,QAAQgE,eAajE7jC,KAAKklC,YAAc,GAAI7kC,GAAOonC,aAAaznC,KAAMK,EAAOw/B,QAAQiE,cAahE9jC,KAAK0oC,WAAa,GAAIroC,GAAOonC,aAAaznC,KAAMK,EAAOw/B,QAAQkE,aAa/D/jC,KAAK2oC,cAAgB,GAAItoC,GAAOonC,aAAaznC,KAAMK,EAAOw/B,QAAQmE,gBAalEhkC,KAAK4oC,aAAe,GAAIvoC,GAAOonC,aAAaznC,KAAMK,EAAOw/B,QAAQgJ,eAOjE7oC,KAAK8oC,WAAY,EAMjB9oC,KAAK+oC,YAML/oC,KAAKgpC,UAAY,EAMjBhpC,KAAKipC,aAAc,EAKnBjpC,KAAKglC,YAAa,EAKlBhlC,KAAKkpC,QAAU,GAKflpC,KAAKmpC,QAAU,GAKfnpC,KAAKopC,MAAQ,GAKbppC,KAAKqpC,MAAQ,GAKbrpC,KAAKspC,QAAU,GAKftpC,KAAKupC,QAAU,GAMfvpC,KAAKwpC,aAAe,EAMpBxpC,KAAKypC,aAAe,EAMpBzpC,KAAK0pC,UAAY,EAMjB1pC,KAAK2pC,UAAY,EAMjB3pC,KAAKiG,EAAI,GAMTjG,KAAKyM,EAAI,GAKTzM,KAAK4pC,QAAkB,IAAPj1B,EAQhB3U,KAAK2nC,QAAS,EAQd3nC,KAAK4nC,MAAO,EAMZ5nC,KAAK6nC,SAAW,EAMhB7nC,KAAK8nC,OAAS,EAMd9nC,KAAK6pC,gBAAkB,EAMvB7pC,KAAK8pC,aAAe,EAMpB9pC,KAAK+pC,iBAAmB5xB,OAAOC,UAM/BpY,KAAKgqC,aAAe,KAWpBhqC,KAAKiqC,yBAMLjqC,KAAK6kB,QAAS,EAMd7kB,KAAKynB,OAAQ,EAKbznB,KAAKuZ,SAAW,GAAIlZ,GAAO2M,MAK3BhN,KAAKkqC,aAAe,GAAI7pC,GAAO2M,MAK/BhN,KAAKmqC,WAAa,GAAI9pC,GAAO2M,MAO7BhN,KAAKm9B,OAAS,GAAI98B,GAAOmM,OAAO,EAAG,EAAG,IAOtCxM,KAAKoqC,kBAAoB,KAQzBpqC,KAAKqqC,wBAA0B,MASnChqC,EAAOw/B,QAAQ8D,UAAY,EAO3BtjC,EAAOw/B,QAAQ+D,YAAc,EAO7BvjC,EAAOw/B,QAAQiE,aAAe,EAO9BzjC,EAAOw/B,QAAQgE,cAAgB,EAQ/BxjC,EAAOw/B,QAAQkE,YAAc,EAQ7B1jC,EAAOw/B,QAAQmE,eAAiB,GAOhC3jC,EAAOw/B,QAAQgJ,cAAgB,GAE/BxoC,EAAOw/B,QAAQx5B,WAQXikC,aAAc,WAEVtqC,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,EAER5nC,KAAK4pC,UAEL5pC,KAAKilC,WAAWvlB,QAChB1f,KAAKyoC,aAAa/oB,QAClB1f,KAAKklC,YAAYxlB,QACjB1f,KAAK0oC,WAAWhpB,QAChB1f,KAAK2oC,cAAcjpB,QACnB1f,KAAK4oC,aAAalpB,UAa1B6qB,mBAAoB,SAAUC,EAASre,GAI/B9rB,EAAOw/B,QAAQ+D,YAAc4G,GAE7BxqC,KAAKilC,WAAWv0B,MAAMyb,GAGtB9rB,EAAOw/B,QAAQiE,aAAe0G,GAE9BxqC,KAAKklC,YAAYx0B,MAAMyb,GAGvB9rB,EAAOw/B,QAAQgE,cAAgB2G,GAE/BxqC,KAAKyoC,aAAa/3B,MAAMyb,GAGxB9rB,EAAOw/B,QAAQkE,YAAcyG,GAE7BxqC,KAAK0oC,WAAWh4B,MAAMyb,GAGtB9rB,EAAOw/B,QAAQmE,eAAiBwG,GAEhCxqC,KAAK2oC,cAAcj4B,MAAMyb,GAGzB9rB,EAAOw/B,QAAQgJ,cAAgB2B,GAE/BxqC,KAAK4oC,aAAal4B,MAAMyb,IAahCse,iBAAkB,SAAU1H,EAAQ5W,GAI5B4W,IAAW1iC,EAAO4/B,MAAM2D,aAExB5jC,KAAKilC,WAAWhJ,KAAK9P,GAGrB4W,IAAW1iC,EAAO4/B,MAAM6D,cAExB9jC,KAAKklC,YAAYjJ,KAAK9P,GAGtB4W,IAAW1iC,EAAO4/B,MAAM4D,eAExB7jC,KAAKyoC,aAAaxM,KAAK9P,GAGvB4W,IAAW1iC,EAAO4/B,MAAM8D,aAExB/jC,KAAK0oC,WAAWzM,KAAK9P,GAGrB4W,IAAW1iC,EAAO4/B,MAAM+D,gBAExBhkC,KAAK2oC,cAAc1M,KAAK9P,GAGb,IAAX4W,GAEA/iC,KAAK4oC,aAAa3M,KAAK9P,IAa/Bue,cAAe,SAAUve,GAErBnsB,KAAK+iC,OAAS5W,EAAM4W,MAEpB,IAAI4H,GAAgD,SAAxCxe,EAAMjkB,KAAK0iC,cAAcxgC,OAAO,GAEtBV,UAAlByiB,EAAMqe,QAEFG,EAEA3qC,KAAKuqC,mBAAmBpe,EAAMqe,QAASre,GAIvCnsB,KAAKyqC,iBAAiBte,EAAM4W,OAAQ5W,GAMpCwe,EAEA3qC,KAAKilC,WAAWv0B,MAAMyb,IAItBnsB,KAAKilC,WAAWhJ,KAAK9P,GACrBnsB,KAAKklC,YAAYjJ,KAAK9P,IAQR,IAAlBA,EAAMqe,SAAiBre,EAAM+b,SAAWloC,KAAKilC,WAAW0C,SAExD3nC,KAAKilC,WAAWhJ,KAAK9P,GACrBnsB,KAAKklC,YAAYx0B,MAAMyb,IAG3BnsB,KAAK4nC,MAAO,EACZ5nC,KAAK2nC,QAAS,GAEV3nC,KAAKilC,WAAW0C,QAAU3nC,KAAKklC,YAAYyC,QAAU3nC,KAAKyoC,aAAad,QAAU3nC,KAAK0oC,WAAWf,QAAU3nC,KAAK2oC,cAAchB,QAAU3nC,KAAK4oC,aAAajB,UAE1J3nC,KAAK4nC,MAAO,EACZ5nC,KAAK2nC,QAAS,IAUtBj3B,MAAO,SAAUyb,GAEb,GAAIpM,GAAQ/f,KAAKwa,KAAKuF,KA2DtB,OAzDIoM,GAAiB,YAEjBnsB,KAAK2hC,UAAYxV,EAAMwV,WAG3B3hC,KAAKmhC,WAAahV,EAAMgV,WACxBnhC,KAAKgH,OAASmlB,EAAMnlB,OAEhBhH,KAAK4pC,QAEL5pC,KAAK0qC,cAAcve,IAInBnsB,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,GAGhB5nC,KAAK6kB,QAAS,EACd7kB,KAAKglC,YAAa,EAClBhlC,KAAKynB,OAAQ,EAEbznB,KAAK+oC,YACL/oC,KAAKoqC,kBAAoB,KACzBpqC,KAAKqqC,wBAA0B,KAG/BrqC,KAAK+pC,iBAAmB/pC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK6nC,SACnD7nC,KAAK6nC,SAAW7nC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAK8oC,WAAY,EAGjB9oC,KAAKohC,KAAKjV,GAAO,GAGjBnsB,KAAKkqC,aAAa18B,MAAMxN,KAAKiG,EAAGjG,KAAKyM,IAEjCsT,EAAMid,qBAAuB38B,EAAOq5B,MAAMgG,uBAC1C3f,EAAMid,qBAAuB38B,EAAOq5B,MAAMuD,qBACzCld,EAAMid,qBAAuB38B,EAAOq5B,MAAMiG,uBAAuD,IAA9B5f,EAAM8qB,uBAE1E9qB,EAAM9Z,EAAIjG,KAAKiG,EACf8Z,EAAMtT,EAAIzM,KAAKyM,EACfsT,EAAMxG,SAAS/L,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GAClCsT,EAAMgf,OAAOlgB,SAAS7e,KAAMmsB,GAC5BpM,EAAMghB,WAAW/gC,KAAKiG,EAAGjG,KAAKyM,IAGlCzM,KAAKipC,aAAc,EAEnBjpC,KAAK8pC,eAEqB,OAAtB9pC,KAAKgqC,cAELhqC,KAAKgqC,aAAac,gBAAgB9qC,MAG/BA,MAQXue,OAAQ,WAEJ,GAAIwB,GAAQ/f,KAAKwa,KAAKuF,KAElB/f,MAAK6kB,SAGD7kB,KAAKynB,QAED1H,EAAMqf,iBAAiBxK,MAAQ,GAE/B50B,KAAK+qC,2BAA0B,GAGnC/qC,KAAKynB,OAAQ,GAGbznB,KAAK8oC,aAAc,GAAS9oC,KAAK6b,UAAYkE,EAAMwd,YAE/Cxd,EAAMid,qBAAuB38B,EAAOq5B,MAAMgG,uBAC1C3f,EAAMid,qBAAuB38B,EAAOq5B,MAAMuD,qBACzCld,EAAMid,qBAAuB38B,EAAOq5B,MAAMiG,uBAAuD,IAA9B5f,EAAM8qB,sBAE1E9qB,EAAMmf,OAAOrgB,SAAS7e,MAG1BA,KAAK8oC,WAAY,GAIjB/oB,EAAM2d,sBAAwB19B,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAKgpC,YAE1DhpC,KAAKgpC,UAAYhpC,KAAKwa,KAAKmE,KAAKA,KAAOoB,EAAM4d,WAE7C39B,KAAK+oC,SAASn2B,MACV3M,EAAGjG,KAAKuZ,SAAStT,EACjBwG,EAAGzM,KAAKuZ,SAAS9M,IAGjBzM,KAAK+oC,SAASlhC,OAASkY,EAAM6d,aAE7B59B,KAAK+oC,SAASiC,WAc9B5J,KAAM,SAAUjV,EAAO8e,GAEnB,GAAIlrB,GAAQ/f,KAAKwa,KAAKuF,KAEtB,KAAIA,EAAMmrB,WAAV,CAyDA,GApDkBxhC,SAAduhC,IAA2BA,GAAY,GAEtBvhC,SAAjByiB,EAAM4W,SAEN/iC,KAAK+iC,OAAS5W,EAAM4W,QAGpBkI,GAAajrC,KAAK4pC,SAElB5pC,KAAK0qC,cAAcve,GAGvBnsB,KAAKkpC,QAAU/c,EAAM+c,QACrBlpC,KAAKmpC,QAAUhd,EAAMgd,QAErBnpC,KAAKopC,MAAQjd,EAAMid,MACnBppC,KAAKqpC,MAAQld,EAAMkd,MAEnBrpC,KAAKspC,QAAUnd,EAAMmd,QACrBtpC,KAAKupC,QAAUpd,EAAMod,QAEjBvpC,KAAK4pC,SAAW7pB,EAAM+H,MAAMmb,SAAWgI,IAEvCjrC,KAAKwpC,aAAerd,EAAMud,WAAavd,EAAMgf,cAAgBhf,EAAMif,iBAAmB,EACtFprC,KAAKypC,aAAetd,EAAMwd,WAAaxd,EAAMkf,cAAgBlf,EAAMmf,iBAAmB,EAEtFtrC,KAAK0pC,WAAa1pC,KAAKwpC,aACvBxpC,KAAK2pC,WAAa3pC,KAAKypC,cAG3BzpC,KAAKiG,GAAKjG,KAAKopC,MAAQppC,KAAKwa,KAAK3F,MAAMzG,OAAOnI,GAAK8Z,EAAMlL,MAAM5O,EAC/DjG,KAAKyM,GAAKzM,KAAKqpC,MAAQrpC,KAAKwa,KAAK3F,MAAMzG,OAAO3B,GAAKsT,EAAMlL,MAAMpI,EAE/DzM,KAAKuZ,SAAS/L,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GACjCzM,KAAKm9B,OAAOl3B,EAAIjG,KAAKiG,EACrBjG,KAAKm9B,OAAO1wB,EAAIzM,KAAKyM,GAEjBsT,EAAMid,qBAAuB38B,EAAOq5B,MAAMgG,uBAC1C3f,EAAMid,qBAAuB38B,EAAOq5B,MAAMuD,qBACzCld,EAAMid,qBAAuB38B,EAAOq5B,MAAMiG,uBAAuD,IAA9B5f,EAAM8qB,uBAE1E9qB,EAAMye,cAAgBx+B,KACtB+f,EAAM9Z,EAAIjG,KAAKiG,EACf8Z,EAAMtT,EAAIzM,KAAKyM,EACfsT,EAAMxG,SAAS/L,MAAMuS,EAAM9Z,EAAG8Z,EAAMtT,GACpCsT,EAAMod,OAAOl3B,EAAI8Z,EAAM9Z,EACvB8Z,EAAMod,OAAO1wB,EAAIsT,EAAMtT,GAG3BzM,KAAKglC,WAAahlC,KAAKwa,KAAK3F,MAAM8F,OAAO3M,SAAShO,KAAKopC,MAAOppC,KAAKqpC,OAG/DrpC,KAAKwa,KAAKqG,OAEV,MAAO7gB,KAKX,KAFA,GAAI8H,GAAIiY,EAAM4c,cAAc90B,OAErBC,KAEHiY,EAAM4c,cAAc70B,GAAGurB,SAASvsB,KAAKiZ,EAAM4c,cAAc70B,GAAGuc,QAASrkB,KAAMA,KAAKiG,EAAGjG,KAAKyM,EAAGw+B,EAgB/F,OAZ0B,QAAtBjrC,KAAKgqC,cAAyBhqC,KAAKgqC,aAAauB,aAAc,EAE1DvrC,KAAKgqC,aAAazrB,OAAOve,SAAU,IAEnCA,KAAKgqC,aAAe,MAGnBjqB,EAAMqf,iBAAiBxK,MAAQ,GAEpC50B,KAAK+qC,0BAA0BE,GAG5BjrC,OAYX+qC,0BAA2B,SAAUE,GAGjC,GAAIO,GAAuB,EACvBC,EAAyB,GACzBC,EAAkB,KAKlBC,EAAc3rC,KAAKwa,KAAKuF,MAAMqf,iBAAiBwM,KAInD,KAFA5rC,KAAKiqC,yBAEE0B,GAGHA,EAAYE,SAAU,EAElBF,EAAYG,cAAcL,EAAwBD,GAAsB,KAGxEG,EAAYE,SAAU,GAEjBZ,GAAaU,EAAYI,iBAAiB/rC,MAAM,KAC/CirC,GAAaU,EAAYK,iBAAiBhsC,MAAM,MAElDwrC,EAAuBG,EAAY5U,OAAOnD,cAC1C6X,EAAyBE,EAAYM,WACrCP,EAAkBC,EAClB3rC,KAAKiqC,sBAAsBr3B,KAAK+4B,KAIxCA,EAAc3rC,KAAKwa,KAAKuF,MAAMqf,iBAAiB9N,IASnD,KAFAqa,EAAc3rC,KAAKwa,KAAKuF,MAAMqf,iBAAiBwM,MAExCD,IAEEA,EAAYE,SACbF,EAAYG,cAAcL,EAAwBD,GAAsB,KAEnEP,GAAaU,EAAYI,iBAAiB/rC,MAAM,KAC/CirC,GAAaU,EAAYK,iBAAiBhsC,MAAM,MAElDwrC,EAAuBG,EAAY5U,OAAOnD,cAC1C6X,EAAyBE,EAAYM,WACrCP,EAAkBC,EAClB3rC,KAAKiqC,sBAAsBr3B,KAAK+4B,IAIxCA,EAAc3rC,KAAKwa,KAAKuF,MAAMqf,iBAAiB9N,IAUnD,OAPItxB,MAAKwa,KAAKuF,MAAM6c,yBAEhB8O,EAAkB1rC,KAAKwa,KAAKuF,MAAM6c,uBAAuB91B,KAAK9G,KAAKwa,KAAKuF,MAAM8c,8BAA+B78B,KAAMA,KAAKiqC,sBAAuByB,IAGnJ1rC,KAAKksC,WAAWR,GAAiB,GAEH,OAAtB1rC,KAAKgqC,cAgBjBkC,WAAY,SAAUC,EAAW1c,GAEd/lB,SAAX+lB,IAAwBA,GAAS,GAGnB,OAAd0c,EAGInsC,KAAKgqC,eAELhqC,KAAKgqC,aAAaoC,mBAAmBpsC,KAAMyvB,GAC3CzvB,KAAKgqC,aAAe,MAKE,OAAtBhqC,KAAKgqC,cAGLhqC,KAAKgqC,aAAemC,EACpBA,EAAUE,oBAAoBrsC,KAAMyvB,IAKhCzvB,KAAKgqC,eAAiBmC,EAGlBA,EAAU5tB,OAAOve,SAAU,IAE3BA,KAAKgqC,aAAe,OAMxBhqC,KAAKgqC,aAAaoC,mBAAmBpsC,KAAMyvB,GAG3CzvB,KAAKgqC,aAAemC,EACpBnsC,KAAKgqC,aAAaqC,oBAAoBrsC,KAAMyvB,KAa5D6c,MAAO,SAAUngB,GAEbnsB,KAAKglC,YAAa,EAClBhlC,KAAKohC,KAAKjV,GAAO,IAUrB8P,KAAM,SAAU9P,GAEZ,GAAIpM,GAAQ/f,KAAKwa,KAAKuF,KAEtB,OAAI/f,MAAKipC,aAAejpC,KAAKglC,eAEzB7Y,GAAM8O,kBAIVj7B,KAAK8nC,OAAS9nC,KAAKwa,KAAKmE,KAAKA,MAEzBoB,EAAMid,qBAAuB38B,EAAOq5B,MAAMgG,uBAC1C3f,EAAMid,qBAAuB38B,EAAOq5B,MAAMuD,qBACzCld,EAAMid,qBAAuB38B,EAAOq5B,MAAMiG,uBAAuD,IAA9B5f,EAAM8qB,uBAE1E9qB,EAAMif,KAAKngB,SAAS7e,KAAMmsB,GAGtBnsB,KAAK6b,UAAY,GAAK7b,KAAK6b,UAAYkE,EAAMsd,UAGzCr9B,KAAK8nC,OAAS9nC,KAAK6pC,gBAAkB9pB,EAAMud,cAG3Cvd,EAAMkf,MAAMpgB,SAAS7e,MAAM,GAK3B+f,EAAMkf,MAAMpgB,SAAS7e,MAAM,GAG/BA,KAAK6pC,gBAAkB7pC,KAAK8nC,SAIhC9nC,KAAK4pC,QAEL5pC,KAAK0qC,cAAcve,IAInBnsB,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,GAIZ5nC,KAAK2U,GAAK,IAEV3U,KAAK6kB,QAAS,GAGlB7kB,KAAKglC,WAAahlC,KAAKwa,KAAK3F,MAAM8F,OAAO3M,SAASme,EAAMid,MAAOjd,EAAMkd,OACrErpC,KAAK2hC,UAAY,KACjB3hC,KAAKmhC,WAAa,KAElBnhC,KAAKmqC,WAAW38B,MAAMxN,KAAKiG,EAAGjG,KAAKyM,GAE/BzM,KAAK4pC,WAAY,GAEjB7pB,EAAMwsB,kBAGVxsB,EAAMqf,iBAAiB5L,QAAQ,mBAAoBxzB,MAE/CA,KAAKoqC,oBAELpqC,KAAKqqC,wBAA0BrqC,KAAKgqC,cAGxChqC,KAAKgqC,aAAe,KAEbhqC,OAYXqoC,YAAa,SAAUxsB,GAInB,MAFAA,GAAWA,GAAY7b,KAAKwa,KAAKuF,MAAMyd,gBAE/Bx9B,KAAK2nC,UAAW,GAAS3nC,KAAK6nC,SAAWhsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MAYhF2pB,aAAc,SAAUzsB,GAIpB,MAFAA,GAAWA,GAAY7b,KAAKwa,KAAKuF,MAAM0d,iBAE/Bz9B,KAAK4nC,MAAS5nC,KAAK8nC,OAASjsB,EAAY7b,KAAKwa,KAAKmE,KAAKA,MAqBnE6tB,mBAAoB,SAAUphC,EAAMioB,EAAUtQ,EAAiB0pB,GAE3D,GAAKzsC,KAAK2nC,OAAV,CAOA,IAAK,GAFD+E,GAAe1sC,KAAKoqC,kBAAoBpqC,KAAKoqC,sBAExCtiC,EAAI,EAAGA,EAAI4kC,EAAY7kC,OAAQC,IAEpC,GAAI4kC,EAAY5kC,GAAGsD,OAASA,EAC5B,CACIshC,EAAYvpB,OAAOrb,EAAG,EACtB,OAIR4kC,EAAY95B,MACRxH,KAAMA,EACN4+B,aAAchqC,KAAKgqC,aACnB3W,SAAUA,EACVtQ,gBAAiBA,EACjB0pB,aAAcA,MAUtBjK,wBAAyB,WAErB,GAAIkK,GAAc1sC,KAAKoqC,iBAEvB,IAAKsC,EAAL,CAKA,IAAK,GAAI5kC,GAAI,EAAGA,EAAI4kC,EAAY7kC,OAAQC,IACxC,CACI,GAAI6kC,GAAaD,EAAY5kC,EAEzB6kC,GAAW3C,eAAiBhqC,KAAKqqC,yBAEjCsC,EAAWtZ,SAASpsB,MAAM0lC,EAAW5pB,gBAAiB4pB,EAAWF,cAIzEzsC,KAAKoqC,kBAAoB,KACzBpqC,KAAKqqC,wBAA0B,OAQnC3qB,MAAO,WAEC1f,KAAK4pC,WAAY,IAEjB5pC,KAAK6kB,QAAS,GAGlB7kB,KAAK2hC,UAAY,KACjB3hC,KAAKmhC,WAAa,KAClBnhC,KAAKynB,OAAQ,EACbznB,KAAK8pC,aAAe,EACpB9pC,KAAK8oC,WAAY,EACjB9oC,KAAK+oC,SAASlhC,OAAS,EACvB7H,KAAKipC,aAAc,EAEnBjpC,KAAKsqC,eAEDtqC,KAAKgqC,cAELhqC,KAAKgqC,aAAa4C,iBAAiB5sC,MAGvCA,KAAKgqC,aAAe,MAQxB6C,cAAe,WAEX7sC,KAAK0pC,UAAY,EACjB1pC,KAAK2pC,UAAY,IAMzBtpC,EAAOw/B,QAAQx5B,UAAU8B,YAAc9H,EAAOw/B,QAW9Ct4B,OAAO2E,eAAe7L,EAAOw/B,QAAQx5B,UAAW,YAE5C2F,IAAK,WAED,MAAIhM,MAAK4nC,KAEE,GAGJ5nC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK6nC,YAY1CtgC,OAAO2E,eAAe7L,EAAOw/B,QAAQx5B,UAAW,UAE5C2F,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAMmC,OAAO3W,EAAIjG,KAAKiG,KAY/CsB,OAAO2E,eAAe7L,EAAOw/B,QAAQx5B,UAAW,UAE5C2F,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAMmC,OAAOnQ,EAAIzM,KAAKyM,KAgB/CpM,EAAOy/B,aASHC,OAAQ,EAMRyI,QAAS,GAmBbnoC,EAAO6/B,MAAQ,SAAU1lB,GAKrBxa,KAAKwa,KAAOA,EAOZxa,KAAK+8B,SAAU,EASf/8B,KAAK8sC,sBAKL9sC,KAAK+iB,gBAAkB/iB,KAAKwa,KAK5Bxa,KAAK+sC,mBAAqB,KAK1B/sC,KAAKgtC,kBAAoB,KAKzBhtC,KAAKitC,iBAAmB,KAKxBjtC,KAAKktC,mBAAqB,KAK1BltC,KAAKmtC,mBAAqB,KAK1BntC,KAAKotC,oBAAsB,KAM3BptC,KAAKi7B,gBAAiB,EAMtBj7B,KAAKmsB,MAAQ,KAMbnsB,KAAKqtC,cAAgB,KAMrBrtC,KAAKstC,aAAe,KAMpBttC,KAAKutC,YAAc,KAMnBvtC,KAAKwtC,cAAgB,KAMrBxtC,KAAKytC,cAAgB,KAMrBztC,KAAK0tC,eAAiB,KAMtB1tC,KAAKstC,aAAe,MAIxBjtC,EAAO6/B,MAAM75B,WAMTqK,MAAO,WAEH,GAA2B,OAAvB1Q,KAAKqtC,cAAT,CAMA,GAAI5mB,GAAQzmB,IAERA,MAAKwa,KAAKkS,OAAOiS,QAEjB3+B,KAAKqtC,cAAgB,SAAUlhB,GAC3B,MAAO1F,GAAMknB,aAAaxhB,IAG9BnsB,KAAKstC,aAAe,SAAUnhB,GAC1B,MAAO1F,GAAMmnB,YAAYzhB,IAG7BnsB,KAAKutC,YAAc,SAAUphB,GACzB,MAAO1F,GAAMonB,WAAW1hB,IAG5BnsB,KAAKwtC,cAAgB,SAAUrhB,GAC3B,MAAO1F,GAAMqnB,aAAa3hB,IAG9BnsB,KAAKytC,cAAgB,SAAUthB,GAC3B,MAAO1F,GAAMsnB,aAAa5hB,IAG9BnsB,KAAK0tC,eAAiB,SAAUvhB,GAC5B,MAAO1F,GAAMunB,cAAc7hB,IAG/BnsB,KAAKwa,KAAK8Q,OAAOe,iBAAiB,aAAcrsB,KAAKqtC,eAAe,GACpErtC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,YAAarsB,KAAKstC,cAAc,GAClEttC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,WAAYrsB,KAAKutC,aAAa,GAChEvtC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,cAAersB,KAAK0tC,gBAAgB,GAEjE1tC,KAAKwa,KAAKkS,OAAOmO,WAElB76B,KAAKwa,KAAK8Q,OAAOe,iBAAiB,aAAcrsB,KAAKwtC,eAAe,GACpExtC,KAAKwa,KAAK8Q,OAAOe,iBAAiB,aAAcrsB,KAAKytC,eAAe,OAUhFQ,uBAAwB,WAEpBjuC,KAAKkuC,mBAAqB,SAAU/hB,GAChCA,EAAM8O,kBAGVnP,SAASO,iBAAiB,YAAarsB,KAAKkuC,oBAAoB,IAkBpEC,qBAAsB,SAAU9a,EAAUhP,EAAS+pB,GAEjC1kC,SAAV0kC,IAAuBA,GAAQ,GAEnCpuC,KAAK8sC,mBAAmBl6B,MAAOygB,SAAUA,EAAUhP,QAASA,EAAS+pB,MAAOA,KAYhFC,wBAAyB,SAAUhb,EAAUhP,GAIzC,IAFA,GAAIvc,GAAI9H,KAAK8sC,mBAAmBjlC,OAEzBC,KAEH,GAAI9H,KAAK8sC,mBAAmBhlC,GAAGurB,WAAaA,GAAYrzB,KAAK8sC,mBAAmBhlC,GAAGuc,UAAYA,EAG3F,MADArkB,MAAK8sC,mBAAmB3pB,OAAOrb,EAAG,IAC3B,CAIf,QAAO,GASX6lC,aAAc,SAAUxhB,GAIpB,IAFA,GAAIrkB,GAAI9H,KAAK8sC,mBAAmBjlC,OAEzBC,KACP,CACI,GAAIwmC,GAAKtuC,KAAK8sC,mBAAmBhlC,IAE5BwmC,EAAGF,OAASE,EAAGjb,SAASvsB,KAAKwnC,EAAGjqB,QAASrkB,KAAMmsB,IAEhDnsB,KAAK8sC,mBAAmB3pB,OAAOrb,EAAG,GAM1C,GAFA9H,KAAKmsB,MAAQA,EAERnsB,KAAKwa,KAAKuF,MAAMgd,SAAY/8B,KAAK+8B,QAAtC,CAKI/8B,KAAK+sC,oBAEL/sC,KAAK+sC,mBAAmBjmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAKi7B,gBAEL9O,EAAM8O,gBAMV,KAAK,GAAInzB,GAAI,EAAGA,EAAIqkB,EAAMoiB,eAAe1mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAMihB,aAAa7U,EAAMoiB,eAAezmC,MAW1DkmC,cAAe,SAAU7hB,GASrB,GAPAnsB,KAAKmsB,MAAQA,EAETnsB,KAAKotC,qBAELptC,KAAKotC,oBAAoBtmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAKwa,KAAKuF,MAAMgd,SAAY/8B,KAAK+8B,QAAtC,CAKI/8B,KAAKi7B,gBAEL9O,EAAM8O,gBAKV,KAAK,GAAInzB,GAAI,EAAGA,EAAIqkB,EAAMoiB,eAAe1mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAMshB,YAAYlV,EAAMoiB,eAAezmC,MAWzDgmC,aAAc,SAAU3hB,GAEpBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKktC,oBAELltC,KAAKktC,mBAAmBpmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGlDnsB,KAAKwa,KAAKuF,MAAMgd,SAAY/8B,KAAK+8B,SAKlC/8B,KAAKi7B,gBAEL9O,EAAM8O,kBAWd8S,aAAc,SAAU5hB,GAEpBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKmtC,oBAELntC,KAAKmtC,mBAAmBrmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGnDnsB,KAAKi7B,gBAEL9O,EAAM8O,kBAUd2S,YAAa,SAAUzhB,GAEnBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKgtC,mBAELhtC,KAAKgtC,kBAAkBlmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGlDnsB,KAAKi7B,gBAEL9O,EAAM8O,gBAGV,KAAK,GAAInzB,GAAI,EAAGA,EAAIqkB,EAAMoiB,eAAe1mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAMmhB,cAAc/U,EAAMoiB,eAAezmC,KAU3D+lC,WAAY,SAAU1hB,GAIlB,IAFA,GAAIrkB,GAAI9H,KAAK8sC,mBAAmBjlC,OAEzBC,KACP,CACI,GAAIwmC,GAAKtuC,KAAK8sC,mBAAmBhlC,EAE7BwmC,GAAGF,OAASE,EAAGjb,SAASvsB,KAAKwnC,EAAGjqB,QAASrkB,KAAMmsB,IAE/CnsB,KAAK8sC,mBAAmB3pB,OAAOrb,EAAG,GAI1C9H,KAAKmsB,MAAQA,EAETnsB,KAAKitC,kBAELjtC,KAAKitC,iBAAiBnmC,KAAK9G,KAAK+iB,gBAAiBoJ,GAGjDnsB,KAAKi7B,gBAEL9O,EAAM8O,gBAMV,KAAK,GAAInzB,GAAI,EAAGA,EAAIqkB,EAAMoiB,eAAe1mC,OAAQC,IAE7C9H,KAAKwa,KAAKuF,MAAMshB,YAAYlV,EAAMoiB,eAAezmC,KASzDm0B,KAAM,WAEEj8B,KAAKwa,KAAKkS,OAAOiS,QAEjB3+B,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,aAAcvtB,KAAKqtC,eACxDrtC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,YAAavtB,KAAKstC,cACvDttC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,WAAYvtB,KAAKutC,aACtDvtC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,aAAcvtB,KAAKwtC,eACxDxtC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,aAAcvtB,KAAKytC,eACxDztC,KAAKwa,KAAK8Q,OAAOiC,oBAAoB,cAAevtB,KAAK0tC,mBAOrErtC,EAAO6/B,MAAM75B,UAAU8B,YAAc9H,EAAO6/B,MAe5C7/B,EAAOmuC,aAAe,SAAUzX,GAK5B/2B,KAAK+2B,OAASA,EAKd/2B,KAAKwa,KAAOuc,EAAOvc,KAMnBxa,KAAK+8B,SAAU,EAMf/8B,KAAK6rC,SAAU,EASf7rC,KAAKisC,WAAa,EAMlBjsC,KAAKyuC,eAAgB,EAMrBzuC,KAAK0uC,gBAAiB,EAMtB1uC,KAAKurC,WAAY,EAMjBvrC,KAAK2uC,qBAAsB,EAM3B3uC,KAAK4uC,mBAAoB,EAMzB5uC,KAAK4xB,YAAa,EAMlB5xB,KAAK6uC,WAAa,KAMlB7uC,KAAK8uC,YAAa,EAMlB9uC,KAAK+uC,eAAgB,EAMrB/uC,KAAKgvC,MAAQ,EAMbhvC,KAAKivC,MAAQ,EAMbjvC,KAAKkvC,YAAc,EAMnBlvC,KAAKmvC,YAAc,EAUnBnvC,KAAKovC,kBAAmB,EAUxBpvC,KAAKqvC,mBAAoB,EAMzBrvC,KAAKsvC,kBAAoB,IAMzBtvC,KAAKuvC,WAAY,EAMjBvvC,KAAKwvC,WAAa,KAMlBxvC,KAAKyvC,aAAe,KAKpBzvC,KAAK0vC,YAAa,EAKlB1vC,KAAK2vC,WAAa,GAAItvC,GAAO2M,MAK7BhN,KAAK4vC,gBAAiB,EAKtB5vC,KAAK6vC,uBAAwB,EAK7B7vC,KAAK8vC,eAAiB,GAAIzvC,GAAO2M,MAKjChN,KAAK+vC,sBAAwB,EAK7B/vC,KAAKgwC,kBAAoB,EAKzBhwC,KAAKiwC,UAAY,GAAI5vC,GAAO2M,MAK5BhN,KAAKkwC,UAAY,GAAI7vC,GAAO2M,MAM5BhN,KAAKmwC,WAAa,GAAI9vC,GAAO2M,MAM7BhN,KAAKowC,YAAa,EAMlBpwC,KAAKqwC,cAAe,EAMpBrwC,KAAKswC,eAAgB,EAMrBtwC,KAAKuwC,mBAAoB,EAMzBvwC,KAAKwwC,aAAc,EAMnBxwC,KAAKywC,WAAa,GAAIpwC,GAAO2M,MAM7BhN,KAAK0wC,gBAEL1wC,KAAK0wC,aAAa99B,MACd+B,GAAI,EACJ1O,EAAG,EACHwG,EAAG,EACHkkC,KAAM,EACNC,KAAM,EACNjJ,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,KAKnBlrC,EAAOmuC,aAAanoC,WAUhBqK,MAAO,SAAU2U,EAAUopB,GAMvB,GAJAppB,EAAWA,GAAY,EACD3b,SAAlB+kC,IAA+BA,GAAgB,GAG/CzuC,KAAK+8B,WAAY,EACrB,CAEI/8B,KAAKwa,KAAKuF,MAAMqf,iBAAiBvtB,IAAI7R,MACrCA,KAAKyuC,cAAgBA,EACrBzuC,KAAKisC,WAAa5mB,CAElB,KAAK,GAAIvd,GAAI,EAAO,GAAJA,EAAQA,IAEpB9H,KAAK0wC,aAAa5oC,IACd6M,GAAI7M,EACJ7B,EAAG,EACHwG,EAAG,EACHk7B,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,EAInBvrC,MAAK6uC,WAAa,GAAIxuC,GAAO2M,MAC7BhN,KAAK+8B,SAAU,EACf/8B,KAAKwwC,aAAc,EASvB,MALAxwC,MAAK+2B,OAAO7G,OAAOghB,eAAer/B,IAAI7R,KAAKmxC,aAAcnxC,MACzDA,KAAK+2B,OAAO7G,OAAOkhB,mBAAmBv/B,IAAI7R,KAAKqxC,iBAAkBrxC,MAEjEA,KAAKsxC,SAAU,EAERtxC,KAAK+2B,QAUhBoa,aAAc,WAENnxC,KAAKowC,YAKLpwC,KAAKwwC,cAAgBxwC,KAAK+8B,SAE1B/8B,KAAK0Q,SAWb2gC,iBAAkB,WAEVrxC,KAAKowC,aAKLpwC,KAAK+8B,SAEL/8B,KAAKwwC,aAAc,EACnBxwC,KAAKi8B,QAILj8B,KAAKwwC,aAAc,IAS3B9wB,MAAO,WAEH1f,KAAK+8B,SAAU,EACf/8B,KAAKsxC,SAAU,CAEf,KAAK,GAAIxpC,GAAI,EAAO,GAAJA,EAAQA,IAEpB9H,KAAK0wC,aAAa5oC,IACd6M,GAAI7M,EACJ7B,EAAG,EACHwG,EAAG,EACHk7B,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,IASvBtP,KAAM,WAGEj8B,KAAK+8B,WAAY,IAOjB/8B,KAAK+8B,SAAU,EACf/8B,KAAKwa,KAAKuF,MAAMqf,iBAAiBtc,OAAO9iB,QAShD8jB,QAAS,WAED9jB,KAAK+2B,SAED/2B,KAAK0uC,iBAEL1uC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK0uC,gBAAiB,GAG1B1uC,KAAK+8B,SAAU,EAEf/8B,KAAKwa,KAAKuF,MAAMqf,iBAAiBtc,OAAO9iB,MAExCA,KAAK0wC,aAAa7oC,OAAS,EAC3B7H,KAAKwvC,WAAa,KAClBxvC,KAAKyvC,aAAe,KACpBzvC,KAAK+2B,OAAS,OAgBtB+U,cAAe,SAAUyF,EAAWC,EAAiBC,GAIjD,MAF4B/nC,UAAxB+nC,IAAqCA,GAAsB,IAE1DzxC,KAAK+8B,SACkB,IAAxB/8B,KAAK+2B,OAAOliB,MAAM5O,GACM,IAAxBjG,KAAK+2B,OAAOliB,MAAMpI,GAClBzM,KAAKisC,WAAajsC,KAAKwa,KAAKuF,MAAMof,eACjCn/B,KAAK+2B,OAAOvN,QAAUxpB,KAAK+2B,OAAOvN,OAAOkoB,kBAEnC,EAIND,IAAwBzxC,KAAKqvC,oBAAqBrvC,KAAKovC,iBAKxDpvC,KAAKisC,WAAasF,GAAcvxC,KAAKisC,aAAesF,GAAavxC,KAAK+2B,OAAOnD,cAAgB4d,GAHtF,GAkBfG,eAAgB,WAEZ,MAAQ3xC,MAAKqvC,mBAAqBrvC,KAAKovC,kBAY3CwC,SAAU,SAAUjQ,GAIhB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAW17B,GAYxC4rC,SAAU,SAAUlQ,GAIhB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAWl1B,GAYxCqlC,YAAa,SAAUnQ,GAInB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAWgG,QAYxCoK,UAAW,SAAUpQ,GAIjB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAWiG,MAWxCoK,gBAAiB,SAAUrQ,GAIvB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAWkG,UAWxCoK,cAAe,SAAUtQ,GAIrB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAWmG,QAWxCoK,YAAa,SAAUvQ,GAEnB,IAAK3hC,KAAK+8B,QAEN,OAAO,CAGX,IAAkBrzB,SAAdi4B,EACJ,CACI,IAAK,GAAI75B,GAAI,EAAO,GAAJA,EAAQA,IAEpB,GAAI9H,KAAK0wC,aAAa5oC,GAAG+oC,OAErB,OAAO,CAIf,QAAO,EAIP,MAAO7wC,MAAK0wC,aAAa/O,GAAWkP,QAY5CsB,WAAY,SAAUxQ,GAElB,IAAK3hC,KAAK+8B,QAEN,OAAO,CAGX,IAAkBrzB,SAAdi4B,EAYA,MAAO3hC,MAAK0wC,aAAa/O,GAAWmP,KAVpC,KAAK,GAAIhpC,GAAI,EAAO,GAAJA,EAAQA,IAEpB,GAAI9H,KAAK0wC,aAAa5oC,GAAGgpC,MAErB,OAAO,GAkBvBsB,gBAAiB,SAAUzQ,GAIvB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAWoP,UAWxCsB,eAAgB,SAAU1Q,GAItB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAWqP,SAWxCsB,eAAgB,SAAU3Q,GAItB,MAFAA,GAAYA,GAAa,EAElB3hC,KAAK0wC,aAAa/O,GAAW4J,WAaxCQ,iBAAkB,SAAUjjB,EAASypB,GAEjC,MAAKzpB,GAAQ6e,QACR3nC,KAAK+8B,SACL/8B,KAAK+2B,QACL/2B,KAAK+2B,OAAOvN,QACZxpB,KAAK+2B,OAAOlc,SACZ7a,KAAK+2B,OAAOvN,OAAO3O,SACS,IAA7B7a,KAAK+2B,OAAOyb,WAAWvsC,GACM,IAA7BjG,KAAK+2B,OAAOyb,WAAW/lC,GAMvBzM,KAAKwa,KAAKuF,MAAM+hB,QAAQ9hC,KAAK+2B,OAAQjO,EAAS9oB,KAAKywC,aAElC/mC,SAAb6oC,IAEAA,GAAW,IAGVA,GAAYvyC,KAAKqvC,kBAEXrvC,KAAKyyC,WAAWzyC,KAAKywC,WAAWxqC,EAAGjG,KAAKywC,WAAWhkC,IAInD,IAjBJ,GAkCfu/B,iBAAkB,SAAUljB,EAASypB,GAEjC,MAAKvyC,MAAK+8B,SACL/8B,KAAK+2B,QACL/2B,KAAK+2B,OAAOvN,QACZxpB,KAAK+2B,OAAOlc,SACZ7a,KAAK+2B,OAAOvN,OAAO3O,SACS,IAA7B7a,KAAK+2B,OAAOyb,WAAWvsC,GACM,IAA7BjG,KAAK+2B,OAAOyb,WAAW/lC,GAMvBzM,KAAKwa,KAAKuF,MAAM+hB,QAAQ9hC,KAAK+2B,OAAQjO,EAAS9oB,KAAKywC,aAElC/mC,SAAb6oC,IAEAA,GAAW,IAGVA,GAAYvyC,KAAKovC,iBAEXpvC,KAAKyyC,WAAWzyC,KAAKywC,WAAWxqC,EAAGjG,KAAKywC,WAAWhkC,IAInD,IAjBJ,GAmCfgmC,WAAY,SAAUxsC,EAAGwG,EAAGqc,GAGxB,GAAI9oB,KAAK+2B,OAAOoL,QAAQuQ,YAAYhlC,OACpC,CACI,GAAU,OAANzH,GAAoB,OAANwG,EAClB,CAEIzM,KAAKwa,KAAKuF,MAAM6hB,iBAAiB5hC,KAAK+2B,OAAQjO,EAAS9oB,KAAKywC,WAE5D,IAAIxqC,GAAIjG,KAAKywC,WAAWxqC,EACpBwG,EAAIzM,KAAKywC,WAAWhkC,EAgB5B,GAb6B,IAAzBzM,KAAK+2B,OAAO1N,OAAOpjB,IAEnBA,IAAMjG,KAAK+2B,OAAOoL,QAAQzR,MAAM3gB,MAAQ/P,KAAK+2B,OAAO1N,OAAOpjB,GAGlC,IAAzBjG,KAAK+2B,OAAO1N,OAAO5c,IAEnBA,IAAMzM,KAAK+2B,OAAOoL,QAAQzR,MAAM1gB,OAAShQ,KAAK+2B,OAAO1N,OAAO5c,GAGhExG,GAAKjG,KAAK+2B,OAAOoL,QAAQzR,MAAMzqB,EAC/BwG,GAAKzM,KAAK+2B,OAAOoL,QAAQzR,MAAMjkB,EAE3BzM,KAAK+2B,OAAOoL,QAAQwQ,OAEpB1sC,GAAKjG,KAAK+2B,OAAOoL,QAAQwQ,KAAK1sC,EAC9BwG,GAAKzM,KAAK+2B,OAAOoL,QAAQwQ,KAAKlmC,EAG1BxG,EAAIjG,KAAK+2B,OAAOoL,QAAQyQ,KAAK3sC,GAAKA,EAAIjG,KAAK+2B,OAAOoL,QAAQyQ,KAAKhoC,OAAS6B,EAAIzM,KAAK+2B,OAAOoL,QAAQyQ,KAAKnmC,GAAKA,EAAIzM,KAAK+2B,OAAOoL,QAAQyQ,KAAKjkC,QAIvI,MAFA3O,MAAK6yC,IAAM5sC,EACXjG,KAAK8yC,IAAMrmC,GACJ,CAIfzM,MAAK6yC,IAAM5sC,EACXjG,KAAK8yC,IAAMrmC,EAEXzM,KAAKwa,KAAKuF,MAAM2c,WAAWqW,UAAU,EAAG,EAAG,EAAG,GAC9C/yC,KAAKwa,KAAKuF,MAAM2c,WAAWsW,UAAUhzC,KAAK+2B,OAAOoL,QAAQuQ,YAAYhlC,OAAQzH,EAAGwG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAElG,IAAIwmC,GAAMjzC,KAAKwa,KAAKuF,MAAM2c,WAAWwW,aAAa,EAAG,EAAG,EAAG,EAE3D,IAAID,EAAI5Q,KAAK,IAAMriC,KAAKsvC,kBAEpB,OAAO,EAIf,OAAO,GAaX/wB,OAAQ,SAAUuK,GAEd,MAAoB,QAAhB9oB,KAAK+2B,QAA0CrtB,SAAvB1J,KAAK+2B,OAAOvN,OAMnCxpB,KAAK+8B,SAAY/8B,KAAK+2B,OAAOlc,SAAY7a,KAAK+2B,OAAOvN,OAAO3O,QAM7D7a,KAAKqwC,cAEArwC,KAAKuwC,oBAENvwC,KAAKuwC,kBAAqBlwC,EAAO0F,KAAK8H,SAASib,EAAQ7iB,EAAG6iB,EAAQrc,EAAGzM,KAAKiwC,UAAUhqC,EAAGjG,KAAKiwC,UAAUxjC,IAAMzM,KAAK+vC,uBAGjH/vC,KAAKuwC,mBAAqBvwC,KAAKswC,eAE/BtwC,KAAKmzC,UAAUrqB,IAGZ,GAEF9oB,KAAKuvC,WAAavvC,KAAKozC,oBAAsBtqB,EAAQnU,GAEnD3U,KAAKqzC,WAAWvqB,GAAS,GAE3B9oB,KAAK0wC,aAAa5nB,EAAQnU,IAAIk8B,OAE/B7wC,KAAKgsC,iBAAiBljB,IAEtB9oB,KAAK0wC,aAAa5nB,EAAQnU,IAAI1O,EAAI6iB,EAAQ7iB,EAAIjG,KAAK+2B,OAAO9wB,EAC1DjG,KAAK0wC,aAAa5nB,EAAQnU,IAAIlI,EAAIqc,EAAQrc,EAAIzM,KAAK+2B,OAAOtqB,GACnD,IAIPzM,KAAKosC,mBAAmBtjB,IACjB,GAXV,QAtBD9oB,KAAKosC,mBAAmBtjB;CACjB,GATX,QAsDJujB,oBAAqB,SAAUvjB,EAAS2G,GAEpC,GAAoB,OAAhBzvB,KAAK+2B,OAAT,CAMA,GAAIsL,GAAOriC,KAAK0wC,aAAa5nB,EAAQnU,GAErC,IAAI0tB,EAAKwO,UAAW,GAAS/nB,EAAQrB,MACrC,CACI,GAAI6rB,GAAajR,EAAKwO,UAAW,CAEjCxO,GAAKwO,QAAS,EACdxO,EAAKyO,OAAQ,EACbzO,EAAK0O,SAAW/wC,KAAKwa,KAAKmE,KAAKA,KAC/B0jB,EAAKp8B,EAAI6iB,EAAQ7iB,EAAIjG,KAAK+2B,OAAO9wB,EACjCo8B,EAAK51B,EAAIqc,EAAQrc,EAAIzM,KAAK+2B,OAAOtqB,EAE7BzM,KAAKyuC,eAAiBpM,EAAKkJ,aAAc,IAEzCvrC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK0uC,gBAAiB,IAGrBjf,GAAU6jB,GAAatzC,KAAK+2B,QAAU/2B,KAAK+2B,OAAO7G,QAEnDlwB,KAAK+2B,OAAO7G,OAAOqjB,qBAAqBvzC,KAAK+2B,OAAQjO,GAGrD9oB,KAAK+2B,OAAOvN,QAAUxpB,KAAK+2B,OAAOvN,OAAOthB,OAAS7H,EAAOmB,OAEzDxB,KAAK+2B,OAAOvN,OAAOiF,iBAAiB5P,SAAS7e,KAAK+2B,OAAQjO,MActEsjB,mBAAoB,SAAUtjB,EAAS2G,GAEnC,GAAoB,OAAhBzvB,KAAK+2B,OAAT,CAMA,GAAIsL,GAAOriC,KAAK0wC,aAAa5nB,EAAQnU,GAErC0tB,GAAKwO,QAAS,EACdxO,EAAKyO,OAAQ,EACbzO,EAAK2O,QAAUhxC,KAAKwa,KAAKmE,KAAKA,KAE1B3e,KAAKyuC,eAAiBpM,EAAKkJ,aAAc,IAEzCvrC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK0uC,gBAAiB,IAGrBjf,GAAUzvB,KAAK+2B,QAAU/2B,KAAK+2B,OAAO7G,SAEtClwB,KAAK+2B,OAAO7G,OAAOsjB,oBAAoBxzC,KAAK+2B,OAAQjO,GAEhD9oB,KAAK+2B,QAAU/2B,KAAK+2B,OAAOvN,QAAUxpB,KAAK+2B,OAAOvN,OAAOthB,OAAS7H,EAAOmB,OAExExB,KAAK+2B,OAAOvN,OAAOkF,gBAAgB7P,SAAS7e,KAAK+2B,OAAQjO,MAarEgiB,gBAAiB,SAAUhiB,GAEvB,GAAoB,OAAhB9oB,KAAK+2B,OAAT,CAMA,GAAIsL,GAAOriC,KAAK0wC,aAAa5nB,EAAQnU,GAErC,KAAK0tB,EAAKsF,QAAUtF,EAAKwO,OACzB,CACI,GAAI7wC,KAAKqvC,oBAAsBrvC,KAAKyyC,WAAW,KAAM,KAAM3pB,GAEvD,MAYJ,IATAuZ,EAAKsF,QAAS,EACdtF,EAAKuF,MAAO,EACZvF,EAAKwF,SAAW7nC,KAAKwa,KAAKmE,KAAKA,KAE/B3e,KAAKiwC,UAAUhkC,IAAI6c,EAAQ7iB,EAAG6iB,EAAQrc,GAGtCqc,EAAQrB,OAAQ,EAEZznB,KAAK+2B,QAAU/2B,KAAK+2B,OAAO7G,SAE3BlwB,KAAK+2B,OAAO7G,OAAOujB,qBAAqBzzC,KAAK+2B,OAAQjO,GAGjD9oB,KAAK+2B,QAAU/2B,KAAK+2B,OAAOvN,QAAUxpB,KAAK+2B,OAAOvN,OAAOthB,OAAS7H,EAAOmB,OAExExB,KAAK+2B,OAAOvN,OAAO+E,iBAAiB1P,SAAS7e,KAAK+2B,OAAQjO,GAI1C,OAAhB9oB,KAAK+2B,QAEL,MAKJ/2B,MAAKuvC,WAAavvC,KAAKurC,aAAc,IAEN,IAA3BvrC,KAAKgwC,mBAA0D,IAA/BhwC,KAAK+vC,sBAErC/vC,KAAKmzC,UAAUrqB,IAIf9oB,KAAKqwC,cAAe,EAEpBrwC,KAAKuwC,kBAAoD,IAA/BvwC,KAAK+vC,sBAE3B/vC,KAAKgwC,kBAAoB,GAEzBhwC,KAAKswC,eAAgB,EACrBtwC,KAAKwa,KAAKmE,KAAKuR,OAAOre,IAAI7R,KAAKgwC,kBAAmBhwC,KAAK0zC,gBAAiB1zC,KAAM8oB,IAI9E9oB,KAAKswC,eAAgB,IAK7BtwC,KAAK4xB,YAEL5xB,KAAK+2B,OAAOnF,gBAaxB8hB,gBAAiB,SAAU5qB,GAEvB9oB,KAAKswC,eAAgB,EAEjBtwC,KAAKqwC,cAAgBrwC,KAAK+2B,QAEtB/2B,KAAKuwC,mBAELvwC,KAAKmzC,UAAUrqB,IAY3B8jB,iBAAkB,SAAU9jB,GAExB,GAAoB,OAAhB9oB,KAAK+2B,OAAT,CAMA,GAAIsL,GAAOriC,KAAK0wC,aAAa5nB,EAAQnU,GAGrC,IAAI0tB,EAAKsF,QAAU7e,EAAQ8e,KAC3B,CACIvF,EAAKsF,QAAS,EACdtF,EAAKuF,MAAO,EACZvF,EAAKyF,OAAS9nC,KAAKwa,KAAKmE,KAAKA,KAC7B0jB,EAAK4O,aAAe5O,EAAKyF,OAASzF,EAAKwF,QAGvC,IAAIgJ,GAAS7wC,KAAKgsC,iBAAiBljB,EAE/B9oB,MAAK+2B,QAAU/2B,KAAK+2B,OAAO7G,SAEtBlwB,KAAK6vC,yBACN7vC,KAAK6vC,uBAA2B7vC,KAAKuvC,WAAavvC,KAAKurC,WAAavrC,KAAKozC,oBAAsBtqB,EAAQnU,KAEvG3U,KAAK+2B,OAAO7G,OAAOyjB,mBAAmB3zC,KAAK+2B,OAAQjO,EAAS+nB,GAG5D7wC,KAAK+2B,QAAU/2B,KAAK+2B,OAAOvN,QAAUxpB,KAAK+2B,OAAOvN,OAAOthB,OAAS7H,EAAOmB,OAExExB,KAAK+2B,OAAOvN,OAAOgF,eAAe3P,SAAS7e,KAAK+2B,OAAQjO,EAAS+nB,GAIjEA,IAEAA,EAAS7wC,KAAKgsC,iBAAiBljB,KAIvCuZ,EAAKwO,OAASA,GAETA,GAAU7wC,KAAKyuC,gBAEhBzuC,KAAKwa,KAAK8Q,OAAOpO,MAAMmR,OAAS,UAChCruB,KAAK0uC,gBAAiB,GAI1B5lB,EAAQrB,OAAQ,EAEhBznB,KAAKqwC,cAAe,EAGhBrwC,KAAKuvC,WAAavvC,KAAKurC,WAAavrC,KAAKozC,oBAAsBtqB,EAAQnU,IAEvE3U,KAAK4zC,SAAS9qB,MAe1BuqB,WAAY,SAAUvqB,EAAS+qB,GAI3B,GAFkBnqC,SAAdmqC,IAA2BA,GAAY,GAEvC/qB,EAAQ8e,KAGR,MADA5nC,MAAK4zC,SAAS9qB,IACP,CAGX,IAAI3e,GAAKnK,KAAK8zC,eAAehrB,EAAQ7iB,GAAKjG,KAAKmwC,WAAWlqC,EAAIjG,KAAK2vC,WAAW1pC,EAC1E8tC,EAAK/zC,KAAKg0C,eAAelrB,EAAQrc,GAAKzM,KAAKmwC,WAAW1jC,EAAIzM,KAAK2vC,WAAWljC,CAE9E,IAAIzM,KAAK+2B,OAAOhI,cAER/uB,KAAK2uC,sBAEL3uC,KAAK+2B,OAAO/H,aAAa/oB,EAAIkE,GAG7BnK,KAAK4uC,oBAEL5uC,KAAK+2B,OAAO/H,aAAaviB,EAAIsnC,GAG7B/zC,KAAKwvC,YAELxvC,KAAKi0C,kBAGLj0C,KAAKyvC,cAELzvC,KAAKk0C,oBAGLl0C,KAAK8uC,aAEL9uC,KAAK+2B,OAAO/H,aAAa/oB,EAAIF,KAAK+H,OAAO9N,KAAK+2B,OAAO/H,aAAa/oB,EAAKjG,KAAKkvC,YAAclvC,KAAKgvC,OAAUhvC,KAAKgvC,OAAShvC,KAAKgvC,MAAShvC,KAAKkvC,YAAclvC,KAAKgvC,MAC7JhvC,KAAK+2B,OAAO/H,aAAaviB,EAAI1G,KAAK+H,OAAO9N,KAAK+2B,OAAO/H,aAAaviB,EAAKzM,KAAKmvC,YAAcnvC,KAAKivC,OAAUjvC,KAAKivC,OAASjvC,KAAKivC,MAASjvC,KAAKmvC,YAAcnvC,KAAKivC,MAC7JjvC,KAAKkwC,UAAUjkC,IAAIjM,KAAK+2B,OAAO/H,aAAa/oB,EAAGjG,KAAK+2B,OAAO/H,aAAaviB,QAIhF,CACI,GAAIyC,GAAKlP,KAAKwa,KAAKoC,OAAO3W,EAAIjG,KAAK0wC,aAAa5nB,EAAQnU,IAAIg8B,KACxDrhC,EAAKtP,KAAKwa,KAAKoC,OAAOnQ,EAAIzM,KAAK0wC,aAAa5nB,EAAQnU,IAAIi8B,IAExD5wC,MAAK2uC,sBAEL3uC,KAAK+2B,OAAO9wB,EAAIkE,EAAK+E,GAGrBlP,KAAK4uC,oBAEL5uC,KAAK+2B,OAAOtqB,EAAIsnC,EAAKzkC,GAGrBtP,KAAKwvC,YAELxvC,KAAKi0C,kBAGLj0C,KAAKyvC,cAELzvC,KAAKk0C,oBAGLl0C,KAAK8uC,aAEL9uC,KAAK+2B,OAAO9wB,EAAIF,KAAK+H,OAAO9N,KAAK+2B,OAAO9wB,EAAKjG,KAAKkvC,YAAclvC,KAAKgvC,OAAUhvC,KAAKgvC,OAAShvC,KAAKgvC,MAAShvC,KAAKkvC,YAAclvC,KAAKgvC,MACnIhvC,KAAK+2B,OAAOtqB,EAAI1G,KAAK+H,OAAO9N,KAAK+2B,OAAOtqB,EAAKzM,KAAKmvC,YAAcnvC,KAAKivC,OAAUjvC,KAAKivC,OAASjvC,KAAKivC,MAASjvC,KAAKmvC,YAAcnvC,KAAKivC,MACnIjvC,KAAKkwC,UAAUjkC,IAAIjM,KAAK+2B,OAAO9wB,EAAGjG,KAAK+2B,OAAOtqB,IAMtD,MAFAzM,MAAK+2B,OAAO7G,OAAOikB,aAAat1B,SAAS7e,KAAK+2B,OAAQjO,EAAS3e,EAAI4pC,EAAI/zC,KAAKkwC,UAAW2D,IAEhF,GAYXO,SAAU,SAAUzS,EAAW0S,GAK3B,MAHA1S,GAAYA,GAAa,EACzB0S,EAAQA,GAAS,IAETr0C,KAAK0wC,aAAa/O,GAAWkP,QAAU7wC,KAAKs0C,aAAa3S,GAAa0S,GAYlFE,QAAS,SAAU5S,EAAW0S,GAK1B,MAHA1S,GAAYA,GAAa,EACzB0S,EAAQA,GAAS,IAETr0C,KAAK0wC,aAAa/O,GAAWmP,OAAU9wC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK0wC,aAAa/O,GAAWqP,QAAUqD,GAYhHhM,YAAa,SAAU1G,EAAW0S,GAK9B,MAHA1S,GAAYA,GAAa,EACzB0S,EAAQA,GAAS,IAETr0C,KAAK0wC,aAAa/O,GAAWgG,QAAU3nC,KAAKixC,aAAatP,GAAa0S,GAYlF/L,aAAc,SAAU3G,EAAW0S,GAK/B,MAHA1S,GAAYA,GAAa,EACzB0S,EAAQA,GAAS,IAETr0C,KAAK0wC,aAAa/O,GAAWiG,MAAS5nC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK0wC,aAAa/O,GAAWmG,OAASuM,GAW9GC,aAAc,SAAU3S,GAIpB,MAFAA,GAAYA,GAAa,EAErB3hC,KAAK0wC,aAAa/O,GAAWkP,OAEtB7wC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK0wC,aAAa/O,GAAWoP,SAGvD,IAWXE,aAAc,SAAUtP,GAIpB,MAFAA,GAAYA,GAAa,EAErB3hC,KAAK0wC,aAAa/O,GAAWgG,OAEtB3nC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK0wC,aAAa/O,GAAWkG,SAGvD,IAgCX2M,WAAY,SAAUC,EAAY7iB,EAAY8iB,EAAcC,EAAgBnF,EAAYC,GAEjE/lC,SAAf+qC,IAA4BA,GAAa,GAC1B/qC,SAAfkoB,IAA4BA,GAAa,GACxBloB,SAAjBgrC,IAA8BA,GAAe,GAC1BhrC,SAAnBirC,IAAgCA,EAAiB,KAClCjrC,SAAf8lC,IAA4BA,EAAa,MACxB9lC,SAAjB+lC,IAA8BA,EAAe,MAEjDzvC,KAAKmwC,WAAa,GAAI9vC,GAAO2M,MAC7BhN,KAAKuvC,WAAY,EACjBvvC,KAAK4xB,WAAaA,EAClB5xB,KAAK2vC,WAAa,GAAItvC,GAAO2M,MAC7BhN,KAAK4vC,eAAiB6E,EAEtBz0C,KAAKqvC,kBAAoBqF,EACzB10C,KAAKsvC,kBAAoBqF,EAErBnF,IAEAxvC,KAAKwvC,WAAaA,GAGlBC,IAEAzvC,KAAKyvC,aAAeA,IAW5BmF,YAAa,WAET,GAAI50C,KAAK0wC,aAEL,IAAK,GAAI5oC,GAAI,EAAO,GAAJA,EAAQA,IAEpB9H,KAAK0wC,aAAa5oC,GAAGyjC,WAAY,CAIzCvrC,MAAKuvC,WAAY,EACjBvvC,KAAKurC,WAAY,EACjBvrC,KAAKozC,kBAAoB,GACzBpzC,KAAKqwC,cAAe,GAUxB8C,UAAW,SAAUrqB,GAEjB,GAAI7iB,GAAIjG,KAAK+2B,OAAO9wB,EAChBwG,EAAIzM,KAAK+2B,OAAOtqB,CAUpB,IARAzM,KAAKurC,WAAY,EACjBvrC,KAAKozC,kBAAoBtqB,EAAQnU,GAEjC3U,KAAK0wC,aAAa5nB,EAAQnU,IAAIg8B,KAAO3wC,KAAKwa,KAAKoC,OAAO3W,EACtDjG,KAAK0wC,aAAa5nB,EAAQnU,IAAIi8B,KAAO5wC,KAAKwa,KAAKoC,OAAOnQ,EAEtDzM,KAAK0wC,aAAa5nB,EAAQnU,IAAI42B,WAAY,EAEtCvrC,KAAK+2B,OAAOhI,cAChB,CACI,GAAI/uB,KAAK4vC,eACT,CACI,GAAIj1B,GAAS3a,KAAK+2B,OAAOzpB,WAEzBtN,MAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAK8zC,eAAehrB,EAAQ7iB,IAAMjG,KAAK+2B,OAAO/H,aAAa/oB,EAAI0U,EAAOlC,SACnGzY,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAKg0C,eAAelrB,EAAQrc,IAAMzM,KAAK+2B,OAAO/H,aAAaviB,EAAIkO,EAAOjC,SAGvG1Y,KAAKmwC,WAAW3iC,MAAMxN,KAAK+2B,OAAO/H,aAAa/oB,EAAI6iB,EAAQ7iB,EAAGjG,KAAK+2B,OAAO/H,aAAaviB,EAAIqc,EAAQrc,OAGvG,CACI,GAAIzM,KAAK4vC,eACT,CACI,GAAIj1B,GAAS3a,KAAK+2B,OAAOzpB,WAEzBtN,MAAK+2B,OAAO9wB,EAAIjG,KAAK8zC,eAAehrB,EAAQ7iB,IAAMjG,KAAK+2B,OAAO9wB,EAAI0U,EAAOlC,SACzEzY,KAAK+2B,OAAOtqB,EAAIzM,KAAKg0C,eAAelrB,EAAQrc,IAAMzM,KAAK+2B,OAAOtqB,EAAIkO,EAAOjC,SAG7E1Y,KAAKmwC,WAAW3iC,MAAMxN,KAAK+2B,OAAO9wB,EAAIjG,KAAK8zC,eAAehrB,EAAQ7iB,GAAIjG,KAAK+2B,OAAOtqB,EAAIzM,KAAKg0C,eAAelrB,EAAQrc,IAGtHzM,KAAKqzC,WAAWvqB,GAAS,GAErB9oB,KAAK4xB,aAEL5xB,KAAKowC,YAAa,EAClBpwC,KAAK+2B,OAAOnF,cAGhB5xB,KAAK8vC,eAAe7jC,IAAIhG,EAAGwG,GAE3BzM,KAAK+2B,OAAO7G,OAAO2kB,qBAAqB70C,KAAK+2B,OAAQjO,EAAS7iB,EAAGwG,GAEjEzM,KAAKqwC,cAAe,GAUxByD,eAAgB,SAAU7tC,GAQtB,MANIjG,MAAK0vC,aAELzpC,GAAKjG,KAAKwa,KAAK3F,MAAMigC,KAAKC,YAAY9uC,EACtCA,GAAKjG,KAAKwa,KAAK3F,MAAMigC,KAAKE,mBAAmB/uC,GAG1CA,GAUX+tC,eAAgB,SAAUvnC,GAQtB,MANIzM,MAAK0vC,aAELjjC,GAAKzM,KAAKwa,KAAK3F,MAAMigC,KAAKC,YAAYtoC,EACtCA,GAAKzM,KAAKwa,KAAK3F,MAAMigC,KAAKE,mBAAmBvoC,GAG1CA,GAUXmnC,SAAU,SAAU9qB,GAEhB9oB,KAAKurC,WAAY,EACjBvrC,KAAKozC,kBAAoB,GACzBpzC,KAAK0wC,aAAa5nB,EAAQnU,IAAI42B,WAAY,EAC1CvrC,KAAKowC,YAAa,EAClBpwC,KAAKqwC,cAAe,EAEhBrwC,KAAK+uC,gBAED/uC,KAAK+2B,OAAOhI,eAEZ/uB,KAAK+2B,OAAO/H,aAAa/oB,EAAIF,KAAK+H,OAAO9N,KAAK+2B,OAAO/H,aAAa/oB,EAAKjG,KAAKkvC,YAAclvC,KAAKgvC,OAAUhvC,KAAKgvC,OAAShvC,KAAKgvC,MAAShvC,KAAKkvC,YAAclvC,KAAKgvC,MAC7JhvC,KAAK+2B,OAAO/H,aAAaviB,EAAI1G,KAAK+H,OAAO9N,KAAK+2B,OAAO/H,aAAaviB,EAAKzM,KAAKmvC,YAAcnvC,KAAKivC,OAAUjvC,KAAKivC,OAASjvC,KAAKivC,MAASjvC,KAAKmvC,YAAcnvC,KAAKivC,QAI7JjvC,KAAK+2B,OAAO9wB,EAAIF,KAAK+H,OAAO9N,KAAK+2B,OAAO9wB,EAAKjG,KAAKkvC,YAAclvC,KAAKgvC,OAAUhvC,KAAKgvC,OAAShvC,KAAKgvC,MAAShvC,KAAKkvC,YAAclvC,KAAKgvC,MACnIhvC,KAAK+2B,OAAOtqB,EAAI1G,KAAK+H,OAAO9N,KAAK+2B,OAAOtqB,EAAKzM,KAAKmvC,YAAcnvC,KAAKivC,OAAUjvC,KAAKivC,OAASjvC,KAAKivC,MAASjvC,KAAKmvC,YAAcnvC,KAAKivC,QAI3IjvC,KAAK+2B,OAAO7G,OAAO+kB,oBAAoBj1C,KAAK+2B,OAAQjO,GAEhD9oB,KAAKgsC,iBAAiBljB,MAAa,GAEnC9oB,KAAKosC,mBAAmBtjB,IAYhCosB,YAAa,SAAUC,EAAiBC,GAEZ1rC,SAApByrC,IAAiCA,GAAkB,GACjCzrC,SAAlB0rC,IAA+BA,GAAgB,GAEnDp1C,KAAK2uC,oBAAsBwG,EAC3Bn1C,KAAK4uC,kBAAoBwG,GAgB7BC,WAAY,SAAUrG,EAAOC,EAAOqG,EAAQC,EAAWrG,EAAaC,GAEjDzlC,SAAX4rC,IAAwBA,GAAS,GACnB5rC,SAAd6rC,IAA2BA,GAAY,GACvB7rC,SAAhBwlC,IAA6BA,EAAc,GAC3BxlC,SAAhBylC,IAA6BA,EAAc,GAE/CnvC,KAAKgvC,MAAQA,EACbhvC,KAAKivC,MAAQA,EACbjvC,KAAKkvC,YAAcA,EACnBlvC,KAAKmvC,YAAcA,EACnBnvC,KAAK8uC,WAAawG,EAClBt1C,KAAK+uC,cAAgBwG,GASzBC,YAAa,WAETx1C,KAAK8uC,YAAa,EAClB9uC,KAAK+uC,eAAgB,GASzBkF,gBAAiB,WAETj0C,KAAK+2B,OAAOhI,eAER/uB,KAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAKwvC,WAAW3kC,KAE7C7K,KAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAKwvC,WAAW3kC,KAEvC7K,KAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAK+2B,OAAOhnB,MAAS/P,KAAKwvC,WAAW5kC,QAExE5K,KAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAKwvC,WAAW5kC,MAAQ5K,KAAK+2B,OAAOhnB,OAGjE/P,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAKwvC,WAAW9gC,IAE7C1O,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAKwvC,WAAW9gC,IAEvC1O,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAK+2B,OAAO/mB,OAAUhQ,KAAKwvC,WAAW7gC,SAEzE3O,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAKwvC,WAAW7gC,OAAS3O,KAAK+2B,OAAO/mB,UAKlEhQ,KAAK+2B,OAAOlsB,KAAO7K,KAAKwvC,WAAW3kC,KAEnC7K,KAAK+2B,OAAO9wB,EAAIjG,KAAKwvC,WAAWvpC,EAAIjG,KAAK+2B,OAAO0e,QAE3Cz1C,KAAK+2B,OAAOnsB,MAAQ5K,KAAKwvC,WAAW5kC,QAEzC5K,KAAK+2B,OAAO9wB,EAAIjG,KAAKwvC,WAAW5kC,OAAS5K,KAAK+2B,OAAOhnB,MAAQ/P,KAAK+2B,OAAO0e,UAGzEz1C,KAAK+2B,OAAOroB,IAAM1O,KAAKwvC,WAAW9gC,IAElC1O,KAAK+2B,OAAOtqB,EAAIzM,KAAKwvC,WAAW9gC,IAAM1O,KAAK+2B,OAAO2e,QAE7C11C,KAAK+2B,OAAOpoB,OAAS3O,KAAKwvC,WAAW7gC,SAE1C3O,KAAK+2B,OAAOtqB,EAAIzM,KAAKwvC,WAAW7gC,QAAU3O,KAAK+2B,OAAO/mB,OAAShQ,KAAK+2B,OAAO2e,YAWvFxB,kBAAmB,WAEXl0C,KAAK+2B,OAAOhI,eAAiB/uB,KAAKyvC,aAAa1gB,eAE3C/uB,KAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAKyvC,aAAazgB,aAAa/oB,EAE5DjG,KAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAKyvC,aAAazgB,aAAa/oB,EAEtDjG,KAAK+2B,OAAO/H,aAAa/oB,EAAIjG,KAAK+2B,OAAOhnB,MAAU/P,KAAKyvC,aAAazgB,aAAa/oB,EAAIjG,KAAKyvC,aAAa1/B,QAE9G/P,KAAK+2B,OAAO/H,aAAa/oB,EAAKjG,KAAKyvC,aAAazgB,aAAa/oB,EAAIjG,KAAKyvC,aAAa1/B,MAAS/P,KAAK+2B,OAAOhnB,OAGxG/P,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAKyvC,aAAazgB,aAAaviB,EAE5DzM,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAKyvC,aAAazgB,aAAaviB,EAEtDzM,KAAK+2B,OAAO/H,aAAaviB,EAAIzM,KAAK+2B,OAAO/mB,OAAWhQ,KAAKyvC,aAAazgB,aAAaviB,EAAIzM,KAAKyvC,aAAaz/B,SAE/GhQ,KAAK+2B,OAAO/H,aAAaviB,EAAKzM,KAAKyvC,aAAazgB,aAAaviB,EAAIzM,KAAKyvC,aAAaz/B,OAAUhQ,KAAK+2B,OAAO/mB,UAKzGhQ,KAAK+2B,OAAOlsB,KAAO7K,KAAKyvC,aAAa5kC,KAErC7K,KAAK+2B,OAAO9wB,EAAIjG,KAAKyvC,aAAa5kC,KAAO7K,KAAK+2B,OAAO0e,QAEhDz1C,KAAK+2B,OAAOnsB,MAAQ5K,KAAKyvC,aAAa7kC,QAE3C5K,KAAK+2B,OAAO9wB,EAAIjG,KAAKyvC,aAAa7kC,OAAS5K,KAAK+2B,OAAOhnB,MAAQ/P,KAAK+2B,OAAO0e,UAG3Ez1C,KAAK+2B,OAAOroB,IAAM1O,KAAKyvC,aAAa/gC,IAEpC1O,KAAK+2B,OAAOtqB,EAAIzM,KAAKyvC,aAAa/gC,IAAM1O,KAAK+2B,OAAO2e,QAE/C11C,KAAK+2B,OAAOpoB,OAAS3O,KAAKyvC,aAAa9gC,SAE5C3O,KAAK+2B,OAAOtqB,EAAIzM,KAAKyvC,aAAa9gC,QAAU3O,KAAK+2B,OAAO/mB,OAAShQ,KAAK+2B,OAAO2e,aAQ7Fr1C,EAAOmuC,aAAanoC,UAAU8B,YAAc9H,EAAOmuC,aAsBnDnuC,EAAOggC,QAAU,SAAU7lB,GAKvBxa,KAAKwa,KAAOA,EAMZxa,KAAK21C,oBAML31C,KAAK41C,YAOL51C,KAAK61C,SAAU,EAOf71C,KAAK+8B,SAAU,EAOf/8B,KAAK81C,2BAA6BC,UAAUC,qBAAuBD,UAAUE,gBAA8D,IAA3CF,UAAUG,UAAU7lB,QAAQ,eAAwB0lB,UAAUI,YAQ9Jn2C,KAAKo2C,wBAQLp2C,KAAKq2C,mBAKLr2C,KAAK+iB,gBAAkB/iB,KAKvBA,KAAKs2C,kBAAoB,KAKzBt2C,KAAKu2C,qBAAuB,KAK5Bv2C,KAAKw2C,eAAiB,KAKtBx2C,KAAKy2C,aAAe,KAKpBz2C,KAAK02C,eAAiB,KAKtB12C,KAAK22C,gBAAkB,KAMvB32C,KAAK42C,oBAAsB,KAM3B52C,KAAK62C,qBAAuB,KAM5B72C,KAAK82C,WACD,GAAIz2C,GAAO02C,UAAUv8B,EAAMxa,MAC3B,GAAIK,GAAO02C,UAAUv8B,EAAMxa,MAC3B,GAAIK,GAAO02C,UAAUv8B,EAAMxa,MAC3B,GAAIK,GAAO02C,UAAUv8B,EAAMxa,QAKnCK,EAAOggC,QAAQh6B,WAUX2wC,aAAc,SAAU3yB,EAAS4yB,GAEJ,mBAAdA,KAEPj3C,KAAKs2C,kBAAoD,kBAAxBW,GAAUC,UAA4BD,EAAUC,UAAYl3C,KAAKs2C,kBAClGt2C,KAAKu2C,qBAA0D,kBAA3BU,GAAUE,aAA+BF,EAAUE,aAAen3C,KAAKu2C,qBAC3Gv2C,KAAKw2C,eAA8C,kBAArBS,GAAUlY,OAAyBkY,EAAUlY,OAAS/+B,KAAKw2C,eACzFx2C,KAAKy2C,aAA0C,kBAAnBQ,GAAUjY,KAAuBiY,EAAUjY,KAAOh/B,KAAKy2C,aACnFz2C,KAAK02C,eAA8C,kBAArBO,GAAUG,OAAyBH,EAAUG,OAASp3C,KAAK02C,eACzF12C,KAAK22C,gBAAgD,kBAAtBM,GAAU9O,QAA0B8O,EAAU9O,QAAUnoC,KAAK22C,gBAC5F32C,KAAK+iB,gBAAkBsB,IAW/B3T,MAAO,WAEH,IAAI1Q,KAAK61C,QAAT,CAMA71C,KAAK61C,SAAU,CAEf,IAAIpvB,GAAQzmB,IAEZA,MAAKq3C,oBAAsB,SAAUlrB,GACjC,MAAO1F,GAAM6wB,mBAAmBnrB,IAGpCnsB,KAAKu3C,uBAAyB,SAAUprB,GACpC,MAAO1F,GAAM+wB,sBAAsBrrB,IAGvCpkB,OAAOskB,iBAAiB,mBAAoBrsB,KAAKq3C,qBAAqB,GACtEtvC,OAAOskB,iBAAiB,sBAAuBrsB,KAAKu3C,wBAAwB,KAWhFD,mBAAoB,SAAUnrB,GAE1B,GAAIsrB,GAAStrB,EAAM0S,OACnB7+B,MAAK41C,SAAShjC,KAAK6kC,GACnBz3C,KAAK82C,UAAUW,EAAO/nB,OAAOgoB,QAAQD,IAWzCD,sBAAuB,SAAUrrB,GAE7B,GAAIwrB,GAAaxrB,EAAM0S,OAEvB,KAAK,GAAI/2B,KAAK9H,MAAK41C,SAEX51C,KAAK41C,SAAS9tC,GAAG4nB,QAAUioB,EAAWjoB,OAEtC1vB,KAAK41C,SAASzyB,OAAOrb,EAAE,EAI/B9H,MAAK82C,UAAUa,EAAWjoB,OAAOkoB,cASrCr5B,OAAQ,WAEJve,KAAK63C,gBAEL73C,KAAK83C,KAAKC,aACV/3C,KAAKg4C,KAAKD,aACV/3C,KAAKi4C,KAAKF,aACV/3C,KAAKk4C,KAAKH,cAUdF,cAAe,WAEX,GAAK73C,KAAK61C,QAAV,CAKA,GAAIE,UAAuB,YAEvB,GAAIoC,GAAcpC,UAAUI,kBAE3B,IAAIJ,UAA6B,kBAElC,GAAIoC,GAAcpC,UAAUC,wBAE3B,IAAID,UAA0B,eAE/B,GAAIoC,GAAcpC,UAAUE,gBAGhC,IAAIkC,EACJ,CACIn4C,KAAK41C,WAIL,KAAK,GAFDwC,IAAkB,EAEbtwC,EAAI,EAAGA,EAAIqwC,EAAYtwC,eAEjBswC,GAAYrwC,KAAO9H,KAAKo2C,qBAAqBtuC,KAEpDswC,GAAkB,EAClBp4C,KAAKo2C,qBAAqBtuC,SAAYqwC,GAAYrwC,IAGlDqwC,EAAYrwC,IAEZ9H,KAAK41C,SAAShjC,KAAKulC,EAAYrwC,IAIzB,IAANA,GAdgCA,KAoBxC,IAAK,GAAIgjB,GAAI,EAAGA,EAAI9qB,KAAK82C,UAAUjvC,OAAQijB,IAEvC9qB,KAAK82C,UAAUhsB,GAAGutB,QAAUr4C,KAAK41C,SAAS9qB,EAG9C,IAAIstB,EACJ,CAII,IAAK,GAFDE,GADAC,GAAqBC,cAAgBC,eAGhC5gC,EAAI,EAAGA,EAAI7X,KAAK82C,UAAUjvC,OAAQgQ,IAIvC,GAFAygC,EAAYt4C,KAAK82C,UAAUj/B,GAEvBygC,EAAUI,UAEV,IAAK,GAAIC,GAAI,EAAGA,EAAI34C,KAAK41C,SAAS/tC,OAAQ8wC,IAElC34C,KAAK41C,SAAS+C,GAAGjpB,QAAU4oB,EAAU5oB,QAErC6oB,EAAiBC,WAAWF,EAAU5oB,QAAS,EAC/C6oB,EAAiBE,WAAW5gC,IAAK,EAMjD,KAAK,GAAIzO,GAAI,EAAGA,EAAIpJ,KAAK82C,UAAUjvC,OAAQuB,IAIvC,GAFAkvC,EAAYt4C,KAAK82C,UAAU1tC,IAEvBmvC,EAAiBE,WAAWrvC,GAAhC,CAKIpJ,KAAK41C,SAAS/tC,OAAS,GAEvBywC,EAAUV,YAGd,KAAK,GAAI3hC,GAAI,EAAGA,EAAIjW,KAAK41C,SAAS/tC,SAE1B0wC,EAAiBE,WAAWrvC,GAFM6M,IAC1C,CAMI,GAAI2iC,GAAS54C,KAAK41C,SAAS3/B,EAE3B,IAAI2iC,EACJ,CACI,GAAIL,EAAiBC,WAAWI,EAAOlpB,OACvC,CACI4oB,EAAUV,YACV,UAIAU,EAAUZ,QAAQkB,GAClBL,EAAiBC,WAAWI,EAAOlpB,QAAS,EAC5C6oB,EAAiBE,WAAWrvC,IAAK,MAKrCkvC,GAAUV,mBAYlCiB,aAAc,SAAUtvC,GAEpB,IAAK,GAAIzB,GAAI,EAAGA,EAAI9H,KAAK82C,UAAUjvC,OAAQC,IAEvC9H,KAAK82C,UAAUhvC,GAAGgxC,SAAWvvC,GAUrC0yB,KAAM,WAEFj8B,KAAK61C,SAAU,EAEf9tC,OAAOwlB,oBAAoB,mBAAoBvtB,KAAKq3C,qBACpDtvC,OAAOwlB,oBAAoB,sBAAuBvtB,KAAKu3C,yBAQ3D73B,MAAO,WAEH1f,KAAKue,QAEL,KAAK,GAAIzW,GAAI,EAAGA,EAAI9H,KAAK82C,UAAUjvC,OAAQC,IAEvC9H,KAAK82C,UAAUhvC,GAAG4X,SAY1B2oB,YAAa,SAAUX,EAAY7rB,GAE/B,IAAK,GAAI/T,GAAI,EAAGA,EAAI9H,KAAK82C,UAAUjvC,OAAQC,IAEvC,GAAI9H,KAAK82C,UAAUhvC,GAAGugC,YAAYX,EAAY7rB,MAAc,EAExD,OAAO,CAIf,QAAO,GAWXysB,aAAc,SAAUZ,EAAY7rB,GAEhC,IAAK,GAAI/T,GAAI,EAAGA,EAAI9H,KAAK82C,UAAUjvC,OAAQC,IAEvC,GAAI9H,KAAK82C,UAAUhvC,GAAGwgC,aAAaZ,EAAY7rB,MAAc,EAEzD,OAAO,CAIf,QAAO,GAUX8rB,OAAQ,SAAUD,GAEd,IAAK,GAAI5/B,GAAI,EAAGA,EAAI9H,KAAK82C,UAAUjvC,OAAQC,IAEvC,GAAI9H,KAAK82C,UAAUhvC,GAAG6/B,OAAOD,MAAgB,EAEzC,OAAO,CAIf,QAAO,GAQX5jB,QAAS,WAEL9jB,KAAKi8B,MAEL,KAAK,GAAIn0B,GAAI,EAAGA,EAAI9H,KAAK82C,UAAUjvC,OAAQC,IAEvC9H,KAAK82C,UAAUhvC,GAAGgc,YAO9BzjB,EAAOggC,QAAQh6B,UAAU8B,YAAc9H,EAAOggC,QAQ9C94B,OAAO2E,eAAe7L,EAAOggC,QAAQh6B,UAAW,UAE5C2F,IAAK,WACD,MAAOhM,MAAK61C,WAWpBtuC,OAAO2E,eAAe7L,EAAOggC,QAAQh6B,UAAW,aAE5C2F,IAAK,WACD,MAAOhM,MAAK81C,4BAWpBvuC,OAAO2E,eAAe7L,EAAOggC,QAAQh6B,UAAW,iBAE5C2F,IAAK,WACD,MAAOhM,MAAK41C,SAAS/tC,UAW7BN,OAAO2E,eAAe7L,EAAOggC,QAAQh6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAK82C,UAAU,MAW9BvvC,OAAO2E,eAAe7L,EAAOggC,QAAQh6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAK82C,UAAU,MAW9BvvC,OAAO2E,eAAe7L,EAAOggC,QAAQh6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAK82C,UAAU,MAW9BvvC,OAAO2E,eAAe7L,EAAOggC,QAAQh6B,UAAW,QAE5C2F,IAAK,WACD,MAAOhM,MAAK82C,UAAU,MAK9Bz2C,EAAOggC,QAAQ0Y,SAAW,EAC1B14C,EAAOggC,QAAQ2Y,SAAW,EAC1B34C,EAAOggC,QAAQ4Y,SAAW,EAC1B54C,EAAOggC,QAAQ6Y,SAAW,EAC1B74C,EAAOggC,QAAQ8Y,SAAW,EAC1B94C,EAAOggC,QAAQ+Y,SAAW,EAC1B/4C,EAAOggC,QAAQgZ,SAAW,EAC1Bh5C,EAAOggC,QAAQiZ,SAAW,EAC1Bj5C,EAAOggC,QAAQkZ,SAAW,EAC1Bl5C,EAAOggC,QAAQmZ,SAAW,EAC1Bn5C,EAAOggC,QAAQoZ,UAAY,GAC3Bp5C,EAAOggC,QAAQqZ,UAAY,GAC3Br5C,EAAOggC,QAAQsZ,UAAY,GAC3Bt5C,EAAOggC,QAAQuZ,UAAY,GAC3Bv5C,EAAOggC,QAAQwZ,UAAY,GAC3Bx5C,EAAOggC,QAAQyZ,UAAY,GAE3Bz5C,EAAOggC,QAAQ0Z,OAAS,EACxB15C,EAAOggC,QAAQ2Z,OAAS,EACxB35C,EAAOggC,QAAQ4Z,OAAS,EACxB55C,EAAOggC,QAAQ6Z,OAAS,EACxB75C,EAAOggC,QAAQ8Z,OAAS,EACxB95C,EAAOggC,QAAQ+Z,OAAS,EACxB/5C,EAAOggC,QAAQga,OAAS,EACxBh6C,EAAOggC,QAAQia,OAAS,EACxBj6C,EAAOggC,QAAQka,OAAS,EACxBl6C,EAAOggC,QAAQma,OAAS,EAMxBn6C,EAAOggC,QAAQoa,UAAY,EAC3Bp6C,EAAOggC,QAAQqa,UAAY,EAC3Br6C,EAAOggC,QAAQsa,UAAY,EAC3Bt6C,EAAOggC,QAAQua,UAAY,EAC3Bv6C,EAAOggC,QAAQwa,oBAAsB,EACrCx6C,EAAOggC,QAAQya,qBAAuB,EACtCz6C,EAAOggC,QAAQ0a,qBAAuB,EACtC16C,EAAOggC,QAAQ2a,sBAAwB,EACvC36C,EAAOggC,QAAQ4a,aAAe,EAC9B56C,EAAOggC,QAAQ6a,cAAgB,EAC/B76C,EAAOggC,QAAQ8a,0BAA4B,GAC3C96C,EAAOggC,QAAQ+a,2BAA6B,GAE5C/6C,EAAOggC,QAAQgb,kBAAoB,GACnCh7C,EAAOggC,QAAQib,mBAAqB,GACpCj7C,EAAOggC,QAAQkb,gBAAkB,GACjCl7C,EAAOggC,QAAQmb,kBAAoB,GAGnCn7C,EAAOggC,QAAQob,qBAAuB,EACtCp7C,EAAOggC,QAAQqb,qBAAuB,EACtCr7C,EAAOggC,QAAQsb,sBAAwB,EACvCt7C,EAAOggC,QAAQub,sBAAwB,EAIvCv7C,EAAOggC,QAAQwb,QAAU,EACzBx7C,EAAOggC,QAAQyb,aAAe,EAC9Bz7C,EAAOggC,QAAQ0b,aAAe,EAC9B17C,EAAOggC,QAAQ2b,eAAiB,EAChC37C,EAAOggC,QAAQ4b,SAAW,EAC1B57C,EAAOggC,QAAQ6b,SAAW,EAC1B77C,EAAOggC,QAAQ8b,SAAW,EAC1B97C,EAAOggC,QAAQ+b,SAAW,EAC1B/7C,EAAOggC,QAAQgc,aAAe,EAC9Bh8C,EAAOggC,QAAQic,YAAc,EAC7Bj8C,EAAOggC,QAAQkc,wBAA0B,GACzCl8C,EAAOggC,QAAQmc,yBAA2B,GAC1Cn8C,EAAOggC,QAAQoc,cAAgB,GAC/Bp8C,EAAOggC,QAAQqc,gBAAkB,GACjCr8C,EAAOggC,QAAQsc,gBAAkB,GACjCt8C,EAAOggC,QAAQuc,iBAAmB,GAClCv8C,EAAOggC,QAAQwc,mBAAqB,EACpCx8C,EAAOggC,QAAQyc,mBAAqB,EACpCz8C,EAAOggC,QAAQ0c,oBAAsB,EACrC18C,EAAOggC,QAAQ2c,oBAAsB,EAiBrC38C,EAAO02C,UAAY,SAAUv8B,EAAMyiC,GAK/Bj9C,KAAKwa,KAAOA,EAMZxa,KAAK0vB,MAAQ,KAMb1vB,KAAK04C,WAAY,EAKjB14C,KAAK+iB,gBAAkB/iB,KAKvBA,KAAKs2C,kBAAoB,KAKzBt2C,KAAKu2C,qBAAuB,KAK5Bv2C,KAAKw2C,eAAiB,KAKtBx2C,KAAKy2C,aAAe,KAKpBz2C,KAAK02C,eAAiB,KAKtB12C,KAAK22C,gBAAkB,KAKvB32C,KAAK84C,SAAW,IAMhB94C,KAAKk9C,WAAaD,EAMlBj9C,KAAKq4C,QAAU,KAMfr4C,KAAKm9C,eAAiB,KAMtBn9C,KAAKo9C,YAMLp9C,KAAKq9C,YAAc,EAMnBr9C,KAAKs9C,SAMLt9C,KAAKu9C,SAAW,GAIpBl9C,EAAO02C,UAAU1wC,WAUb2wC,aAAc,SAAU3yB,EAAS4yB,GAEJ,mBAAdA,KAEPj3C,KAAKs2C,kBAAoD,kBAAxBW,GAAUC,UAA4BD,EAAUC,UAAYl3C,KAAKs2C,kBAClGt2C,KAAKu2C,qBAA0D,kBAA3BU,GAAUE,aAA+BF,EAAUE,aAAen3C,KAAKu2C,qBAC3Gv2C,KAAKw2C,eAA8C,kBAArBS,GAAUlY,OAAyBkY,EAAUlY,OAAS/+B,KAAKw2C,eACzFx2C,KAAKy2C,aAA0C,kBAAnBQ,GAAUjY,KAAuBiY,EAAUjY,KAAOh/B,KAAKy2C,aACnFz2C,KAAK02C,eAA8C,kBAArBO,GAAUG,OAAyBH,EAAUG,OAASp3C,KAAK02C,eACzF12C,KAAK22C,gBAAgD,kBAAtBM,GAAU9O,QAA0B8O,EAAU9O,QAAUnoC,KAAK22C,gBAE5F32C,KAAK+iB,gBAAkBsB,IAY/Bm5B,UAAW,SAAU9V,GAEjB,MAAI1nC,MAAKo9C,SAAS1V,GAEP1nC,KAAKo9C,SAAS1V,GAId,MAUfqQ,WAAY,WAER,GAAK/3C,KAAK04C,WAAc14C,KAAKwa,KAAKuF,MAAMgd,SAAY/8B,KAAKwa,KAAKuF,MAAM8e,QAAQ9B,WAAY/8B,KAAKq4C,QAAQoF,WAAcz9C,KAAKq4C,QAAQoF,YAAcz9C,KAAKm9C,gBAAnJ,CAKA,IAAK,GAAIr1C,GAAI,EAAGA,EAAI9H,KAAKq9C,YAAav1C,IACtC,CACI,GAAI41C,GAAeC,MAAM39C,KAAKq4C,QAAQ7N,QAAQ1iC,IAAM9H,KAAKq4C,QAAQ7N,QAAQ1iC,GAAGyB,MAAQvJ,KAAKq4C,QAAQ7N,QAAQ1iC,EAErG41C,KAAiB19C,KAAKo9C,SAASt1C,GAAGyB,QAEb,IAAjBm0C,EAEA19C,KAAK49C,kBAAkB91C,EAAG41C,GAEJ,IAAjBA,EAEL19C,KAAK69C,gBAAgB/1C,EAAG41C,GAIxB19C,KAAK89C,mBAAmBh2C,EAAG41C,IAKvC,IAAK,GAAIhuB,GAAQ,EAAGA,EAAQ1vB,KAAKu9C,SAAU7tB,IAC3C,CACI,GAAInmB,GAAQvJ,KAAKq4C,QAAQ0F,KAAKruB,EAEzBnmB,GAAQ,GAAKA,EAAQvJ,KAAK84C,UAAsB,EAARvvC,GAAaA,GAASvJ,KAAK84C,SAEpE94C,KAAKg+C,kBAAkBtuB,EAAOnmB,GAI9BvJ,KAAKg+C,kBAAkBtuB,EAAO,GAItC1vB,KAAKm9C,eAAiBn9C,KAAKq4C,QAAQoF,YAUvC/F,QAAS,SAAUkB,GAEf,GAAIqF,IAAmBj+C,KAAK04C,SAE5B14C,MAAK04C,WAAY,EACjB14C,KAAK0vB,MAAQkpB,EAAOlpB,MAEpB1vB,KAAKq4C,QAAUO,EAEf54C,KAAKo9C,YACLp9C,KAAKq9C,YAAczE,EAAOpO,QAAQ3iC,OAElC7H,KAAKs9C,SACLt9C,KAAKu9C,SAAW3E,EAAOmF,KAAKl2C,MAE5B,KAAK,GAAI4G,GAAI,EAAGA,EAAIzO,KAAKu9C,SAAU9uC,IAE/BzO,KAAKs9C,MAAM7uC,GAAKmqC,EAAOmF,KAAKtvC,EAGhC,KAAK,GAAIi5B,KAAckR,GAAOpO,QAE1B9C,EAAar9B,SAASq9B,EAAY,IAClC1nC,KAAKo9C,SAAS1V,GAAc,GAAIrnC,GAAOonC,aAAaznC,KAAM0nC,EAG1DuW,IAAmBj+C,KAAKk9C,WAAW5G,mBAEnCt2C,KAAKk9C,WAAW5G,kBAAkBxvC,KAAK9G,KAAKk9C,WAAWn6B,gBAAiB/iB,KAAK0vB,OAG7EuuB,GAAmBj+C,KAAKs2C,mBAExBt2C,KAAKs2C,kBAAkBxvC,KAAK9G,KAAK+iB,kBAUzC60B,WAAY,WAER,GAAIqG,GAAkBj+C,KAAK04C,UACvBwF,EAAqBl+C,KAAK0vB,KAE9B1vB,MAAK04C,WAAY,EACjB14C,KAAK0vB,MAAQ,KAEb1vB,KAAKq4C,QAAU3uC,MAEf,KAAK,GAAI5B,GAAI,EAAGA,EAAI9H,KAAKq9C,YAAav1C,IAElC9H,KAAKo9C,SAASt1C,GAAGgc,SAGrB9jB,MAAKo9C,YACLp9C,KAAKq9C,YAAc,EAEnBr9C,KAAKs9C,SACLt9C,KAAKu9C,SAAW,EAEZU,GAAmBj+C,KAAKk9C,WAAW3G,sBAEnCv2C,KAAKk9C,WAAW3G,qBAAqBzvC,KAAK9G,KAAKk9C,WAAWn6B,gBAAiBm7B,GAG3ED,GAAmBj+C,KAAKu2C,sBAExBv2C,KAAKu2C,qBAAqBzvC,KAAK9G,KAAK+iB,kBAU5Ce,QAAS,WAEL9jB,KAAKq4C,QAAU3uC,MAEf,KAAK,GAAI5B,GAAI,EAAGA,EAAI9H,KAAKq9C,YAAav1C,IAElC9H,KAAKo9C,SAASt1C,GAAGgc,SAGrB9jB,MAAKo9C,YACLp9C,KAAKq9C,YAAc,EAEnBr9C,KAAKs9C,SACLt9C,KAAKu9C,SAAW,EAEhBv9C,KAAKs2C,kBAAoB,KACzBt2C,KAAKu2C,qBAAuB,KAC5Bv2C,KAAKw2C,eAAiB,KACtBx2C,KAAKy2C,aAAe,KACpBz2C,KAAK02C,eAAiB,KACtB12C,KAAK22C,gBAAkB,MAU3BqH,kBAAmB,SAAUtuB,EAAOnmB,GAE5BvJ,KAAKs9C,MAAM5tB,KAAWnmB,IAK1BvJ,KAAKs9C,MAAM5tB,GAASnmB,EAEhBvJ,KAAKk9C,WAAWxG,gBAEhB12C,KAAKk9C,WAAWxG,eAAe5vC,KAAK9G,KAAKk9C,WAAWn6B,gBAAiB/iB,KAAM0vB,EAAOnmB,GAGlFvJ,KAAK02C,gBAEL12C,KAAK02C,eAAe5vC,KAAK9G,KAAK+iB,gBAAiB/iB,KAAM0vB,EAAOnmB,KAYpEq0C,kBAAmB,SAAUlW,EAAYn+B,GAEjCvJ,KAAKo9C,SAAS1V,IAEd1nC,KAAKo9C,SAAS1V,GAAYh3B,MAAM,KAAMnH,GAGtCvJ,KAAKk9C,WAAW1G,gBAEhBx2C,KAAKk9C,WAAW1G,eAAe1vC,KAAK9G,KAAKk9C,WAAWn6B,gBAAiB2kB,EAAYn+B,EAAOvJ,KAAK0vB,OAG7F1vB,KAAKw2C,gBAELx2C,KAAKw2C,eAAe1vC,KAAK9G,KAAK+iB,gBAAiB2kB,EAAYn+B,IAYnEs0C,gBAAiB,SAAUnW,EAAYn+B,GAE/BvJ,KAAKk9C,WAAWzG,cAEhBz2C,KAAKk9C,WAAWzG,aAAa3vC,KAAK9G,KAAKk9C,WAAWn6B,gBAAiB2kB,EAAYn+B,EAAOvJ,KAAK0vB,OAG3F1vB,KAAKy2C,cAELz2C,KAAKy2C,aAAa3vC,KAAK9G,KAAK+iB,gBAAiB2kB,EAAYn+B,GAGzDvJ,KAAKo9C,SAAS1V,IAEd1nC,KAAKo9C,SAAS1V,GAAYzL,KAAK,KAAM1yB,IAY7Cu0C,mBAAoB,SAAUpW,EAAYn+B,GAElCvJ,KAAKk9C,WAAWvG,iBAEhB32C,KAAKk9C,WAAWvG,gBAAgB7vC,KAAK9G,KAAKk9C,WAAWn6B,gBAAiB2kB,EAAYn+B,EAAOvJ,KAAK0vB,OAG9F1vB,KAAK22C,iBAEL32C,KAAK22C,gBAAgB7vC,KAAK9G,KAAK+iB,gBAAiB2kB,EAAYn+B,GAG5DvJ,KAAKo9C,SAAS1V,IAEd1nC,KAAKo9C,SAAS1V,GAAYU,SAAS7+B,IAY3C40C,KAAM,SAAUC,GAEZ,MAAIp+C,MAAKs9C,MAAMc,GAEJp+C,KAAKs9C,MAAMc,IAGf,GAWXzW,OAAQ,SAAUD,GAEd,MAAI1nC,MAAKo9C,SAAS1V,GAEP1nC,KAAKo9C,SAAS1V,GAAYC,QAG9B,GAWXC,KAAM,SAAUF,GAEZ,MAAI1nC,MAAKo9C,SAAS1V,GAEP1nC,KAAKo9C,SAAS1V,GAAYE,MAG9B,GAYXU,aAAc,SAAUZ,EAAY7rB,GAEhC,MAAI7b,MAAKo9C,SAAS1V,GAEP1nC,KAAKo9C,SAAS1V,GAAYY,aAAazsB,GAFlD,QAeJwsB,YAAa,SAAUX,EAAY7rB,GAE/B,MAAI7b,MAAKo9C,SAAS1V,GAEP1nC,KAAKo9C,SAAS1V,GAAYW,YAAYxsB,GAFjD,QAeJwiC,YAAa,SAAU3W,GAEnB,MAAI1nC,MAAKo9C,SAAS1V,GAEP1nC,KAAKo9C,SAAS1V,GAAYn+B,MAG9B,MASXmW,MAAO,WAEH,IAAK,GAAI7H,GAAI,EAAGA,EAAI7X,KAAKs9C,MAAMz1C,OAAQgQ,IAEnC7X,KAAKs9C,MAAMzlC,GAAK,IAO5BxX,EAAO02C,UAAU1wC,UAAU8B,YAAc9H,EAAO02C,UAgBhD12C,EAAOi+C,IAAM,SAAU9jC,EAAM+jC,GAKzBv+C,KAAKwa,KAAOA,EAOZxa,KAAKw+C,UAAW,EAMhBx+C,KAAKmsB,MAAQ,KAMbnsB,KAAK2nC,QAAS,EAMd3nC,KAAK4nC,MAAO,EAMZ5nC,KAAKgoC,QAAS,EAMdhoC,KAAKkoC,SAAU,EAMfloC,KAAKioC,UAAW,EAKhBjoC,KAAK6nC,SAAW,EAQhB7nC,KAAK6b,SAAW,EAMhB7b,KAAK8nC,OAAS,MAMd9nC,KAAK+nC,QAAU,EAKf/nC,KAAKy+C,QAAUF,EAKfv+C,KAAK++B,OAAS,GAAI1+B,GAAO+a,OAKzBpb,KAAK0+C,eAAiB,KAKtB1+C,KAAK2+C,cAAgB,KAKrB3+C,KAAKg/B,KAAO,GAAI3+B,GAAO+a,OAMvBpb,KAAK4+C,WAAY,EAMjB5+C,KAAK6+C,SAAU,GAInBx+C,EAAOi+C,IAAIj4C,WAQPkY,OAAQ,WAECve,KAAKw+C,UAENx+C,KAAK2nC,SAEL3nC,KAAK6b,SAAW7b,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK6nC,SAC3C7nC,KAAK+nC,UAED/nC,KAAK0+C,gBAEL1+C,KAAK0+C,eAAe53C,KAAK9G,KAAK2+C,cAAe3+C,QAazD8+C,eAAgB,SAAU3yB,GAEjBnsB,KAAKw+C,WAEVx+C,KAAKmsB,MAAQA,EAGTnsB,KAAK2nC,SAKT3nC,KAAKgoC,OAAS7b,EAAM6b,OACpBhoC,KAAKkoC,QAAU/b,EAAM+b,QACrBloC,KAAKioC,SAAW9b,EAAM8b,SAEtBjoC,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,EACZ5nC,KAAK6nC,SAAW7nC,KAAKwa,KAAKmE,KAAKA,KAC/B3e,KAAK6b,SAAW,EAChB7b,KAAK+nC,QAAU,EAIf/nC,KAAK4+C,WAAY,EAEjB5+C,KAAK++B,OAAOlgB,SAAS7e,SAWzB++C,aAAc,SAAU5yB,GAEfnsB,KAAKw+C,WAEVx+C,KAAKmsB,MAAQA,EAETnsB,KAAK4nC,OAKT5nC,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,EACZ5nC,KAAK8nC,OAAS9nC,KAAKwa,KAAKmE,KAAKA,KAC7B3e,KAAK6b,SAAW7b,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK6nC,SAI3C7nC,KAAK6+C,SAAU,EAEf7+C,KAAKg/B,KAAKngB,SAAS7e,SAavB0f,MAAO,SAAUohB,GAEAp3B,SAATo3B,IAAsBA,GAAO,GAEjC9gC,KAAK2nC,QAAS,EACd3nC,KAAK4nC,MAAO,EACZ5nC,KAAK8nC,OAAS9nC,KAAKwa,KAAKmE,KAAKA,KAC7B3e,KAAK6b,SAAW,EAChB7b,KAAKw+C,UAAW,EAChBx+C,KAAK4+C,WAAY,EACjB5+C,KAAK6+C,SAAU,EAEX/d,IAEA9gC,KAAK++B,OAAOnb,YACZ5jB,KAAKg/B,KAAKpb,YACV5jB,KAAK0+C,eAAiB,KACtB1+C,KAAK2+C,cAAgB,OAa7B1N,aAAc,SAAUp1B,GAIpB,MAFiBnS,UAAbmS,IAA0BA,EAAW,IAEjC7b,KAAK2nC,QAAU3nC,KAAK6b,SAAWA,GAY3CmjC,WAAY,SAAUnjC,GAIlB,MAFiBnS,UAAbmS,IAA0BA,EAAW,KAEhC7b,KAAK2nC,QAAY3nC,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK8nC,OAAUjsB,IAgBvEtU,OAAO2E,eAAe7L,EAAOi+C,IAAIj4C,UAAW,YAExC2F,IAAK,WAED,GAAI3C,GAAUrJ,KAAK4+C,SAEnB,OADA5+C,MAAK4+C,WAAY,EACVv1C,KAgBf9B,OAAO2E,eAAe7L,EAAOi+C,IAAIj4C,UAAW,UAExC2F,IAAK,WAED,GAAI3C,GAAUrJ,KAAK6+C,OAEnB,OADA7+C,MAAK6+C,SAAU,EACRx1C,KAcf9B,OAAO2E,eAAe7L,EAAOi+C,IAAIj4C,UAAW,WAExC2F,IAAK,WAED,MAAOhM,MAAKw+C,UAIhBvyC,IAAK,SAAU1C,GAEXA,IAAUA,EAENA,IAAUvJ,KAAKw+C,WAEVj1C,GAEDvJ,KAAK0f,OAAM,GAGf1f,KAAKw+C,SAAWj1C,MAM5BlJ,EAAOi+C,IAAIj4C,UAAU8B,YAAc9H,EAAOi+C,IAsB1Cj+C,EAAO+/B,SAAW,SAAU5lB,GAKxBxa,KAAKwa,KAAOA,EAOZxa,KAAK+8B,SAAU,EAKf/8B,KAAKmsB,MAAQ,KAKbnsB,KAAKi/C,WAAa,KAKlBj/C,KAAK+iB,gBAAkB/iB,KAKvBA,KAAKw2C,eAAiB,KAKtBx2C,KAAKk/C,gBAAkB,KAKvBl/C,KAAKy2C,aAAe,KAMpBz2C,KAAKm/C,SAMLn/C,KAAKo/C,YAOLp/C,KAAKq/C,WAAa,KAOlBr/C,KAAKs/C,YAAc,KAOnBt/C,KAAKu/C,SAAW,KAMhBv/C,KAAKkqB,GAAK,EAMVlqB,KAAKw/C,GAAK,GAIdn/C,EAAO+/B,SAAS/5B,WAWZ2wC,aAAc,SAAU3yB,EAAS0a,EAAQC,EAAMygB,GAE3Cz/C,KAAK+iB,gBAAkBsB,EAER3a,SAAXq1B,GAAmC,OAAXA,IAExB/+B,KAAKw2C,eAAiBzX,GAGbr1B,SAATs1B,GAA+B,OAATA,IAEtBh/B,KAAKy2C,aAAezX,GAGRt1B,SAAZ+1C,GAAqC,OAAZA,IAEzBz/C,KAAKk/C,gBAAkBO,IAa/BC,OAAQ,SAAUnB,GASd,MAPKv+C,MAAKm/C,MAAMZ,KAEZv+C,KAAKm/C,MAAMZ,GAAW,GAAIl+C,GAAOi+C,IAAIt+C,KAAKwa,KAAM+jC,GAEhDv+C,KAAK2/C,cAAcpB,IAGhBv+C,KAAKm/C,MAAMZ,IAiBtBqB,QAAS,SAAU9zC,GAEf,GAAIiC,KAEJ,KAAK,GAAIhC,KAAOD,GAEZiC,EAAOhC,GAAO/L,KAAK0/C,OAAO5zC,EAAKC,GAGnC,OAAOgC,IAUX8xC,UAAW,SAAUtB,GAEbv+C,KAAKm/C,MAAMZ,KAEXv+C,KAAKm/C,MAAMZ,GAAW,KAEtBv+C,KAAK8/C,iBAAiBvB,KAW9BwB,iBAAkB,WAEd,MAAO//C,MAAK4/C,SAAUI,GAAM3/C,EAAO4/C,QAAQl/C,GAAI4pC,KAAQtqC,EAAO4/C,QAAQj/C,KAAM6J,KAAQxK,EAAO4/C,QAAQp/C,KAAM+J,MAASvK,EAAO4/C,QAAQn/C,SAWrI4P,MAAO,WAEH,IAAI1Q,KAAKwa,KAAKkS,OAAOmO,UAKG,OAApB76B,KAAKq/C,WAAT,CAMA,GAAI54B,GAAQzmB,IAEZA,MAAKq/C,WAAa,SAAUlzB,GACxB,MAAO1F,GAAMq4B,eAAe3yB,IAGhCnsB,KAAKu/C,SAAW,SAAUpzB,GACtB,MAAO1F,GAAMs4B,aAAa5yB,IAG9BnsB,KAAKs/C,YAAc,SAAUnzB,GACzB,MAAO1F,GAAMy5B,gBAAgB/zB,IAGjCpkB,OAAOskB,iBAAiB,UAAWrsB,KAAKq/C,YAAY,GACpDt3C,OAAOskB,iBAAiB,QAASrsB,KAAKu/C,UAAU,GAChDx3C,OAAOskB,iBAAiB,WAAYrsB,KAAKs/C,aAAa,KAS1DrjB,KAAM,WAEFl0B,OAAOwlB,oBAAoB,UAAWvtB,KAAKq/C,YAC3Ct3C,OAAOwlB,oBAAoB,QAASvtB,KAAKu/C,UACzCx3C,OAAOwlB,oBAAoB,WAAYvtB,KAAKs/C,aAE5Ct/C,KAAKq/C,WAAa,KAClBr/C,KAAKu/C,SAAW,KAChBv/C,KAAKs/C,YAAc,MAUvBx7B,QAAS,WAEL9jB,KAAKi8B,OAELj8B,KAAKmgD,gBAELngD,KAAKm/C,MAAMt3C,OAAS,EACpB7H,KAAKkqB,GAAK,GAgBdy1B,cAAe,SAAUpB,GAErB,GAAuB,gBAAZA,GAEP,IAAK,GAAIxyC,KAAOwyC,GAEZv+C,KAAKo/C,SAASb,EAAQxyC,KAAQ,MAKlC/L,MAAKo/C,SAASb,IAAW,GAUjCuB,iBAAkB,SAAUvB,SAEjBv+C,MAAKo/C,SAASb,IASzB4B,cAAe,WAEXngD,KAAKo/C,aAST7gC,OAAQ,WAIJ,IAFAve,KAAKkqB,GAAKlqB,KAAKm/C,MAAMt3C,OAEd7H,KAAKkqB,MAEJlqB,KAAKm/C,MAAMn/C,KAAKkqB,KAEhBlqB,KAAKm/C,MAAMn/C,KAAKkqB,IAAI3L,UAahCugC,eAAgB,SAAU3yB,GAItB,GAFAnsB,KAAKmsB,MAAQA,EAERnsB,KAAKwa,KAAKuF,MAAMgd,SAAY/8B,KAAK+8B,QAAtC,CAKA,GAAIhxB,GAAMogB,EAAMsyB,OAGZz+C,MAAKo/C,SAASrzC,IAEdogB,EAAM8O,iBAGLj7B,KAAKm/C,MAAMpzC,KAEZ/L,KAAKm/C,MAAMpzC,GAAO,GAAI1L,GAAOi+C,IAAIt+C,KAAKwa,KAAMzO,IAGhD/L,KAAKm/C,MAAMpzC,GAAK+yC,eAAe3yB,GAE/BnsB,KAAKw/C,GAAKzzC,EAEN/L,KAAKw2C,gBAELx2C,KAAKw2C,eAAe1vC,KAAK9G,KAAK+iB,gBAAiBoJ,KAYvD+zB,gBAAiB,SAAU/zB,GAEvBnsB,KAAKi/C,WAAa9yB,EAEbnsB,KAAKwa,KAAKuF,MAAMgd,SAAY/8B,KAAK+8B,SAKlC/8B,KAAKk/C,iBAELl/C,KAAKk/C,gBAAgBp4C,KAAK9G,KAAK+iB,gBAAiBq9B,OAAOC,aAAal0B,EAAMm0B,UAAWn0B,IAY7F4yB,aAAc,SAAU5yB,GAIpB,GAFAnsB,KAAKmsB,MAAQA,EAERnsB,KAAKwa,KAAKuF,MAAMgd,SAAY/8B,KAAK+8B,QAAtC,CAKA,GAAIhxB,GAAMogB,EAAMsyB,OAEZz+C,MAAKo/C,SAASrzC,IAEdogB,EAAM8O,iBAGLj7B,KAAKm/C,MAAMpzC,KAEZ/L,KAAKm/C,MAAMpzC,GAAO,GAAI1L,GAAOi+C,IAAIt+C,KAAKwa,KAAMzO,IAGhD/L,KAAKm/C,MAAMpzC,GAAKgzC,aAAa5yB,GAEzBnsB,KAAKy2C,cAELz2C,KAAKy2C,aAAa3vC,KAAK9G,KAAK+iB,gBAAiBoJ,KAWrDzM,MAAO,SAAUohB,GAEAp3B,SAATo3B,IAAsBA,GAAO,GAEjC9gC,KAAKmsB,MAAQ,IAIb,KAFA,GAAIrkB,GAAI9H,KAAKm/C,MAAMt3C,OAEZC,KAEC9H,KAAKm/C,MAAMr3C,IAEX9H,KAAKm/C,MAAMr3C,GAAG4X,MAAMohB,IAehCmQ,aAAc,SAAUsN,EAAS1iC,GAE7B,MAAI7b,MAAKm/C,MAAMZ,GAEJv+C,KAAKm/C,MAAMZ,GAAStN,aAAap1B,GAIjC,MAcfmjC,WAAY,SAAUT,EAAS1iC,GAE3B,MAAI7b,MAAKm/C,MAAMZ,GAEJv+C,KAAKm/C,MAAMZ,GAASS,WAAWnjC,GAI/B,MAYf8rB,OAAQ,SAAU4W,GAEd,MAAIv+C,MAAKm/C,MAAMZ,GAEJv+C,KAAKm/C,MAAMZ,GAAS5W,OAIpB,OAanBpgC,OAAO2E,eAAe7L,EAAO+/B,SAAS/5B,UAAW,YAE7C2F,IAAK,WAED,MAA4B,MAAxBhM,KAAKmsB,MAAMm0B,SAEJ,GAIAF,OAAOC,aAAargD,KAAKi/C,WAAWqB,aAavD/4C,OAAO2E,eAAe7L,EAAO+/B,SAAS/5B,UAAW,WAE7C2F,IAAK,WAED,MAAOhM,MAAKm/C,MAAMn/C,KAAKw/C,OAM/Bn/C,EAAO+/B,SAAS/5B,UAAU8B,YAAc9H,EAAO+/B,SAiB/C//B,EAAO4/C,SAEHM,EAAG,IAAIC,WAAW,GAElBC,EAAG,IAAID,WAAW,GAElBE,EAAG,IAAIF,WAAW,GAElBG,EAAG,IAAIH,WAAW,GAElBI,EAAG,IAAIJ,WAAW,GAElBr5C,EAAG,IAAIq5C,WAAW,GAElBK,EAAG,IAAIL,WAAW,GAElBM,EAAG,IAAIN,WAAW,GAElBO,EAAG,IAAIP,WAAW,GAElBQ,EAAG,IAAIR,WAAW,GAElBS,EAAG,IAAIT,WAAW,GAElBU,EAAG,IAAIV,WAAW,GAElBW,EAAG,IAAIX,WAAW,GAElBY,EAAG,IAAIZ,WAAW,GAElBa,EAAG,IAAIb,WAAW,GAElBc,EAAG,IAAId,WAAW,GAElBe,EAAG,IAAIf,WAAW,GAElBgB,EAAG,IAAIhB,WAAW,GAElBiB,EAAG,IAAIjB,WAAW,GAElBkB,EAAG,IAAIlB,WAAW,GAElBmB,EAAG,IAAInB,WAAW,GAElBoB,EAAG,IAAIpB,WAAW,GAElBqB,EAAG,IAAIrB,WAAW,GAElBsB,EAAG,IAAItB,WAAW,GAElBuB,EAAG,IAAIvB,WAAW,GAElBwB,EAAG,IAAIxB,WAAW,GAElByB,KAAM,IAAIzB,WAAW,GAErB0B,IAAK,IAAI1B,WAAW,GAEpB2B,IAAK,IAAI3B,WAAW,GAEpB4B,MAAO,IAAI5B,WAAW,GAEtB6B,KAAM,IAAI7B,WAAW,GAErB8B,KAAM,IAAI9B,WAAW,GAErB+B,IAAK,IAAI/B,WAAW,GAEpBgC,MAAO,IAAIhC,WAAW,GAEtBiC,MAAO,IAAIjC,WAAW,GAEtBkC,KAAM,IAAIlC,WAAW,GAErBmC,SAAU,GAEVC,SAAU,GAEVC,SAAU,GAEVC,SAAU,GAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,gBAAiB,IAEjBC,WAAY,IAEZC,aAAc,IAEdC,gBAAiB,IAEjBC,eAAgB,IAEhBC,cAAe,IAEfC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,MAAO,IAEPC,OAAQ,IAERC,MAAO,IAEPC,WAAY,IAEZC,OAAQ,IAERC,cAAe,IAEfC,MAAO,IAEPC,aAAc,IAEdC,eAAgB,IAEhBC,eAAgB,IAEhBC,OAAQ,IAERC,UAAW,EAEXC,IAAK,EAELC,MAAO,GAEPC,MAAO,GAEPC,MAAO,GAEPC,QAAS,GAETC,IAAK,GAELC,UAAW,GAEXC,IAAK,GAELC,SAAU,GAEVC,QAAS,GAETC,UAAW,GAEXC,IAAK,GAELC,KAAM,GAENrlD,KAAM,GAENE,GAAI,GAEJD,MAAO,GAEPE,KAAM,GAENmlD,KAAM,GAENC,MAAO,GAEPC,OAAQ,GAERC,OAAQ,GAERC,KAAM,GAENC,SAAU,IAId,KAAK,GAAIz6C,KAAO1L,GAAO4/C,QACf5/C,EAAO4/C,QAAQj1C,eAAee,KAASA,EAAI06C,MAAM,WACjDpmD,EAAO+/B,SAASr0B,GAAO1L,EAAO4/C,QAAQl0C,GAU9C1L,GAAOqmD,UAAY,aAanBrmD,EAAOqmD,UAAUC,MAAQ,aAEzBtmD,EAAOqmD,UAAUC,MAAMtgD,WAenB6H,OAEIlC,IAAK,WAED,MAAO3L,GAAO0F,KAAK6gD,UAAUvmD,EAAO0F,KAAK2P,SAAS1V,KAAKw2B,YAI3DvqB,IAAK,SAAS1C,GAEVvJ,KAAKw2B,SAAWn2B,EAAO0F,KAAKgJ,SAAS1O,EAAO0F,KAAK6gD,UAAUr9C,OAmBvElJ,EAAOqmD,UAAUG,UAAY,aAE7BxmD,EAAOqmD,UAAUG,UAAUxgD,WAiBvBygD,KAAM,SAAU17C,EAAM27C,EAAWC,EAAMC,GAEnC,MAAIjnD,MAAKknD,WAEElnD,KAAKknD,WAAWJ,KAAK17C,EAAM27C,EAAWC,EAAMC,GAFvD,SAqBR5mD,EAAOqmD,UAAUS,SAAW,aAE5B9mD,EAAOqmD,UAAUS,SAAS9gD,WAatB+gD,UAAU,EASVC,UAEIr7C,IAAK,WASD,MAPKhM,MAAKonD,UAAapnD,KAAKsnD,mBAExBtnD,KAAKunD,QAAQ95C,SAASzN,KAAKsN,aAC3BtN,KAAKunD,QAAQthD,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EACxCjG,KAAKunD,QAAQ96C,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,GAGrCzM,KAAKwa,KAAKC,MAAMmC,OAAOlC,KAAK5L,WAAW9O,KAAKunD,YAmB/DlnD,EAAOqmD,UAAUc,OAAS,aAE1BnnD,EAAOqmD,UAAUc,OAAOnhD,WAUpBovC,SAEIzpC,IAAK,WAED,MAAOhM,MAAKqpB,OAAOpjB,EAAIjG,KAAK+P,QAcpC2lC,SAEI1pC,IAAK,WAED,MAAOhM,MAAKqpB,OAAO5c,EAAIzM,KAAKgQ,SAYpCyI,SAEIzM,IAAK,WAED,MAAQhM,MAAKiG,EAAIjG,KAAKy1C,QAAyB,GAAbz1C,KAAK+P,OAI3C9D,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAKsD,EAAQvJ,KAAKy1C,QAAyB,GAAbz1C,KAAK+P,QAYhD2I,SAEI1M,IAAK,WAED,MAAQhM,MAAKyM,EAAIzM,KAAK01C,QAA0B,GAAd11C,KAAKgQ,QAI3C/D,IAAK,SAAU1C,GAEXvJ,KAAKyM,EAAKlD,EAAQvJ,KAAK01C,QAA0B,GAAd11C,KAAKgQ,SAYhDnF,MAEImB,IAAK,WAED,MAAOhM,MAAKiG,EAAIjG,KAAKy1C,SAIzBxpC,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAIsD,EAAQvJ,KAAKy1C,UAY9B7qC,OAEIoB,IAAK,WAED,MAAQhM,MAAKiG,EAAIjG,KAAK+P,MAAS/P,KAAKy1C,SAIxCxpC,IAAK,SAAU1C,GAEXvJ,KAAKiG,EAAIsD,EAASvJ,KAAU,MAAIA,KAAKy1C,UAY7C/mC,KAEI1C,IAAK,WAED,MAAOhM,MAAKyM,EAAIzM,KAAK01C,SAIzBzpC,IAAK,SAAU1C,GAEXvJ,KAAKyM,EAAIlD,EAAQvJ,KAAK01C,UAY9B/mC,QAEI3C,IAAK,WAED,MAAQhM,MAAKyM,EAAIzM,KAAKgQ,OAAUhQ,KAAK01C,SAIzCzpC,IAAK,SAAU1C,GAEXvJ,KAAKyM,EAAIlD,EAASvJ,KAAW,OAAIA,KAAK01C,UA6C9CtkB,QAAS,SAAUq2B,EAAWluC,EAAUk8B,EAASC,GAK7C,OAHgBhsC,SAAZ+rC,IAAyBA,EAAU,GACvB/rC,SAAZgsC,IAAyBA,EAAU,GAE/Bn8B,GAEJ,QACA,IAAKlZ,GAAOsD,SACR3D,KAAK6K,KAAO48C,EAAU58C,KAAO4qC,EAC7Bz1C,KAAK0O,IAAM+4C,EAAU/4C,IAAMgnC,CAC3B,MAEJ,KAAKr1C,GAAOuD,WACR5D,KAAKyY,QAAUgvC,EAAUhvC,QAAUg9B,EACnCz1C,KAAK0O,IAAM+4C,EAAU/4C,IAAMgnC,CAC3B,MAEJ,KAAKr1C,GAAOwD,UACR7D,KAAK4K,MAAQ68C,EAAU78C,MAAQ6qC,EAC/Bz1C,KAAK0O,IAAM+4C,EAAU/4C,IAAMgnC,CAC3B,MAEJ,KAAKr1C,GAAO0D,YACR/D,KAAK6K,KAAO48C,EAAU58C,KAAO4qC,EAC7Bz1C,KAAK0Y,QAAU+uC,EAAU/uC,QAAUg9B,CACnC,MAEJ,KAAKr1C,GAAO4D,OACRjE,KAAKyY,QAAUgvC,EAAUhvC,QAAUg9B,EACnCz1C,KAAK0Y,QAAU+uC,EAAU/uC,QAAUg9B,CACnC,MAEJ,KAAKr1C,GAAO8D,aACRnE,KAAK4K,MAAQ68C,EAAU78C,MAAQ6qC,EAC/Bz1C,KAAK0Y,QAAU+uC,EAAU/uC,QAAUg9B,CACnC,MAEJ,KAAKr1C,GAAOgE,YACRrE,KAAK6K,KAAO48C,EAAU58C,KAAO4qC,EAC7Bz1C,KAAK2O,OAAS84C,EAAU94C,OAAS+mC,CACjC,MAEJ,KAAKr1C,GAAOiE,cACRtE,KAAKyY,QAAUgvC,EAAUhvC,QAAUg9B,EACnCz1C,KAAK2O,OAAS84C,EAAU94C,OAAS+mC,CACjC,MAEJ,KAAKr1C,GAAOkE,aACRvE,KAAK4K,MAAQ68C,EAAU78C,MAAQ6qC,EAC/Bz1C,KAAK2O,OAAS84C,EAAU94C,OAAS+mC,EAIzC,MAAO11C,OA4CX0nD,QAAS,SAAUl+B,EAAQjQ,EAAUk8B,EAASC,GAK1C,OAHgBhsC,SAAZ+rC,IAAyBA,EAAU,GACvB/rC,SAAZgsC,IAAyBA,EAAU,GAE/Bn8B,GAEJ,QACA,IAAKlZ,GAAOsD,SACR3D,KAAK6K,KAAO2e,EAAO3e,KAAO4qC,EAC1Bz1C,KAAK2O,OAAS6a,EAAO9a,IAAMgnC,CAC3B,MAEJ,KAAKr1C,GAAOuD,WACR5D,KAAKyY,QAAU+Q,EAAO/Q,QAAUg9B,EAChCz1C,KAAK2O,OAAS6a,EAAO9a,IAAMgnC,CAC3B,MAEJ,KAAKr1C,GAAOwD,UACR7D,KAAK4K,MAAQ4e,EAAO5e,MAAQ6qC,EAC5Bz1C,KAAK2O,OAAS6a,EAAO9a,IAAMgnC,CAC3B,MAEJ,KAAKr1C,GAAOyD,SACR9D,KAAK4K,MAAQ4e,EAAO3e,KAAO4qC,EAC3Bz1C,KAAK0O,IAAM8a,EAAO9a,IAAMgnC,CACxB,MAEJ,KAAKr1C,GAAO0D,YACR/D,KAAK4K,MAAQ4e,EAAO3e,KAAO4qC,EAC3Bz1C,KAAK0Y,QAAU8Q,EAAO9Q,QAAUg9B,CAChC,MAEJ,KAAKr1C,GAAO2D,YACRhE,KAAK4K,MAAQ4e,EAAO3e,KAAO4qC,EAC3Bz1C,KAAK2O,OAAS6a,EAAO7a,OAAS+mC,CAC9B,MAEJ,KAAKr1C,GAAO6D,UACRlE,KAAK6K,KAAO2e,EAAO5e,MAAQ6qC,EAC3Bz1C,KAAK0O,IAAM8a,EAAO9a,IAAMgnC,CACxB,MAEJ,KAAKr1C,GAAO8D,aACRnE,KAAK6K,KAAO2e,EAAO5e,MAAQ6qC,EAC3Bz1C,KAAK0Y,QAAU8Q,EAAO9Q,QAAUg9B,CAChC,MAEJ,KAAKr1C,GAAO+D,aACRpE,KAAK6K,KAAO2e,EAAO5e,MAAQ6qC,EAC3Bz1C,KAAK2O,OAAS6a,EAAO7a,OAAS+mC,CAC9B,MAEJ,KAAKr1C,GAAOgE,YACRrE,KAAK6K,KAAO2e,EAAO3e,KAAO4qC,EAC1Bz1C,KAAK0O,IAAM8a,EAAO7a,OAAS+mC,CAC3B,MAEJ,KAAKr1C,GAAOiE,cACRtE,KAAKyY,QAAU+Q,EAAO/Q,QAAUg9B,EAChCz1C,KAAK0O,IAAM8a,EAAO7a,OAAS+mC,CAC3B,MAEJ,KAAKr1C,GAAOkE,aACRvE,KAAK4K,MAAQ4e,EAAO5e,MAAQ6qC,EAC5Bz1C,KAAK0O,IAAM8a,EAAO7a,OAAS+mC,EAInC,MAAO11C,QAQfK,EAAOmtB,MAAMnnB,UAAU+qB,QAAU/wB,EAAOqmD,UAAUc,OAAOnhD,UAAU+qB,QACnE/wB,EAAOmtB,MAAMnnB,UAAUqhD,QAAUrnD,EAAOqmD,UAAUc,OAAOnhD,UAAUqhD,QAanErnD,EAAOqmD,UAAUiB,WAAa,aAY9BtnD,EAAOqmD,UAAUiB,WAAWthD,UAAUurB,WAAa,WAO/C,MALI5xB,MAAKwpB,QAELxpB,KAAKwpB,OAAOoI,WAAW5xB,MAGpBA,MAcXK,EAAOqmD,UAAUiB,WAAWthD,UAAUyrB,WAAa,WAO/C,MALI9xB,MAAKwpB,QAELxpB,KAAKwpB,OAAOsI,WAAW9xB,MAGpBA,MAcXK,EAAOqmD,UAAUiB,WAAWthD,UAAU0rB,OAAS,WAO3C,MALI/xB,MAAKwpB,QAELxpB,KAAKwpB,OAAOuI,OAAO/xB,MAGhBA,MAcXK,EAAOqmD,UAAUiB,WAAWthD,UAAU2rB,SAAW,WAO7C,MALIhyB,MAAKwpB,QAELxpB,KAAKwpB,OAAOwI,SAAShyB,MAGlBA,MAeXK,EAAOqmD,UAAUkB,KAAO;AAUxBvnD,EAAOqmD,UAAUkB,KAAKC,QAAU,SAAUC,GAGtCznD,EAAOmI,MAAMkD,eAAe1L,KAAMK,EAAOqmD,UAAUkB,KAAKvhD,WAExDrG,KAAK8nD,aAEL,KAAK,GAAIhgD,GAAI,EAAGA,EAAIggD,EAAWjgD,OAAQC,IACvC,CACI,GAAI6M,GAAKmzC,EAAWhgD,GAChB8D,GAAU,CAEH,aAAP+I,IAEA/I,GAAU,GAGdvL,EAAOmI,MAAMkD,eAAe1L,KAAMK,EAAOqmD,UAAU/xC,GAAItO,UAAWuF,GAElE5L,KAAK8nD,WAAWnzC,IAAM,IAa9BtU,EAAOqmD,UAAUkB,KAAKtnC,KAAO,SAAU9F,EAAMvU,EAAGwG,EAAGV,EAAK2kB,GAEpD1wB,KAAKwa,KAAOA,EAEZxa,KAAK+L,IAAMA,EAEX/L,KAAKqiC,QAELriC,KAAKuZ,SAAStN,IAAIhG,EAAGwG,GACrBzM,KAAKya,MAAQ,GAAIpa,GAAO2M,MAAM/G,EAAGwG,GACjCzM,KAAK+nD,iBAAmB,GAAI1nD,GAAO2M,MAAM/G,EAAGwG,GAE5CzM,KAAKkwB,OAAS,GAAI7vB,GAAO2nD,OAAOhoD,MAEhCA,KAAKunD,QAAU,GAAIlnD,GAAOkN,UAEtBvN,KAAK8nD,WAAWG,cAGhBjoD,KAAK2vB,KAAO3vB,KAAK2vB,MAGjB3vB,KAAK8nD,WAAWjB,YAEhB7mD,KAAKknD,WAAa,GAAI7mD,GAAO6nD,iBAAiBloD,OAG9CA,KAAK8nD,WAAWK,aAAuB,OAARp8C,GAE/B/L,KAAKk1B,YAAYnpB,EAAK2kB,GAGtB1wB,KAAK8nD,WAAWM,gBAEhBpoD,KAAKgvB,aAAe,GAAI3uB,GAAO2M,MAAM/G,EAAGwG,KAKhDpM,EAAOqmD,UAAUkB,KAAK5qC,UAAY,WAE9B,GAAIhd,KAAKkuB,eAGL,WADAluB,MAAK8jB,SAOT,IAHA9jB,KAAK+nD,iBAAiB97C,IAAIjM,KAAKya,MAAMxU,EAAGjG,KAAKya,MAAMhO,GACnDzM,KAAKqoD,iBAAmBroD,KAAKw2B,UAExBx2B,KAAKwqB,SAAWxqB,KAAKwpB,OAAOgB,OAG7B,MADAxqB,MAAK4zB,cAAgB,IACd,CAGX5zB,MAAKya,MAAMjN,MAAMxN,KAAKwa,KAAKoC,OAAO3W,EAAIjG,KAAKyqB,eAAe9Y,GAAI3R,KAAKwa,KAAKoC,OAAOnQ,EAAIzM,KAAKyqB,eAAe7Y,IAEnG5R,KAAK6a,UAEL7a,KAAK4zB,cAAgB5zB,KAAKwa,KAAKsC,MAAM4N,wBAGrC1qB,KAAKknD,YAELlnD,KAAKknD,WAAW3oC,SAGhBve,KAAK2vB,MAEL3vB,KAAK2vB,KAAK3S,WAGd,KAAK,GAAIlV,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGkV,WAGrB,QAAO,GAIX3c,EAAOqmD,UAAUkB,KAAKvhD,WAMlBmU,KAAM,KAQNpP,KAAM,GAUNi3B,QAOAylB,cAUAh6B,EAAG,EAQHoC,OAAQxmB,OAQRw9C,WAAYx9C,OAUZqC,IAAK,GAQL0O,MAAO,KAOPoJ,OAAO,EAOPkkC,iBAAkB,KAOlBM,iBAAkB,EAQlBz0B,cAAe,EAQf00B,OAAO,EAWPp6B,gBAAgB,EAMhBq5B,QAAS,KAMTgB,SAAS,EAaT/9B,QAEIxe,IAAK,WAED,MAAOhM,MAAKuoD,SAIhBt8C,IAAK,SAAU1C,GAEPA,GAEAvJ,KAAKuoD,SAAU,EAEXvoD,KAAK2vB,MAAQ3vB,KAAK2vB,KAAKznB,OAAS7H,EAAOutB,QAAQ46B,MAE/CxoD,KAAK2vB,KAAK1G,aAGdjpB,KAAK6a,SAAU,IAIf7a,KAAKuoD,SAAU,EAEXvoD,KAAK2vB,MAAQ3vB,KAAK2vB,KAAKznB,OAAS7H,EAAOutB,QAAQ46B,MAE/CxoD,KAAK2vB,KAAK84B,kBAGdzoD,KAAK6a,SAAU,KAc3B0D,OAAQ,aAUR6L,WAAY,WAEJpqB,KAAK0oD,cAEL1oD,KAAK+L,IAAI6U,SAGT5gB,KAAK8nD,WAAWG,aAEhB5nD,EAAOqmD,UAAUuB,YAAY79B,WAAWtjB,KAAK9G,MAG7CA,KAAK8nD,WAAWM,eAEhB/nD,EAAOqmD,UAAU0B,cAAch+B,WAAWtjB,KAAK9G,KAGnD,KAAK,GAAI8H,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGsiB,eAmB7B/pB,EAAOqmD,UAAUiC,KAAO,aAExBtoD,EAAOqmD,UAAUiC,KAAKtiD,WASlBuiD,SAAU,KAMVC,MAAO,KAmBPjW,KAAM,SAASl/B,EAAMpI,GAEJ5B,SAAT4B,IAAsBA,GAAO,GAE7BoI,GAEIpI,GAA0B,OAAlBtL,KAAK4oD,SAEb5oD,KAAK4oD,SAASp7C,MAAMkG,EAAKzN,EAAGyN,EAAKjH,EAAGiH,EAAK3D,MAAO2D,EAAK1D,QAEhD1E,GAA0B,OAAlBtL,KAAK4oD,SAElB5oD,KAAK4oD,SAAW,GAAIvoD,GAAOkN,UAAUmG,EAAKzN,EAAGyN,EAAKjH,EAAGiH,EAAK3D,MAAO2D,EAAK1D,QAItEhQ,KAAK4oD,SAAWl1C,EAGpB1T,KAAK8oD,eAIL9oD,KAAK6oD,MAAQ,KACb7oD,KAAK4oD,SAAW,KAEhB5oD,KAAK+oD,eAWbD,WAAY,WAER,GAAK9oD,KAAK4oD,SAAV,CAKA5oD,KAAK6oD,MAAQxoD,EAAOkN,UAAU/B,MAAMxL,KAAK4oD,SAAU5oD,KAAK6oD,OACxD7oD,KAAK6oD,MAAM5iD,GAAKjG,KAAKgpD,OAAO/iD,EAC5BjG,KAAK6oD,MAAMp8C,GAAKzM,KAAKgpD,OAAOv8C,CAE5B,IAAIyC,GAAKnJ,KAAKoM,IAAInS,KAAKgpD,OAAO/iD,EAAGjG,KAAK6oD,MAAM5iD,GACxCqJ,EAAKvJ,KAAKoM,IAAInS,KAAKgpD,OAAOv8C,EAAGzM,KAAK6oD,MAAMp8C,GACxCw8C,EAAKljD,KAAKkM,IAAIjS,KAAKgpD,OAAOp+C,MAAO5K,KAAK6oD,MAAMj+C,OAASsE,EACrDg6C,EAAKnjD,KAAKkM,IAAIjS,KAAKgpD,OAAOr6C,OAAQ3O,KAAK6oD,MAAMl6C,QAAUW,CAE3DtP,MAAKmiC,QAAQyQ,KAAK3sC,EAAIiJ,EACtBlP,KAAKmiC,QAAQyQ,KAAKnmC,EAAI6C,EACtBtP,KAAKmiC,QAAQyQ,KAAK7iC,MAAQk5C,EAC1BjpD,KAAKmiC,QAAQyQ,KAAK5iC,OAASk5C,EAE3BlpD,KAAKmiC,QAAQzR,MAAM3gB,MAAQhK,KAAKkM,IAAIg3C,EAAIjpD,KAAK4oD,SAAS74C,OACtD/P,KAAKmiC,QAAQzR,MAAM1gB,OAASjK,KAAKkM,IAAIi3C,EAAIlpD,KAAK4oD,SAAS54C,QAEvDhQ,KAAKmiC,QAAQpyB,MAAQ/P,KAAKmiC,QAAQzR,MAAM3gB,MACxC/P,KAAKmiC,QAAQnyB,OAAShQ,KAAKmiC,QAAQzR,MAAM1gB,OAEzChQ,KAAKmiC,QAAQgnB,gBAiBrB9oD,EAAOqmD,UAAU0C,MAAQ,aAEzB/oD,EAAOqmD,UAAU0C,MAAM/iD,WAUnBigC,QAEIt6B,IAAK,WAED,MAAOhM,MAAKya,MAAMxU,EAAIjG,KAAK+nD,iBAAiB9hD,IAcpDm/B,QAEIp5B,IAAK,WAED,MAAOhM,MAAKya,MAAMhO,EAAIzM,KAAK+nD,iBAAiBt7C,IAYpD+5B,QAEIx6B,IAAK,WAED,MAAOhM,MAAKw2B,SAAWx2B,KAAKqoD,oBAmBxChoD,EAAOqmD,UAAU2C,QAAU,aAE3BhpD,EAAOqmD,UAAU2C,QAAQhjD,WAQrB0vB,cAAc,EAedjS,QAAS,SAAUwS,EAAiBH,GAEhC,GAAkB,OAAdn2B,KAAKwa,OAAiBxa,KAAK+1B,aAA/B,CAEwBrsB,SAApB4sB,IAAiCA,GAAkB,GAChC5sB,SAAnBysB,IAAgCA,GAAiB,GAErDn2B,KAAK+1B,cAAe,EAEhB/1B,KAAKkwB,QAELlwB,KAAKkwB,OAAOo5B,mBAAmBtpD,MAG/BA,KAAKwpB,SAEDxpB,KAAKwpB,iBAAkBnpB,GAAOmtB,MAE9BxtB,KAAKwpB,OAAO1G,OAAO9iB,MAInBA,KAAKwpB,OAAO6I,YAAYryB,OAI5BA,KAAK+f,OAEL/f,KAAK+f,MAAM+D,UAGX9jB,KAAKknD,YAELlnD,KAAKknD,WAAWpjC,UAGhB9jB,KAAK2vB,MAEL3vB,KAAK2vB,KAAK7L,UAGV9jB,KAAKkwB,QAELlwB,KAAKkwB,OAAOpM,UAGhB9jB,KAAKwa,KAAK2F,OAAOopC,WAAWvpD,KAE5B,IAAI8H,GAAI9H,KAAK2rB,SAAS9jB,MAEtB,IAAIyuB,EAEA,KAAOxuB,KAEH9H,KAAK2rB,SAAS7jB,GAAGgc,QAAQwS,OAK7B,MAAOxuB,KAEH9H,KAAKqyB,YAAYryB,KAAK2rB,SAAS7jB,GAInC9H,MAAK6oD,QAEL7oD,KAAK6oD,MAAQ,MAGb7oD,KAAKgpD,SAELhpD,KAAKgpD,OAAS,MAGd3oD,EAAOmpD,OAASxpD,KAAK+L,cAAe1L,GAAOmpD,OAE3CxpD,KAAK+L,IAAI09C,eAAe3mC,OAAO9iB,KAAK0pD,YAAa1pD,MAGjDK,EAAOspD,YAAc3pD,KAAK4pD,UAE1B5pD,KAAK4pD,YAGT5pD,KAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEf7a,KAAKspB,QAAU,KACftpB,KAAK6pD,KAAO,KACZ7pD,KAAKwa,KAAO,KAEZxa,KAAKqiC,QAGLriC,KAAK8pD,YAAa,EAEd9pD,KAAK+pD,oBAEL/pD,KAAK+pD,kBAAoB,KACzB/pD,KAAKgqD,yBAA2B,MAIpChqD,KAAKiiC,QAAU,KACfjiC,KAAKwpB,OAAS,KACdxpB,KAAK8c,MAAQ,KACb9c,KAAKyqB,eAAiB,KACtBzqB,KAAKiqD,WAAa,KAClBjqD,KAAKunD,QAAU,KACfvnD,KAAKi3B,eAAiB,KACtBj3B,KAAKkqD,MAAQ,KAEblqD,KAAKmqD,uBAGDh0B,GAEAn2B,KAAKmiC,QAAQre,SAAQ,GAGzB9jB,KAAK+1B,cAAe,EACpB/1B,KAAKkuB,gBAAiB,KAmC9B7tB,EAAO2nD,OAAS,SAAUjxB,GAKtB/2B,KAAKwpB,OAASuN,GAMlB12B,EAAO2nD,OAAO3hD,WAOVyd,QAAS,WAEL9jB,KAAKoqD,QAAU,KAEXpqD,KAAKqqD,YAAwBrqD,KAAKqqD,WAAW7jC,UAC7CxmB,KAAKsqD,iBAAwBtqD,KAAKsqD,gBAAgB9jC,UAClDxmB,KAAKuqD,qBAAwBvqD,KAAKuqD,oBAAoB/jC,UACtDxmB,KAAKwqD,qBAAwBxqD,KAAKwqD,oBAAoBhkC,UACtDxmB,KAAKyqD,WAAwBzqD,KAAKyqD,UAAUjkC,UAC5CxmB,KAAK0qD,YAAwB1qD,KAAK0qD,WAAWlkC,UAC7CxmB,KAAK2qD,gBAAwB3qD,KAAK2qD,eAAenkC,UACjDxmB,KAAK4qD,gBAAwB5qD,KAAK4qD,eAAepkC,UAEjDxmB,KAAK6qD,cAAwB7qD,KAAK6qD,aAAarkC,UAC/CxmB,KAAK8qD,aAAwB9qD,KAAK8qD,YAAYtkC,UAC9CxmB,KAAK+qD,cAAwB/qD,KAAK+qD,aAAavkC,UAC/CxmB,KAAKgrD,YAAwBhrD,KAAKgrD,WAAWxkC,UAC7CxmB,KAAKirD,cAAwBjrD,KAAKirD,aAAazkC,UAC/CxmB,KAAKkrD,eAAwBlrD,KAAKkrD,cAAc1kC,UAChDxmB,KAAKmrD,aAAwBnrD,KAAKmrD,YAAY3kC,UAE9CxmB,KAAKorD,mBAAwBprD,KAAKorD,kBAAkB5kC,UACpDxmB,KAAKqrD,sBAAwBrrD,KAAKqrD,qBAAqB7kC,UACvDxmB,KAAKsrD,kBAAwBtrD,KAAKsrD,iBAAiB9kC,WAa3D0qB,eAAgB,KAShBE,mBAAoB,KAOpBma,mBAAoB,KASpB18B,UAAW,KAUX28B,SAAU,KASVC,UAAW,KASXC,cAAe,KASfC,cAAe,KAUfC,YAAa,KAUbC,WAAY,KAWZC,YAAa,KAYbC,UAAW,KAaXC,YAAa,KAeb7X,aAAc,KAUd8X,WAAY,KAWZC,iBAAkB,KAWlBC,oBAAqB,KAWrBC,gBAAiB,MAIrB/rD,EAAO2nD,OAAO3hD,UAAU8B,YAAc9H,EAAO2nD,MAK7C,KAAK,GAAIh/C,KAAQ3I,GAAO2nD,OAAO3hD,UAEtBhG,EAAO2nD,OAAO3hD,UAAU2E,eAAehC,IACjB,IAAvBA,EAAKqnB,QAAQ,OACqB,OAAlChwB,EAAO2nD,OAAO3hD,UAAU2C,KAK5B,SAAWA,EAAMqjD,GACb,YAGA9kD,QAAO2E,eAAe7L,EAAO2nD,OAAO3hD,UAAW2C,GAC3CgD,IAAK,WACD,MAAOhM,MAAKqsD,KAAarsD,KAAKqsD,GAAW,GAAIhsD,GAAO+a,WAK5D/a,EAAO2nD,OAAO3hD,UAAU2C,EAAO,aAAe,WAC1C,MAAOhJ,MAAKqsD,GAAWrsD,KAAKqsD,GAASxtC,SAAS5X,MAAMjH,KAAKqsD,GAAUtlD,WAAa,OAGrFiC,EAAM,IAAMA,EAgBnB3I,GAAOqmD,UAAU0B,cAAgB,aAQjC/nD,EAAOqmD,UAAU0B,cAAch+B,WAAa,WAEpCpqB,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,IAKnGpM,EAAOqmD,UAAU0B,cAAc/hD,WAM3BimD,gBAAgB,EAmBhBv9B,eAEI/iB,IAAK,WAED,MAAOhM,MAAKssD,gBAIhBrgD,IAAK,SAAU1C,GAEPA,GAEAvJ,KAAKssD,gBAAiB,EACtBtsD,KAAKgvB,aAAa/iB,IAAIjM,KAAKiG,EAAGjG,KAAKyM,IAInCzM,KAAKssD,gBAAiB,IAalCt9B,aAAc,GAAI3uB,GAAO2M,OAiB7B3M,EAAOqmD,UAAU6F,OAAS,aAE1BlsD,EAAOqmD,UAAU6F,OAAOlmD,WAUpBmmD,OAAQ,EASRC,UAAW,IAWXC,OAAQ,SAAU15B,GAYd,MAVIhzB,MAAKguB,QAELhuB,KAAKwsD,QAAUx5B,EAEXhzB,KAAKwsD,QAAU,GAEfxsD,KAAK2sD,QAIN3sD,MAYX4sD,UAAW,SAAU55B,GASjB,MAPAhzB,MAAKwsD,OAASx5B,EAEVhzB,KAAKwsD,OAASxsD,KAAKysD,YAEnBzsD,KAAKwsD,OAASxsD,KAAKysD,WAGhBzsD,MAWX6sD,KAAM,SAAU75B,GAYZ,MAVIhzB,MAAKguB,QAELhuB,KAAKwsD,QAAUx5B,EAEXhzB,KAAKwsD,OAASxsD,KAAKysD,YAEnBzsD,KAAKwsD,OAASxsD,KAAKysD,YAIpBzsD,OAiBfK,EAAOqmD,UAAUoG,SAAW,aAE5BzsD,EAAOqmD,UAAUoG,SAASzmD,WAYtBghD,UAEIr7C,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAMmC,OAAOlC,KAAK5L,WAAW9O,KAAKunD,YAmB/DlnD,EAAOqmD,UAAUqG,aAAe,aAEhC1sD,EAAOqmD,UAAUqG,aAAa1mD,WAU1B0Z,MAAO,KAkBPkQ,cAEIjkB,IAAK,WAED,MAAQhM,MAAK+f,OAAS/f,KAAK+f,MAAMgd,SAIrC9wB,IAAK,SAAU1C,GAEPA,EAEmB,OAAfvJ,KAAK+f,OAEL/f,KAAK+f,MAAQ,GAAI1f,GAAOmuC,aAAaxuC,MACrCA,KAAK+f,MAAMrP,SAEN1Q,KAAK+f,QAAU/f,KAAK+f,MAAMgd,SAE/B/8B,KAAK+f,MAAMrP,QAKX1Q,KAAK+f,OAAS/f,KAAK+f,MAAMgd,SAEzB/8B,KAAK+f,MAAMkc,UAuB/B57B,EAAOqmD,UAAUsG,QAAU,aAQ3B3sD,EAAOqmD,UAAUsG,QAAQhwC,UAAY,WAGjC,GAAIhd,KAAKonD,UAAYpnD,KAAKsnD,iBAC1B,CAMI,GALAtnD,KAAKunD,QAAQ95C,SAASzN,KAAKsN,aAE3BtN,KAAKunD,QAAQthD,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EACxCjG,KAAKunD,QAAQ96C,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAEpCzM,KAAKonD,SAGL,GAAIpnD,KAAKwa,KAAKC,MAAMmC,OAAOlC,KAAK5L,WAAW9O,KAAKunD,SAE5CvnD,KAAK8pD,YAAa,EAClB9pD,KAAKwa,KAAKC,MAAMmC,OAAO3B,kBAMvB,IAFAjb,KAAK8pD,YAAa,EAEd9pD,KAAKitD,sBAGL,MADAjtD,MAAK2sD,QACE,CAKnB,IAAI3sD,KAAKsnD,iBAGL,GAAItnD,KAAKktD,mBAAqBltD,KAAKwa,KAAKC,MAAME,OAAO7L,WAAW9O,KAAKunD,SAEjEvnD,KAAKktD,mBAAoB,EACzBltD,KAAKkwB,OAAOi9B,uBAAuBntD,UAElC,KAAKA,KAAKktD,oBAAsBltD,KAAKwa,KAAKC,MAAME,OAAO7L,WAAW9O,KAAKunD,WAGxEvnD,KAAKktD,mBAAoB,EACzBltD,KAAKkwB,OAAOk9B,uBAAuBptD,MAE/BA,KAAKqtD,iBAGL,MADArtD,MAAK2sD,QACE,EAMvB,OAAO,GAIXtsD,EAAOqmD,UAAUsG,QAAQ3mD,WAmBrBihD,kBAAkB,EAQlB+F,iBAAiB,EASjBJ,uBAAuB,EAMvBC,mBAAmB,EAQnBI,SAEIthD,IAAK,WAED,MAAOhM,MAAKwa,KAAKC,MAAME,OAAO7L,WAAW9O,KAAKsN,gBAmB1DjN,EAAOqmD,UAAU6G,SAAW,aAQ5BltD,EAAOqmD,UAAU6G,SAASvwC,UAAY,WAElC,MAAIhd,MAAKwtD,SAAW,IAEhBxtD,KAAKwtD,UAAYxtD,KAAKwa,KAAKmE,KAAK8uC,iBAE5BztD,KAAKwtD,UAAY,IAEjBxtD,KAAK2sD,QACE,IAIR,GAIXtsD,EAAOqmD,UAAU6G,SAASlnD,WAatB2nB,OAAO,EAePw/B,SAAU,EAaVE,OAAQ,SAAUlB,GAkBd,MAhBe9iD,UAAX8iD,IAAwBA,EAAS,KAErCxsD,KAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEe,kBAAnB7a,MAAK4sD,WAEZ5sD,KAAK4sD,UAAUJ,GAGfxsD,KAAKkwB,QAELlwB,KAAKkwB,OAAOy9B,mBAAmB3tD,MAG5BA,MAiBX2sD,KAAM,WAWF,MATA3sD,MAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEX7a,KAAKkwB,QAELlwB,KAAKkwB,OAAO09B,kBAAkB5tD,MAG3BA,OAiBfK,EAAOqmD,UAAUyB,YAAc,aAE/B9nD,EAAOqmD,UAAUyB,YAAY9hD,WAMzBqiD,cAAc,EAMdM,OAAQ,KAyBR9zB,YAAa,SAAUnpB,EAAK2kB,EAAOm9B,GAE3B9hD,IAAQ1L,EAAOyC,eAEfiJ,EAAM2kB,EACNA,EAAQ,GAIRA,EAAQA,GAAS,GAGhBm9B,GAAmCnkD,SAAlBmkD,IAAgC7tD,KAAKknD,YAEvDlnD,KAAKknD,WAAWjrB,OAGpBj8B,KAAK+L,IAAMA,EACX/L,KAAK0oD,cAAe,CACpB,IAAI5oC,GAAQ9f,KAAKwa,KAAKsF,MAElBguC,GAAW,EACX/yB,GAAY/6B,KAAKmiC,QAAQuQ,YAAYqb,SAEzC,IAAI1tD,EAAO2tD,eAAiBjiD,YAAe1L,GAAO2tD,cAE9ChuD,KAAK+L,IAAMA,EAAIA,IACf/L,KAAKiuD,WAAWliD,OAEf,IAAI1L,EAAO6tD,YAAcniD,YAAe1L,GAAO6tD,WAEhDluD,KAAK0oD,cAAe,EAEpB1oD,KAAKiuD,WAAWliD,EAAIo2B,SAIhB2rB,EAFAhuC,EAAMquC,aAAapiD,EAAIA,IAAK1L,EAAOi5B,MAAMx3B,aAE7B9B,KAAKknD,WAAWkH,cAActuC,EAAMuuC,aAAatiD,EAAIA,IAAK1L,EAAOi5B,MAAMx3B,YAAa4uB,IAIpF1wB,KAAKknD,WAAWkH,cAAcriD,EAAIuiD,UAAW,OAG5D,IAAIjuD,EAAOmpD,OAASz9C,YAAe1L,GAAOmpD,MAC/C,CACIxpD,KAAK0oD,cAAe,CAGpB,IAAI6F,GAAQxiD,EAAIo2B,QAAQosB,KACxBvuD,MAAKiuD,WAAWliD,EAAIo2B,SACpBniC,KAAK8tD,SAAS/hD,EAAIo2B,QAAQzR,MAAMllB,SAChCO,EAAI09C,eAAe53C,IAAI7R,KAAK0pD,YAAa1pD,MACzCA,KAAKmiC,QAAQosB,MAAQA,MAEpB,IAAIluD,EAAOmuD,SAAWziD,YAAe1L,GAAOouD,aAI7CzuD,KAAKiuD,WAAWnoD,KAAK4oD,QAAQC,WAAW5iD,EAAIuf,aAE3C,IAAIvf,YAAejG,MAAK4oD,QAEzB1uD,KAAKiuD,WAAWliD,OAGpB,CACI,GAAI6iD,GAAM9uC,EAAM+uC,SAAS9iD,GAAK,EAE9B/L,MAAK+L,IAAM6iD,EAAI7iD,IACf/L,KAAKiuD,WAAW,GAAInoD,MAAK4oD,QAAQE,EAAIE,OAEzB,cAAR/iD,EAEA/L,KAAKmiC,QAAQuQ,YAAYqc,YAAa,EAItC/uD,KAAKmiC,QAAQuQ,YAAYqc,YAAa,EAG1CjB,GAAY9tD,KAAKknD,WAAWkH,cAAcQ,EAAIN,UAAW59B,GAGzDo9B,IAEA9tD,KAAKgpD,OAAS3oD,EAAOkN,UAAU/B,MAAMxL,KAAKmiC,QAAQzR,QAGjDqK,IAED/6B,KAAKmiC,QAAQuQ,YAAYqb,UAAY,IAa7CD,SAAU,SAAUp9B,GAEhB1wB,KAAKgpD,OAASt4B,EAEd1wB,KAAKmiC,QAAQzR,MAAMzqB,EAAIyqB,EAAMzqB,EAC7BjG,KAAKmiC,QAAQzR,MAAMjkB,EAAIikB,EAAMjkB,EAC7BzM,KAAKmiC,QAAQzR,MAAM3gB,MAAQ2gB,EAAM3gB,MACjC/P,KAAKmiC,QAAQzR,MAAM1gB,OAAS0gB,EAAM1gB,OAElChQ,KAAKmiC,QAAQyQ,KAAK3sC,EAAIyqB,EAAMzqB,EAC5BjG,KAAKmiC,QAAQyQ,KAAKnmC,EAAIikB,EAAMjkB,EAC5BzM,KAAKmiC,QAAQyQ,KAAK7iC,MAAQ2gB,EAAM3gB,MAChC/P,KAAKmiC,QAAQyQ,KAAK5iC,OAAS0gB,EAAM1gB,OAE7B0gB,EAAMs+B,SAEFhvD,KAAKmiC,QAAQwQ,MAEb3yC,KAAKmiC,QAAQwQ,KAAK1sC,EAAIyqB,EAAMu+B,kBAC5BjvD,KAAKmiC,QAAQwQ,KAAKlmC,EAAIikB,EAAMw+B,kBAC5BlvD,KAAKmiC,QAAQwQ,KAAK5iC,MAAQ2gB,EAAMy+B,YAChCnvD,KAAKmiC,QAAQwQ,KAAK3iC,OAAS0gB,EAAM0+B,aAIjCpvD,KAAKmiC,QAAQwQ,MAAS1sC,EAAGyqB,EAAMu+B,kBAAmBxiD,EAAGikB,EAAMw+B,kBAAmBn/C,MAAO2gB,EAAMy+B,YAAan/C,OAAQ0gB,EAAM0+B,aAG1HpvD,KAAKmiC,QAAQpyB,MAAQ2gB,EAAMy+B,YAC3BnvD,KAAKmiC,QAAQnyB,OAAS0gB,EAAM0+B,YAC5BpvD,KAAKmiC,QAAQzR,MAAM3gB,MAAQ2gB,EAAMy+B,YACjCnvD,KAAKmiC,QAAQzR,MAAM1gB,OAAS0gB,EAAM0+B,cAE5B1+B,EAAMs+B,SAAWhvD,KAAKmiC,QAAQwQ,OAEpC3yC,KAAKmiC,QAAQwQ,KAAO,MAGpB3yC,KAAK4oD,UAEL5oD,KAAK8oD,aAGT9oD,KAAKmiC,QAAQktB,gBAAiB,EAE9BrvD,KAAKmiC,QAAQgnB,aAETnpD,KAAKsvD,gBAELtvD,KAAKuvD,gBAAiB,IAgB9B7F,YAAa,SAAUlgC,EAAQzZ,EAAOC,GAElChQ,KAAKmiC,QAAQzR,MAAM5X,OAAO/I,EAAOC,GACjChQ,KAAKmiC,QAAQ2rB,SAAS9tD,KAAKmiC,QAAQzR,QASvCq4B,WAAY,WAEJ/oD,KAAKgpD,QAELhpD,KAAK8tD,SAAS9tD,KAAKgpD,SAkB3Bt4B,OAEI1kB,IAAK,WACD,MAAOhM,MAAKknD,WAAWx2B,OAG3BzkB,IAAK,SAAU1C,GACXvJ,KAAKknD,WAAWx2B,MAAQnnB,IAkBhCimD,WAEIxjD,IAAK,WACD,MAAOhM,MAAKknD,WAAWsI,WAG3BvjD,IAAK,SAAU1C,GACXvJ,KAAKknD,WAAWsI,UAAYjmD,KAkBxClJ,EAAOqmD,UAAU+I,QAAU,aAE3BpvD,EAAOqmD,UAAU+I,QAAQppD,WAerBqpD,QAAS,SAAU10C,GAEf,MAAO3a,GAAOkN,UAAUuB,WAAW9O,KAAKsN,YAAa0N,EAAc1N,eAkB3EjN,EAAOqmD,UAAUuB,YAAc,aAQ/B5nD,EAAOqmD,UAAUuB,YAAYjrC,UAAY,WAErC,MAAIhd,MAAKsoD,OAAStoD,KAAKwqB,QAEnBxqB,KAAKya,MAAMjN,MAAMxN,KAAKwpB,OAAOjQ,SAAStT,EAAIjG,KAAKuZ,SAAStT,EAAGjG,KAAKwpB,OAAOjQ,SAAS9M,EAAIzM,KAAKuZ,SAAS9M,GAClGzM,KAAKyqB,eAAe9Y,GAAK3R,KAAKya,MAAMxU,EACpCjG,KAAKyqB,eAAe7Y,GAAK5R,KAAKya,MAAMhO,EAEpCzM,KAAK+nD,iBAAiB97C,IAAIjM,KAAKya,MAAMxU,EAAGjG,KAAKya,MAAMhO,GACnDzM,KAAKqoD,iBAAmBroD,KAAKw2B,SAEzBx2B,KAAK2vB,MAEL3vB,KAAK2vB,KAAK3S,YAGdhd,KAAKsoD,OAAQ,GAEN,IAGXtoD,KAAK+nD,iBAAiB97C,IAAIjM,KAAKya,MAAMxU,EAAGjG,KAAKya,MAAMhO,GACnDzM,KAAKqoD,iBAAmBroD,KAAKw2B,SAExBx2B,KAAKuoD,SAAYvoD,KAAKwpB,OAAOgB,QAM3B,GAJHxqB,KAAK4zB,cAAgB,IACd,KAafvzB,EAAOqmD,UAAUuB,YAAY79B,WAAa,WAElCpqB,KAAKwqB,QAAUxqB,KAAK2vB,MAEpB3vB,KAAK2vB,KAAKvF,cAKlB/pB,EAAOqmD,UAAUuB,YAAY5hD,WAqBzBspB,KAAM,KAON1pB,GAEI+F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,GAIzBgG,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAStT,EAAIsD,EAEdvJ,KAAK2vB,OAAS3vB,KAAK2vB,KAAKlI,QAExBznB,KAAK2vB,KAAKggC,QAAS,KAY/BljD,GAEIT,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,GAIzBR,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAS9M,EAAIlD,EAEdvJ,KAAK2vB,OAAS3vB,KAAK2vB,KAAKlI,QAExBznB,KAAK2vB,KAAKggC,QAAS,MAoBnCtvD,EAAOqmD,UAAUkJ,MAAQ,aAkBzBvvD,EAAOqmD,UAAUkJ,MAAMvpD,UAAUqZ,MAAQ,SAAUzZ,EAAGwG,EAAG+/C,GA+BrD,MA7Be9iD,UAAX8iD,IAAwBA,EAAS,GAErCxsD,KAAKya,MAAMxO,IAAIhG,EAAGwG,GAClBzM,KAAKuZ,SAAStN,IAAIhG,EAAGwG,GAErBzM,KAAKsoD,OAAQ,EACbtoD,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EACf7a,KAAK8pD,YAAa,EAEd9pD,KAAK8nD,WAAWkF,UAEhBhtD,KAAKktD,mBAAoB,GAGzBltD,KAAK8nD,WAAWyF,WAEhBvtD,KAAKguB,OAAQ,EACbhuB,KAAKwsD,OAASA,GAGdxsD,KAAK8nD,WAAWG,aAEZjoD,KAAK2vB,MAEL3vB,KAAK2vB,KAAKjQ,MAAMzZ,EAAGwG,GAAG,GAAO,GAI9BzM,MAeXK,EAAOqmD,UAAUmJ,YAAc,aAE/BxvD,EAAOqmD,UAAUmJ,YAAYxpD,WAMzB0jD,kBAAmB,KAMnBC,yBAA0BhqD,KAU1B8vD,SAAU,KAUVC,SAAU,KASVC,eAAgB,SAAUnuB,GAElB7hC,KAAK8vD,WAEDjuB,EAAGpzB,EAAIzO,KAAK8vD,SAAS7pD,IAErB47B,EAAGpzB,EAAIzO,KAAK8vD,SAAS7pD,GAGrB47B,EAAG5tB,EAAIjU,KAAK8vD,SAASrjD,IAErBo1B,EAAG5tB,EAAIjU,KAAK8vD,SAASrjD,IAIzBzM,KAAK+vD,WAEDluB,EAAGpzB,EAAIzO,KAAK+vD,SAAS9pD,IAErB47B,EAAGpzB,EAAIzO,KAAK+vD,SAAS9pD,GAGrB47B,EAAG5tB,EAAIjU,KAAK+vD,SAAStjD,IAErBo1B,EAAG5tB,EAAIjU,KAAK+vD,SAAStjD,KA+BjCwjD,eAAgB,SAAUC,EAAMC,EAAMC,EAAMC,GAE3B3mD,SAATymD,EAGAA,EAAOC,EAAOC,EAAOH,EAEPxmD,SAAT0mD,IAGLA,EAAOC,EAAOF,EACdA,EAAOD,GAGE,OAATA,EAEAlwD,KAAK8vD,SAAW,KAIZ9vD,KAAK8vD,SAEL9vD,KAAK8vD,SAAS7jD,IAAIikD,EAAMC,GAIxBnwD,KAAK8vD,SAAW,GAAIzvD,GAAO2M,MAAMkjD,EAAMC,GAIlC,OAATC,EAEApwD,KAAK+vD,SAAW,KAIZ/vD,KAAK+vD,SAEL/vD,KAAK+vD,SAAS9jD,IAAImkD,EAAMC,GAIxBrwD,KAAK+vD,SAAW,GAAI1vD,GAAO2M,MAAMojD,EAAMC,GAIzB,OAAlBrwD,KAAK8vD,SAEL9vD,KAAK+pD,kBAAoB,MAIzB/pD,KAAK+pD,kBAAoB/pD,KAAKgwD,eAC9BhwD,KAAKgqD,yBAA2BhqD,QAiB5CK,EAAOqmD,UAAU4J,SAAW,aAE5BjwD,EAAOqmD,UAAU4J,SAASjqD,WAWtB00B,UAEI/uB,IAAK,WAED,OAAQhM,KAAKmiC,QAAQuQ,YAAYqb,WAIrC9hD,IAAK,SAAU1C,GAEPA,EAEIvJ,KAAKmiC,UAELniC,KAAKmiC,QAAQuQ,YAAYqb,UAAY,GAKrC/tD,KAAKmiC,UAELniC,KAAKmiC,QAAQuQ,YAAYqb,UAAY,MAyBzD1tD,EAAO+4B,kBAAoB,SAAU5e,GAMjCxa,KAAKwa,KAAOA,EAMZxa,KAAKya,MAAQza,KAAKwa,KAAKC,OAI3Bpa,EAAO+4B,kBAAkB/yB,WASrBkqD,SAAU,SAAUj7B,GAEhB,MAAOt1B,MAAKya,MAAM5I,IAAIyjB,IAwB1Bk7B,OAAQ,SAAU5/B,EAAU7kB,EAAK2kB,EAAOwF,GAEpC,GAAIs6B,GAASxwD,KAAKwa,KAAKwP,QAAQnY,IAAIxR,EAAOowD,OAI1C,OAFAD,GAAOE,cAAc9/B,EAAU7kB,EAAK2kB,EAAOwF,GAEpCs6B,GAoBXpnC,MAAO,SAAUnjB,EAAGwG,EAAGV,EAAK2kB,EAAOwF,GAI/B,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMrkB,IAAI,GAAIxR,GAAOswD,MAAM3wD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK2kB,KAmB5DqG,OAAQ,SAAU9wB,EAAGwG,EAAGV,EAAK2kB,EAAOwF,GAIhC,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMxV,OAAOza,EAAGwG,EAAGV,EAAK2kB,IAyBnCkgC,SAAU,SAAU3qD,EAAGwG,EAAGV,EAAK8kD,EAAM36B,GAEnBxsB,SAAVwsB,IAAuBA,EAAQl2B,KAAKya,MAExC,IAAI1R,GAAM,GAAI1I,GAAOywD,SAAS9wD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK8kD,EAIpD,OAFA36B,GAAMrkB,IAAI9I,GAEHA,GAaXgoD,MAAO,SAAUz7B,GAEb,MAAOt1B,MAAKwa,KAAK2F,OAAOO,OAAO4U,IAenCY,MAAO,SAAU1M,EAAQpe,EAAMqiB,EAAYC,EAAYC,GAEnD,MAAO,IAAIttB,GAAOmtB,MAAMxtB,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,EAAYC,EAAYC,IAiB7EqjC,aAAc,SAAUrjC,EAAiBnE,EAAQpe,EAAMqiB,GAEnD,MAAO,IAAIptB,GAAOmtB,MAAMxtB,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,GAAY,EAAME,IAevEsjC,YAAa,SAAUznC,EAAQpe,EAAMqiB,GAMjC,MAJe/jB,UAAX8f,IAAwBA,EAAS,MACxB9f,SAAT0B,IAAsBA,EAAO,SACd1B,SAAf+jB,IAA4BA,GAAa,GAEtC,GAAIptB,GAAO6wD,YAAYlxD,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,IAc3D0jC,MAAO,SAAUplD,EAAKiO,EAAQgtC,EAAMtP,GAEhC,MAAO13C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQgtC,EAAMtP,IAclDz3B,MAAO,SAAUlU,EAAKiO,EAAQgtC,EAAMtP,GAEhC,MAAO13C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQgtC,EAAMtP,IAWlD0Z,YAAa,SAAUrlD,GAEnB,MAAO/L,MAAKwa,KAAKyF,MAAMoxC,UAAUtlD,IAiBrCulD,WAAY,SAAUrrD,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK2kB,EAAOwF,GAInD,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMrkB,IAAI,GAAIxR,GAAO6hC,WAAWliC,KAAKwa,KAAMvU,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK2kB,KAkBhF6gC,KAAM,SAAUtrD,EAAGwG,EAAGV,EAAK2kB,EAAO3Z,EAAQmf,GAItC,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMrkB,IAAI,GAAIxR,GAAOmxD,KAAKxxD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK2kB,EAAO3Z,KAelE06C,KAAM,SAAUxrD,EAAGwG,EAAGglD,EAAMv0C,EAAOgZ,GAI/B,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMrkB,IAAI,GAAIxR,GAAOqxD,KAAK1xD,KAAKwa,KAAMvU,EAAGwG,EAAGglD,EAAMv0C,KAoB5D6lB,OAAQ,SAAU98B,EAAGwG,EAAGV,EAAKsnB,EAAUtQ,EAAiB4uC,EAAWC,EAAUC,EAAWC,EAAS57B,GAI7F,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMrkB,IAAI,GAAIxR,GAAO0xD,OAAO/xD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAKsnB,EAAUtQ,EAAiB4uC,EAAWC,EAAUC,EAAWC,KAaxHE,SAAU,SAAU/rD,EAAGwG,EAAGypB,GAItB,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMrkB,IAAI,GAAIxR,GAAOwc,SAAS7c,KAAKwa,KAAMvU,EAAGwG,KAiBvDwlD,QAAS,SAAUhsD,EAAGwG,EAAGylD,GAErB,MAAOlyD,MAAKwa,KAAK4F,UAAUvO,IAAI,GAAIxR,GAAOu5B,UAAUu4B,OAAOC,QAAQpyD,KAAKwa,KAAMvU,EAAGwG,EAAGylD,KA0BxFG,UAAW,SAAUC,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEzG,MAAO,IAAIzyD,GAAO0yD,UAAU/yD,KAAKwa,KAAM83C,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,IAgCnIE,WAAY,SAAU/sD,EAAGwG,EAAG6lD,EAAMb,EAAMznD,EAAMksB,GAI1C,MAFcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKya,OAEjCyb,EAAMrkB,IAAI,GAAIxR,GAAOspD,WAAW3pD,KAAKwa,KAAMvU,EAAGwG,EAAG6lD,EAAMb,EAAMznD,KAqBxEipD,QAAS,SAAUlnD,EAAKmnD,EAAWC,EAAYpjD,EAAOC,GAElD,MAAO,IAAI3P,GAAOmuD,QAAQxuD,KAAKwa,KAAMzO,EAAKmnD,EAAWC,EAAYpjD,EAAOC,IAc5EojD,cAAe,SAAUrjD,EAAOC,EAAQjE,EAAKsnD,GAE7B3pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAIw0C,QACxC5pD,SAAf2pD,IAA4BA,GAAa,EAE7C,IAAIlxB,GAAU,GAAI9hC,GAAO2tD,cAAchuD,KAAKwa,KAAMzK,EAAOC,EAAQjE,EAOjE,OALIsnD,IAEArzD,KAAKwa,KAAKsF,MAAMyzC,iBAAiBxnD,EAAKo2B,GAGnCA,GAcXqxB,MAAO,SAAUznD,EAAK0nD,GAElB,MAAO,IAAIpzD,GAAOmpD,MAAMxpD,KAAKwa,KAAMzO,EAAK0nD,IAgB5CC,WAAY,SAAU3jD,EAAOC,EAAQjE,EAAKsnD,GAEnB3pD,SAAf2pD,IAA4BA,GAAa,GACjC3pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAIw0C,OAE3D,IAAInxB,GAAU,GAAI9hC,GAAO6tD,WAAWluD,KAAKwa,KAAMzO,EAAKgE,EAAOC,EAO3D,OALIqjD,IAEArzD,KAAKwa,KAAKsF,MAAM6zC,cAAc5nD,EAAKo2B,GAGhCA,GAYXtO,OAAQ,SAAUA,GAEd,GAAIltB,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAE7C8sB,EAAS,GAAIxzB,GAAO+mB,OAAOyM,GAAQ7zB,KAAKwa,KAI5C,OAFAqZ,GAAOvT,KAAKrZ,MAAM4sB,EAAQltB,GAEnBktB,GAcX1J,OAAQ,SAAUA,GAEd,MAAOnqB,MAAKwa,KAAKwP,QAAQnY,IAAIsY,KAMrC9pB,EAAO+4B,kBAAkB/yB,UAAU8B,YAAc9H,EAAO+4B,kBAgBxD/4B,EAAOg5B,kBAAoB,SAAU7e,GAMjCxa,KAAKwa,KAAOA,EAMZxa,KAAKya,MAAQza,KAAKwa,KAAKC,OAI3Bpa,EAAOg5B,kBAAkBhzB,WAerB+iB,MAAO,SAAUnjB,EAAGwG,EAAGV,EAAK2kB,GAExB,MAAO,IAAIrwB,GAAOswD,MAAM3wD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK2kB,IAclDqG,OAAQ,SAAU9wB,EAAGwG,EAAGV,EAAK2kB,GAEzB,MAAO,IAAIrwB,GAAO+tB,OAAOpuB,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK2kB,IAanDqgC,MAAO,SAAUhoD,GAEb,MAAO,IAAI1I,GAAOuzD,MAAM7qD,EAAK/I,KAAKwa,KAAMxa,KAAKwa,KAAK2F,SAetD+V,MAAO,SAAU1M,EAAQpe,EAAMqiB,EAAYC,EAAYC,GAEnD,MAAO,IAAIttB,GAAOmtB,MAAMxtB,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,EAAYC,EAAYC,IAa7EsjC,YAAa,SAAUznC,EAAQpe,EAAMqiB,GAKjC,MAHa/jB,UAAT0B,IAAsBA,EAAO,SACd1B,SAAf+jB,IAA4BA,GAAa,GAEtC,GAAIptB,GAAO6wD,YAAYlxD,KAAKwa,KAAMgP,EAAQpe,EAAMqiB,IAc3D0jC,MAAO,SAAUplD,EAAKiO,EAAQgtC,EAAMtP,GAEhC,MAAO13C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQgtC,EAAMtP,IAWlD0Z,YAAa,SAAUrlD,GAEnB,MAAO/L,MAAKwa,KAAKyF,MAAMoxC,UAAUtlD,IAcrCkU,MAAO,SAAUlU,EAAKiO,EAAQgtC,EAAMtP,GAEhC,MAAO13C,MAAKwa,KAAKyF,MAAMpO,IAAI9F,EAAKiO,EAAQgtC,EAAMtP,IAgBlD4Z,WAAY,SAAUrrD,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK2kB,GAE5C,MAAO,IAAIrwB,GAAO6hC,WAAWliC,KAAKwa,KAAMvU,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK2kB,IAgBtE6gC,KAAM,SAAUtrD,EAAGwG,EAAGV,EAAK2kB,EAAO3Z,GAE9B,MAAO,IAAI1W,GAAOmxD,KAAKxxD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAK2kB,EAAO3Z,IAcxD06C,KAAM,SAAUxrD,EAAGwG,EAAGglD,EAAMv0C,GAExB,MAAO,IAAI7c,GAAOqxD,KAAK1xD,KAAKwa,KAAMvU,EAAGwG,EAAGglD,EAAMv0C,IAmBlD6lB,OAAQ,SAAU98B,EAAGwG,EAAGV,EAAKsnB,EAAUtQ,EAAiB4uC,EAAWC,EAAUC,EAAWC,GAEpF,MAAO,IAAIzxD,GAAO0xD,OAAO/xD,KAAKwa,KAAMvU,EAAGwG,EAAGV,EAAKsnB,EAAUtQ,EAAiB4uC,EAAWC,EAAUC,EAAWC,IAY9GE,SAAU,SAAU/rD,EAAGwG,GAEnB,MAAO,IAAIpM,GAAOwc,SAAS7c,KAAKwa,KAAMvU,EAAGwG,IAiB7CwlD,QAAS,SAAUhsD,EAAGwG,EAAGylD,GAErB,MAAO,IAAI7xD,GAAOu5B,UAAUu4B,OAAOC,QAAQpyD,KAAKwa,KAAMvU,EAAGwG,EAAGylD,IA0BhEG,UAAW,SAAUC,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEzG,MAAO,IAAIzyD,GAAO0yD,UAAU/yD,KAAKwa,KAAM83C,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,IAgCnIE,WAAY,SAAU/sD,EAAGwG,EAAG6lD,EAAMb,EAAMznD,EAAM+mB,GAE1C,MAAO,IAAI1wB,GAAOspD,WAAW3pD,KAAKwa,KAAMvU,EAAGwG,EAAG6lD,EAAMb,EAAMznD,EAAM+mB,IAoBpEkiC,QAAS,SAAUlnD,EAAKmnD,EAAWC,EAAYpjD,EAAOC,GAElD,MAAO,IAAI3P,GAAOmuD,QAAQxuD,KAAKwa,KAAMzO,EAAKmnD,EAAWC,EAAYpjD,EAAOC,IAc5EojD,cAAe,SAAUrjD,EAAOC,EAAQjE,EAAKsnD,GAE7B3pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAIw0C,QACxC5pD,SAAf2pD,IAA4BA,GAAa,EAE7C,IAAIlxB,GAAU,GAAI9hC,GAAO2tD,cAAchuD,KAAKwa,KAAMzK,EAAOC,EAAQjE,EAOjE,OALIsnD,IAEArzD,KAAKwa,KAAKsF,MAAMyzC,iBAAiBxnD,EAAKo2B,GAGnCA,GAgBXuxB,WAAY,SAAU3jD,EAAOC,EAAQjE,EAAKsnD,GAEnB3pD,SAAf2pD,IAA4BA,GAAa,GACjC3pD,SAARqC,GAA6B,KAARA,IAAcA,EAAM/L,KAAKwa,KAAKsE,IAAIw0C,OAE3D,IAAInxB,GAAU,GAAI9hC,GAAO6tD,WAAWluD,KAAKwa,KAAMzO,EAAKgE,EAAOC,EAO3D,OALIqjD,IAEArzD,KAAKwa,KAAKsF,MAAM6zC,cAAc5nD,EAAKo2B,GAGhCA,GAYXtO,OAAQ,SAAUA,GAEd,GAAIltB,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAE7C8sB,EAAS,GAAIxzB,GAAO+mB,OAAOyM,GAAQ7zB,KAAKwa,KAI5C,OAFAqZ,GAAOvT,KAAKrZ,MAAM4sB,EAAQltB,GAEnBktB,IAMfxzB,EAAOg5B,kBAAkBhzB,UAAU8B,YAAc9H,EAAOg5B,kBA6CxDh5B,EAAO+tB,OAAS,SAAU5T,EAAMvU,EAAGwG,EAAGV,EAAK2kB,GAEvCzqB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACb2kB,EAAQA,GAAS,KAMjB1wB,KAAKkI,KAAO7H,EAAOY,OAMnBjB,KAAK+tB,YAAc1tB,EAAOY,OAE1B6E,KAAKsoB,OAAOtnB,KAAK9G,KAAMK,EAAOi5B,MAAM3zB,SAEpCtF,EAAOqmD,UAAUkB,KAAKtnC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK2kB,IAI3DrwB,EAAO+tB,OAAO/nB,UAAYkB,OAAOmZ,OAAO5a,KAAKsoB,OAAO/nB,WACpDhG,EAAO+tB,OAAO/nB,UAAU8B,YAAc9H,EAAO+tB,OAE7C/tB,EAAOqmD,UAAUkB,KAAKC,QAAQ/gD,KAAKzG,EAAO+tB,OAAO/nB,WAC7C,QACA,YACA,WACA,SACA,aACA,OACA,QACA,UACA,gBACA,SACA,WACA,eACA,UACA,WACA,cACA,UACA,cACA,QACA,cACA,aAGJhG,EAAO+tB,OAAO/nB,UAAUwtD,iBAAmBxzD,EAAOqmD,UAAUuB,YAAYjrC,UACxE3c,EAAO+tB,OAAO/nB,UAAUytD,kBAAoBzzD,EAAOqmD,UAAU6G,SAASvwC,UACtE3c,EAAO+tB,OAAO/nB,UAAU0tD,iBAAmB1zD,EAAOqmD,UAAUsG,QAAQhwC,UACpE3c,EAAO+tB,OAAO/nB,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UAS9D3c,EAAO+tB,OAAO/nB,UAAU2W,UAAY,WAEhC,MAAKhd,MAAK6zD,oBAAuB7zD,KAAK8zD,qBAAwB9zD,KAAK+zD,mBAK5D/zD,KAAKg0D,iBAHD,GAyCf3zD,EAAOswD,MAAQ,SAAUn2C,EAAMvU,EAAGwG,EAAGV,EAAK2kB,GAEtCzqB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACb2kB,EAAQA,GAAS,KAMjB1wB,KAAKkI,KAAO7H,EAAOc,MAEnB2E,KAAKsoB,OAAOtnB,KAAK9G,KAAMK,EAAOi5B,MAAM3zB,SAEpCtF,EAAOqmD,UAAUkB,KAAKtnC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK2kB,IAI3DrwB,EAAOswD,MAAMtqD,UAAYkB,OAAOmZ,OAAO5a,KAAKsoB,OAAO/nB,WACnDhG,EAAOswD,MAAMtqD,UAAU8B,YAAc9H,EAAOswD,MAE5CtwD,EAAOqmD,UAAUkB,KAAKC,QAAQ/gD,KAAKzG,EAAOswD,MAAMtqD,WAC5C,QACA,YACA,WACA,SACA,aACA,OACA,UACA,gBACA,eACA,WACA,cACA,UACA,QACA,aAGJhG,EAAOswD,MAAMtqD,UAAU0tD,iBAAmB1zD,EAAOqmD,UAAUsG,QAAQhwC,UACnE3c,EAAOswD,MAAMtqD,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UAQ7D3c,EAAOswD,MAAMtqD,UAAU2W,UAAY,WAE/B,MAAKhd,MAAK+zD,mBAKH/zD,KAAKg0D,iBAHD,GAyCf3zD,EAAO0xD,OAAS,SAAUv3C,EAAMvU,EAAGwG,EAAGV,EAAKsnB,EAAUtQ,EAAiB4uC,EAAWC,EAAUC,EAAWC,GAElG7rD,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACbsnB,EAAWA,GAAY,KACvBtQ,EAAkBA,GAAmB/iB,KAErCK,EAAOswD,MAAM7pD,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK6lD,GAOzC5xD,KAAKkI,KAAO7H,EAAOa,OAMnBlB,KAAK+tB,YAAc1tB,EAAOY,OAO1BjB,KAAKi0D,aAAe,KAOpBj0D,KAAKk0D,YAAc,KAOnBl0D,KAAKm0D,aAAe,KAOpBn0D,KAAKo0D,WAAa,KAOlBp0D,KAAKq0D,YAAc,KAOnBr0D,KAAKs0D,WAAa,KAOlBt0D,KAAKu0D,YAAc,KAOnBv0D,KAAKw0D,UAAY,KAOjBx0D,KAAKy0D,kBAAoB,GAOzBz0D,KAAK00D,iBAAmB,GAOxB10D,KAAK20D,kBAAoB,GAOzB30D,KAAK40D,gBAAkB,GAMvB50D,KAAK4rD,YAAc,GAAIvrD,GAAO+a,OAM9Bpb,KAAK6rD,WAAa,GAAIxrD,GAAO+a,OAM7Bpb,KAAK8rD,YAAc,GAAIzrD,GAAO+a,OAM9Bpb,KAAK+rD,UAAY,GAAI1rD,GAAO+a,OAS5Bpb,KAAK60D,iBAAkB,EASvB70D,KAAK80D,yBAA2Bz0D,EAAOy/B,YAAYe,MAOnD7gC,KAAK+0D,cAAe,EAUpB/0D,KAAKg1D,UAAW,EAEhBh1D,KAAKiwB,cAAe,EAEpBjwB,KAAK+f,MAAMrP,MAAM,GAAG,GAEpB1Q,KAAK+f,MAAM0uB,eAAgB,EAE3BzuC,KAAKi1D,UAAUtD,EAAWC,EAAUC,EAAWC,GAE9B,OAAbz+B,GAEArzB,KAAK+rD,UAAUl6C,IAAIwhB,EAAUtQ,GAIjC/iB,KAAKkwB,OAAO07B,YAAY/5C,IAAI7R,KAAKk1D,mBAAoBl1D,MACrDA,KAAKkwB,OAAO27B,WAAWh6C,IAAI7R,KAAKm1D,kBAAmBn1D,MACnDA,KAAKkwB,OAAO47B,YAAYj6C,IAAI7R,KAAKo1D,mBAAoBp1D,MACrDA,KAAKkwB,OAAO67B,UAAUl6C,IAAI7R,KAAKq1D,iBAAkBr1D,MAEjDA,KAAKkwB,OAAOq7B,mBAAmB15C,IAAI7R,KAAKs1D,iBAAkBt1D,OAI9DK,EAAO0xD,OAAO1rD,UAAYkB,OAAOmZ,OAAOrgB,EAAOswD,MAAMtqD,WACrDhG,EAAO0xD,OAAO1rD,UAAU8B,YAAc9H,EAAO0xD,MAG7C,IAAIwD,GAAa,OACbC,EAAY,MACZC,EAAa,OACbC,EAAW,IAOfr1D,GAAO0xD,OAAO1rD,UAAUsvD,YAAc,WAElC31D,KAAKi1D,UAAU,KAAM,KAAM,KAAM,OAUrC50D,EAAO0xD,OAAO1rD,UAAUivD,iBAAmB,WAEvCt1D,KAAKiwB,cAAe,GAaxB5vB,EAAO0xD,OAAO1rD,UAAUuvD,cAAgB,SAAU11C,EAAOwQ,EAAOmlC,GAE5D,GAAIC,GAAW,MAAQ51C,EAAQ,OAEjB,QAAVwQ,GAEA1wB,KAAK81D,GAAYplC,EAEbmlC,GAEA71D,KAAK+1D,iBAAiB71C,IAK1BlgB,KAAK81D,GAAY,MAazBz1D,EAAO0xD,OAAO1rD,UAAU0vD,iBAAmB,SAAU71C,GAEjD,GAAIlgB,KAAK+0D,aAEL,OAAO,CAGX,IAAIe,GAAW,MAAQ51C,EAAQ,QAC3BwQ,EAAQ1wB,KAAK81D,EAEjB,OAAqB,gBAAVplC,IAEP1wB,KAAKwvD,UAAY9+B,GACV,GAEe,gBAAVA,IAEZ1wB,KAAK0wB,MAAQA,GACN,IAIA,GAiBfrwB,EAAO0xD,OAAO1rD,UAAU4uD,UAAY,SAAUtD,EAAWC,EAAUC,EAAWC,GAE1E9xD,KAAK41D,cAAcL,EAAY5D,EAAW3xD,KAAK+f,MAAMmyB,eACrDlyC,KAAK41D,cAAcJ,EAAW5D,GAAW5xD,KAAK+f,MAAMmyB,eACpDlyC,KAAK41D,cAAcH,EAAY5D,EAAW7xD,KAAK+f,MAAM+xB,eACrD9xC,KAAK41D,cAAcF,EAAU5D,EAAS9xD,KAAK+f,MAAMgyB,cAarD1xC,EAAO0xD,OAAO1rD,UAAU2vD,cAAgB,SAAU91C,EAAOD,EAAOg2C,GAE5D,GAAIC,GAAW,KAAOh2C,EAAQ,QAC1Bi2C,EAAY,KAAOj2C,EAAQ,aAE3BD,aAAiB5f,GAAO+1D,OAASn2C,YAAiB5f,GAAOg2D,aAEzDr2D,KAAKk2D,GAAYj2C,EACjBjgB,KAAKm2D,GAA+B,gBAAXF,GAAsBA,EAAS,KAIxDj2D,KAAKk2D,GAAY,KACjBl2D,KAAKm2D,GAAa,KAa1B91D,EAAO0xD,OAAO1rD,UAAUiwD,eAAiB,SAAUp2C,GAE/C,GAAIg2C,GAAW,KAAOh2C,EAAQ,QAC1BD,EAAQjgB,KAAKk2D,EAEjB,IAAIj2C,EACJ,CACI,GAAIk2C,GAAY,KAAOj2C,EAAQ,cAC3B+1C,EAASj2D,KAAKm2D,EAGlB,OADAl2C,GAAM6mC,KAAKmP,IACJ,EAIP,OAAO,GAsBf51D,EAAO0xD,OAAO1rD,UAAUkwD,UAAY,SAAUC,EAAWC,EAAYC,EAAWC,EAAYC,EAAUC,EAAWC,EAASC,GAEtH/2D,KAAKg2D,cAAcT,EAAYiB,EAAWC,GAC1Cz2D,KAAKg2D,cAAcR,EAAWoB,EAAUC,GACxC72D,KAAKg2D,cAAcP,EAAYiB,EAAWC,GAC1C32D,KAAKg2D,cAAcN,EAAUoB,EAASC,IAY1C12D,EAAO0xD,OAAO1rD,UAAU2wD,aAAe,SAAU/2C,EAAOg2C,GAEpDj2D,KAAKg2D,cAAcT,EAAYt1C,EAAOg2C,IAY1C51D,EAAO0xD,OAAO1rD,UAAU4wD,YAAc,SAAUh3C,EAAOg2C,GAEnDj2D,KAAKg2D,cAAcR,EAAWv1C,EAAOg2C,IAYzC51D,EAAO0xD,OAAO1rD,UAAU6wD,aAAe,SAAUj3C,EAAOg2C,GAEpDj2D,KAAKg2D,cAAcP,EAAYx1C,EAAOg2C,IAY1C51D,EAAO0xD,OAAO1rD,UAAU8wD,WAAa,SAAUl3C,EAAOg2C,GAElDj2D,KAAKg2D,cAAcN,EAAUz1C,EAAOg2C,IAYxC51D,EAAO0xD,OAAO1rD,UAAU6uD,mBAAqB,SAAUn+B,EAAQjO,GAEvDA,EAAQwf,iBACPtoC,KAAK80D,yBAA2BhsC,EAAQyf,eAAiBzf,EAAQyf,cAMtEvoC,KAAK+1D,iBAAiBR,GAElBv1D,KAAK60D,kBAAoB/rC,EAAQ8gB,UAKrC5pC,KAAKs2D,eAAef,GAEhBv1D,KAAK4rD,aAEL5rD,KAAK4rD,YAAY/sC,SAAS7e,KAAM8oB,MAaxCzoB,EAAO0xD,OAAO1rD,UAAU8uD,kBAAoB,SAAUp+B,EAAQjO,GAE1D9oB,KAAK+1D,iBAAiBP,GAEtBx1D,KAAKs2D,eAAed,GAEhBx1D,KAAK6rD,YAEL7rD,KAAK6rD,WAAWhtC,SAAS7e,KAAM8oB,IAYvCzoB,EAAO0xD,OAAO1rD,UAAU+uD,mBAAqB,SAAUr+B,EAAQjO,GAE3D9oB,KAAK+1D,iBAAiBN,GAEtBz1D,KAAKs2D,eAAeb,GAEhBz1D,KAAK8rD,aAEL9rD,KAAK8rD,YAAYjtC,SAAS7e,KAAM8oB,IAYxCzoB,EAAO0xD,OAAO1rD,UAAUgvD,iBAAmB,SAAUt+B,EAAQjO,EAAS+nB,GAUlE,GARA7wC,KAAKs2D,eAAeZ,GAGhB11D,KAAK+rD,WAEL/rD,KAAK+rD,UAAUltC,SAAS7e,KAAM8oB,EAAS+nB,IAGvC7wC,KAAK+0D,aAKT,GAAI/0D,KAAKg1D,YAAa,IAASh1D,KAAKg1D,SAAWlsC,EAAQyf,eAAiBzf,EAAQyf,YAE5EvoC,KAAK+1D,iBAAiBP,OAG1B,CACI,GAAI4B,GAAYp3D,KAAK+1D,iBAAiBL,EACjC0B,KAGGvmB,EAEA7wC,KAAK+1D,iBAAiBR,GAItBv1D,KAAK+1D,iBAAiBP,MA6BtCn1D,EAAO6wD,YAAc,SAAU12C,EAAMgP,EAAQpe,EAAMqiB,GAEhC/jB,SAAX8f,GAAmC,OAAXA,IAAmBA,EAAShP,EAAKC,OAE7D3U,KAAKorD,YAAYpqD,KAAK9G,MAEtBK,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,EAAMgP,EAAQpe,EAAMqiB,GAM5CztB,KAAKkI,KAAO7H,EAAO6B,aAIvB7B,EAAO6wD,YAAY7qD,UAAYhG,EAAOmI,MAAM0C,QAAO,EAAM7K,EAAO6wD,YAAY7qD,UAAWP,KAAKorD,YAAY7qD,UAAWhG,EAAOmtB,MAAMnnB,WAEhIhG,EAAO6wD,YAAY7qD,UAAU8B,YAAc9H,EAAO6wD,YAyBlD7wD,EAAO6tD,WAAa,SAAU1zC,EAAMzO,EAAKgE,EAAOC,EAAQqnD,GAEtC3tD,SAAVqG,GAAiC,IAAVA,IAAeA,EAAQ,KACnCrG,SAAXsG,GAAmC,IAAXA,IAAgBA,EAAS,KACpCtG,SAAb2tD,IAA0BA,GAAW,GAKzCr3D,KAAKwa,KAAOA,EAKZxa,KAAK+L,IAAMA,EAKX/L,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAMdhQ,KAAKsrB,OAASjrB,EAAOkrB,OAAO7K,OAAO1gB,KAAM+P,EAAOC,EAAQ,KAAMqnD,GAM9Dr3D,KAAKqkB,QAAUrkB,KAAKsrB,OAAOiV,WAAW,MAAQliB,OAAO,IAKrDre,KAAKs3D,IAAMt3D,KAAKqkB,QAKhBrkB,KAAKu3D,eAAkB/8C,EAAK4J,aAAe/jB,EAAOI,OAAU+Z,EAAK4c,SAASogC,cAAcD,eAAiBl3D,EAAOkrB,OAAOksC,mBAAmBz3D,KAAKqkB,SAO/IrkB,KAAK03D,UAAY13D,KAAKqkB,QAAQ6uB,aAAa,EAAG,EAAGnjC,EAAOC,GAOxDhQ,KAAKqiC,KAAO,KAERriC,KAAK03D,YAEL13D,KAAKqiC,KAAOriC,KAAK03D,UAAUr1B,MAM/BriC,KAAK23D,OAAS,KAKV33D,KAAKqiC,OAEDriC,KAAK03D,UAAUr1B,KAAKu1B,QAEpB53D,KAAK43D,OAAS53D,KAAK03D,UAAUr1B,KAAKu1B,OAClC53D,KAAK23D,OAAS,GAAI3vD,aAAYhI,KAAK43D,SAI/B7vD,OAAoB,aAEpB/H,KAAK43D,OAAS,GAAIC,aAAY73D,KAAK03D,UAAUr1B,KAAKx6B,QAClD7H,KAAK23D,OAAS,GAAI3vD,aAAYhI,KAAK43D,SAInC53D,KAAK23D,OAAS33D,KAAK03D,UAAUr1B,MASzCriC,KAAK0yC,YAAc,GAAI5sC,MAAKgyD,YAAY93D,KAAKsrB,QAM7CtrB,KAAKmiC,QAAU,GAAIr8B,MAAK4oD,QAAQ1uD,KAAK0yC,aAKrC1yC,KAAKsuD,UAAY,GAAIjuD,GAAO03D,UAM5B/3D,KAAKg4D,aAAeh4D,KAAKsuD,UAAU2J,SAAS,GAAI53D,GAAO63D,MAAM,EAAG,EAAG,EAAGnoD,EAAOC,EAAQ,eAErFhQ,KAAKmiC,QAAQzR,MAAQ1wB,KAAKg4D,aAM1Bh4D,KAAKkI,KAAO7H,EAAOyB,WAKnB9B,KAAKm4D,sBAAuB,EAK5Bn4D,KAAKynB,OAAQ,EAGbznB,KAAKo4D,IAAMp4D,KAAKie,MAMhBje,KAAKq4D,OAAS,KAMdr4D,KAAKs4D,KAAO,GAAIj4D,GAAO2M,MAMvBhN,KAAKu4D,MAAQ,GAAIl4D,GAAO2M,MAMxBhN,KAAKw4D,OAAS,GAAIn4D,GAAO2M,MAMzBhN,KAAKy4D,QAAU,EAMfz4D,KAAK04D,QAAWC,KAAM,EAAGtvD,QAAS,GAMlCrJ,KAAK44D,QAAU,GAAIv4D,GAAO2M,MAM1BhN,KAAK64D,OAAS,EAMd74D,KAAK84D,OAAS,EAMd94D,KAAK+4D,OAAS,EAMd/4D,KAAKg5D,QAAU,GAAI34D,GAAOmM,OAM1BxM,KAAKi5D,YAAcvvD,QAIvBrJ,EAAO6tD,WAAW7nD,WAad+6B,KAAM,SAAUn7B,EAAGwG,EAAGsG,GAYlB,MAVU,KAAN9M,GAEAjG,KAAKk5D,MAAMjzD,EAAG8M,GAGR,IAANtG,GAEAzM,KAAKm5D,MAAM1sD,EAAGsG,GAGX/S,MAcXk5D,MAAO,SAAUrrD,EAAUkF,GAEVrJ,SAATqJ,IAAsBA,GAAO,GAERrJ,SAArB1J,KAAKi5D,cAELj5D,KAAKi5D,YAAcnzD,KAAKw6B,WAAW5f,OAAO1gB,KAAMA,KAAK+P,MAAO/P,KAAKgQ,QAGrE,IAAIf,GAAIjP,KAAKi5D,YACT3B,EAAMroD,EAAEsxB,WAAW,MACnBhjB,EAAIvd,KAAKgQ,OACT3E,EAAMrL,KAAKsrB,MAIf,IAFAgsC,EAAIvkB,UAAU,EAAG,EAAG/yC,KAAK+P,MAAO/P,KAAKgQ,QAEtB,EAAXnC,EACJ,CACIA,EAAW9H,KAAKoJ,IAAItB,EAGpB,IAAIyP,GAAItd,KAAK+P,MAAQlC,CAGjBkF,IAEAukD,EAAItkB,UAAU3nC,EAAK,EAAG,EAAGwC,EAAU0P,EAAGD,EAAG,EAAGzP,EAAU0P,GAI1D+5C,EAAItkB,UAAU3nC,EAAKwC,EAAU,EAAGyP,EAAGC,EAAG,EAAG,EAAGD,EAAGC,OAGnD,CAEI,GAAID,GAAItd,KAAK+P,MAAQlC,CAGjBkF,IAEAukD,EAAItkB,UAAU3nC,EAAKiS,EAAG,EAAGzP,EAAU0P,EAAG,EAAG,EAAG1P,EAAU0P,GAI1D+5C,EAAItkB,UAAU3nC,EAAK,EAAG,EAAGiS,EAAGC,EAAG1P,EAAU,EAAGyP,EAAGC,GAKnD,MAFAvd,MAAKie,QAEEje,KAAKsL,KAAKtL,KAAKi5D,cAc1BE,MAAO,SAAUtrD,EAAUkF,GAEVrJ,SAATqJ,IAAsBA,GAAO,GAERrJ,SAArB1J,KAAKi5D,cAELj5D,KAAKi5D,YAAcnzD,KAAKw6B,WAAW5f,OAAO1gB,KAAMA,KAAK+P,MAAO/P,KAAKgQ,QAGrE,IAAIf,GAAIjP,KAAKi5D,YACT3B,EAAMroD,EAAEsxB,WAAW,MACnBjjB,EAAItd,KAAK+P,MACT1E,EAAMrL,KAAKsrB,MAIf,IAFAgsC,EAAIvkB,UAAU,EAAG,EAAG/yC,KAAK+P,MAAO/P,KAAKgQ,QAEtB,EAAXnC,EACJ,CACIA,EAAW9H,KAAKoJ,IAAItB,EAGpB,IAAI0P,GAAIvd,KAAKgQ,OAASnC,CAGlBkF,IAEAukD,EAAItkB,UAAU3nC,EAAK,EAAG,EAAGiS,EAAGzP,EAAU,EAAG0P,EAAGD,EAAGzP,GAInDypD,EAAItkB,UAAU3nC,EAAK,EAAGwC,EAAUyP,EAAGC,EAAG,EAAG,EAAGD,EAAGC,OAGnD,CAEI,GAAIA,GAAIvd,KAAKgQ,OAASnC,CAGlBkF,IAEAukD,EAAItkB,UAAU3nC,EAAK,EAAGkS,EAAGD,EAAGzP,EAAU,EAAG,EAAGyP,EAAGzP,GAInDypD,EAAItkB,UAAU3nC,EAAK,EAAG,EAAGiS,EAAGC,EAAG,EAAG1P,EAAUyP,EAAGC,GAKnD,MAFAvd,MAAKie,QAEEje,KAAKsL,KAAKtL,KAAKi5D,cAY1BpnD,IAAK,SAAUyjB,GAEX,GAAI9uB,MAAMa,QAAQiuB,GAEd,IAAK,GAAIxtB,GAAI,EAAGA,EAAIwtB,EAAOztB,OAAQC,IAE3BwtB,EAAOxtB,GAAgB,aAEvBwtB,EAAOxtB,GAAGotB,YAAYl1B,UAM9Bs1B,GAAOJ,YAAYl1B,KAGvB,OAAOA,OAcXggB,KAAM,SAAUtS,GAOZ,MALsB,gBAAXA,KAEPA,EAAS1N,KAAKwa,KAAKsF,MAAM+uC,SAASnhD,IAGlCA,GAEA1N,KAAK8Y,OAAOpL,EAAOqC,MAAOrC,EAAOsC,QACjChQ,KAAKo4D,MAOTp4D,KAAKo5D,KAAK1rD,GAEV1N,KAAKue,SAEEve,MAdP,QAwCJie,MAAO,SAAUhY,EAAGwG,EAAGsD,EAAOC,GAW1B,MATUtG,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,QAE1ChQ,KAAKqkB,QAAQ0uB,UAAU9sC,EAAGwG,EAAGsD,EAAOC,GAEpChQ,KAAKynB,OAAQ,EAENznB,MAcXsiC,KAAM,SAAUp1B,EAAG4d,EAAGjc,EAAGJ,GAQrB,MANU/E,UAAN+E,IAAmBA,EAAI,GAE3BzO,KAAKqkB,QAAQg1C,UAAY,QAAUnsD,EAAI,IAAM4d,EAAI,IAAMjc,EAAI,IAAMJ,EAAI,IACrEzO,KAAKqkB,QAAQi1C,SAAS,EAAG,EAAGt5D,KAAK+P,MAAO/P,KAAKgQ,QAC7ChQ,KAAKynB,OAAQ,EAENznB,MA4BXu5D,gBAAiB,SAAUxtD,GAEvB,GAAIqd,GAAQ,GAAIunC,MAEhBvnC,GAAM/d,IAAMrL,KAAKsrB,OAAOkuC,UAAU,YAElC,IAAIzwD,GAAM/I,KAAKwa,KAAKsF,MAAM25C,SAAS1tD,EAAK,GAAIqd,EAE5C,OAAO,IAAItjB,MAAK4oD,QAAQ3lD,EAAI+lD,OAYhCh2C,OAAQ,SAAU/I,EAAOC,GAgCrB,MA9BID,KAAU/P,KAAK+P,OAASC,IAAWhQ,KAAKgQ,SAExChQ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAKsrB,OAAOvb,MAAQA,EACpB/P,KAAKsrB,OAAOtb,OAASA,EAEItG,SAArB1J,KAAKi5D,cAELj5D,KAAKi5D,YAAYlpD,MAAQA,EACzB/P,KAAKi5D,YAAYjpD,OAASA,GAG9BhQ,KAAK0yC,YAAY3iC,MAAQA,EACzB/P,KAAK0yC,YAAY1iC,OAASA,EAE1BhQ,KAAKg4D,aAAajoD,MAAQA,EAC1B/P,KAAKg4D,aAAahoD,OAASA,EAE3BhQ,KAAKmiC,QAAQpyB,MAAQA,EACrB/P,KAAKmiC,QAAQnyB,OAASA,EAEtBhQ,KAAKmiC,QAAQyQ,KAAK7iC,MAAQA,EAC1B/P,KAAKmiC,QAAQyQ,KAAK5iC,OAASA,EAE3BhQ,KAAKue,SACLve,KAAKynB,OAAQ,GAGVznB,MAkBXue,OAAQ,SAAUtY,EAAGwG,EAAGsD,EAAOC,GA4B3B,MA1BUtG,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQhK,KAAKoM,IAAI,EAAGnS,KAAK+P,QACrCrG,SAAXsG,IAAwBA,EAASjK,KAAKoM,IAAI,EAAGnS,KAAKgQ,SAEtDhQ,KAAK03D,UAAY13D,KAAKqkB,QAAQ6uB,aAAajtC,EAAGwG,EAAGsD,EAAOC,GACxDhQ,KAAKqiC,KAAOriC,KAAK03D,UAAUr1B,KAEvBriC,KAAK03D,UAAUr1B,KAAKu1B,QAEpB53D,KAAK43D,OAAS53D,KAAK03D,UAAUr1B,KAAKu1B,OAClC53D,KAAK23D,OAAS,GAAI3vD,aAAYhI,KAAK43D,SAI/B7vD,OAAoB,aAEpB/H,KAAK43D,OAAS,GAAIC,aAAY73D,KAAK03D,UAAUr1B,KAAKx6B,QAClD7H,KAAK23D,OAAS,GAAI3vD,aAAYhI,KAAK43D,SAInC53D,KAAK23D,OAAS33D,KAAK03D,UAAUr1B,KAI9BriC,MAuBX05D,gBAAiB,SAAUrmC,EAAUtQ,EAAiB9c,EAAGwG,EAAGsD,EAAOC,GAErDtG,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,OAQ1C,KAAK,GANDsN,GAAIrX,EAAI8J,EACRwN,EAAI9Q,EAAIuD,EACR2pD,EAAQt5D,EAAO+sB,MAAMwsC,cACrBtoD,GAAWpE,EAAG,EAAG4d,EAAG,EAAGjc,EAAG,EAAGJ,EAAG,GAChCgZ,GAAQ,EAEH7V,EAAKnF,EAAQ8Q,EAAL3L,EAAQA,IAErB,IAAK,GAAID,GAAK1L,EAAQqX,EAAL3L,EAAQA,IAErBtR,EAAO+sB,MAAMysC,YAAY75D,KAAK85D,WAAWnoD,EAAIC,GAAK+nD,GAElDroD,EAAS+hB,EAASvsB,KAAKic,EAAiB42C,EAAOhoD,EAAIC,GAE/CN,KAAW,GAAoB,OAAXA,GAA8B5H,SAAX4H,IAEvCtR,KAAK+5D,WAAWpoD,EAAIC,EAAIN,EAAOpE,EAAGoE,EAAOwZ,EAAGxZ,EAAOzC,EAAGyC,EAAO7C,GAAG,GAChEgZ,GAAQ,EAWpB,OANIA,KAEAznB,KAAKqkB,QAAQ21C,aAAah6D,KAAK03D,UAAW,EAAG,GAC7C13D,KAAKynB,OAAQ,GAGVznB,MAoBXi6D,aAAc,SAAU5mC,EAAUtQ,EAAiB9c,EAAGwG,EAAGsD,EAAOC,GAElDtG,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,OAQ1C,KAAK,GANDsN,GAAIrX,EAAI8J,EACRwN,EAAI9Q,EAAIuD,EACR2pD,EAAQ,EACRroD,EAAS,EACTmW,GAAQ,EAEH7V,EAAKnF,EAAQ8Q,EAAL3L,EAAQA,IAErB,IAAK,GAAID,GAAK1L,EAAQqX,EAAL3L,EAAQA,IAErBgoD,EAAQ35D,KAAK85D,WAAWnoD,EAAIC,GAC5BN,EAAS+hB,EAASvsB,KAAKic,EAAiB42C,EAAOhoD,EAAIC,GAE/CN,IAAWqoD,IAEX35D,KAAK23D,OAAO/lD,EAAK5R,KAAK+P,MAAQ4B,GAAML,EACpCmW,GAAQ,EAWpB,OANIA,KAEAznB,KAAKqkB,QAAQ21C,aAAah6D,KAAK03D,UAAW,EAAG,GAC7C13D,KAAKynB,OAAQ,GAGVznB,MAoBXk6D,WAAY,SAAUC,EAAIC,EAAIlnD,EAAIF,EAAIqnD,EAAIC,EAAInnD,EAAIF,EAAIsnD,GAElD,GAAI9nD,GAAK,EACLC,EAAK,EACL4K,EAAItd,KAAK+P,MACTwN,EAAIvd,KAAKgQ,OACTtC,EAASrN,EAAO+sB,MAAMotC,UAAUL,EAAIC,EAAIlnD,EAAIF,EAEjCtJ,UAAX6wD,GAAwBA,YAAkBl6D,GAAOkN,YAEjDkF,EAAK8nD,EAAOt0D,EACZyM,EAAK6nD,EAAO9tD,EACZ6Q,EAAIi9C,EAAOxqD,MACXwN,EAAIg9C,EAAOvqD,OAGf,KAAK,GAAIvD,GAAI,EAAO8Q,EAAJ9Q,EAAOA,IAEnB,IAAK,GAAIxG,GAAI,EAAOqX,EAAJrX,EAAOA,IAEfjG,KAAK85D,WAAWrnD,EAAKxM,EAAGyM,EAAKjG,KAAOiB,GAEpC1N,KAAK+5D,WAAWtnD,EAAKxM,EAAGyM,EAAKjG,EAAG4tD,EAAIC,EAAInnD,EAAIF,GAAI,EAQ5D,OAHAjT,MAAKqkB,QAAQ21C,aAAah6D,KAAK03D,UAAW,EAAG,GAC7C13D,KAAKynB,OAAQ,EAENznB,MAcXy6D,OAAQ,SAAUl9C,EAAG9G,EAAGrN,EAAGmxD,GAEvB,GAAIG,GAASn9C,GAAW,IAANA,EACdo9C,EAASlkD,GAAW,IAANA,EACdmkD,EAASxxD,GAAW,IAANA,CAElB,IAAKsxD,GAAWC,GAAWC,EAA3B,CAKelxD,SAAX6wD,IAEAA,EAAS,GAAIl6D,GAAOkN,UAAU,EAAG,EAAGvN,KAAK+P,MAAO/P,KAAKgQ,QAKzD,KAAK,GAFD2pD,GAAQt5D,EAAO+sB,MAAMwsC,cAEhBntD,EAAI8tD,EAAO9tD,EAAGA,EAAI8tD,EAAO5rD,OAAQlC,IAEtC,IAAK,GAAIxG,GAAIs0D,EAAOt0D,EAAGA,EAAIs0D,EAAO3vD,MAAO3E,IAErC5F,EAAO+sB,MAAMysC,YAAY75D,KAAK85D,WAAW7zD,EAAGwG,GAAIktD,GAAO,GAEnDe,IAEAf,EAAMp8C,EAAIA,GAGVo9C,IAEAhB,EAAMljD,EAAIA,GAGVmkD,IAEAjB,EAAMvwD,EAAIA,GAGd/I,EAAO+sB,MAAMytC,SAASlB,EAAMp8C,EAAGo8C,EAAMljD,EAAGkjD,EAAMvwD,EAAGuwD,GACjD35D,KAAK+5D,WAAW9zD,EAAGwG,EAAGktD,EAAMzsD,EAAGysD,EAAM7uC,EAAG6uC,EAAM9qD,EAAG8qD,EAAMlrD,GAAG,EAOlE,OAHAzO,MAAKqkB,QAAQ21C,aAAah6D,KAAK03D,UAAW,EAAG,GAC7C13D,KAAKynB,OAAQ,EAENznB,OAgBX86D,SAAU,SAAUv9C,EAAG9G,EAAGrN,EAAGmxD,GAMzB,GAJU7wD,SAAN6T,GAAyB,OAANA,IAAcA,GAAI,GAC/B7T,SAAN+M,GAAyB,OAANA,IAAcA,GAAI,GAC/B/M,SAANN,GAAyB,OAANA,IAAcA,GAAI,GAEpCmU,GAAM9G,GAAMrN,EAAjB,CAKeM,SAAX6wD,IAEAA,EAAS,GAAIl6D,GAAOkN,UAAU,EAAG,EAAGvN,KAAK+P,MAAO/P,KAAKgQ,QAKzD,KAAK,GAFD2pD,GAAQt5D,EAAO+sB,MAAMwsC,cAEhBntD,EAAI8tD,EAAO9tD,EAAGA,EAAI8tD,EAAO5rD,OAAQlC,IAEtC,IAAK,GAAIxG,GAAIs0D,EAAOt0D,EAAGA,EAAIs0D,EAAO3vD,MAAO3E,IAErC5F,EAAO+sB,MAAMysC,YAAY75D,KAAK85D,WAAW7zD,EAAGwG,GAAIktD,GAAO,GAEnDp8C,IAEAo8C,EAAMp8C,EAAIvd,KAAKwa,KAAK0E,KAAKnM,KAAK4mD,EAAMp8C,EAAIA,EAAG,EAAG,IAG9C9G,IAEAkjD,EAAMljD,EAAIzW,KAAKwa,KAAK0E,KAAK1J,MAAMmkD,EAAMljD,EAAIA,EAAG,EAAG,IAG/CrN,IAEAuwD,EAAMvwD,EAAIpJ,KAAKwa,KAAK0E,KAAK1J,MAAMmkD,EAAMvwD,EAAIA,EAAG,EAAG,IAGnD/I,EAAO+sB,MAAMytC,SAASlB,EAAMp8C,EAAGo8C,EAAMljD,EAAGkjD,EAAMvwD,EAAGuwD,GACjD35D,KAAK+5D,WAAW9zD,EAAGwG,EAAGktD,EAAMzsD,EAAGysD,EAAM7uC,EAAG6uC,EAAM9qD,EAAG8qD,EAAMlrD,GAAG,EAOlE,OAHAzO,MAAKqkB,QAAQ21C,aAAah6D,KAAK03D,UAAW,EAAG,GAC7C13D,KAAKynB,OAAQ,EAENznB,OAiBX+5D,WAAY,SAAU9zD,EAAGwG,EAAGsuD,EAAKC,EAAOC,EAAM58C,EAAO68C,GAsBjD,MApBkBxxD,UAAdwxD,IAA2BA,GAAY,GAEvCj1D,GAAK,GAAKA,GAAKjG,KAAK+P,OAAStD,GAAK,GAAKA,GAAKzM,KAAKgQ,SAE7C3P,EAAOu3B,OAAOujC,cAEdn7D,KAAK23D,OAAOlrD,EAAIzM,KAAK+P,MAAQ9J,GAAMoY,GAAS,GAAO48C,GAAQ,GAAOD,GAAS,EAAKD,EAIhF/6D,KAAK23D,OAAOlrD,EAAIzM,KAAK+P,MAAQ9J,GAAM80D,GAAO,GAAOC,GAAS,GAAOC,GAAQ,EAAK58C,EAG9E68C,IAEAl7D,KAAKqkB,QAAQ21C,aAAah6D,KAAK03D,UAAW,EAAG,GAC7C13D,KAAKynB,OAAQ,IAIdznB,MAgBXo7D,SAAU,SAAUn1D,EAAGwG,EAAGsuD,EAAKC,EAAOC,EAAMC,GAExC,MAAOl7D,MAAK+5D,WAAW9zD,EAAGwG,EAAGsuD,EAAKC,EAAOC,EAAM,IAAKC,IAexDG,SAAU,SAAUp1D,EAAGwG,EAAGM,GAEjBA,IAEDA,EAAM1M,EAAO+sB,MAAMwsC,cAGvB,IAAIlqC,MAAWzpB,EAAKwG,EAAIzM,KAAK+P,MAS7B,OAPA2f,IAAS,EAET3iB,EAAIG,EAAIlN,KAAKqiC,KAAK3S,GAClB3iB,EAAI+d,EAAI9qB,KAAKqiC,OAAO3S,GACpB3iB,EAAI8B,EAAI7O,KAAKqiC,OAAO3S,GACpB3iB,EAAI0B,EAAIzO,KAAKqiC,OAAO3S,GAEb3iB,GAeX+sD,WAAY,SAAU7zD,EAAGwG,GAErB,MAAIxG,IAAK,GAAKA,GAAKjG,KAAK+P,OAAStD,GAAK,GAAKA,GAAKzM,KAAKgQ,OAE1ChQ,KAAK23D,OAAOlrD,EAAIzM,KAAK+P,MAAQ9J,GAFxC,QAoBJq1D,YAAa,SAAUr1D,EAAGwG,EAAGM,EAAKwuD,EAAKC,GAEnC,MAAOn7D,GAAO+sB,MAAMysC,YAAY75D,KAAK85D,WAAW7zD,EAAGwG,GAAIM,EAAKwuD,EAAKC,IAWrEC,UAAW,SAAU/nD,GAEjB,MAAO1T,MAAKqkB,QAAQ6uB,aAAax/B,EAAKzN,EAAGyN,EAAKjH,EAAGiH,EAAK3D,MAAO2D,EAAK1D;EAmBtE0rD,cAAe,SAAU59C,GAEHpU,SAAdoU,IAA2BA,EAAY,EAE3C,IAAI67C,GAAQt5D,EAAO+sB,MAAMwsC,cAErB3zD,EAAI,EACJwG,EAAI,EACJ4tB,EAAI,EACJshC,GAAO,CAEO,KAAd79C,GAEAuc,EAAI,GACJ5tB,EAAIzM,KAAKgQ,QAEU,IAAd8N,IAELuc,EAAI,GACJp0B,EAAIjG,KAAK+P,MAGb,GAEI1P,GAAO+sB,MAAMysC,YAAY75D,KAAK85D,WAAW7zD,EAAGwG,GAAIktD,GAE9B,IAAd77C,GAAiC,IAAdA,GAGnB7X,IAEIA,IAAMjG,KAAK+P,QAEX9J,EAAI,EACJwG,GAAK4tB,GAED5tB,GAAKzM,KAAKgQ,QAAe,GAALvD,KAEpBkvD,GAAO,KAII,IAAd79C,GAAiC,IAAdA,IAGxBrR,IAEIA,IAAMzM,KAAKgQ,SAEXvD,EAAI,EACJxG,GAAKo0B,GAEDp0B,GAAKjG,KAAK+P,OAAc,GAAL9J,KAEnB01D,GAAO,WAKJ,IAAZhC,EAAMlrD,IAAYktD,EAKzB,OAHAhC,GAAM1zD,EAAIA,EACV0zD,EAAMltD,EAAIA,EAEHktD,GAYXrsD,UAAW,SAAUoG,GAOjB,MALahK,UAATgK,IAAsBA,EAAO,GAAIrT,GAAOkN,WAE5CmG,EAAKzN,EAAIjG,KAAK07D,cAAc,GAAGz1D,EAG3ByN,EAAKzN,IAAMjG,KAAK+P,MAET2D,EAAKlG,MAAM,EAAG,EAAG,EAAG,IAG/BkG,EAAKjH,EAAIzM,KAAK07D,cAAc,GAAGjvD,EAC/BiH,EAAK3D,MAAS/P,KAAK07D,cAAc,GAAGz1D,EAAIyN,EAAKzN,EAAK,EAClDyN,EAAK1D,OAAUhQ,KAAK07D,cAAc,GAAGjvD,EAAIiH,EAAKjH,EAAK,EAE5CiH,IAgBXuV,WAAY,SAAUhjB,EAAGwG,EAAGyc,EAASC,EAASyyC,EAAQC,GAElDD,EAASA,GAAU,EACnBC,EAASA,GAAU,CAEnB,IAAIzyC,GAAQppB,KAAKwa,KAAK3I,IAAIuX,MAAMnjB,EAAGwG,EAAGzM,KAKtC,OAHAopB,GAAMC,OAAOpd,IAAIid,EAASC,GAC1BC,EAAMvU,MAAM5I,IAAI2vD,EAAQC,GAEjBzyC,GAuCX9d,KAAM,SAAUoC,EAAQzH,EAAGwG,EAAGsD,EAAOC,EAAQ2B,EAAIC,EAAIkqD,EAAUC,EAAW7qD,EAAQgY,EAASC,EAASyyC,EAAQC,EAAQx9C,EAAO29C,EAAWlhD,GAWlI,GATepR,SAAXgE,GAAmC,OAAXA,IAAmBA,EAAS1N,OAEpD0N,YAAkBrN,GAAO2tD,eAAiBtgD,YAAkB5H,MAAKkoD,iBAEjEtgD,EAASA,EAAOuuD,aAGpBj8D,KAAKq4D,OAAS3qD,EAEVA,YAAkBrN,GAAO+tB,QAAU1gB,YAAkBrN,GAAOswD,OAASjjD,YAAkBrN,GAAOqxD,MAAQhkD,YAAkB5H,MAAKsoB,OAG7HpuB,KAAKs4D,KAAKrsD,IAAIyB,EAAOy0B,QAAQyQ,KAAK3sC,EAAGyH,EAAOy0B,QAAQyQ,KAAKnmC,GACzDzM,KAAKu4D,MAAMtsD,IAAIyB,EAAOy0B,QAAQyQ,KAAK7iC,MAAOrC,EAAOy0B,QAAQyQ,KAAK5iC,QAC9DhQ,KAAKw4D,OAAOvsD,IAAIyB,EAAOmH,MAAM5O,EAAGyH,EAAOmH,MAAMpI,GAC7CzM,KAAK44D,QAAQ3sD,IAAIyB,EAAO2b,OAAOpjB,EAAGyH,EAAO2b,OAAO5c,GAChDzM,KAAKy4D,QAAU/qD,EAAO8oB,SACtBx2B,KAAK04D,OAAOrvD,QAAUqE,EAAO2Q,MAEzB3Q,EAAOy0B,kBAAmB9hC,GAAO2tD,eAAiBtgD,EAAOy0B,kBAAmBr8B,MAAKkoD,cAEjFhuD,KAAKq4D,OAAS3qD,EAAOy0B,QAAQ85B,YAI7Bj8D,KAAKq4D,OAAS3qD,EAAOy0B,QAAQuQ,YAAYhlC,OAGlChE,SAAPiI,GAA2B,OAAPA,IAAeA,EAAKjE,EAAOzH,GACxCyD,SAAPkI,GAA2B,OAAPA,IAAeA,EAAKlE,EAAOjB,GAE/CiB,EAAOy0B,QAAQwQ,OAGfhhC,GAAMjE,EAAOy0B,QAAQwQ,KAAK1sC,EAAIyH,EAAO2b,OAAOpjB,EAAIyH,EAAOy0B,QAAQwQ,KAAK5iC,MACpE6B,GAAMlE,EAAOy0B,QAAQwQ,KAAKlmC,EAAIiB,EAAO2b,OAAO5c,EAAIiB,EAAOy0B,QAAQwQ,KAAK3iC,QAGpD,WAAhBtC,EAAOwuD,OAEHxuD,EAAOyuD,aAAezuD,EAAOwuD,OAE7BxuD,EAAOyuD,WAAazuD,EAAOwuD,KAC3BxuD,EAAO0uD,cAAgBt2D,KAAKu2D,aAAaC,iBAAiB5uD,EAAQA,EAAOwuD,OAG7El8D,KAAKq4D,OAAS3qD,EAAO0uD,cACrBp8D,KAAKs4D,KAAKrsD,IAAI,QAItB,CAQI,GANAjM,KAAKs4D,KAAKrsD,IAAI,GACdjM,KAAKw4D,OAAOvsD,IAAI,GAChBjM,KAAK44D,QAAQ3sD,IAAI,GACjBjM,KAAKy4D,QAAU,EACfz4D,KAAK04D,OAAOrvD,QAAU,EAElBqE,YAAkBrN,GAAO6tD,WAEzBluD,KAAKq4D,OAAS3qD,EAAO4d,WAEpB,IAAsB,gBAAX5d,GAChB,CAGI,GAFAA,EAAS1N,KAAKwa,KAAKsF,MAAM+uC,SAASnhD,GAEnB,OAAXA,EAEA,MAIA1N,MAAKq4D,OAAS3qD,EAItB1N,KAAKu4D,MAAMtsD,IAAIjM,KAAKq4D,OAAOtoD,MAAO/P,KAAKq4D,OAAOroD,QA6DlD,GAzDUtG,SAANzD,GAAyB,OAANA,IAAcA,EAAI,GAC/ByD,SAAN+C,GAAyB,OAANA,IAAcA,EAAI,GAGrCsD,IAEA/P,KAAKu4D,MAAMtyD,EAAI8J,GAGfC,IAEAhQ,KAAKu4D,MAAM9rD,EAAIuD,GAIRtG,SAAPiI,GAA2B,OAAPA,IAAeA,EAAK1L,GACjCyD,SAAPkI,GAA2B,OAAPA,IAAeA,EAAKnF,GAC3B/C,SAAboyD,GAAuC,OAAbA,IAAqBA,EAAW97D,KAAKu4D,MAAMtyD,GACvDyD,SAAdqyD,GAAyC,OAAdA,IAAsBA,EAAY/7D,KAAKu4D,MAAM9rD,GAGtD,gBAAXyE,KAEPlR,KAAKy4D,QAAUvnD,GAII,gBAAZgY,KAEPlpB,KAAK44D,QAAQ3yD,EAAIijB,GAGE,gBAAZC,KAEPnpB,KAAK44D,QAAQnsD,EAAI0c,GAIC,gBAAXyyC,KAEP57D,KAAKw4D,OAAOvyD,EAAI21D,GAGE,gBAAXC,KAEP77D,KAAKw4D,OAAO/rD,EAAIovD,GAIC,gBAAVx9C,KAEPre,KAAK04D,OAAOrvD,QAAUgV,GAGR3U,SAAdsyD,IAA2BA,EAAY,MAC3BtyD,SAAZoR,IAAyBA,GAAU,KAEnC9a,KAAK04D,OAAOrvD,SAAW,GAAuB,IAAlBrJ,KAAKw4D,OAAOvyD,GAA6B,IAAlBjG,KAAKw4D,OAAO/rD,GAA4B,IAAjBzM,KAAKu4D,MAAMtyD,GAA4B,IAAjBjG,KAAKu4D,MAAM9rD,GAA/G,CAMA,GAAI6qD,GAAMt3D,KAAKqkB,OAoCf,OAlCArkB,MAAK04D,OAAOC,KAAOrB,EAAIiF,YAEvBjF,EAAIhzC,OAEJgzC,EAAIiF,YAAcv8D,KAAK04D,OAAOrvD,QAE1B2yD,IAEAh8D,KAAKw8D,GAAKR,GAGVlhD,IAEAnJ,GAAM,EACNC,GAAM,GAIV0lD,EAAI1iD,UAAUjD,EAAIC,GAElB0lD,EAAIziD,MAAM7U,KAAKw4D,OAAOvyD,EAAGjG,KAAKw4D,OAAO/rD,GAErC6qD,EAAIpmD,OAAOlR,KAAKy4D,SAEhBnB,EAAItkB,UAAUhzC,KAAKq4D,OAAQr4D,KAAKs4D,KAAKryD,EAAIA,EAAGjG,KAAKs4D,KAAK7rD,EAAIA,EAAGzM,KAAKu4D,MAAMtyD,EAAGjG,KAAKu4D,MAAM9rD,GAAIqvD,EAAW97D,KAAK44D,QAAQ3yD,GAAI81D,EAAY/7D,KAAK44D,QAAQnsD,EAAGqvD,EAAUC,GAI5JzE,EAAI9yC,UAEJ8yC,EAAIiF,YAAcv8D,KAAK04D,OAAOC,KAE9B34D,KAAKynB,OAAQ,EAENznB,OAiBXy8D,cAAe,SAAU/uD,EAAQsuD,EAAWlhD,GAKxC,GAHkBpR,SAAdsyD,IAA2BA,EAAY,MAC3BtyD,SAAZoR,IAAyBA,GAAU,IAElCpN,EAAO1C,eAAe,oBAAsB0C,EAAOs0B,cAAsC,IAAtBt0B,EAAOme,WAE3E,MAAO7rB,KAGX,IAAI6hC,GAAKn0B,EAAO+c,cAKhB,IAHAzqB,KAAKs4D,KAAKrsD,IAAIyB,EAAOy0B,QAAQyQ,KAAK3sC,EAAGyH,EAAOy0B,QAAQyQ,KAAKnmC,GACzDzM,KAAKu4D,MAAMtsD,IAAIyB,EAAOy0B,QAAQyQ,KAAK7iC,MAAOrC,EAAOy0B,QAAQyQ,KAAK5iC,QAEjD,IAAT6xB,EAAGpzB,GAAoB,IAATozB,EAAG5tB,GAA4B,IAAjBjU,KAAKu4D,MAAMtyD,GAA4B,IAAjBjG,KAAKu4D,MAAM9rD,EAG7D,MAAOzM,KAGP0N,GAAOy0B,kBAAmB9hC,GAAO2tD,eAAiBtgD,EAAOy0B,kBAAmBr8B,MAAKkoD,cAEjFhuD,KAAKq4D,OAAS3qD,EAAOy0B,QAAQ85B,YAI7Bj8D,KAAKq4D,OAAS3qD,EAAOy0B,QAAQuQ,YAAYhlC,MAG7C,IAAIiE,GAAKkwB,EAAGlwB,GACRC,EAAKiwB,EAAGjwB,EAERlE,GAAOy0B,QAAQwQ,OAGfhhC,GAAMjE,EAAOy0B,QAAQwQ,KAAK1sC,EAAIyH,EAAO2b,OAAOpjB,EAAIyH,EAAOy0B,QAAQwQ,KAAK5iC,MACpE6B,GAAMlE,EAAOy0B,QAAQwQ,KAAKlmC,EAAIiB,EAAO2b,OAAO5c,EAAIiB,EAAOy0B,QAAQwQ,KAAK3iC,QAGpD,WAAhBtC,EAAOwuD,OAEHxuD,EAAOyuD,aAAezuD,EAAOwuD,OAE7BxuD,EAAOyuD,WAAazuD,EAAOwuD,KAC3BxuD,EAAO0uD,cAAgBt2D,KAAKu2D,aAAaC,iBAAiB5uD,EAAQA,EAAOwuD,OAG7El8D,KAAKq4D,OAAS3qD,EAAO0uD,cACrBp8D,KAAKs4D,KAAKrsD,IAAI,IAGd6O,IAEAnJ,GAAM,EACNC,GAAM,EAGV,IAAI0lD,GAAMt3D,KAAKqkB,OAiCf,OA/BArkB,MAAK04D,OAAOC,KAAOrB,EAAIiF,YAEvBjF,EAAIhzC,OAEJgzC,EAAIiF,YAAcv8D,KAAK04D,OAAOrvD,QAE1B2yD,IAEAh8D,KAAKw8D,GAAKR,GAGd1E,EAAIt3D,KAAKu3D,gBAAmB7pD,EAAOy0B,QAAQuQ,YAAYqb,YAAcjoD,KAAKJ,WAAWE,OAErF0xD,EAAI/yC,aAAasd,EAAGpzB,EAAGozB,EAAGhzB,EAAGgzB,EAAG5yB,EAAG4yB,EAAG5tB,EAAGtC,EAAIC,GAE7C0lD,EAAItkB,UAAUhzC,KAAKq4D,OACfr4D,KAAKs4D,KAAKryD,EACVjG,KAAKs4D,KAAK7rD,EACVzM,KAAKu4D,MAAMtyD,EACXjG,KAAKu4D,MAAM9rD,GACVzM,KAAKu4D,MAAMtyD,EAAIyH,EAAO2b,OAAOpjB,GAC7BjG,KAAKu4D,MAAM9rD,EAAIiB,EAAO2b,OAAO5c,EAC9BzM,KAAKu4D,MAAMtyD,EACXjG,KAAKu4D,MAAM9rD,GAEf6qD,EAAI9yC,UAEJ8yC,EAAIiF,YAAcv8D,KAAK04D,OAAOC,KAE9B34D,KAAKynB,OAAQ,EAENznB,MAiBX08D,SAAU,SAAUhvD,EAAQ4J,EAAMrR,EAAGwG,EAAG4R,EAAO29C,EAAWlhD,GAEtD,MAAO9a,MAAKsL,KAAKoC,EAAQ4J,EAAKrR,EAAGqR,EAAK7K,EAAG6K,EAAKvH,MAAOuH,EAAKtH,OAAQ/J,EAAGwG,EAAG6K,EAAKvH,MAAOuH,EAAKtH,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAGqO,EAAO29C,EAAWlhD,IAyBtIs+C,KAAM,SAAU1rD,EAAQzH,EAAGwG,EAAGsD,EAAOC,EAAQgsD,EAAWlhD,GAGpD,MAAO9a,MAAKsL,KAAKoC,EAAQ,KAAM,KAAM,KAAM,KAAMzH,EAAGwG,EAAGsD,EAAOC,EAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAMgsD,EAAWlhD,IAwBzH6hD,UAAW,SAAUzmC,EAAO8lC,EAAWlhD,GAOnC,MALIob,GAAMtB,MAAQ,GAEdsB,EAAMjC,cAAcj0B,KAAK48D,eAAgB58D,KAAMg8D,EAAWlhD,GAGvD9a,MAaX48D,eAAgB,SAAUptC,EAAOwsC,EAAWlhD,GAOxC,GALI0U,EAAMxkB,eAAe,YAErBhL,KAAKy8D,cAAcjtC,EAAOwsC,EAAWlhD,GAGrC0U,EAAMtnB,OAAS7H,EAAOmB,OAASguB,EAAMhF,OAErCxqB,KAAK28D,UAAUntC,EAAOwsC,EAAWlhD,OAIjC,IAAI0U,EAAMxkB,eAAe,aAAewkB,EAAM7D,SAAS9jB,OAAS,EAE5D,IAAK,GAAIC,GAAI,EAAGA,EAAI0nB,EAAM7D,SAAS9jB,OAAQC,IAEnC0nB,EAAM7D,SAAS7jB,GAAG0iB,QAElBxqB,KAAKy8D,cAAcjtC,EAAM7D,SAAS7jB,GAAIk0D,EAAWlhD,IA+BrE+hD,SAAU,SAAUrzC,EAAQwyC,EAAWlhD,GAEnC,GAAI0O,EAAOwY,gBAAiB,GAA+B,IAAtBxY,EAAOqC,YAAqBrC,EAAOxe,eAAe,WAAawe,EAAOgB,UAAW,EAElH,MAAOxqB,KAGX,IAAIwpB,EAAOthB,OAAS7H,EAAOmB,OAASgoB,EAAOthB,OAAS7H,EAAOuB,SAAW4nB,EAAOthB,OAAS7H,EAAOkB,WAEzF,GAAIioB,EAAOthB,OAAS7H,EAAOe,SAC3B,CACI,GAAIuZ,GAAS6O,EAAOlc,WACpBtN,MAAKs3D,IAAIhzC,OACTtkB,KAAKs3D,IAAI1iD,UAAU+F,EAAO1U,EAAG0U,EAAOlO,GACpC3G,KAAKg3D,eAAeC,eAAevzC,EAAQxpB,KAAKs3D,KAChDt3D,KAAKs3D,IAAI9yC,cAITxkB,MAAKsL,KAAKke,EAAQ,KAAM,KAAM,KAAM,KAAMA,EAAOvK,cAAchZ,EAAGujB,EAAOvK,cAAcxS,EAAG,KAAM,KAAM+c,EAAOwzC,cAAe,KAAM,KAAMxzC,EAAOgpB,WAAWvsC,EAAGujB,EAAOgpB,WAAW/lC,EAAG+c,EAAOqC,WAAYmwC,EAAWlhD,EAIxN,IAAI0O,EAAOmC,SAEP,IAAK,GAAI7jB,GAAI,EAAGA,EAAI0hB,EAAOmC,SAAS9jB,OAAQC,IAExC9H,KAAK68D,SAASrzC,EAAOmC,SAAS7jB,GAAIk0D,EAAWlhD,EAIrD,OAAO9a,OAgBXi9D,OAAQ,SAAUj/C,EAAOk/C,EAAMj3D,EAAGwG,GAE9B,GAAI6qD,GAAMt3D,KAAKqkB,OAED3a,UAAVsU,GAAiC,OAAVA,EAEvBs5C,EAAI6F,YAAc,iBAIlB7F,EAAI6F,YAAcn/C,EAClBs5C,EAAI8F,WAAaF,GAAQ,EACzB5F,EAAI+F,cAAgBp3D,GAAK,GACzBqxD,EAAIgG,cAAgB7wD,GAAK,KAejC8wD,UAAW,SAAU7vD,EAAQm8C,EAAM2T,EAAYC,GAoB3C,MAlBiB/zD,UAAb+zD,GAAuC,OAAbA,EAE1Bz9D,KAAKo5D,KAAKvP,GAAM6T,kBAIhB19D,KAAKo5D,KAAKvP,EAAM4T,EAASx3D,EAAGw3D,EAAShxD,EAAGgxD,EAAS1tD,MAAO0tD,EAASztD,QAAQ0tD,kBAG1Dh0D,SAAf8zD,GAA2C,OAAfA,EAE5Bx9D,KAAKo5D,KAAK1rD,GAAQiwD,aAIlB39D,KAAKo5D,KAAK1rD,EAAQ8vD,EAAWv3D,EAAGu3D,EAAW/wD,EAAG+wD,EAAWztD,MAAOytD,EAAWxtD,QAAQ2tD,aAGhF39D,MA0BX49D,QAAS,SAAUC,EAAa3wD,EAAG4d,EAAGjc,EAAGJ,EAAGqK,EAAQuhD,EAAIC,EAAInnD,GA2BxD,MAzBUzJ,UAAN+E,IAAmBA,EAAI,KACZ/E,SAAXoP,IAAwBA,GAAS,GAC1BpP,SAAP2wD,IAAoBA,EAAKntD,GAClBxD,SAAP4wD,IAAoBA,EAAKxvC,GAClBphB,SAAPyJ,IAAoBA,EAAKtE,GAEzBiK,GAEA+kD,EAAY/kD,OAAO9Y,KAAK+P,MAAO/P,KAAKgQ,QAGxChQ,KAAK05D,gBACD,SAAUC,EAAO1zD,EAAGwG,GAMhB,MAJIktD,GAAMzsD,IAAMA,GAAKysD,EAAM7uC,IAAMA,GAAK6uC,EAAM9qD,IAAMA,GAE9CgvD,EAAY9D,WAAW9zD,EAAGwG,EAAG4tD,EAAIC,EAAInnD,EAAI1E,GAAG,IAEzC,GAEXzO,MAEJ69D,EAAYx5C,QAAQ21C,aAAa6D,EAAYnG,UAAW,EAAG,GAC3DmG,EAAYp2C,OAAQ,EAEbo2C,GAeXnqD,KAAM,SAAUzN,EAAGwG,EAAGsD,EAAOC,EAAQqpD,GASjC,MAPyB,mBAAdA,KAEPr5D,KAAKqkB,QAAQg1C,UAAYA,GAG7Br5D,KAAKqkB,QAAQi1C,SAASrzD,EAAGwG,EAAGsD,EAAOC,GAE5BhQ,MAkBXyxD,KAAM,SAAUA,EAAMxrD,EAAGwG,EAAG6lD,EAAMt0C,EAAOi/C,GAE3BvzD,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACd/C,SAAT4oD,IAAsBA,EAAO,gBACnB5oD,SAAVsU,IAAuBA,EAAQ,oBACpBtU,SAAXuzD,IAAwBA,GAAS,EAErC,IAAI3F,GAAMt3D,KAAKqkB,QACXy5C,EAAWxG,EAAIhF,IAEnBgF,GAAIhF,KAAOA,EAEP2K,IAEA3F,EAAI+B,UAAY,aAChB/B,EAAIyG,SAAStM,EAAMxrD,EAAI,EAAGwG,EAAI,IAGlC6qD,EAAI+B,UAAYr7C,EAChBs5C,EAAIyG,SAAStM,EAAMxrD,EAAGwG,GAEtB6qD,EAAIhF,KAAOwL,GAcf3gC,OAAQ,SAAUl3B,EAAGwG,EAAGY,EAAQgsD,GAE5B,GAAI/B,GAAMt3D,KAAKqkB,OAaf,OAXkB3a,UAAd2vD,IAEA/B,EAAI+B,UAAYA,GAGpB/B,EAAI0G,YACJ1G,EAAI2G,IAAIh4D,EAAGwG,EAAGY,EAAQ,EAAa,EAAVtH,KAAK+G,IAAQ,GACtCwqD,EAAI4G,YAEJ5G,EAAIh1B,OAEGtiC,MAgBXoR,KAAM,SAAUd,EAAIC,EAAIC,EAAIC,EAAIuN,EAAOjO,GAErBrG,SAAVsU,IAAuBA,EAAQ,QACrBtU,SAAVqG,IAAuBA,EAAQ,EAEnC,IAAIunD,GAAMt3D,KAAKqkB,OAaf,OAXAizC,GAAI0G,YAEJ1G,EAAI6G,OAAO7tD,EAAIC,GACf+mD,EAAI8G,OAAO5tD,EAAIC,GAEf6mD,EAAI+G,UAAYtuD,EAChBunD,EAAIgH,YAActgD,EAClBs5C,EAAIiH,SAEJjH,EAAI4G,YAEGl+D,MAaXw+D,YAAa,SAAUptD,EAAMgY,EAAOX,GAIhC,GAFe/e,SAAX+e,IAAwBA,EAAS,YAEhB,gBAAVW,KAEPA,EAAQppB,KAAKwa,KAAKsF,MAAM+uC,SAASzlC,IAFrC,CAUA,GAAIrZ,GAAQqB,EAAKvJ,MAEF,eAAX4gB,GAA0B1Y,EAAQqZ,EAAMrZ,QAExCA,EAAQqZ,EAAMrZ,MAGlB,IAAIunD,GAAMt3D,KAAKqkB,OAgBf,OAdAizC,GAAI+B,UAAY/B,EAAImH,cAAcr1C,EAAOX,GAEzCzoB,KAAKg5D,QAAU,GAAI34D,GAAOmM,OAAO4E,EAAKV,MAAMzK,EAAGmL,EAAKV,MAAMjE,EAAG2c,EAAMpZ,QAEnEhQ,KAAKg5D,QAAQ/qD,mBAAmBmD,EAAKlD,MAAQ,oBAAoB,EAAOlO,KAAKs4D,MAE7EhB,EAAIhzC,OACJgzC,EAAI1iD,UAAU5U,KAAKs4D,KAAKryD,EAAGjG,KAAKs4D,KAAK7rD,GACrC6qD,EAAIpmD,OAAOE,EAAKlD,OAChBopD,EAAIgC,SAAS,EAAG,EAAGvpD,EAAOqZ,EAAMpZ,QAChCsnD,EAAI9yC,UAEJxkB,KAAKynB,OAAQ,EAENznB,OAYX4gB,OAAQ,WAQJ,OANK5gB,KAAKm4D,sBAAwBn4D,KAAKynB,QAEnCznB,KAAK0yC,YAAYjrB,QACjBznB,KAAKynB,OAAQ,GAGVznB,MASX8jB,QAAS,WAEL9jB,KAAKsuD,UAAUxqC,UAEf9jB,KAAKmiC,QAAQre,SAAQ,GAErBhe,KAAKw6B,WAAWxd,OAAO9iB,OAU3B29D,WAAY,WAGR,MADA39D,MAAKw8D,GAAK,cACHx8D,MAUX0+D,gBAAiB,WAGb,MADA1+D,MAAKw8D,GAAK,cACHx8D,MAUX2+D,cAAe,WAGX,MADA3+D,MAAKw8D,GAAK,YACHx8D,MAUX4+D,eAAgB,WAGZ,MADA5+D,MAAKw8D,GAAK,aACHx8D,MAUX09D,gBAAiB,WAGb,MADA19D,MAAKw8D,GAAK,cACHx8D,MAUX6+D,qBAAsB,WAGlB,MADA7+D,MAAKw8D,GAAK,mBACHx8D,MAUX8+D,mBAAoB,WAGhB,MADA9+D,MAAKw8D,GAAK,iBACHx8D,MAUX++D,oBAAqB,WAGjB,MADA/+D,MAAKw8D,GAAK,kBACHx8D,MAUXg/D,qBAAsB,WAGlB,MADAh/D,MAAKw8D,GAAK,mBACHx8D,MAUXi/D,SAAU,WAGN,MADAj/D,MAAKw8D,GAAK,MACHx8D,MAUXk/D,SAAU,WAGN,MADAl/D,MAAKw8D,GAAK,UACHx8D,MAUXm/D,cAAe,WAGX,MADAn/D,MAAKw8D,GAAK,WACHx8D,MAUXo/D,YAAa,WAGT,MADAp/D,MAAKw8D,GAAK,SACHx8D,MAUXq/D,aAAc,WAGV,MADAr/D,MAAKw8D,GAAK,UACHx8D,MAUXs/D,YAAa,WAGT,MADAt/D,MAAKw8D,GAAK,SACHx8D,MAUXu/D,aAAc,WAGV,MADAv/D,MAAKw8D,GAAK,UACHx8D,MAUXw/D,gBAAiB,WAGb,MADAx/D,MAAKw8D,GAAK,cACHx8D,MAUXy/D,eAAgB,WAGZ,MADAz/D,MAAKw8D,GAAK,aACHx8D,MAUX0/D,eAAgB,WAGZ,MADA1/D,MAAKw8D,GAAK,aACHx8D,MAUX2/D,eAAgB,WAGZ,MADA3/D,MAAKw8D,GAAK,aACHx8D,MAUX4/D,gBAAiB,WAGb,MADA5/D,MAAKw8D,GAAK,aACHx8D,MAUX6/D,eAAgB,WAGZ,MADA7/D,MAAKw8D,GAAK,YACHx8D,MAUX8/D,SAAU,WAGN,MADA9/D,MAAKw8D,GAAK,MACHx8D,MAUX+/D,gBAAiB,WAGb,MADA//D,MAAKw8D,GAAK,aACHx8D,MAUXggE,WAAY,WAGR,MADAhgE,MAAKw8D,GAAK,QACHx8D,MAUXigE,gBAAiB,WAGb,MADAjgE,MAAKw8D,GAAK,aACHx8D,OAUfuH,OAAO2E,eAAe7L,EAAO6tD,WAAW7nD,UAAW,YAE/C2F,IAAK,WAED3L,EAAOkrB,OAAO20C,oBAAoBlgE,KAAKqkB,UAI3CpY,IAAK,SAAU1C,GAEXlJ,EAAOkrB,OAAO40C,oBAAoBngE,KAAKqkB,QAAS9a,MAUxDhC,OAAO2E,eAAe7L,EAAO6tD,WAAW7nD,UAAW,MAE/C2F,IAAK,WAED,MAAOhM,MAAKqkB,QAAQ+7C,0BAIxBn0D,IAAK,SAAU1C,GAEXvJ,KAAKqkB,QAAQ+7C,yBAA2B72D,KAkBhDlJ,EAAO6tD,WAAWmS,aAAe,SAAUC,EAAYC,EAAY3E,EAAQC,EAAQ2E,EAAOC,GAStF,MAP0B,gBAAfH,KAA2BA,EAAa,GACzB,gBAAfC,KAA2BA,EAAa,GAC7B,gBAAX3E,KAAuBA,EAAS,GACrB,gBAAXC,KAAuBA,EAAS,GACtB,gBAAV2E,KAAsBA,EAAQ,GACpB,gBAAVC,KAAsBA,EAAQ,IAEhChuD,GAAImpD,EAAQlpD,GAAImpD,EAAQD,OAAQA,EAAQC,OAAQA,EAAQ2E,MAAOA,EAAOC,MAAOA,EAAOH,WAAYA,EAAYC,WAAYA,EAAY5uD,GAAI2uD,EAAY1uD,GAAI2uD,IAIrKlgE,EAAO6tD,WAAW7nD,UAAU8B,YAAc9H,EAAO6tD,WAajDpoD,KAAK+W,SAAW,WAEZ/W,KAAKwkB,uBAAuBxjB,KAAK9G,MAEjCA,KAAK8pD,YAAa,EAQlB9pD,KAAK0gE,UAAY,EAQjB1gE,KAAKq+D,UAAY,EASjBr+D,KAAK2gE,UAAY,EASjB3gE,KAAKoiC,gBASLpiC,KAAKk8D,KAAO,SASZl8D,KAAKg8D,UAAYl2D,KAAKtB,WAAWC,OASjCzE,KAAK4gE,YAAc,KASnB5gE,KAAK6gE,UAQL7gE,KAAK8gE,QAAS,EAQd9gE,KAAK+gE,cAAgB,EAErB/gE,KAAKghE,aAAe,GAAIl7D,MAAKyH,UAAU,EAAE,EAAE,EAAE,GAS7CvN,KAAKynB,OAAQ,EASbznB,KAAKihE,YAAa,EASlBjhE,KAAKkhE,mBAAoB,GAK7Bp7D,KAAK+W,SAASxW,UAAYkB,OAAOmZ,OAAQ5a,KAAKwkB,uBAAuBjkB,WACrEP,KAAK+W,SAASxW,UAAU8B,YAAcrC,KAAK+W,SAW3C/W,KAAK+W,SAASxW,UAAU86D,UAAY,SAAS9C,EAAWrgD,EAAOK,GAsB3D,MApBAre,MAAKq+D,UAAYA,GAAa,EAC9Br+D,KAAK2gE,UAAY3iD,GAAS,EAC1Bhe,KAAKohE,UAAuB13D,SAAV2U,EAAuB,EAAIA,EAEzCre,KAAK4gE,cAED5gE,KAAK4gE,YAAYr+B,MAAMxrB,OAAOlP,OAG9B7H,KAAKqhE,UAAU,GAAIv7D,MAAKuR,QAAQrX,KAAK4gE,YAAYr+B,MAAMxrB,OAAOxQ,MAAM,OAKpEvG,KAAK4gE,YAAYvC,UAAYr+D,KAAKq+D,UAClCr+D,KAAK4gE,YAAYD,UAAY3gE,KAAK2gE,UAClC3gE,KAAK4gE,YAAYQ,UAAYphE,KAAKohE,YAInCphE,MAWX8F,KAAK+W,SAASxW,UAAU83D,OAAS,SAASl4D,EAAGwG,GAIzC,MAFAzM,MAAKqhE,UAAU,GAAIv7D,MAAKuR,SAASpR,EAAGwG,KAE7BzM,MAYX8F,KAAK+W,SAASxW,UAAU+3D,OAAS,SAASn4D,EAAGwG,GAWzC,MATKzM,MAAK4gE,aAEN5gE,KAAKm+D,OAAO,EAAG,GAGnBn+D,KAAK4gE,YAAYr+B,MAAMxrB,OAAOnE,KAAK3M,EAAGwG,GACtCzM,KAAKynB,OAAQ,EACbznB,KAAKshE,oBAEEthE,MAcX8F,KAAK+W,SAASxW,UAAUk7D,iBAAmB,SAASC,EAAKC,EAAKC,EAAKC,GAE3D3hE,KAAK4gE,YAEwC,IAAzC5gE,KAAK4gE,YAAYr+B,MAAMxrB,OAAOlP,SAE9B7H,KAAK4gE,YAAYr+B,MAAMxrB,QAAU,EAAG,IAKxC/W,KAAKm+D,OAAO,EAAE,EAGlB,IAAIyD,GACAC,EACAj8C,EAAI,GACJ7O,EAAS/W,KAAK4gE,YAAYr+B,MAAMxrB,MAEd,KAAlBA,EAAOlP,QAEP7H,KAAKm+D,OAAO,EAAG,EAMnB,KAAK,GAHD2D,GAAQ/qD,EAAOA,EAAOlP,OAAS,GAC/Bk6D,EAAQhrD,EAAOA,EAAOlP,OAAS,GAC/BgQ,EAAI,EACC/P,EAAI,EAAQ8d,GAAL9d,IAAUA,EAEtB+P,EAAI/P,EAAI8d,EAERg8C,EAAKE,GAAWN,EAAMM,GAASjqD,EAC/BgqD,EAAKE,GAAWN,EAAMM,GAASlqD,EAE/Bd,EAAOnE,KAAMgvD,GAASJ,GAASE,EAAMF,GAAO3pD,EAAO+pD,GAAM/pD,EAC5CgqD,GAASJ,GAASE,EAAMF,GAAO5pD,EAAOgqD,GAAMhqD,EAM7D,OAHA7X,MAAKynB,OAAQ,EACbznB,KAAKshE,oBAEEthE,MAeX8F,KAAK+W,SAASxW,UAAU27D,cAAgB,SAASR,EAAKC,EAAKQ,EAAMC,EAAMR,EAAKC,GAEpE3hE,KAAK4gE,YAEwC,IAAzC5gE,KAAK4gE,YAAYr+B,MAAMxrB,OAAOlP,SAE9B7H,KAAK4gE,YAAYr+B,MAAMxrB,QAAU,EAAG,IAKxC/W,KAAKm+D,OAAO,EAAE,EAelB,KAAK,GAXDgE,GACAC,EACAC,EACAC,EACAC,EALA38C,EAAI,GAMJ7O,EAAS/W,KAAK4gE,YAAYr+B,MAAMxrB,OAEhC+qD,EAAQ/qD,EAAOA,EAAOlP,OAAO,GAC7Bk6D,EAAQhrD,EAAOA,EAAOlP,OAAO,GAC7BgQ,EAAI,EAEC/P,EAAI,EAAQ8d,GAAL9d,IAAUA,EAEtB+P,EAAI/P,EAAI8d,EAERu8C,EAAM,EAAItqD,EACVuqD,EAAMD,EAAKA,EACXE,EAAMD,EAAMD,EAEZG,EAAKzqD,EAAIA,EACT0qD,EAAKD,EAAKzqD,EAEVd,EAAOnE,KAAMyvD,EAAMP,EAAQ,EAAIM,EAAMvqD,EAAI2pD,EAAM,EAAIW,EAAKG,EAAKL,EAAOM,EAAKb,EAC5DW,EAAMN,EAAQ,EAAIK,EAAMvqD,EAAI4pD,EAAM,EAAIU,EAAKG,EAAKJ,EAAOK,EAAKZ,EAM7E,OAHA3hE,MAAKynB,OAAQ,EACbznB,KAAKshE,oBAEEthE,MAgBX8F,KAAK+W,SAASxW,UAAUm8D,MAAQ,SAASlyD,EAAIC,EAAIC,EAAIC,EAAIpD,GAEjDrN,KAAK4gE,YAEwC,IAAzC5gE,KAAK4gE,YAAYr+B,MAAMxrB,OAAOlP,QAE9B7H,KAAK4gE,YAAYr+B,MAAMxrB,OAAOnE,KAAKtC,EAAIC,GAK3CvQ,KAAKm+D,OAAO7tD,EAAIC,EAGpB,IAAIwG,GAAS/W,KAAK4gE,YAAYr+B,MAAMxrB,OAChC+qD,EAAQ/qD,EAAOA,EAAOlP,OAAO,GAC7Bk6D,EAAQhrD,EAAOA,EAAOlP,OAAO,GAC7BmL,EAAK+uD,EAAQxxD,EACb2C,EAAK4uD,EAAQxxD,EACb2C,EAAKxC,EAAOF,EACZ4C,EAAK3C,EAAOF,EACZmyD,EAAK18D,KAAKoJ,IAAI6D,EAAKG,EAAKD,EAAKD,EAEjC,IAAS,KAALwvD,GAA0B,IAAXp1D,EAEX0J,EAAOA,EAAOlP,OAAO,KAAOyI,GAAMyG,EAAOA,EAAOlP,OAAO,KAAO0I,GAE9DwG,EAAOnE,KAAKtC,EAAIC,OAIxB,CACI,GAAImyD,GAAK1vD,EAAKA,EAAKE,EAAKA,EACpByvD,EAAK1vD,EAAKA,EAAKE,EAAKA,EACpByvD,EAAK5vD,EAAKC,EAAKC,EAAKC,EACpB0vD,EAAKx1D,EAAStH,KAAKmK,KAAKwyD,GAAMD,EAC9BK,EAAKz1D,EAAStH,KAAKmK,KAAKyyD,GAAMF,EAC9BM,EAAKF,EAAKD,EAAKF,EACfM,EAAKF,EAAKF,EAAKD,EACfzzD,EAAK2zD,EAAK1vD,EAAK2vD,EAAK5vD,EACpB5D,EAAKuzD,EAAK5vD,EAAK6vD,EAAK9vD,EACpB7I,EAAK+I,GAAM4vD,EAAKC,GAChBhvB,EAAK/gC,GAAM8vD,EAAKC,GAChBE,EAAK9vD,GAAM0vD,EAAKG,GAChBE,EAAKjwD,GAAM4vD,EAAKG,GAChBG,EAAap9D,KAAK+M,MAAMihC,EAAKzkC,EAAInF,EAAK+E,GACtCk0D,EAAar9D,KAAK+M,MAAMowD,EAAK5zD,EAAI2zD,EAAK/zD,EAE1ClP,MAAKi+D,IAAI/uD,EAAKoB,EAAIhB,EAAKiB,EAAIlD,EAAQ81D,EAAYC,EAAUlwD,EAAKD,EAAKE,EAAKH,GAM5E,MAHAhT,MAAKynB,OAAQ,EACbznB,KAAKshE,oBAEEthE,MAgBX8F,KAAK+W,SAASxW,UAAU43D,IAAM,SAAS/uD,EAAII,EAAIjC,EAAQ81D,EAAYC,EAAUC,EAAeC,GAGxF,GAAIH,IAAeC,EAEf,MAAOpjE,KAGW0J,UAAlB25D,IAA+BA,GAAgB,GAClC35D,SAAb45D,IAA0BA,EAAW,KAEpCD,GAA6BF,GAAZC,EAElBA,GAAsB,EAAVr9D,KAAK+G,GAEZu2D,GAA+BD,GAAdD,IAEtBA,GAAwB,EAAVp9D,KAAK+G,GAGvB,IAAIy2D,GAAQF,EAA0C,IAAzBF,EAAaC,GAAkBA,EAAWD,EACnEK,EAAQz9D,KAAKG,KAAKH,KAAKoJ,IAAIo0D,IAAoB,EAAVx9D,KAAK+G,KAAWw2D,CAGzD,IAAc,IAAVC,EAEA,MAAOvjE,KAGX,IAAIyjE,GAASv0D,EAAKnJ,KAAKoH,IAAIg2D,GAAc91D,EACrCq2D,EAASp0D,EAAKvJ,KAAKqH,IAAI+1D,GAAc91D,CAErCg2D,IAAiBrjE,KAAK2jE,QAEtB3jE,KAAKm+D,OAAOjvD,EAAII,GAIhBtP,KAAKm+D,OAAOsF,EAAQC,EAgBxB,KAAK,GAZD3sD,GAAS/W,KAAK4gE,YAAYr+B,MAAMxrB,OAEhC6sD,EAAQL,GAAgB,EAAPC,GACjBK,EAAiB,EAARD,EAETE,EAAS/9D,KAAKoH,IAAIy2D,GAClBG,EAASh+D,KAAKqH,IAAIw2D,GAElBI,EAAWR,EAAO,EAElBS,EAAaD,EAAW,EAAKA,EAExBl8D,EAAI,EAAQk8D,GAALl8D,EAAeA,IAC/B,CACI,GAAIo8D,GAAQp8D,EAAIm8D,EAAYn8D,EAExBoG,EAAS,EAAUi1D,EAAcU,EAASK,EAE1Cj1D,EAAIlJ,KAAKoH,IAAIe,GACbuI,GAAK1Q,KAAKqH,IAAIc,EAElB6I,GAAOnE,MAAQkxD,EAAU70D,EAAM80D,EAASttD,GAAOpJ,EAAS6B,GACzC40D,GAAUrtD,EAAMstD,EAAS90D,GAAO5B,EAASiC,GAM5D,MAHAtP,MAAKynB,OAAQ,EACbznB,KAAKshE,oBAEEthE,MAYX8F,KAAK+W,SAASxW,UAAU6X,UAAY,SAASF,EAAOK,GAgBhD,MAdAre,MAAK2jE,SAAU,EACf3jE,KAAKmkE,UAAYnmD,GAAS,EAC1Bhe,KAAK0gE,UAAuBh3D,SAAV2U,EAAuB,EAAIA,EAEzCre,KAAK4gE,aAED5gE,KAAK4gE,YAAYr+B,MAAMxrB,OAAOlP,QAAU,IAExC7H,KAAK4gE,YAAYt+B,KAAOtiC,KAAK2jE,QAC7B3jE,KAAK4gE,YAAYuD,UAAYnkE,KAAKmkE,UAClCnkE,KAAK4gE,YAAYF,UAAY1gE,KAAK0gE,WAInC1gE,MASX8F,KAAK+W,SAASxW,UAAU+X,QAAU,WAM9B,MAJApe,MAAK2jE,SAAU,EACf3jE,KAAKmkE,UAAY,KACjBnkE,KAAK0gE,UAAY,EAEV1gE,MAYX8F,KAAK+W,SAASxW,UAAU8X,SAAW,SAASlY,EAAGwG,EAAGsD,EAAOC,GAIrD,MAFAhQ,MAAKqhE,UAAU,GAAIv7D,MAAKyH,UAAUtH,EAAGwG,EAAGsD,EAAOC,IAExChQ,MAWX8F,KAAK+W,SAASxW,UAAU+9D,gBAAkB,SAASn+D,EAAGwG,EAAGsD,EAAOC,EAAQ3C,GAIpE,MAFArN,MAAKqhE,UAAU,GAAIv7D,MAAKwU,iBAAiBrU,EAAGwG,EAAGsD,EAAOC,EAAQ3C,IAEvDrN,MAYX8F,KAAK+W,SAASxW,UAAUg+D,WAAa,SAASp+D,EAAGwG,EAAGC,GAIhD,MAFA1M,MAAKqhE,UAAU,GAAIv7D,MAAK0G,OAAOvG,EAAGwG,EAAGC,IAE9B1M,MAaX8F,KAAK+W,SAASxW,UAAUi+D,YAAc,SAASr+D,EAAGwG,EAAGsD,EAAOC,GAIxD,MAFAhQ,MAAKqhE,UAAU,GAAIv7D,MAAKgK,QAAQ7J,EAAGwG,EAAGsD,EAAOC,IAEtChQ,MAUX8F,KAAK+W,SAASxW,UAAUk+D,YAAc,SAASC,IAEvCA,YAAgBnkE,GAAOgX,SAAWmtD,YAAgB1+D,MAAKuR,WAEvDmtD,EAAOA,EAAKztD,OAKhB,IAAIA,GAASytD,CAEb,KAAKh+D,MAAMa,QAAQ0P,GACnB,CAGIA,EAAS,GAAIvQ,OAAMO,UAAUc,OAE7B,KAAK,GAAIC,GAAI,EAAGA,EAAIiP,EAAOlP,SAAUC,EAEjCiP,EAAOjP,GAAKf,UAAUe,GAM9B,MAFA9H,MAAKqhE,UAAU,GAAIhhE,GAAOgX,QAAQN,IAE3B/W,MASX8F,KAAK+W,SAASxW,UAAU4X,MAAQ,WAW5B,MATAje,MAAKq+D,UAAY,EACjBr+D,KAAK2jE,SAAU,EAEf3jE,KAAKynB,OAAQ,EACbznB,KAAKykE,YAAa,EAClBzkE,KAAKoiC,gBAELpiC,KAAKshE,oBAEEthE,MAaX8F,KAAK+W,SAASxW,UAAUkzD,gBAAkB,SAAS1xC,EAAYkmC,EAAWrmC,GAEnDhe,SAAfme,IAA4BA,EAAa,GAC3Bne,SAAdqkD,IAA2BA,EAAYjoD,KAAKJ,WAAWC,SAC3C+D,SAAZge,IAAyBA,EAAU,EAEvC,IAAI/M,GAAS3a,KAAKsN,WAElBqN,GAAO5K,OAAS2X,EAChB/M,EAAO3K,QAAU0X,CAEjB,IAAIg9C,GAAe,GAAI5+D,MAAK6+D,aAAahqD,EAAO5K,MAAQ8X,EAAYlN,EAAO3K,OAAS6X,GAEhFsa,EAAUr8B,KAAK4oD,QAAQC,WAAW+V,EAAap5C,OAAQyiC,EAU3D,OARA5rB,GAAQuQ,YAAY7qB,WAAaA,EAEjC68C,EAAargD,QAAQxP,MAAMgT,EAAYA,GAEvC68C,EAAargD,QAAQzP,WAAW+F,EAAO1U,GAAI0U,EAAOlO,GAElD3G,KAAKg3D,eAAeC,eAAe/8D,KAAM0kE,EAAargD,SAE/C8d,GAUXr8B,KAAK+W,SAASxW,UAAUu+D,aAAe,SAASpN,GAG5C,GAAIx3D,KAAK6a,WAAY,GAAwB,IAAf7a,KAAKqe,OAAere,KAAK8gE,UAAW,EAAlE,CAEA,GAAI9gE,KAAK6kE,eAiBL,OAfI7kE,KAAKynB,OAASznB,KAAKkhE,qBAEnBlhE,KAAK8kE,wBAGL9kE,KAAK+kE,4BAEL/kE,KAAKkhE,mBAAoB,EACzBlhE,KAAKynB,OAAQ,GAGjBznB,KAAKglE,cAAcn5C,WAAa7rB,KAAK6rB,eAErC/lB,MAAKsoB,OAAO/nB,UAAUu+D,aAAa99D,KAAK9G,KAAKglE,cAAexN,EAa5D,IAPAA,EAAcvG,YAAYh1B,OAC1Bu7B,EAAcyN,iBAAiBC,aAAallE,KAAKg8D,WAE7Ch8D,KAAKkqD,OAAOsN,EAAc2N,YAAYC,SAASplE,KAAKkqD,MAAOsN,GAC3Dx3D,KAAKqlE,UAAU7N,EAAc8N,cAAcC,WAAWvlE,KAAKwlE,cAG3DxlE,KAAKg8D,YAAcxE,EAAcvG,YAAYwU,iBACjD,CACIjO,EAAcvG,YAAYwU,iBAAmBzlE,KAAKg8D,SAClD,IAAI0J,GAAiB5/D,KAAK6/D,gBAAgBnO,EAAcvG,YAAYwU,iBACpEjO,GAAcvG,YAAY2U,GAAGC,UAAUH,EAAe,GAAIA,EAAe,IAa7E,GATI1lE,KAAKihE,aAELjhE,KAAKynB,OAAQ,EACbznB,KAAKihE,YAAa,GAGtBn7D,KAAKggE,cAAc/I,eAAe/8D,KAAMw3D,GAGpCx3D,KAAK2rB,SAAS9jB,OAClB,CACI2vD,EAAcvG,YAAYvgD,OAG1B,KAAK,GAAI5I,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAG88D,aAAapN,EAGlCA,GAAcvG,YAAYh1B,OAG1Bj8B,KAAKqlE,UAAU7N,EAAc8N,cAAcS,YAC3C/lE,KAAKkqD,OAAOsN,EAAc2N,YAAYa,QAAQhmE,KAAK6pD,KAAM2N,GAE7DA,EAAcyO,YAEdzO,EAAcvG,YAAYvgD,UAWlC5K,KAAK+W,SAASxW,UAAU6/D,cAAgB,SAAS1O,GAG7C,GAAIx3D,KAAK6a,WAAY,GAAwB,IAAf7a,KAAKqe,OAAere,KAAK8gE,UAAW,EAAlE,CAQA,GALI9gE,KAAKmmE,YAAcnmE,KAAKk8D,OACxBl8D,KAAKynB,OAAQ,EACbznB,KAAKmmE,UAAYnmE,KAAKk8D,MAGtBl8D,KAAK6kE,eAiBL,OAfI7kE,KAAKynB,OAASznB,KAAKkhE,qBAEnBlhE,KAAK8kE,wBAGL9kE,KAAK+kE,4BAEL/kE,KAAKkhE,mBAAoB,EACzBlhE,KAAKynB,OAAQ,GAGjBznB,KAAKglE,cAAc3mD,MAAQre,KAAKqe,UAEhCvY,MAAKsoB,OAAO/nB,UAAU6/D,cAAcp/D,KAAK9G,KAAKglE,cAAexN,EAM7D,IAAInzC,GAAUmzC,EAAcnzC,QACxB+hD,EAAYpmE,KAAKyqB,cAEjBzqB,MAAKg8D,YAAcxE,EAAciO,mBAEjCjO,EAAciO,iBAAmBzlE,KAAKg8D,UACtC33C,EAAQ+7C,yBAA2Bt6D,KAAKugE,iBAAiB7O,EAAciO,mBAGvEzlE,KAAKkqD,OAELsN,EAAc2N,YAAYC,SAASplE,KAAKkqD,MAAOsN,EAGnD,IAAI3vC,GAAa2vC,EAAc3vC,WAC3BlW,EAAMy0D,EAAUz0D,GAAK6lD,EAAc3vC,WAAc2vC,EAAc8O,OAC/D10D,EAAMw0D,EAAUx0D,GAAK4lD,EAAc3vC,WAAc2vC,EAAc+O,MAEnEliD,GAAQE,aAAa6hD,EAAU33D,EAAIoZ,EACdu+C,EAAUv3D,EAAIgZ,EACdu+C,EAAUn3D,EAAI4Y,EACdu+C,EAAUnyD,EAAI4T,EACdlW,EACAC,GAErB9L,KAAKg3D,eAAeC,eAAe/8D,KAAMqkB,EAGzC,KAAK,GAAIvc,GAAI,EAAGA,EAAI9H,KAAK2rB,SAAS9jB,OAAQC,IAEtC9H,KAAK2rB,SAAS7jB,GAAGo+D,cAAc1O,EAG/Bx3D,MAAKkqD,OAELsN,EAAc2N,YAAYa,QAAQxO,KAW9C1xD,KAAK+W,SAASxW,UAAUiH,UAAY,SAAS8G,GAEzC,IAAKpU,KAAKi3B,eACV,CAEI,IAAKj3B,KAAK8pD,WAEN,MAAOhkD,MAAKuU,cAGZra,MAAKynB,QAELznB,KAAKshE,oBACLthE,KAAKihE,YAAa,EAClBjhE,KAAKkhE,mBAAoB,EACzBlhE,KAAKynB,OAAQ,EAGjB,IAAI9M,GAAS3a,KAAKghE,aAEdwF,EAAK7rD,EAAO1U,EACZwgE,EAAK9rD,EAAO5K,MAAQ4K,EAAO1U,EAE3BygE,EAAK/rD,EAAOlO,EACZk6D,EAAKhsD,EAAO3K,OAAS2K,EAAOlO,EAE5Bge,EAAiBrW,GAAUpU,KAAKyqB,eAEhChc,EAAIgc,EAAehc,EACnBI,EAAI4b,EAAe5b,EACnBI,EAAIwb,EAAexb,EACnBgF,EAAIwW,EAAexW,EACnBtC,EAAK8Y,EAAe9Y,GACpBC,EAAK6Y,EAAe7Y,GAEpBtB,EAAK7B,EAAIg4D,EAAKx3D,EAAI03D,EAAKh1D,EACvBpB,EAAK0D,EAAI0yD,EAAK93D,EAAI43D,EAAK70D,EAEvBpB,EAAK/B,EAAI+3D,EAAKv3D,EAAI03D,EAAKh1D,EACvBlB,EAAKwD,EAAI0yD,EAAK93D,EAAI23D,EAAK50D,EAEvBg1D,EAAKn4D,EAAI+3D,EAAKv3D,EAAIy3D,EAAK/0D,EACvBk1D,EAAK5yD,EAAIyyD,EAAK73D,EAAI23D,EAAK50D,EAEvBk1D,EAAMr4D,EAAIg4D,EAAKx3D,EAAIy3D,EAAK/0D,EACxBo1D,EAAM9yD,EAAIyyD,EAAK73D,EAAI43D,EAAK70D,EAExBw+C,EAAO9/C,EACP+/C,EAAO9/C,EAEP2/C,EAAO5/C,EACP6/C,EAAO5/C,CAEX2/C,GAAYA,EAAL1/C,EAAYA,EAAK0/C,EACxBA,EAAYA,EAAL0W,EAAYA,EAAK1W,EACxBA,EAAYA,EAAL4W,EAAYA,EAAK5W,EAExBC,EAAYA,EAAL1/C,EAAYA,EAAK0/C,EACxBA,EAAYA,EAAL0W,EAAYA,EAAK1W,EACxBA,EAAYA,EAAL4W,EAAYA,EAAK5W,EAExBC,EAAO5/C,EAAK4/C,EAAO5/C,EAAK4/C,EACxBA,EAAOwW,EAAKxW,EAAOwW,EAAKxW,EACxBA,EAAO0W,EAAK1W,EAAO0W,EAAK1W,EAExBC,EAAO5/C,EAAK4/C,EAAO5/C,EAAK4/C,EACxBA,EAAOwW,EAAKxW,EAAOwW,EAAKxW,EACxBA,EAAO0W,EAAK1W,EAAO0W,EAAK1W,EAExBrwD,KAAKunD,QAAQthD,EAAIiqD,EACjBlwD,KAAKunD,QAAQx3C,MAAQqgD,EAAOF,EAE5BlwD,KAAKunD,QAAQ96C,EAAI0jD,EACjBnwD,KAAKunD,QAAQv3C,OAASqgD,EAAOF,EAE7BnwD,KAAKi3B,eAAiBj3B,KAAKunD,QAG/B,MAAOvnD,MAAKi3B,gBAUhBnxB,KAAK+W,SAASxW,UAAU0T,cAAgB,SAAUvL,GAE9CxO,KAAKyqB,eAAe/V,aAAalG,EAAQw4D,UAIzC,KAAK,GAFD5kC,GAAepiC,KAAKoiC,aAEft6B,EAAI,EAAGA,EAAIs6B,EAAav6B,OAAQC,IACzC,CACI,GAAIu6B,GAAOD,EAAat6B,EAExB,IAAKu6B,EAAKC,MAMND,EAAKE,OAEDF,EAAKE,MAAMv0B,SAASg5D,UAAU/gE,EAAG+gE,UAAUv6D,GAE3C,OAAO,EAKnB,OAAO,GASX3G,KAAK+W,SAASxW,UAAUi7D,kBAAoB,WAExC,GAAIpR,GAAO+W,EAAAA,EACP7W,IAAQ6W,EAAAA,GAER9W,EAAO8W,EAAAA,EACP5W,IAAQ4W,EAAAA,EAEZ,IAAIjnE,KAAKoiC,aAAav6B,OAIlB,IAAK,GAFD06B,GAAOxrB,EAAQ9Q,EAAGwG,EAAG6Q,EAAGC,EAEnBzV,EAAI,EAAGA,EAAI9H,KAAKoiC,aAAav6B,OAAQC,IAC9C,CACI,GAAIu6B,GAAOriC,KAAKoiC,aAAat6B,GACzBI,EAAOm6B,EAAKn6B,KACZm2D,EAAYh8B,EAAKg8B,SAGrB,IAFA97B,EAAQF,EAAKE,MAETr6B,IAASpC,KAAK+W,SAASqqD,MAAQh/D,IAASpC,KAAK+W,SAASsqD,KAEtDlhE,EAAIs8B,EAAMt8B,EAAIo4D,EAAY,EAC1B5xD,EAAI81B,EAAM91B,EAAI4xD,EAAY,EAC1B/gD,EAAIilB,EAAMxyB,MAAQsuD,EAClB9gD,EAAIglB,EAAMvyB,OAASquD,EAEnBnO,EAAWA,EAAJjqD,EAAWA,EAAIiqD,EACtBE,EAAOnqD,EAAIqX,EAAI8yC,EAAOnqD,EAAIqX,EAAI8yC,EAE9BD,EAAWA,EAAJ1jD,EAAWA,EAAI0jD,EACtBE,EAAO5jD,EAAI8Q,EAAI8yC,EAAO5jD,EAAI8Q,EAAI8yC,MAE7B,IAAInoD,IAASpC,KAAK+W,SAASuqD,KAE5BnhE,EAAIs8B,EAAMt8B,EACVwG,EAAI81B,EAAM91B,EACV6Q,EAAIilB,EAAMl1B,OAASgxD,EAAY,EAC/B9gD,EAAIglB,EAAMl1B,OAASgxD,EAAY,EAE/BnO,EAAeA,EAARjqD,EAAIqX,EAAWrX,EAAIqX,EAAI4yC,EAC9BE,EAAOnqD,EAAIqX,EAAI8yC,EAAOnqD,EAAIqX,EAAI8yC,EAE9BD,EAAeA,EAAR1jD,EAAI8Q,EAAW9Q,EAAI8Q,EAAI4yC,EAC9BE,EAAO5jD,EAAI8Q,EAAI8yC,EAAO5jD,EAAI8Q,EAAI8yC,MAE7B,IAAInoD,IAASpC,KAAK+W,SAASwqD,KAE5BphE,EAAIs8B,EAAMt8B,EACVwG,EAAI81B,EAAM91B,EACV6Q,EAAIilB,EAAMxyB,MAAQsuD,EAAY,EAC9B9gD,EAAIglB,EAAMvyB,OAASquD,EAAY,EAE/BnO,EAAeA,EAARjqD,EAAIqX,EAAWrX,EAAIqX,EAAI4yC,EAC9BE,EAAOnqD,EAAIqX,EAAI8yC,EAAOnqD,EAAIqX,EAAI8yC,EAE9BD,EAAeA,EAAR1jD,EAAI8Q,EAAW9Q,EAAI8Q,EAAI4yC,EAC9BE,EAAO5jD,EAAI8Q,EAAI8yC,EAAO5jD,EAAI8Q,EAAI8yC,MAGlC,CAEIt5C,EAASwrB,EAAMxrB,MAEf,KAAK,GAAIc,GAAI,EAAGA,EAAId,EAAOlP,OAAQgQ,IAE3Bd,EAAOc,YAAcxX,GAAO2M,OAE5B/G,EAAI8Q,EAAOc,GAAG5R,EACdwG,EAAIsK,EAAOc,GAAGpL,IAIdxG,EAAI8Q,EAAOc,GACXpL,EAAIsK,EAAOc,EAAI,GAEXA,EAAId,EAAOlP,OAAS,GAEpBgQ,KAIRq4C,EAAuBA,EAAhBjqD,EAAIo4D,EAAmBp4D,EAAIo4D,EAAYnO,EAC9CE,EAAOnqD,EAAIo4D,EAAYjO,EAAOnqD,EAAIo4D,EAAYjO,EAE9CD,EAAuBA,EAAhB1jD,EAAI4xD,EAAmB5xD,EAAI4xD,EAAYlO,EAC9CE,EAAO5jD,EAAI4xD,EAAYhO,EAAO5jD,EAAI4xD,EAAYhO,OAO1DH,GAAO,EACPE,EAAO,EACPD,EAAO,EACPE,EAAO,CAGX,IAAI3oC,GAAU1nB,KAAK+gE,aAEnB/gE,MAAKghE,aAAa/6D,EAAIiqD,EAAOxoC,EAC7B1nB,KAAKghE,aAAajxD,MAASqgD,EAAOF,EAAkB,EAAVxoC,EAE1C1nB,KAAKghE,aAAav0D,EAAI0jD,EAAOzoC,EAC7B1nB,KAAKghE,aAAahxD,OAAUqgD,EAAOF,EAAkB,EAAVzoC,GAS/C5hB,KAAK+W,SAASxW,UAAUy+D,sBAAwB,WAE5C,GAAInqD,GAAS3a,KAAKsnE,gBAElB,IAAKtnE,KAAKglE,cAYNhlE,KAAKglE,cAAcpN,OAAO9+C,OAAO6B,EAAO5K,MAAO4K,EAAO3K,YAX1D,CACI,GAAI00D,GAAe,GAAI5+D,MAAK6+D,aAAahqD,EAAO5K,MAAO4K,EAAO3K,QAC1DmyB,EAAUr8B,KAAK4oD,QAAQC,WAAW+V,EAAap5C,OAEnDtrB,MAAKglE,cAAgB,GAAIl/D,MAAKsoB,OAAO+T,GACrCniC,KAAKglE,cAAcpN,OAAS8M,EAE5B1kE,KAAKglE,cAAcv6C,eAAiBzqB,KAAKyqB,eAQ7CzqB,KAAKglE,cAAc37C,OAAOpjB,IAAM0U,EAAO1U,EAAI0U,EAAO5K,OAClD/P,KAAKglE,cAAc37C,OAAO5c,IAAMkO,EAAOlO,EAAIkO,EAAO3K,QAGlDhQ,KAAKglE,cAAcpN,OAAOvzC,QAAQzP,WAAW+F,EAAO1U,GAAI0U,EAAOlO,GAG/DzM,KAAK6rB,WAAa,EAGlB/lB,KAAKg3D,eAAeC,eAAe/8D,KAAMA,KAAKglE,cAAcpN,OAAOvzC,SACnErkB,KAAKglE,cAAc3mD,MAAQre,KAAKqe,OASpCvY,KAAK+W,SAASxW,UAAU0+D,0BAA4B,WAEhD,GAAIwC,GAAevnE,KAAKglE,cACpB7iC,EAAUolC,EAAaplC,QACvB7W,EAASi8C,EAAa3P,OAAOtsC,MAEjC6W,GAAQuQ,YAAY3iC,MAAQub,EAAOvb,MACnCoyB,EAAQuQ,YAAY1iC,OAASsb,EAAOtb,OACpCmyB,EAAQyQ,KAAK7iC,MAAQoyB,EAAQzR,MAAM3gB,MAAQub,EAAOvb,MAClDoyB,EAAQyQ,KAAK5iC,OAASmyB,EAAQzR,MAAM1gB,OAASsb,EAAOtb,OAEpDu3D,EAAa5wC,OAASrL,EAAOvb,MAC7Bw3D,EAAa3wC,QAAUtL,EAAOtb,OAG9BmyB,EAAQuQ,YAAYjrB,SAQxB3hB,KAAK+W,SAASxW,UAAUmhE,oBAAsB,WAE1CxnE,KAAKglE,cAAc7iC,QAAQre,SAAQ,GACnC9jB,KAAKglE,cAAgB,MAUzBl/D,KAAK+W,SAASxW,UAAUg7D,UAAY,SAAS9+B,GAErCviC,KAAK4gE,aAGD5gE,KAAK4gE,YAAYr+B,MAAMxrB,OAAOlP,QAAU,GAExC7H,KAAKoiC,aAAaj5B,MAI1BnJ,KAAK4gE,YAAc,KAGfr+B,YAAiBliC,GAAOgX,UAExBkrB,EAAQA,EAAM/2B,QACd+2B,EAAM5qB,UAGV,IAAI0qB,GAAO,GAAIv8B,MAAK2hE,aAAaznE,KAAKq+D,UAAWr+D,KAAK2gE,UAAW3gE,KAAKohE,UAAWphE,KAAKmkE,UAAWnkE,KAAK0gE,UAAW1gE,KAAK2jE,QAASphC,EAc/H,OAZAviC,MAAKoiC,aAAaxvB,KAAKyvB,GAEnBA,EAAKn6B,OAASpC,KAAK+W,SAAS6qD,OAE5BrlC,EAAKE,MAAM/qB,OAASxX,KAAK2jE,QACzB3jE,KAAK4gE,YAAcv+B,GAGvBriC,KAAKynB,OAAQ,EAEbznB,KAAKshE,oBAEEj/B,GAeX96B,OAAO2E,eAAepG,KAAK+W,SAASxW,UAAW,iBAE3C2F,IAAK,WACD,MAAQhM,MAAK6kE,gBAGjB54D,IAAK,SAAS1C,GAEVvJ,KAAK6kE,eAAiBt7D,EAElBvJ,KAAK6kE,eAEL7kE,KAAK8kE,wBAIL9kE,KAAKwnE,sBAGTxnE,KAAKynB,OAAQ,EACbznB,KAAKihE,YAAa,KAyC1Bn7D,KAAK2hE,aAAe,SAASpJ,EAAWsC,EAAWS,EAAW+C,EAAWzD,EAAWp+B,EAAMC,GAKtFviC,KAAKq+D,UAAYA,EAKjBr+D,KAAK2gE,UAAYA,EAKjB3gE,KAAKohE,UAAYA,EAKjBphE,KAAK2nE,UAAYhH,EAKjB3gE,KAAKmkE,UAAYA,EAKjBnkE,KAAK0gE,UAAYA,EAKjB1gE,KAAK4nE,UAAYzD,EAKjBnkE,KAAKsiC,KAAOA,EAKZtiC,KAAKuiC,MAAQA,EAKbviC,KAAKkI,KAAOq6B,EAAMr6B,MAItBpC,KAAK2hE,aAAaphE,UAAU8B,YAAcrC,KAAK2hE,aAO/C3hE,KAAK2hE,aAAaphE,UAAUmF,MAAQ,WAEhC,MAAO,IAAIi8D,cACPznE,KAAKq+D,UACLr+D,KAAK2gE,UACL3gE,KAAKohE,UACLphE,KAAKmkE,UACLnkE,KAAK0gE,UACL1gE,KAAKsiC,KACLtiC,KAAKuiC,QA2Cbz8B,KAAK+hE,SAOL/hE,KAAK+hE,MAAMC,YAAc,SAAS73D,GAE9B,GAAI83D,IAAO,EAEPniD,EAAI3V,EAAEpI,QAAU,CACpB,IAAO,EAAJ+d,EAAO,QAIV,KAAI,GAFAoiD,MACAC,KACIngE,EAAI,EAAO8d,EAAJ9d,EAAOA,IAAKmgE,EAAIr1D,KAAK9K,EAEpCA,GAAI,CAEJ,KADA,GAAIogE,GAAKtiD,EACHsiD,EAAK,GACX,CACI,GAAIC,GAAKF,GAAKngE,EAAE,GAAGogE,GACfE,EAAKH,GAAKngE,EAAE,GAAGogE,GACfG,EAAKJ,GAAKngE,EAAE,GAAGogE,GAEfI,EAAKr4D,EAAE,EAAEk4D,GAAMI,EAAKt4D,EAAE,EAAEk4D,EAAG,GAC3BK,EAAKv4D,EAAE,EAAEm4D,GAAMK,EAAKx4D,EAAE,EAAEm4D,EAAG,GAC3Bl5D,EAAKe,EAAE,EAAEo4D,GAAM/4D,EAAKW,EAAE,EAAEo4D,EAAG,GAE3BK,GAAW,CACf,IAAG5iE,KAAK+hE,MAAMc,QAAQL,EAAIC,EAAIC,EAAIC,EAAIv5D,EAAII,EAAIy4D,GAC9C,CACIW,GAAW,CACX,KAAI,GAAI7wD,GAAI,EAAOqwD,EAAJrwD,EAAQA,IACvB,CACI,GAAI+wD,GAAKX,EAAIpwD,EACb,IAAG+wD,IAAOT,GAAMS,IAAOR,GAAMQ,IAAOP,GAEjCviE,KAAK+hE,MAAMgB,iBAAiB54D,EAAE,EAAE24D,GAAK34D,EAAE,EAAE24D,EAAG,GAAIN,EAAIC,EAAIC,EAAIC,EAAIv5D,EAAII,GAAK,CACxEo5D,GAAW,CACX,SAKZ,GAAGA,EAECV,EAAIp1D,KAAKu1D,EAAIC,EAAIC,GACjBJ,EAAI9kD,QAAQrb,EAAE,GAAGogE,EAAI,GACrBA,IACApgE,EAAI,MAEH,IAAGA,IAAM,EAAEogE,EAChB,CAGI,IAAGH,EAcC,MAAO,KAVP,KAFAC,KACAC,KACIngE,EAAI,EAAO8d,EAAJ9d,EAAOA,IAAKmgE,EAAIr1D,KAAK9K,EAEhCA,GAAI,EACJogE,EAAKtiD,EAELmiD,GAAO,GAWnB,MADAC,GAAIp1D,KAAKq1D,EAAI,GAAIA,EAAI,GAAIA,EAAI,IACtBD,GAkBXliE,KAAK+hE,MAAMgB,iBAAmB,SAAS1+D,EAAI4pC,EAAIu0B,EAAIC,EAAIC,EAAIC,EAAIv5D,EAAII,GAE/D,GAAIw5D,GAAM55D,EAAGo5D,EACTS,EAAMz5D,EAAGi5D,EACTS,EAAMR,EAAGF,EACTW,EAAMR,EAAGF,EACTW,EAAM/+D,EAAGm+D,EACTa,EAAMp1B,EAAGw0B,EAETa,EAAQN,EAAIA,EAAIC,EAAIA,EACpBM,EAAQP,EAAIE,EAAID,EAAIE,EACpBK,EAAQR,EAAII,EAAIH,EAAII,EACpBI,EAAQP,EAAIA,EAAIC,EAAIA,EACpBO,EAAQR,EAAIE,EAAID,EAAIE,EAEpBM,EAAW,GAAKL,EAAQG,EAAQF,EAAQA,GACxCp8D,GAAKs8D,EAAQD,EAAQD,EAAQG,GAASC,EACtCpvC,GAAK+uC,EAAQI,EAAQH,EAAQC,GAASG,CAG1C,OAAQx8D,IAAK,GAAOotB,GAAK,GAAe,EAARptB,EAAIotB,GAUxCv0B,KAAK+hE,MAAMc,QAAU,SAASL,EAAIC,EAAIC,EAAIC,EAAIv5D,EAAII,EAAIy4D,GAElD,OAASQ,EAAGE,IAAKv5D,EAAGs5D,IAAOA,EAAGF,IAAKh5D,EAAGm5D,IAAO,IAAOV,GAsBxDjiE,KAAK4jE,UAEL5jE,KAAK4jE,OAAO5B,YAAc,SAAUzlC,EAAMsnC,EAAaC,GAEnDA,EAAMA,GAAO,CAEb,IAAIC,GAAWF,GAAeA,EAAY9hE,OACtCiiE,EAAWD,EAAWF,EAAY,GAAKC,EAAMvnC,EAAKx6B,OAClDkiE,EAAYjkE,KAAK4jE,OAAOM,WAAW3nC,EAAM,EAAGynC,EAAUF,GAAK,GAC3DK,IAEJ,KAAKF,EAAW,MAAOE,EAEvB,IAAI/Z,GAAMC,EAAMC,EAAMC,EAAMpqD,EAAGwG,EAAGzC,CAKlC,IAHI6/D,IAAUE,EAAYjkE,KAAK4jE,OAAOQ,eAAe7nC,EAAMsnC,EAAaI,EAAWH,IAG/EvnC,EAAKx6B,OAAS,GAAK+hE,EAAK,CACxB1Z,EAAOE,EAAO/tB,EAAK,GACnB8tB,EAAOE,EAAOhuB,EAAK,EAEnB,KAAK,GAAIv6B,GAAI8hE,EAASE,EAAJhiE,EAAcA,GAAK8hE,EACjC3jE,EAAIo8B,EAAKv6B,GACT2E,EAAI41B,EAAKv6B,EAAI,GACLooD,EAAJjqD,IAAUiqD,EAAOjqD,GACbkqD,EAAJ1jD,IAAU0jD,EAAO1jD,GACjBxG,EAAImqD,IAAMA,EAAOnqD,GACjBwG,EAAI4jD,IAAMA,EAAO5jD,EAIzBzC,GAAOjE,KAAKoM,IAAIi+C,EAAOF,EAAMG,EAAOF,GAKxC,MAFArqD,MAAK4jE,OAAOS,aAAaJ,EAAWE,EAAWL,EAAK1Z,EAAMC,EAAMnmD,GAEzDigE,GAKXnkE,KAAK4jE,OAAOM,WAAa,SAAU3nC,EAAM3xB,EAAOC,EAAKi5D,EAAKQ,GACtD,GACItiE,GAAG+P,EAAG3O,EADNmhE,EAAM,CAIV,KAAKviE,EAAI4I,EAAOmH,EAAIlH,EAAMi5D,EAASj5D,EAAJ7I,EAASA,GAAK8hE,EACzCS,IAAQhoC,EAAKxqB,GAAKwqB,EAAKv6B,KAAOu6B,EAAKv6B,EAAI,GAAKu6B,EAAKxqB,EAAI,IACrDA,EAAI/P,CAIR,IAAIsiE,IAAeC,EAAM,EACrB,IAAKviE,EAAI4I,EAAWC,EAAJ7I,EAASA,GAAK8hE,EAAK1gE,EAAOpD,KAAK4jE,OAAOY,WAAWxiE,EAAGu6B,EAAKv6B,GAAIu6B,EAAKv6B,EAAI,GAAIoB,OAE1F,KAAKpB,EAAI6I,EAAMi5D,EAAK9hE,GAAK4I,EAAO5I,GAAK8hE,EAAK1gE,EAAOpD,KAAK4jE,OAAOY,WAAWxiE,EAAGu6B,EAAKv6B,GAAIu6B,EAAKv6B,EAAI,GAAIoB,EAGrG,OAAOA,IAKXpD,KAAK4jE,OAAOa,aAAe,SAAU75D,EAAOC,GACxC,IAAKD,EAAO,MAAOA,EACdC,KAAKA,EAAMD,EAEhB,IACI85D,GADAv6D,EAAIS,CAER,GAGI,IAFA85D,GAAQ,EAEHv6D,EAAEw6D,UAAY3kE,KAAK4jE,OAAO96D,OAAOqB,EAAGA,EAAEqhB,OAAiD,IAAxCxrB,KAAK4jE,OAAOpyD,KAAKrH,EAAE0oD,KAAM1oD,EAAGA,EAAEqhB,MAO9ErhB,EAAIA,EAAEqhB,SAPsF,CAG5F,GAFAxrB,KAAK4jE,OAAOgB,WAAWz6D,GACvBA,EAAIU,EAAMV,EAAE0oD,KACR1oD,IAAMA,EAAEqhB,KAAM,MAAO,KACzBk5C,IAAQ,QAKPA,GAASv6D,IAAMU,EAExB,OAAOA,IAKX7K,KAAK4jE,OAAOS,aAAe,SAAUQ,EAAKV,EAAWL,EAAK1Z,EAAMC,EAAMnmD,EAAM4gE,GACxE,GAAKD,EAAL,EAGKC,GAAQ5gE,GAAMlE,KAAK4jE,OAAOmB,WAAWF,EAAKza,EAAMC,EAAMnmD,EAM3D,KAJA,GACI2uD,GAAMrnC,EADN2K,EAAO0uC,EAIJA,EAAIhS,OAASgS,EAAIr5C,MAIpB,GAHAqnC,EAAOgS,EAAIhS,KACXrnC,EAAOq5C,EAAIr5C,KAEPtnB,EAAOlE,KAAK4jE,OAAOoB,YAAYH,EAAKza,EAAMC,EAAMnmD,GAAQlE,KAAK4jE,OAAOqB,MAAMJ,GAE1EV,EAAUr3D,KAAK+lD,EAAK7wD,EAAI8hE,GACxBK,EAAUr3D,KAAK+3D,EAAI7iE,EAAI8hE,GACvBK,EAAUr3D,KAAK0e,EAAKxpB,EAAI8hE,GAExB9jE,KAAK4jE,OAAOgB,WAAWC,GAGvBA,EAAMr5C,EAAKA,KACX2K,EAAO3K,EAAKA,SAQhB,IAHAq5C,EAAMr5C,EAGFq5C,IAAQ1uC,EAAM,CAET2uC,EAIe,IAATA,GACPD,EAAM7kE,KAAK4jE,OAAOsB,uBAAuBL,EAAKV,EAAWL,GACzD9jE,KAAK4jE,OAAOS,aAAaQ,EAAKV,EAAWL,EAAK1Z,EAAMC,EAAMnmD,EAAM,IAGhD,IAAT4gE,GACP9kE,KAAK4jE,OAAOuB,YAAYN,EAAKV,EAAWL,EAAK1Z,EAAMC,EAAMnmD,GATzDlE,KAAK4jE,OAAOS,aAAarkE,KAAK4jE,OAAOa,aAAaI,GAAMV,EAAWL,EAAK1Z,EAAMC,EAAMnmD,EAAM,EAY9F,UAOZlE,KAAK4jE,OAAOqB,MAAQ,SAAUJ,GAC1B,GAAIl8D,GAAIk8D,EAAIhS,KACR9pD,EAAI87D,EACJ17D,EAAI07D,EAAIr5C,IAEZ,IAAIxrB,KAAK4jE,OAAOpyD,KAAK7I,EAAGI,EAAGI,IAAM,EAAG,OAAO,CAK3C,KAFA,GAAIgB,GAAI06D,EAAIr5C,KAAKA,KAEVrhB,IAAM06D,EAAIhS,MAAM,CACnB,GAAI7yD,KAAK4jE,OAAOwB,gBAAgBz8D,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EAAGwC,EAAEhJ,EAAGgJ,EAAExC,EAAGwD,EAAEhK,EAAGgK,EAAExD,IACjE3G,KAAK4jE,OAAOpyD,KAAKrH,EAAE0oD,KAAM1oD,EAAGA,EAAEqhB,OAAS,EAAG,OAAO,CACrDrhB,GAAIA,EAAEqhB,KAGV,OAAO,GAGXxrB,KAAK4jE,OAAOoB,YAAc,SAAUH,EAAKza,EAAMC,EAAMnmD,GACjD,GAAIyE,GAAIk8D,EAAIhS,KACR9pD,EAAI87D,EACJ17D,EAAI07D,EAAIr5C,IAEZ,IAAIxrB,KAAK4jE,OAAOpyD,KAAK7I,EAAGI,EAAGI,IAAM,EAAG,OAAO,CAe3C,KAZA,GAAIk8D,GAAQ18D,EAAExI,EAAI4I,EAAE5I,EAAKwI,EAAExI,EAAIgJ,EAAEhJ,EAAIwI,EAAExI,EAAIgJ,EAAEhJ,EAAM4I,EAAE5I,EAAIgJ,EAAEhJ,EAAI4I,EAAE5I,EAAIgJ,EAAEhJ,EACnEmlE,EAAQ38D,EAAEhC,EAAIoC,EAAEpC,EAAKgC,EAAEhC,EAAIwC,EAAExC,EAAIgC,EAAEhC,EAAIwC,EAAExC,EAAMoC,EAAEpC,EAAIwC,EAAExC,EAAIoC,EAAEpC,EAAIwC,EAAExC,EACnE4+D,EAAQ58D,EAAExI,EAAI4I,EAAE5I,EAAKwI,EAAExI,EAAIgJ,EAAEhJ,EAAIwI,EAAExI,EAAIgJ,EAAEhJ,EAAM4I,EAAE5I,EAAIgJ,EAAEhJ,EAAI4I,EAAE5I,EAAIgJ,EAAEhJ,EACnEqlE,EAAQ78D,EAAEhC,EAAIoC,EAAEpC,EAAKgC,EAAEhC,EAAIwC,EAAExC,EAAIgC,EAAEhC,EAAIwC,EAAExC,EAAMoC,EAAEpC,EAAIwC,EAAExC,EAAIoC,EAAEpC,EAAIwC,EAAExC,EAGnE8+D,EAAOzlE,KAAK4jE,OAAO8B,OAAOL,EAAOC,EAAOlb,EAAMC,EAAMnmD,GACpDyhE,EAAO3lE,KAAK4jE,OAAO8B,OAAOH,EAAOC,EAAOpb,EAAMC,EAAMnmD,GAGpDiG,EAAI06D,EAAIe,MAELz7D,GAAKA,EAAE6d,GAAK29C,GAAM,CACrB,GAAIx7D,IAAM06D,EAAIhS,MAAQ1oD,IAAM06D,EAAIr5C,MAC5BxrB,KAAK4jE,OAAOwB,gBAAgBz8D,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EAAGwC,EAAEhJ,EAAGgJ,EAAExC,EAAGwD,EAAEhK,EAAGgK,EAAExD,IACjE3G,KAAK4jE,OAAOpyD,KAAKrH,EAAE0oD,KAAM1oD,EAAGA,EAAEqhB,OAAS,EAAG,OAAO,CACrDrhB,GAAIA,EAAEy7D,MAMV,IAFAz7D,EAAI06D,EAAIgB,MAED17D,GAAKA,EAAE6d,GAAKy9C,GAAM,CACrB,GAAIt7D,IAAM06D,EAAIhS,MAAQ1oD,IAAM06D,EAAIr5C,MAC5BxrB,KAAK4jE,OAAOwB,gBAAgBz8D,EAAExI,EAAGwI,EAAEhC,EAAGoC,EAAE5I,EAAG4I,EAAEpC,EAAGwC,EAAEhJ,EAAGgJ,EAAExC,EAAGwD,EAAEhK,EAAGgK,EAAExD,IACjE3G,KAAK4jE,OAAOpyD,KAAKrH,EAAE0oD,KAAM1oD,EAAGA,EAAEqhB,OAAS,EAAG,OAAO,CACrDrhB,GAAIA,EAAE07D,MAGV,OAAO,GAKX7lE,KAAK4jE,OAAOsB,uBAAyB,SAAUt6D,EAAOu5D,EAAWL,GAC7D,GAAI35D,GAAIS,CACR,GAAG,CACC,GAAIjC,GAAIwB,EAAE0oD,KACN9pD,EAAIoB,EAAEqhB,KAAKA,IAGXxrB,MAAK4jE,OAAO56D,WAAWL,EAAGwB,EAAGA,EAAEqhB,KAAMziB,IAAM/I,KAAK4jE,OAAOkC,cAAcn9D,EAAGI,IAAM/I,KAAK4jE,OAAOkC,cAAc/8D,EAAGJ,KAE3Gw7D,EAAUr3D,KAAKnE,EAAE3G,EAAI8hE,GACrBK,EAAUr3D,KAAK3C,EAAEnI,EAAI8hE,GACrBK,EAAUr3D,KAAK/D,EAAE/G,EAAI8hE,GAGrB9jE,KAAK4jE,OAAOgB,WAAWz6D,GACvBnK,KAAK4jE,OAAOgB,WAAWz6D,EAAEqhB,MAEzBrhB,EAAIS,EAAQ7B,GAEhBoB,EAAIA,EAAEqhB,WACDrhB,IAAMS,EAEf,OAAOT,IAKXnK,KAAK4jE,OAAOuB,YAAc,SAAUv6D,EAAOu5D,EAAWL,EAAK1Z,EAAMC,EAAMnmD,GAEnE,GAAIyE,GAAIiC,CACR,GAAG,CAEC,IADA,GAAI7B,GAAIJ,EAAE6iB,KAAKA,KACRziB,IAAMJ,EAAEkqD,MAAM,CACjB,GAAIlqD,EAAE3G,IAAM+G,EAAE/G,GAAKhC,KAAK4jE,OAAOmC,gBAAgBp9D,EAAGI,GAAI,CAElD,GAAII,GAAInJ,KAAK4jE,OAAOoC,aAAar9D,EAAGI,EASpC,OANAJ,GAAI3I,KAAK4jE,OAAOa,aAAa97D,EAAGA,EAAE6iB,MAClCriB,EAAInJ,KAAK4jE,OAAOa,aAAat7D,EAAGA,EAAEqiB,MAGlCxrB,KAAK4jE,OAAOS,aAAa17D,EAAGw7D,EAAWL,EAAK1Z,EAAMC,EAAMnmD,OACxDlE,MAAK4jE,OAAOS,aAAal7D,EAAGg7D,EAAWL,EAAK1Z,EAAMC,EAAMnmD,GAG5D6E,EAAIA,EAAEyiB,KAEV7iB,EAAIA,EAAE6iB,WACD7iB,IAAMiC,IAKnB5K,KAAK4jE,OAAOQ,eAAiB,SAAU7nC,EAAMsnC,EAAaI,EAAWH,GACjE,GACI9hE,GAAGF,EAAK8I,EAAOC,EAAKo7D,EADpBC,IAGJ,KAAKlkE,EAAI,EAAGF,EAAM+hE,EAAY9hE,OAAYD,EAAJE,EAASA,IAC3C4I,EAAQi5D,EAAY7hE,GAAK8hE,EACzBj5D,EAAU/I,EAAM,EAAVE,EAAc6hE,EAAY7hE,EAAI,GAAK8hE,EAAMvnC,EAAKx6B,OACpDkkE,EAAOjmE,KAAK4jE,OAAOM,WAAW3nC,EAAM3xB,EAAOC,EAAKi5D,GAAK,GACjDmC,IAASA,EAAKz6C,OAAMy6C,EAAKtB,SAAU,GACvCuB,EAAMp5D,KAAK9M,KAAK4jE,OAAOuC,YAAYF,GAMvC,KAHAC,EAAM33C,KAAK63C,UAGNpkE,EAAI,EAAGA,EAAIkkE,EAAMnkE,OAAQC,IAC1BhC,KAAK4jE,OAAOyC,cAAcH,EAAMlkE,GAAIiiE,GACpCA,EAAYjkE,KAAK4jE,OAAOa,aAAaR,EAAWA,EAAUz4C,KAG9D,OAAOy4C,IAGXjkE,KAAK4jE,OAAOwC,SAAW,SAAUz9D,EAAGI,GAChC,MAAOJ,GAAExI,EAAI4I,EAAE5I,GAKnBH,KAAK4jE,OAAOyC,cAAgB,SAAUC,EAAMrC,GAExC,GADAA,EAAYjkE,KAAK4jE,OAAO2C,eAAeD,EAAMrC,GAC9B,CACX,GAAIl7D,GAAI/I,KAAK4jE,OAAOoC,aAAa/B,EAAWqC,EAC5CtmE,MAAK4jE,OAAOa,aAAa17D,EAAGA,EAAEyiB,QAMtCxrB,KAAK4jE,OAAO2C,eAAiB,SAAUD,EAAMrC,GACzC,GAII9zD,GAJAhG,EAAI85D,EACJuC,EAAKF,EAAKnmE,EACVsmE,EAAKH,EAAK3/D,EACVw2D,IAAMgE,EAAAA,EAKV,GAAG,CACC,GAAIsF,GAAMt8D,EAAExD,GAAK8/D,GAAMt8D,EAAEqhB,KAAK7kB,EAAG,CAC7B,GAAIxG,GAAIgK,EAAEhK,GAAKsmE,EAAKt8D,EAAExD,IAAMwD,EAAEqhB,KAAKrrB,EAAIgK,EAAEhK,IAAMgK,EAAEqhB,KAAK7kB,EAAIwD,EAAExD,EACnD6/D,IAALrmE,GAAWA,EAAIg9D,IACfA,EAAKh9D,EACLgQ,EAAIhG,EAAEhK,EAAIgK,EAAEqhB,KAAKrrB,EAAIgK,EAAIA,EAAEqhB,MAGnCrhB,EAAIA,EAAEqhB,WACDrhB,IAAM85D,EAEf,KAAK9zD,EAAG,MAAO,KAEf,IAAIm2D,EAAKnmE,IAAMgQ,EAAEhQ,EAAG,MAAOgQ,GAAE0iD,IAM7B,IAEI6T,GAFAvwC,EAAOhmB,EACPw2D,EAASxF,EAAAA,CAKb,KAFAh3D,EAAIgG,EAAEqb,KAECrhB,IAAMgsB,GACLqwC,GAAMr8D,EAAEhK,GAAKgK,EAAEhK,GAAKgQ,EAAEhQ,GACtBH,KAAK4jE,OAAOwB,gBAAgBqB,EAAKt2D,EAAExJ,EAAI6/D,EAAKrJ,EAAIsJ,EAAIt2D,EAAEhQ,EAAGgQ,EAAExJ,EAAG8/D,EAAKt2D,EAAExJ,EAAIw2D,EAAKqJ,EAAIC,EAAIt8D,EAAEhK,EAAGgK,EAAExD,KAE7F+/D,EAAMzmE,KAAKoJ,IAAIo9D,EAAKt8D,EAAExD,IAAM6/D,EAAKr8D,EAAEhK,IAExBwmE,EAAND,GAAiBA,IAAQC,GAAUx8D,EAAEhK,EAAIgQ,EAAEhQ,IAAOH,KAAK4jE,OAAOkC,cAAc37D,EAAGm8D,KAChFn2D,EAAIhG,EACJw8D,EAASD,IAIjBv8D,EAAIA,EAAEqhB,IAGV,OAAOrb,IAKXnQ,KAAK4jE,OAAOmB,WAAa,SAAUn6D,EAAOw/C,EAAMC,EAAMnmD,GAClD,GAAIiG,GAAIS,CACR,GACgB,QAART,EAAE6d,IAAY7d,EAAE6d,EAAIhoB,KAAK4jE,OAAO8B,OAAOv7D,EAAEhK,EAAGgK,EAAExD,EAAGyjD,EAAMC,EAAMnmD,IACjEiG,EAAE07D,MAAQ17D,EAAE0oD,KACZ1oD,EAAEy7D,MAAQz7D,EAAEqhB,KACZrhB,EAAIA,EAAEqhB,WACDrhB,IAAMS,EAEfT,GAAE07D,MAAMD,MAAQ,KAChBz7D,EAAE07D,MAAQ,KAEV7lE,KAAK4jE,OAAOgD,WAAWz8D,IAM3BnK,KAAK4jE,OAAOgD,WAAa,SAAUX,GAC/B,GAAIjkE,GAAGmI,EAAG08D,EAAG1hE,EAAG2hE,EAAMC,EAAWC,EAAOC,EACpCC,EAAS,CAEb,GAAG,CAMC,IALA/8D,EAAI87D,EACJA,EAAO,KACPa,EAAO,KACPC,EAAY,EAEL58D,GAAG,CAIN,IAHA48D,IACAF,EAAI18D,EACJ68D,EAAQ,EACHhlE,EAAI,EAAOklE,EAAJllE,IACRglE,IACAH,EAAIA,EAAEjB,MACDiB,GAHe7kE,KAQxB,IAFAilE,EAAQC,EAEDF,EAAQ,GAAMC,EAAQ,GAAKJ,GAEhB,IAAVG,GACA7hE,EAAI0hE,EACJA,EAAIA,EAAEjB,MACNqB,KACiB,IAAVA,GAAgBJ,EAIhB18D,EAAE6d,GAAK6+C,EAAE7+C,GAChB7iB,EAAIgF,EACJA,EAAIA,EAAEy7D,MACNoB,MAEA7hE,EAAI0hE,EACJA,EAAIA,EAAEjB,MACNqB,MAVA9hE,EAAIgF,EACJA,EAAIA,EAAEy7D,MACNoB,KAWAF,EAAMA,EAAKlB,MAAQzgE,EAClB8gE,EAAO9gE,EAEZA,EAAE0gE,MAAQiB,EACVA,EAAO3hE,CAGXgF,GAAI08D,EAGRC,EAAKlB,MAAQ,KACbsB,GAAU,QAELH,EAAY,EAErB,OAAOd,IAKXjmE,KAAK4jE,OAAO8B,OAAS,SAAUvlE,EAAGwG,EAAGyjD,EAAMC,EAAMnmD,GAe7C,MAbA/D,GAAI,OAASA,EAAIiqD,GAAQlmD,EACzByC,EAAI,OAASA,EAAI0jD,GAAQnmD,EAEzB/D,EAAqB,UAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,YAAhBA,EAAKA,GAAK,GAEfwG,EAAqB,UAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,YAAhBA,EAAKA,GAAK,GAERxG,EAAKwG,GAAK,GAKrB3G,KAAK4jE,OAAOuC,YAAc,SAAUv7D,GAChC,GAAIT,GAAIS,EACJu8D,EAAWv8D,CACf,GACQT,GAAEhK,EAAIgnE,EAAShnE,IAAGgnE,EAAWh9D,GACjCA,EAAIA,EAAEqhB,WACDrhB,IAAMS,EAEf,OAAOu8D,IAKXnnE,KAAK4jE,OAAOwB,gBAAkB,SAAU5C,EAAIC,EAAIC,EAAIC,EAAIv5D,EAAII,EAAInF,EAAI4pC,GAChE,OAAQ7kC,EAAK/E,IAAOo+D,EAAKx0B,IAAOu0B,EAAKn+D,IAAOmF,EAAKykC,IAAO,IACnDu0B,EAAKn+D,IAAOs+D,EAAK10B,IAAOy0B,EAAKr+D,IAAOo+D,EAAKx0B,IAAO,IAChDy0B,EAAKr+D,IAAOmF,EAAKykC,IAAO7kC,EAAK/E,IAAOs+D,EAAK10B,IAAO,GAKzDjuC,KAAK4jE,OAAOmC,gBAAkB,SAAUp9D,EAAGI,GACvC,MAAO/I,MAAK4jE,OAAO96D,OAAOH,EAAGI,IAAMJ,EAAE6iB,KAAKxpB,IAAM+G,EAAE/G,GAAK2G,EAAEkqD,KAAK7wD,IAAM+G,EAAE/G,IAAMhC,KAAK4jE,OAAOwD,kBAAkBz+D,EAAGI,IACzG/I,KAAK4jE,OAAOkC,cAAcn9D,EAAGI,IAAM/I,KAAK4jE,OAAOkC,cAAc/8D,EAAGJ,IAAM3I,KAAK4jE,OAAOyD,aAAa1+D,EAAGI,IAK1G/I,KAAK4jE,OAAOpyD,KAAO,SAAUrH,EAAG08D,EAAGz/D,GAC/B,OAAQy/D,EAAElgE,EAAIwD,EAAExD,IAAMS,EAAEjH,EAAI0mE,EAAE1mE,IAAM0mE,EAAE1mE,EAAIgK,EAAEhK,IAAMiH,EAAET,EAAIkgE,EAAElgE,IAK9D3G,KAAK4jE,OAAO96D,OAAS,SAAU0J,EAAIC,GAC/B,MAAOD,GAAGrS,IAAMsS,EAAGtS,GAAKqS,EAAG7L,IAAM8L,EAAG9L,GAKxC3G,KAAK4jE,OAAO56D,WAAa,SAAUwJ,EAAI80D,EAAI70D,EAAI80D,GAC3C,MAAOvnE,MAAK4jE,OAAOpyD,KAAKgB,EAAI80D,EAAI70D,GAAM,GAAMzS,KAAK4jE,OAAOpyD,KAAKgB,EAAI80D,EAAIC,GAAM,GACvEvnE,KAAK4jE,OAAOpyD,KAAKiB,EAAI80D,EAAI/0D,GAAM,GAAMxS,KAAK4jE,OAAOpyD,KAAKiB,EAAI80D,EAAID,GAAM,GAK5EtnE,KAAK4jE,OAAOwD,kBAAoB,SAAUz+D,EAAGI,GACzC,GAAIoB,GAAIxB,CACR,GAAG,CACC,GAAIwB,EAAEnI,IAAM2G,EAAE3G,GAAKmI,EAAEqhB,KAAKxpB,IAAM2G,EAAE3G,GAAKmI,EAAEnI,IAAM+G,EAAE/G,GAAKmI,EAAEqhB,KAAKxpB,IAAM+G,EAAE/G,GACjEhC,KAAK4jE,OAAO56D,WAAWmB,EAAGA,EAAEqhB,KAAM7iB,EAAGI,GAAI,OAAO,CACpDoB,GAAIA,EAAEqhB,WACDrhB,IAAMxB,EAEf,QAAO,GAKX3I,KAAK4jE,OAAOkC,cAAgB,SAAUn9D,EAAGI,GACrC,MAAO/I,MAAK4jE,OAAOpyD,KAAK7I,EAAEkqD,KAAMlqD,EAAGA,EAAE6iB,MAAQ,EACzCxrB,KAAK4jE,OAAOpyD,KAAK7I,EAAGI,EAAGJ,EAAE6iB,OAAS,GAAKxrB,KAAK4jE,OAAOpyD,KAAK7I,EAAGA,EAAEkqD,KAAM9pD,IAAM,EACzE/I,KAAK4jE,OAAOpyD,KAAK7I,EAAGI,EAAGJ,EAAEkqD,MAAQ,GAAK7yD,KAAK4jE,OAAOpyD,KAAK7I,EAAGA,EAAE6iB,KAAMziB,GAAK,GAK/E/I,KAAK4jE,OAAOyD,aAAe,SAAU1+D,EAAGI,GACpC,GAAIoB,GAAIxB,EACJmJ,GAAS,EACTzN,GAAMsE,EAAExI,EAAI4I,EAAE5I,GAAK,EACnB8tC,GAAMtlC,EAAEhC,EAAIoC,EAAEpC,GAAK,CACvB,GACUwD,GAAExD,EAAIsnC,GAAS9jC,EAAEqhB,KAAK7kB,EAAIsnC,GAAS5pC,GAAM8F,EAAEqhB,KAAKrrB,EAAIgK,EAAEhK,IAAM8tC,EAAK9jC,EAAExD,IAAMwD,EAAEqhB,KAAK7kB,EAAIwD,EAAExD,GAAKwD,EAAEhK,IAC/F2R,GAAUA,GACd3H,EAAIA,EAAEqhB,WACDrhB,IAAMxB,EAEf,OAAOmJ,IAMX9R,KAAK4jE,OAAOoC,aAAe,SAAUr9D,EAAGI,GACpC,GAAIoE,GAAK,GAAInN,MAAK4jE,OAAO4D,KAAK7+D,EAAE3G,EAAG2G,EAAExI,EAAGwI,EAAEhC,GACtC0G,EAAK,GAAIrN,MAAK4jE,OAAO4D,KAAKz+D,EAAE/G,EAAG+G,EAAE5I,EAAG4I,EAAEpC,GACtC8gE,EAAK9+D,EAAE6iB,KACPk8C,EAAK3+D,EAAE8pD,IAcX,OAZAlqD,GAAE6iB,KAAOziB,EACTA,EAAE8pD,KAAOlqD,EAETwE,EAAGqe,KAAOi8C,EACVA,EAAG5U,KAAO1lD,EAEVE,EAAGme,KAAOre,EACVA,EAAG0lD,KAAOxlD,EAEVq6D,EAAGl8C,KAAOne,EACVA,EAAGwlD,KAAO6U,EAEHr6D,GAKXrN,KAAK4jE,OAAOY,WAAa,SAAUxiE,EAAG7B,EAAGwG,EAAGvD,GACxC,GAAI+G,GAAI,GAAInK,MAAK4jE,OAAO4D,KAAKxlE,EAAG7B,EAAGwG,EAYnC,OAVKvD,IAKD+G,EAAEqhB,KAAOpoB,EAAKooB,KACdrhB,EAAE0oD,KAAOzvD,EACTA,EAAKooB,KAAKqnC,KAAO1oD,EACjB/G,EAAKooB,KAAOrhB,IAPZA,EAAE0oD,KAAO1oD,EACTA,EAAEqhB,KAAOrhB,GAQNA,GAGXnK,KAAK4jE,OAAOgB,WAAa,SAAUz6D,GAC/BA,EAAEqhB,KAAKqnC,KAAO1oD,EAAE0oD,KAChB1oD,EAAE0oD,KAAKrnC,KAAOrhB,EAAEqhB,KAEZrhB,EAAE07D,QAAO17D,EAAE07D,MAAMD,MAAQz7D,EAAEy7D,OAC3Bz7D,EAAEy7D,QAAOz7D,EAAEy7D,MAAMC,MAAQ17D,EAAE07D,QAGnC7lE,KAAK4jE,OAAO4D,KAAO,SAAUxlE,EAAG7B,EAAGwG,GAE/BzM,KAAK8H,EAAIA,EAGT9H,KAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,EAGTzM,KAAK24D,KAAO,KACZ34D,KAAKsxB,KAAO,KAGZtxB,KAAK8tB,EAAI,KAGT9tB,KAAK2rE,MAAQ,KACb3rE,KAAK0rE,MAAQ,KAGb1rE,KAAKyqE,SAAU,GAcnB3kE,KAAKggE,cAAgB,aASrBhgE,KAAKggE,cAAc2H,mBAAqB,EAWxC3nE,KAAKggE,cAAc/I,eAAiB,SAAS/K,EAAUwF,GAEnD,GAIIkW,GAJA9H,EAAKpO,EAAcoO,GACnB+H,EAAanW,EAAcmW,WAC3Bv/D,EAASopD,EAAcppD,OACvBw/D,EAASpW,EAAcqW,cAAcC,eAGtC9b,GAASvqC,OAER3hB,KAAKggE,cAAciI,eAAe/b,EAAU4T,EAOhD,KAAK,GAJDprC,GAAQw3B,EAAS6O,OAAO+E,EAAGjxD,IAItB7M,EAAI,EAAGA,EAAI0yB,EAAM6H,KAAKx6B,OAAQC,IAET,IAAvB0yB,EAAM6H,KAAKv6B,GAAGkmE,MAEbN,EAAYlzC,EAAM6H,KAAKv6B,GAEvB0vD,EAAcyW,eAAeC,YAAYlc,EAAU0b,EAAWlW,GAG9DoO,EAAGuI,aAAavI,EAAGwI,aAAc,EAAGxI,EAAGyI,eAAmD,GAAjCX,EAAUY,QAAQzmE,OAAS,IAEpF2vD,EAAcyW,eAAeM,WAAWvc,EAAU0b,EAAWlW,KAI7DkW,EAAYlzC,EAAM6H,KAAKv6B,GAGvB0vD,EAAcqW,cAAcW,UAAWZ,GACvCA,EAASpW,EAAcqW,cAAcC,gBACrClI,EAAG6I,iBAAiBb,EAAOc,mBAAmB,EAAO1c,EAASvnC,eAAepW,SAAQ,IAErFuxD,EAAG+I,UAAUf,EAAOgB,MAAO,GAE3BhJ,EAAGiJ,UAAUjB,EAAOkB,iBAAkBnB,EAAW1nE,GAAI0nE,EAAWlhE,GAChEm5D,EAAGiJ,UAAUjB,EAAOmB,cAAe3gE,EAAOnI,GAAImI,EAAO3B,GAErDm5D,EAAGoJ,WAAWpB,EAAOqB,UAAWnpE,KAAKopE,QAAQld,EAASkK,OAEtD0J,EAAG+I,UAAUf,EAAOvvD,MAAO2zC,EAASnmC,YAGpC+5C,EAAGuJ,WAAWvJ,EAAGwJ,aAAc1B,EAAU9V,QAEzCgO,EAAGyJ,oBAAoBzB,EAAO0B,gBAAiB,EAAG1J,EAAG2J,OAAO,EAAO,GAAO,GAC1E3J,EAAGyJ,oBAAoBzB,EAAO4B,eAAgB,EAAG5J,EAAG2J,OAAO,EAAM,GAAO,GAGxE3J,EAAGuJ,WAAWvJ,EAAG6J,qBAAsB/B,EAAUgC,aACjD9J,EAAGuI,aAAavI,EAAG+J,eAAiBjC,EAAUY,QAAQzmE,OAAQ+9D,EAAGyI,eAAgB,KAc7FvoE,KAAKggE,cAAciI,eAAiB,SAAS/b,EAAU4T,GAGnD,GAAIprC,GAAQw3B,EAAS6O,OAAO+E,EAAGjxD,GAE3B6lB,KAAMA,EAAQw3B,EAAS6O,OAAO+E,EAAGjxD,KAAOi7D,UAAU,EAAGvtC,QAASujC,GAAGA,IAGrE5T,EAASvqC,OAAQ,CAEjB,IAAI3f,EAGJ,IAAGkqD,EAASyS,WACZ,CAII,IAHAzS,EAASyS,YAAa,EAGjB38D,EAAI,EAAGA,EAAI0yB,EAAM6H,KAAKx6B,OAAQC,IACnC,CACI,GAAIs6B,GAAe5H,EAAM6H,KAAKv6B,EAC9Bs6B,GAAa1iB,QACb5Z,KAAKggE,cAAc+J,iBAAiBj9D,KAAMwvB,GAI9C5H,EAAM6H,QACN7H,EAAMo1C,UAAY,EAGtB,GAAIlC,EAKJ,KAAK5lE,EAAI0yB,EAAMo1C,UAAW9nE,EAAIkqD,EAAS5vB,aAAav6B,OAAQC,IAC5D,CACI,GAAIu6B,GAAO2vB,EAAS5vB,aAAat6B,EAEjC,IAAGu6B,EAAKn6B,OAASpC,KAAK+W,SAAS6qD,KAC/B,CAaI,GAXArlC,EAAKtrB,OAASsrB,EAAKE,MAAMxrB,OAAOxQ,QAC7B87B,EAAKE,MAAM/qB,SAGP6qB,EAAKtrB,OAAO,KAAOsrB,EAAKtrB,OAAOsrB,EAAKtrB,OAAOlP,OAAO,IAAMw6B,EAAKtrB,OAAO,KAAOsrB,EAAKtrB,OAAOsrB,EAAKtrB,OAAOlP,OAAO,IAEzGw6B,EAAKtrB,OAAOnE,KAAKyvB,EAAKtrB,OAAO,GAAIsrB,EAAKtrB,OAAO,KAKlDsrB,EAAKC,MAEDD,EAAKtrB,OAAOlP,QAAU/B,KAAKggE,cAAc2H,mBAExC,GAAGprC,EAAKtrB,OAAOlP,OAAiD,EAAxC/B,KAAKggE,cAAc2H,mBAC3C,CACIC,EAAY5nE,KAAKggE,cAAcgK,WAAWt1C,EAAO,EAEjD,IAAIu1C,GAAqBjqE,KAAKggE,cAAckK,UAAU3tC,EAAMqrC,EAGxDqC,KAGArC,EAAY5nE,KAAKggE,cAAcgK,WAAWt1C,EAAO,GACjD10B,KAAKggE,cAAcmK,iBAAiB5tC,EAAMqrC,QAM9CA,GAAY5nE,KAAKggE,cAAcgK,WAAWt1C,EAAO,GACjD10B,KAAKggE,cAAcmK,iBAAiB5tC,EAAMqrC,EAKnDrrC,GAAKg8B,UAAY,IAEhBqP,EAAY5nE,KAAKggE,cAAcgK,WAAWt1C,EAAO,GACjD10B,KAAKggE,cAAcoK,UAAU7tC,EAAMqrC,QAMvCA,GAAY5nE,KAAKggE,cAAcgK,WAAWt1C,EAAO,GAE9C6H,EAAKn6B,OAASpC,KAAK+W,SAASqqD,KAE3BphE,KAAKggE,cAAcqK,eAAe9tC,EAAMqrC,GAEpCrrC,EAAKn6B,OAASpC,KAAK+W,SAASuqD,MAAQ/kC,EAAKn6B,OAASpC,KAAK+W,SAASwqD,KAEpEvhE,KAAKggE,cAAcsK,YAAY/tC,EAAMqrC,GAEjCrrC,EAAKn6B,OAASpC,KAAK+W,SAASsqD,MAEhCrhE,KAAKggE,cAAcuK,sBAAsBhuC,EAAMqrC,EAIvDlzC,GAAMo1C,YAIV,IAAK9nE,EAAI,EAAGA,EAAI0yB,EAAM6H,KAAKx6B,OAAQC,IAE/B4lE,EAAYlzC,EAAM6H,KAAKv6B,GACpB4lE,EAAUjmD,OAAMimD,EAAU4C,UAWrCxqE,KAAKggE,cAAcgK,WAAa,SAASt1C,EAAOtyB,GAE5C,GAAIwlE,EAsBJ,OApBIlzC,GAAM6H,KAAKx6B,QAQX6lE,EAAYlzC,EAAM6H,KAAK7H,EAAM6H,KAAKx6B,OAAO,GAEtC6lE,EAAUM,OAAS9lE,GAAiB,IAATA,IAE1BwlE,EAAY5nE,KAAKggE,cAAc+J,iBAAiB1mE,OAAS,GAAIrD,MAAKyqE,kBAAkB/1C,EAAMorC,IAC1F8H,EAAUM,KAAO9lE,EACjBsyB,EAAM6H,KAAKzvB,KAAK86D,MAZpBA,EAAY5nE,KAAKggE,cAAc+J,iBAAiB1mE,OAAS,GAAIrD,MAAKyqE,kBAAkB/1C,EAAMorC,IAC1F8H,EAAUM,KAAO9lE,EACjBsyB,EAAM6H,KAAKzvB,KAAK86D,IAcpBA,EAAUjmD,OAAQ,EAEXimD,GAYX5nE,KAAKggE,cAAcqK,eAAiB,SAAS/tC,EAAcsrC,GAKvD,GAAI8C,GAAWpuC,EAAaG,MACxBt8B,EAAIuqE,EAASvqE,EACbwG,EAAI+jE,EAAS/jE,EACbsD,EAAQygE,EAASzgE,MACjBC,EAASwgE,EAASxgE,MAEtB,IAAGoyB,EAAaE,KAChB,CACI,GAAItkB,GAAQlY,KAAKopE,QAAQ9sC,EAAa+hC,WAClC9lD,EAAQ+jB,EAAas+B,UAErBxzD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEfoyD,EAAQ/C,EAAU32D,OAClBu3D,EAAUZ,EAAUY,QAEpBoC,EAAUD,EAAM5oE,OAAS;AAG7B4oE,EAAM79D,KAAK3M,EAAGwG,GACdgkE,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBoyD,EAAM79D,KAAK3M,EAAI8J,EAAOtD,GACtBgkE,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBoyD,EAAM79D,KAAK3M,EAAIwG,EAAIuD,GACnBygE,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBoyD,EAAM79D,KAAK3M,EAAI8J,EAAOtD,EAAIuD,GAC1BygE,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAGpBiwD,EAAQ17D,KAAK89D,EAASA,EAASA,EAAU,EAAGA,EAAU,EAAGA,EAAU,EAAGA,EAAU,GAGpF,GAAItuC,EAAai8B,UACjB,CACI,GAAIsS,GAAavuC,EAAarrB,MAE9BqrB,GAAarrB,QAAU9Q,EAAGwG,EAChBxG,EAAI8J,EAAOtD,EACXxG,EAAI8J,EAAOtD,EAAIuD,EACf/J,EAAGwG,EAAIuD,EACP/J,EAAGwG,GAGb3G,KAAKggE,cAAcoK,UAAU9tC,EAAcsrC,GAE3CtrC,EAAarrB,OAAS45D,IAa9B7qE,KAAKggE,cAAcuK,sBAAwB,SAASjuC,EAAcsrC,GAE9D,GAAIkD,GAAYxuC,EAAaG,MACzBt8B,EAAI2qE,EAAU3qE,EACdwG,EAAImkE,EAAUnkE,EACdsD,EAAQ6gE,EAAU7gE,MAClBC,EAAS4gE,EAAU5gE,OAEnB3C,EAASujE,EAAUvjE,OAEnBwjE,IAOJ,IANAA,EAAUj+D,KAAK3M,EAAGwG,EAAIY,GACtBwjE,EAAYA,EAAUhqE,OAAOf,KAAKggE,cAAcgL,qBAAqB7qE,EAAGwG,EAAIuD,EAAS3C,EAAQpH,EAAGwG,EAAIuD,EAAQ/J,EAAIoH,EAAQZ,EAAIuD,IAC5H6gE,EAAYA,EAAUhqE,OAAOf,KAAKggE,cAAcgL,qBAAqB7qE,EAAI8J,EAAQ1C,EAAQZ,EAAIuD,EAAQ/J,EAAI8J,EAAOtD,EAAIuD,EAAQ/J,EAAI8J,EAAOtD,EAAIuD,EAAS3C,IACpJwjE,EAAYA,EAAUhqE,OAAOf,KAAKggE,cAAcgL,qBAAqB7qE,EAAI8J,EAAOtD,EAAIY,EAAQpH,EAAI8J,EAAOtD,EAAGxG,EAAI8J,EAAQ1C,EAAQZ,IAC9HokE,EAAYA,EAAUhqE,OAAOf,KAAKggE,cAAcgL,qBAAqB7qE,EAAIoH,EAAQZ,EAAGxG,EAAGwG,EAAGxG,EAAGwG,EAAIY,IAE7F+0B,EAAaE,KAAM,CACnB,GAAItkB,GAAQlY,KAAKopE,QAAQ9sC,EAAa+hC,WAClC9lD,EAAQ+jB,EAAas+B,UAErBxzD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEfoyD,EAAQ/C,EAAU32D,OAClBu3D,EAAUZ,EAAUY,QAEpByC,EAASN,EAAM5oE,OAAS,EAExBoiE,EAAYnkE,KAAK4jE,OAAO5B,YAAY+I,EAAW,KAAM,GAErD/oE,EAAI,CAER,KAAKA,EAAI,EAAGA,EAAImiE,EAAUpiE,OAAQC,GAAG,EAEjCwmE,EAAQ17D,KAAKq3D,EAAUniE,GAAKipE,GAC5BzC,EAAQ17D,KAAKq3D,EAAUniE,GAAKipE,GAC5BzC,EAAQ17D,KAAKq3D,EAAUniE,EAAE,GAAKipE,GAC9BzC,EAAQ17D,KAAKq3D,EAAUniE,EAAE,GAAKipE,GAC9BzC,EAAQ17D,KAAKq3D,EAAUniE,EAAE,GAAKipE,EAIlC,KAAKjpE,EAAI,EAAGA,EAAI+oE,EAAUhpE,OAAQC,IAE9B2oE,EAAM79D,KAAKi+D,EAAU/oE,GAAI+oE,IAAY/oE,GAAIoF,EAAG4d,EAAGjc,EAAGwP,GAI1D,GAAI+jB,EAAai8B,UAAW,CACxB,GAAIsS,GAAavuC,EAAarrB,MAE9BqrB,GAAarrB,OAAS85D,EAEtB/qE,KAAKggE,cAAcoK,UAAU9tC,EAAcsrC,GAE3CtrC,EAAarrB,OAAS45D,IAmB9B7qE,KAAKggE,cAAcgL,qBAAuB,SAAShP,EAAOC,EAAOP,EAAKC,EAAKC,EAAKC,GAW5E,QAASqP,GAAMC,EAAKC,EAAIC,GACpB,GAAIC,GAAOF,EAAKD,CAEhB,OAAOA,GAAOG,EAAOD,EAIzB,IAAK,GAhBDvP,GACAC,EACAwP,EACAC,EACArrE,EACAwG,EACAmZ,EAAI,GACJ7O,KAQAc,EAAI,EACC/P,EAAI,EAAQ8d,GAAL9d,EAAQA,IAEpB+P,EAAI/P,EAAI8d,EAGRg8C,EAAKoP,EAAOlP,EAAQN,EAAM3pD,GAC1BgqD,EAAKmP,EAAOjP,EAAQN,EAAM5pD,GAC1Bw5D,EAAKL,EAAOxP,EAAME,EAAM7pD,GACxBy5D,EAAKN,EAAOvP,EAAME,EAAM9pD,GAGxB5R,EAAI+qE,EAAOpP,EAAKyP,EAAKx5D,GACrBpL,EAAIukE,EAAOnP,EAAKyP,EAAKz5D,GAErBd,EAAOnE,KAAK3M,EAAGwG,EAEnB,OAAOsK,IAYXjR,KAAKggE,cAAcsK,YAAc,SAAShuC,EAAcsrC,GAGpD,GAGI39D,GACAC,EAJAuhE,EAAanvC,EAAaG,MAC1Bt8B,EAAIsrE,EAAWtrE,EACfwG,EAAI8kE,EAAW9kE,CAKhB21B,GAAal6B,OAASpC,KAAK+W,SAASuqD,MAEnCr3D,EAAQwhE,EAAWlkE,OACnB2C,EAASuhE,EAAWlkE,SAIpB0C,EAAQwhE,EAAWxhE,MACnBC,EAASuhE,EAAWvhE,OAGxB,IAAIwhE,GAAY,GACZC,EAAiB,EAAV1rE,KAAK+G,GAAU0kE,EAEtB1pE,EAAI,CAER,IAAGs6B,EAAaE,KAChB,CACI,GAAItkB,GAAQlY,KAAKopE,QAAQ9sC,EAAa+hC,WAClC9lD,EAAQ+jB,EAAas+B,UAErBxzD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEfoyD,EAAQ/C,EAAU32D,OAClBu3D,EAAUZ,EAAUY,QAEpByC,EAASN,EAAM5oE,OAAS,CAI5B,KAFAymE,EAAQ17D,KAAKm+D,GAERjpE,EAAI,EAAO0pE,EAAY,EAAhB1pE,EAAoBA,IAE5B2oE,EAAM79D,KAAK3M,EAAEwG,EAAGS,EAAG4d,EAAGjc,EAAGwP,GAEzBoyD,EAAM79D,KAAK3M,EAAIF,KAAKqH,IAAIqkE,EAAM3pE,GAAKiI,EACxBtD,EAAI1G,KAAKoH,IAAIskE,EAAM3pE,GAAKkI,EACxB9C,EAAG4d,EAAGjc,EAAGwP,GAEpBiwD,EAAQ17D,KAAKm+D,IAAUA,IAG3BzC,GAAQ17D,KAAKm+D,EAAO,GAGxB,GAAG3uC,EAAai8B,UAChB,CACI,GAAIsS,GAAavuC,EAAarrB,MAI9B,KAFAqrB,EAAarrB,UAERjP,EAAI,EAAO0pE,EAAY,EAAhB1pE,EAAmBA,IAE3Bs6B,EAAarrB,OAAOnE,KAAK3M,EAAIF,KAAKqH,IAAIqkE,EAAM3pE,GAAKiI,EACxBtD,EAAI1G,KAAKoH,IAAIskE,EAAM3pE,GAAKkI,EAGrDlK,MAAKggE,cAAcoK,UAAU9tC,EAAcsrC,GAE3CtrC,EAAarrB,OAAS45D,IAa9B7qE,KAAKggE,cAAcoK,UAAY,SAAS9tC,EAAcsrC,GAGlD,GAAI5lE,GAAI,EACJiP,EAASqrB,EAAarrB,MAC1B,IAAqB,IAAlBA,EAAOlP,OAAV,CAGA,GAAGu6B,EAAai8B,UAAU,EAEtB,IAAKv2D,EAAI,EAAGA,EAAIiP,EAAOlP,OAAQC,IAC3BiP,EAAOjP,IAAM,EAKrB,IAAI4pE,GAAa,GAAI5rE,MAAKkH,MAAO+J,EAAO,GAAIA,EAAO,IAC/C46D,EAAY,GAAI7rE,MAAKkH,MAAO+J,EAAOA,EAAOlP,OAAS,GAAIkP,EAAOA,EAAOlP,OAAS,GAGlF,IAAG6pE,EAAWzrE,IAAM0rE,EAAU1rE,GAAKyrE,EAAWjlE,IAAMklE,EAAUllE,EAC9D,CAEIsK,EAASA,EAAOxQ,QAEhBwQ,EAAO5N,MACP4N,EAAO5N,MAEPwoE,EAAY,GAAI7rE,MAAKkH,MAAO+J,EAAOA,EAAOlP,OAAS,GAAIkP,EAAOA,EAAOlP,OAAS,GAE9E,IAAI+pE,GAAYD,EAAU1rE,EAAkC,IAA7ByrE,EAAWzrE,EAAI0rE,EAAU1rE,GACpD4rE,EAAYF,EAAUllE,EAAkC,IAA7BilE,EAAWjlE,EAAIklE,EAAUllE,EAExDsK,GAAO+6D,QAAQF,EAAWC,GAC1B96D,EAAOnE,KAAKg/D,EAAWC,GAG3B,GAgBI1nE,GAAI4pC,EAAIg+B,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACjCC,EAAOC,EAAOC,EAAQC,EAAQC,EAAQC,EACtC1/D,EAAIE,EAAIE,EAAIH,EAAIE,EAAIE,EACpBC,EAAOq/D,EAAOC,EAnBdnC,EAAQ/C,EAAU32D,OAClBu3D,EAAUZ,EAAUY,QACpBzmE,EAASkP,EAAOlP,OAAS,EACzBgrE,EAAa97D,EAAOlP,OACpBirE,EAAarC,EAAM5oE,OAAO,EAG1BkI,EAAQqyB,EAAai8B,UAAY,EAGjCrgD,EAAQlY,KAAKopE,QAAQ9sC,EAAau+B,WAClCtiD,EAAQ+jB,EAAag/B,UACrBl0D,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,CA8BnB,KAvBA0zD,EAAMh7D,EAAO,GACbi7D,EAAMj7D,EAAO,GAEbk7D,EAAMl7D,EAAO,GACbm7D,EAAMn7D,EAAO,GAEbs7D,IAAUL,EAAME,GAChBI,EAASP,EAAME,EAEfW,EAAO7sE,KAAKmK,KAAKmiE,EAAMA,EAAQC,EAAMA,GAErCD,GAASO,EACTN,GAASM,EACTP,GAAStiE,EACTuiE,GAASviE,EAGT0gE,EAAM79D,KAAKm/D,EAAMM,EAAQL,EAAMM,EACnBplE,EAAG4d,EAAGjc,EAAGwP,GAErBoyD,EAAM79D,KAAKm/D,EAAMM,EAAQL,EAAMM,EACnBplE,EAAG4d,EAAGjc,EAAGwP,GAEhBvW,EAAI,EAAOD,EAAO,EAAXC,EAAcA,IAEtBiqE,EAAMh7D,EAAa,GAALjP,EAAE,IAChBkqE,EAAMj7D,EAAa,GAALjP,EAAE,GAAO,GAEvBmqE,EAAMl7D,EAAW,EAAJ,GACbm7D,EAAMn7D,EAAW,EAAJ,EAAQ,GAErBo7D,EAAMp7D,EAAa,GAALjP,EAAE,IAChBsqE,EAAMr7D,EAAa,GAALjP,EAAE,GAAO,GAEvBuqE,IAAUL,EAAME,GAChBI,EAAQP,EAAME,EAEdW,EAAO7sE,KAAKmK,KAAKmiE,EAAMA,EAAQC,EAAMA,GACrCD,GAASO,EACTN,GAASM,EACTP,GAAStiE,EACTuiE,GAASviE,EAETwiE,IAAWL,EAAME,GACjBI,EAASP,EAAME,EAEfS,EAAO7sE,KAAKmK,KAAKqiE,EAAOA,EAASC,EAAOA,GACxCD,GAAUK,EACVJ,GAAUI,EACVL,GAAUxiE,EACVyiE,GAAUziE,EAEViD,GAAOs/D,EAAQN,IAASM,EAAQJ,GAChCh/D,GAAOm/D,EAAQJ,IAASI,EAAQN,GAChC3+D,IAAOi/D,EAAQN,KAASO,EAAQJ,KAASG,EAAQJ,KAASK,EAAQN,GAClE/+D,GAAOu/D,EAASJ,IAASI,EAASN,GAClC/+D,GAAOo/D,EAASN,IAASM,EAASJ,GAClC9+D,IAAOk/D,EAASJ,KAASK,EAASN,KAASK,EAASN,KAASO,EAASJ,GAEtE9+D,EAAQN,EAAGG,EAAKF,EAAGC,EAEhBnN,KAAKoJ,IAAImE,GAAS,IAGjBA,GAAO,KACPm9D,EAAM79D,KAAKq/D,EAAMI,EAAQH,EAAMI,EAC3BplE,EAAG4d,EAAGjc,EAAGwP,GAEboyD,EAAM79D,KAAKq/D,EAAMI,EAAQH,EAAMI,EAC3BplE,EAAG4d,EAAGjc,EAAGwP,KAKjBlU,GAAM+I,EAAGG,EAAKF,EAAGC,GAAIE,EACrBygC,GAAM9gC,EAAGG,EAAKJ,EAAGK,GAAIC,EAGrBq/D,GAASxoE,EAAI8nE,IAAQ9nE,EAAI8nE,IAAQl+B,EAAIm+B,IAAQn+B,EAAIm+B,GAG9CS,EAAQ,OAEPF,EAASJ,EAAQE,EACjBG,EAASJ,EAAQE,EAEjBI,EAAO7sE,KAAKmK,KAAKuiE,EAAOA,EAASC,EAAOA,GACxCD,GAAUG,EACVF,GAAUE,EACVH,GAAU1iE,EACV2iE,GAAU3iE,EAEV0gE,EAAM79D,KAAKq/D,EAAMQ,EAAQP,EAAKQ,GAC9BjC,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBoyD,EAAM79D,KAAKq/D,EAAMQ,EAAQP,EAAKQ,GAC9BjC,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBoyD,EAAM79D,KAAKq/D,EAAMQ,EAAQP,EAAKQ,GAC9BjC,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBw0D,MAKApC,EAAM79D,KAAKzI,EAAK4pC,GAChB08B,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBoyD,EAAM79D,KAAKq/D,GAAO9nE,EAAG8nE,GAAMC,GAAOn+B,EAAKm+B,IACvCzB,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,IA2B5B,KAvBA0zD,EAAMh7D,EAAkB,GAAVlP,EAAO,IACrBmqE,EAAMj7D,EAAkB,GAAVlP,EAAO,GAAO,GAE5BoqE,EAAMl7D,EAAkB,GAAVlP,EAAO,IACrBqqE,EAAMn7D,EAAkB,GAAVlP,EAAO,GAAO,GAE5BwqE,IAAUL,EAAME,GAChBI,EAAQP,EAAME,EAEdW,EAAO7sE,KAAKmK,KAAKmiE,EAAMA,EAAQC,EAAMA,GACrCD,GAASO,EACTN,GAASM,EACTP,GAAStiE,EACTuiE,GAASviE,EAET0gE,EAAM79D,KAAKq/D,EAAMI,EAAQH,EAAMI,GAC/B7B,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBoyD,EAAM79D,KAAKq/D,EAAMI,EAAQH,EAAMI,GAC/B7B,EAAM79D,KAAK1F,EAAG4d,EAAGjc,EAAGwP,GAEpBiwD,EAAQ17D,KAAKkgE,GAERhrE,EAAI,EAAO+qE,EAAJ/qE,EAAgBA,IAExBwmE,EAAQ17D,KAAKkgE,IAGjBxE,GAAQ17D,KAAKkgE,EAAW,KAY5BhtE,KAAKggE,cAAcmK,iBAAmB,SAAS7tC,EAAcsrC,GAGzD,GAAI32D,GAASqrB,EAAarrB,OAAOxQ,OACjC,MAAGwQ,EAAOlP,OAAS,GAAnB,CAGA,GAAIymE,GAAUZ,EAAUY,OACxBZ,GAAU32D,OAASA,EACnB22D,EAAUrvD,MAAQ+jB,EAAas+B,UAC/BgN,EAAU1vD,MAAQlY,KAAKopE,QAAQ9sC,EAAa+hC,UAc5C,KAAK,GAHDl+D,GAAEwG,EANFyjD,EAAO+W,EAAAA,EACP7W,IAAQ6W,EAAAA,GAER9W,EAAO8W,EAAAA,EACP5W,IAAQ4W,EAAAA,GAKHn/D,EAAI,EAAGA,EAAIiP,EAAOlP,OAAQC,GAAG,EAElC7B,EAAI8Q,EAAOjP,GACX2E,EAAIsK,EAAOjP,EAAE,GAEbooD,EAAWA,EAAJjqD,EAAWA,EAAIiqD,EACtBE,EAAOnqD,EAAImqD,EAAOnqD,EAAImqD,EAEtBD,EAAWA,EAAJ1jD,EAAWA,EAAI0jD,EACtBE,EAAO5jD,EAAI4jD,EAAO5jD,EAAI4jD,CAI1Bt5C,GAAOnE,KAAKs9C,EAAMC,EACNC,EAAMD,EACNC,EAAMC,EACNH,EAAMG,EAKlB,IAAIxoD,GAASkP,EAAOlP,OAAS,CAC7B,KAAKC,EAAI,EAAOD,EAAJC,EAAYA,IAEpBwmE,EAAQ17D,KAAM9K,KActBhC,KAAKggE,cAAckK,UAAY,SAAS5tC,EAAcsrC,GAElD,GAAI32D,GAASqrB,EAAarrB,MAE1B,MAAGA,EAAOlP,OAAS,GAAnB,CAEA,GAAI4oE,GAAQ/C,EAAU32D,OAClBu3D,EAAUZ,EAAUY,QAEpBzmE,EAASkP,EAAOlP,OAAS,EAGzBmW,EAAQlY,KAAKopE,QAAQ9sC,EAAa+hC,WAClC9lD,EAAQ+jB,EAAas+B,UACrBxzD,EAAI8Q,EAAM,GAAKK,EACfyM,EAAI9M,EAAM,GAAKK,EACfxP,EAAImP,EAAM,GAAKK,EAEf4rD,EAAYnkE,KAAK4jE,OAAO5B,YAAY/wD,EAAQ,KAAM,EAEtD,KAAIkzD,EAAU,OAAO,CAErB,IAAIyG,GAAUD,EAAM5oE,OAAS,EAEzBC,EAAI,CAER,KAAKA,EAAI,EAAGA,EAAImiE,EAAUpiE,OAAQC,GAAG,EAEjCwmE,EAAQ17D,KAAKq3D,EAAUniE,GAAK4oE,GAC5BpC,EAAQ17D,KAAKq3D,EAAUniE,GAAK4oE,GAC5BpC,EAAQ17D,KAAKq3D,EAAUniE,EAAE,GAAK4oE,GAC9BpC,EAAQ17D,KAAKq3D,EAAUniE,EAAE,GAAI4oE,GAC7BpC,EAAQ17D,KAAKq3D,EAAUniE,EAAE,GAAK4oE,EAGlC,KAAK5oE,EAAI,EAAOD,EAAJC,EAAYA,IAEpB2oE,EAAM79D,KAAKmE,EAAW,EAAJjP,GAAQiP,EAAW,EAAJjP,EAAQ,GAC9BoF,EAAG4d,EAAGjc,EAAGwP,EAGxB,QAAO,IAGXvY,KAAKggE,cAAc+J,oBAOnB/pE,KAAKyqE,kBAAoB,SAAS3K,GAE9B5lE,KAAK4lE,GAAKA,EAGV5lE,KAAKge,OAAS,EAAE,EAAE,GAClBhe,KAAK+W,UACL/W,KAAKsuE,WACLtuE,KAAK43D,OAASgO,EAAGmN,eACjB/yE,KAAK0vE,YAAc9J,EAAGmN,eACtB/yE,KAAKguE,KAAO,EACZhuE,KAAKqe,MAAQ,EACbre,KAAKynB,OAAQ,GAMjB3hB,KAAKyqE,kBAAkBlqE,UAAUqZ,MAAQ,WAErC1f,KAAK+W,UACL/W,KAAKsuE,YAMTxoE,KAAKyqE,kBAAkBlqE,UAAUiqE,OAAS,WAEtC,GAAI1K,GAAK5lE,KAAK4lE,EAGd5lE,MAAKgzE,SAAW,GAAIltE,MAAKyO,aAAavU,KAAK+W,QAE3C6uD,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK43D,QACpCgO,EAAGqN,WAAWrN,EAAGwJ,aAAcpvE,KAAKgzE,SAAUpN,EAAGsN,aAEjDlzE,KAAKmzE,WAAa,GAAIrtE,MAAKstE,YAAYpzE,KAAKsuE,SAE5C1I,EAAGuJ,WAAWvJ,EAAG6J,qBAAsBzvE,KAAK0vE,aAC5C9J,EAAGqN,WAAWrN,EAAG6J,qBAAsBzvE,KAAKmzE,WAAYvN,EAAGsN,aAE3DlzE,KAAKynB,OAAQ,GAcjB3hB,KAAKg3D,eAAiB,aAYtBh3D,KAAKg3D,eAAeC,eAAiB,SAAS/K,EAAU3tC,GAEpD,GAAIwH,GAAammC,EAASnmC,UAEtBmmC,GAASvqC,QAETznB,KAAKqzE,mBAAmBrhB,GACxBA,EAASvqC,OAAQ,EAGrB,KAAK,GAAI3f,GAAI,EAAGA,EAAIkqD,EAAS5vB,aAAav6B,OAAQC,IAClD,CACI,GAAIu6B,GAAO2vB,EAAS5vB,aAAat6B,GAC7By6B,EAAQF,EAAKE,MAEb4hC,EAAY9hC,EAAKulC,UACjBjH,EAAYt+B,EAAKslC,SAIrB,IAFAtjD,EAAQg6C,UAAYh8B,EAAKg8B,UAErBh8B,EAAKn6B,OAASpC,KAAK+W,SAAS6qD,KAChC,CACIrjD,EAAQ25C,WAER,IAAIjnD,GAASwrB,EAAMxrB,MAEnBsN,GAAQ85C,OAAOpnD,EAAO,GAAIA,EAAO,GAEjC,KAAK,GAAIc,GAAE,EAAGA,EAAId,EAAOlP,OAAO,EAAGgQ,IAE/BwM,EAAQ+5C,OAAOrnD,EAAW,EAAJc,GAAQd,EAAW,EAAJc,EAAQ,GAG7C0qB,GAAM/qB,QAEN6M,EAAQ+5C,OAAOrnD,EAAO,GAAIA,EAAO,IAIjCA,EAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAAMkP,EAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAE5Ewc,EAAQ65C,YAGR77B,EAAKC,OAELje,EAAQk4C,YAAcl6B,EAAKq+B,UAAY70C,EACvCxH,EAAQg1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe38D,SAAS,KAAK4C,OAAO,IAC3Eia,EAAQie,QAGRD,EAAKg8B,YAELh6C,EAAQk4C,YAAcl6B,EAAK++B,UAAYv1C,EACvCxH,EAAQi6C,YAAc,KAAO,SAAwB,EAAZqC,GAAen5D,SAAS,KAAK4C,OAAO,IAC7Eia,EAAQk6C,cAGX,IAAIl8B,EAAKn6B,OAASpC,KAAK+W,SAASqqD,MAE7B7kC,EAAK8hC,WAAgC,IAAnB9hC,EAAK8hC,aAEvB9/C,EAAQk4C,YAAcl6B,EAAKq+B,UAAY70C,EACvCxH,EAAQg1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe38D,SAAS,KAAK4C,OAAO,IAC3Eia,EAAQi1C,SAAS/2B,EAAMt8B,EAAGs8B,EAAM91B,EAAG81B,EAAMxyB,MAAOwyB,EAAMvyB,SAGtDqyB,EAAKg8B,YAELh6C,EAAQk4C,YAAcl6B,EAAK++B,UAAYv1C,EACvCxH,EAAQi6C,YAAc,KAAO,SAAwB,EAAZqC,GAAen5D,SAAS,KAAK4C,OAAO,IAC7Eia,EAAQivD,WAAW/wC,EAAMt8B,EAAGs8B,EAAM91B,EAAG81B,EAAMxyB,MAAOwyB,EAAMvyB,aAG3D,IAAIqyB,EAAKn6B,OAASpC,KAAK+W,SAASuqD,KAGjC/iD,EAAQ25C,YACR35C,EAAQ45C,IAAI17B,EAAMt8B,EAAGs8B,EAAM91B,EAAG81B,EAAMl1B,OAAO,EAAE,EAAEtH,KAAK+G,IACpDuX,EAAQ65C,YAEJ77B,EAAKC,OAELje,EAAQk4C,YAAcl6B,EAAKq+B,UAAY70C,EACvCxH,EAAQg1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe38D,SAAS,KAAK4C,OAAO,IAC3Eia,EAAQie,QAGRD,EAAKg8B,YAELh6C,EAAQk4C,YAAcl6B,EAAK++B,UAAYv1C,EACvCxH,EAAQi6C,YAAc,KAAO,SAAwB,EAAZqC,GAAen5D,SAAS,KAAK4C,OAAO,IAC7Eia,EAAQk6C,cAGX,IAAIl8B,EAAKn6B,OAASpC,KAAK+W,SAASwqD,KACrC,CAGI,GAAI/pD,GAAkB,EAAdilB,EAAMxyB,MACVwN,EAAmB,EAAfglB,EAAMvyB,OAEV/J,EAAIs8B,EAAMt8B,EAAIqX,EAAE,EAChB7Q,EAAI81B,EAAM91B,EAAI8Q,EAAE,CAEpB8G,GAAQ25C,WAER,IAAIuV,GAAQ,SACRC,EAAMl2D,EAAI,EAAKi2D,EACfE,EAAMl2D,EAAI,EAAKg2D,EACfG,EAAKztE,EAAIqX,EACTq2D,EAAKlnE,EAAI8Q,EACTq2D,EAAK3tE,EAAIqX,EAAI,EACbu2D,EAAKpnE,EAAI8Q,EAAI,CAEjB8G,GAAQ85C,OAAOl4D,EAAG4tE,GAClBxvD,EAAQ29C,cAAc/7D,EAAG4tE,EAAKJ,EAAIG,EAAKJ,EAAI/mE,EAAGmnE,EAAInnE,GAClD4X,EAAQ29C,cAAc4R,EAAKJ,EAAI/mE,EAAGinE,EAAIG,EAAKJ,EAAIC,EAAIG,GACnDxvD,EAAQ29C,cAAc0R,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACpDtvD,EAAQ29C,cAAc4R,EAAKJ,EAAIG,EAAI1tE,EAAG4tE,EAAKJ,EAAIxtE,EAAG4tE,GAElDxvD,EAAQ65C,YAEJ77B,EAAKC,OAELje,EAAQk4C,YAAcl6B,EAAKq+B,UAAY70C,EACvCxH,EAAQg1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe38D,SAAS,KAAK4C,OAAO,IAC3Eia,EAAQie,QAGRD,EAAKg8B,YAELh6C,EAAQk4C,YAAcl6B,EAAK++B,UAAYv1C,EACvCxH,EAAQi6C,YAAc,KAAO,SAAwB,EAAZqC,GAAen5D,SAAS,KAAK4C,OAAO,IAC7Eia,EAAQk6C,cAGX,IAAIl8B,EAAKn6B,OAASpC,KAAK+W,SAASsqD,KACrC,CACI,GAAIxtD,GAAK4oB,EAAMt8B,EACX2T,EAAK2oB,EAAM91B,EACXsD,EAAQwyB,EAAMxyB,MACdC,EAASuyB,EAAMvyB,OACf3C,EAASk1B,EAAMl1B,OAEfymE,EAAY/tE,KAAKkM,IAAIlC,EAAOC,GAAU,EAAI,CAC9C3C,GAASA,EAASymE,EAAYA,EAAYzmE,EAE1CgX,EAAQ25C,YACR35C,EAAQ85C,OAAOxkD,EAAIC,EAAKvM,GACxBgX,EAAQ+5C,OAAOzkD,EAAIC,EAAK5J,EAAS3C,GACjCgX,EAAQk9C,iBAAiB5nD,EAAIC,EAAK5J,EAAQ2J,EAAKtM,EAAQuM,EAAK5J,GAC5DqU,EAAQ+5C,OAAOzkD,EAAK5J,EAAQ1C,EAAQuM,EAAK5J,GACzCqU,EAAQk9C,iBAAiB5nD,EAAK5J,EAAO6J,EAAK5J,EAAQ2J,EAAK5J,EAAO6J,EAAK5J,EAAS3C,GAC5EgX,EAAQ+5C,OAAOzkD,EAAK5J,EAAO6J,EAAKvM,GAChCgX,EAAQk9C,iBAAiB5nD,EAAK5J,EAAO6J,EAAID,EAAK5J,EAAQ1C,EAAQuM,GAC9DyK,EAAQ+5C,OAAOzkD,EAAKtM,EAAQuM,GAC5ByK,EAAQk9C,iBAAiB5nD,EAAIC,EAAID,EAAIC,EAAKvM,GAC1CgX,EAAQ65C,aAEJ77B,EAAK8hC,WAAgC,IAAnB9hC,EAAK8hC,aAEvB9/C,EAAQk4C,YAAcl6B,EAAKq+B,UAAY70C,EACvCxH,EAAQg1C,UAAY,KAAO,SAAwB,EAAZ8K,GAAe38D,SAAS,KAAK4C,OAAO,IAC3Eia,EAAQie,QAGRD,EAAKg8B,YAELh6C,EAAQk4C,YAAcl6B,EAAK++B,UAAYv1C,EACvCxH,EAAQi6C,YAAc,KAAO,SAAwB,EAAZqC,GAAen5D,SAAS,KAAK4C,OAAO,IAC7Eia,EAAQk6C,aAgBxBz4D,KAAKg3D,eAAeiX,mBAAqB,SAAS/hB,EAAU3tC,GAExD,GAAIzc,GAAMoqD,EAAS5vB,aAAav6B,MAEhC,IAAY,IAARD,EAAJ,CAKAyc,EAAQ25C,WAER,KAAK,GAAIl2D,GAAI,EAAOF,EAAJE,EAASA,IACzB,CACI,GAAIu6B,GAAO2vB,EAAS5vB,aAAat6B,GAC7By6B,EAAQF,EAAKE,KAEjB,IAAIF,EAAKn6B,OAASpC,KAAK+W,SAAS6qD,KAChC,CAEI,GAAI3wD,GAASwrB,EAAMxrB,MAEnBsN,GAAQ85C,OAAOpnD,EAAO,GAAIA,EAAO,GAEjC,KAAK,GAAIc,GAAE,EAAGA,EAAId,EAAOlP,OAAO,EAAGgQ,IAE/BwM,EAAQ+5C,OAAOrnD,EAAW,EAAJc,GAAQd,EAAW,EAAJc,EAAQ,GAI7Cd,GAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAAMkP,EAAO,KAAOA,EAAOA,EAAOlP,OAAO,IAE5Ewc,EAAQ65C,gBAIX,IAAI77B,EAAKn6B,OAASpC,KAAK+W,SAASqqD,KAEjC7iD,EAAQ3Q,KAAK6uB,EAAMt8B,EAAGs8B,EAAM91B,EAAG81B,EAAMxyB,MAAOwyB,EAAMvyB,QAClDqU,EAAQ65C,gBAEP,IAAI77B,EAAKn6B,OAASpC,KAAK+W,SAASuqD,KAGjC/iD,EAAQ45C,IAAI17B,EAAMt8B,EAAGs8B,EAAM91B,EAAG81B,EAAMl1B,OAAQ,EAAG,EAAItH,KAAK+G,IACxDuX,EAAQ65C,gBAEP,IAAI77B,EAAKn6B,OAASpC,KAAK+W,SAASwqD,KACrC,CAII,GAAI/pD,GAAkB,EAAdilB,EAAMxyB,MACVwN,EAAmB,EAAfglB,EAAMvyB,OAEV/J,EAAIs8B,EAAMt8B,EAAIqX,EAAE,EAChB7Q,EAAI81B,EAAM91B,EAAI8Q,EAAE,EAEhBg2D,EAAQ,SACRC,EAAMl2D,EAAI,EAAKi2D,EACfE,EAAMl2D,EAAI,EAAKg2D,EACfG,EAAKztE,EAAIqX,EACTq2D,EAAKlnE,EAAI8Q,EACTq2D,EAAK3tE,EAAIqX,EAAI,EACbu2D,EAAKpnE,EAAI8Q,EAAI,CAEjB8G,GAAQ85C,OAAOl4D,EAAG4tE,GAClBxvD,EAAQ29C,cAAc/7D,EAAG4tE,EAAKJ,EAAIG,EAAKJ,EAAI/mE,EAAGmnE,EAAInnE,GAClD4X,EAAQ29C,cAAc4R,EAAKJ,EAAI/mE,EAAGinE,EAAIG,EAAKJ,EAAIC,EAAIG,GACnDxvD,EAAQ29C,cAAc0R,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACpDtvD,EAAQ29C,cAAc4R,EAAKJ,EAAIG,EAAI1tE,EAAG4tE,EAAKJ,EAAIxtE,EAAG4tE,GAClDxvD,EAAQ65C,gBAEP,IAAI77B,EAAKn6B,OAASpC,KAAK+W,SAASsqD,KACrC,CAEI,GAAIxtD,GAAK4oB,EAAMt8B,EACX2T,EAAK2oB,EAAM91B,EACXsD,EAAQwyB,EAAMxyB,MACdC,EAASuyB,EAAMvyB,OACf3C,EAASk1B,EAAMl1B,OAEfymE,EAAY/tE,KAAKkM,IAAIlC,EAAOC,GAAU,EAAI,CAC9C3C,GAASA,EAASymE,EAAYA,EAAYzmE,EAE1CgX,EAAQ85C,OAAOxkD,EAAIC,EAAKvM,GACxBgX,EAAQ+5C,OAAOzkD,EAAIC,EAAK5J,EAAS3C,GACjCgX,EAAQk9C,iBAAiB5nD,EAAIC,EAAK5J,EAAQ2J,EAAKtM,EAAQuM,EAAK5J,GAC5DqU,EAAQ+5C,OAAOzkD,EAAK5J,EAAQ1C,EAAQuM,EAAK5J,GACzCqU,EAAQk9C,iBAAiB5nD,EAAK5J,EAAO6J,EAAK5J,EAAQ2J,EAAK5J,EAAO6J,EAAK5J,EAAS3C,GAC5EgX,EAAQ+5C,OAAOzkD,EAAK5J,EAAO6J,EAAKvM,GAChCgX,EAAQk9C,iBAAiB5nD,EAAK5J,EAAO6J,EAAID,EAAK5J,EAAQ1C,EAAQuM,GAC9DyK,EAAQ+5C,OAAOzkD,EAAKtM,EAAQuM,GAC5ByK,EAAQk9C,iBAAiB5nD,EAAIC,EAAID,EAAIC,EAAKvM,GAC1CgX,EAAQ65C,gBAKpBp4D,KAAKg3D,eAAeuW,mBAAqB,SAASrhB,GAE9C,GAAsB,WAAlBA,EAASkK,KASb,IAAK,GAJD8X,IAAShiB,EAASkK,MAAQ,GAAK,KAAQ,IACvC+X,GAASjiB,EAASkK,MAAQ,EAAI,KAAQ,IACtCgY,GAAyB,IAAhBliB,EAASkK,MAAc,IAE3Bp0D,EAAI,EAAGA,EAAIkqD,EAAS5vB,aAAav6B,OAAQC,IAClD,CACI,GAAIu6B,GAAO2vB,EAAS5vB,aAAat6B,GAE7Bq8D,EAA6B,EAAjB9hC,EAAK8hC,UACjBxD,EAA6B,EAAjBt+B,EAAKs+B,SAErBt+B,GAAKulC,YAAezD,GAAa,GAAK,KAAQ,IAAM6P,EAAM,KAAO,MAAQ7P,GAAa,EAAI,KAAQ,IAAM8P,EAAM,KAAO,IAAmB,IAAZ9P,GAAoB,IAAM+P,EAAM,IAC5J7xC,EAAKslC,YAAehH,GAAa,GAAK,KAAQ,IAAMqT,EAAM,KAAO,MAAQrT,GAAa,EAAI,KAAQ,IAAMsT,EAAM,KAAO,IAAmB,IAAZtT,GAAoB,IAAMuT,EAAM,MAuDpK7zE,EAAOwc,SAAW,SAAUrC,EAAMvU,EAAGwG,GAEvB/C,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GAM3BzM,KAAKkI,KAAO7H,EAAOe,SAMnBpB,KAAK+tB,YAAc1tB,EAAOY,OAM1BjB,KAAKqpB,OAAS,GAAIhpB,GAAO2M,MAEzBlH,KAAK+W,SAAS/V,KAAK9G,MAEnBK,EAAOqmD,UAAUkB,KAAKtnC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAG,GAAI,OAI1DpM,EAAOwc,SAASxW,UAAYkB,OAAOmZ,OAAO5a,KAAK+W,SAASxW,WACxDhG,EAAOwc,SAASxW,UAAU8B,YAAc9H,EAAOwc,SAE/Cxc,EAAOqmD,UAAUkB,KAAKC,QAAQ/gD,KAAKzG,EAAOwc,SAASxW,WAC/C,QACA,WACA,SACA,UACA,gBACA,eACA,UACA,WACA,cACA,UAGJhG,EAAOwc,SAASxW,UAAUwtD,iBAAmBxzD,EAAOqmD,UAAUuB,YAAYjrC,UAC1E3c,EAAOwc,SAASxW,UAAUytD,kBAAoBzzD,EAAOqmD,UAAU6G,SAASvwC,UACxE3c,EAAOwc,SAASxW,UAAU0tD,iBAAmB1zD,EAAOqmD,UAAUsG,QAAQhwC,UACtE3c,EAAOwc,SAASxW,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UAQhE3c,EAAOwc,SAASxW,UAAU2W,UAAY,WAElC,MAAKhd,MAAK6zD,oBAAuB7zD,KAAK8zD,qBAAwB9zD,KAAK+zD,mBAK5D/zD,KAAKg0D,iBAHD,GAaf3zD,EAAOwc,SAASxW,UAAUyd,QAAU,SAASwS,GAEzCt2B,KAAKie,QAEL5d,EAAOqmD,UAAU2C,QAAQhjD,UAAUyd,QAAQhd,KAAK9G,KAAMs2B,IAW1Dj2B,EAAOwc,SAASxW,UAAU8tE,aAAe,SAASp9D,EAAQq9D,GAEzC1qE,SAAT0qE,IAAsBA,GAAO,EAEjC,IAAIC,GAAW,GAAIh0E,GAAOgX,QAAQN,EAElC,IAAIq9D,EACJ,CACI,GAAIE,GAAe,GAAIj0E,GAAO2M,MAAMhN,KAAKwa,KAAKoC,OAAO3W,EAAI8Q,EAAO,GAAG9Q,EAAGjG,KAAKwa,KAAKoC,OAAOnQ,EAAIsK,EAAO,GAAGtK,GACjG8nE,EAAK,GAAIl0E,GAAO2M,MAAM+J,EAAO,GAAG9Q,EAAI8Q,EAAO,GAAG9Q,EAAG8Q,EAAO,GAAGtK,EAAIsK,EAAO,GAAGtK,GACzE6hC,EAAK,GAAIjuC,GAAO2M,MAAM+J,EAAO,GAAG9Q,EAAI8Q,EAAO,GAAG9Q,EAAG8Q,EAAO,GAAGtK,EAAIsK,EAAO,GAAGtK,GACzE+nE,EAAalmC,EAAGn4B,MAAMo+D,EAEtBD,GAAap+D,IAAIs+D,GAAc,GAE/Bx0E,KAAKukE,YAAY8P,OAKrBr0E,MAAKukE,YAAY8P,IAazBh0E,EAAOwc,SAASxW,UAAUouE,cAAgB,SAASC,EAAUpG,EAAS8F,GAErD1qE,SAAT0qE,IAAsBA,GAAO,EAEjC,IAIItsE,GAJA6sE,EAAS,GAAIt0E,GAAO2M,MACpB4nE,EAAS,GAAIv0E,GAAO2M,MACpB6nE,EAAS,GAAIx0E,GAAO2M,MACpB+J,IAGJ,IAAKu3D,EAyBD,GAAIoG,EAAS,YAAcr0E,GAAO2M,MAE9B,IAAKlF,EAAI,EAAGA,EAAIwmE,EAAQzmE,OAAQ,EAAGC,IAE/BiP,EAAOnE,KAAK8hE,EAASpG,EAAY,EAAJxmE,KAC7BiP,EAAOnE,KAAK8hE,EAASpG,EAAY,EAAJxmE,EAAQ,KACrCiP,EAAOnE,KAAK8hE,EAASpG,EAAY,EAAJxmE,EAAQ,KAEf,IAAlBiP,EAAOlP,SAEP7H,KAAKm0E,aAAap9D,EAAQq9D,GAC1Br9D,UAMR,KAAKjP,EAAI,EAAGA,EAAIwmE,EAAQzmE,OAAQC,IAE5B6sE,EAAO1uE,EAAIyuE,EAAsB,EAAbpG,EAAQxmE,IAC5B6sE,EAAOloE,EAAIioE,EAAsB,EAAbpG,EAAQxmE,GAAS,GACrCiP,EAAOnE,KAAK+hE,EAAOhnE,YAEG,IAAlBoJ,EAAOlP,SAEP7H,KAAKm0E,aAAap9D,EAAQq9D,GAC1Br9D,UAjDZ,IAAI29D,EAAS,YAAcr0E,GAAO2M,MAE9B,IAAKlF,EAAI,EAAGA,EAAI4sE,EAAS7sE,OAAS,EAAGC,IAEjC9H,KAAKm0E,cAAcO,EAAa,EAAJ5sE,GAAQ4sE,EAAa,EAAJ5sE,EAAQ,GAAI4sE,EAAa,EAAJ5sE,EAAQ,IAAKssE,OAKnF,KAAKtsE,EAAI,EAAGA,EAAI4sE,EAAS7sE,OAAS,EAAGC,IAEjC6sE,EAAO1uE,EAAIyuE,EAAa,EAAJ5sE,EAAQ,GAC5B6sE,EAAOloE,EAAIioE,EAAa,EAAJ5sE,EAAQ,GAC5B8sE,EAAO3uE,EAAIyuE,EAAa,EAAJ5sE,EAAQ,GAC5B8sE,EAAOnoE,EAAIioE,EAAa,EAAJ5sE,EAAQ,GAC5B+sE,EAAO5uE,EAAIyuE,EAAa,EAAJ5sE,EAAQ,GAC5B+sE,EAAOpoE,EAAIioE,EAAa,EAAJ5sE,EAAQ,GAC5B9H,KAAKm0E,cAAcQ,EAAQC,EAAQC,GAAST,IA4D5D/zE,EAAO2tD,cAAgB,SAAUxzC,EAAMzK,EAAOC,EAAQjE,EAAKgiD,EAAWlmC,GAEtDne,SAARqC,IAAqBA,EAAM,IACbrC,SAAdqkD,IAA2BA,EAAY1tD,EAAOqF,WAAWC,SAC1C+D,SAAfme,IAA4BA,EAAa,GAK7C7nB,KAAKwa,KAAOA,EAKZxa,KAAK+L,IAAMA,EAKX/L,KAAKkI,KAAO7H,EAAOoB,cAMnBzB,KAAK80E,YAAc,GAAIhvE,MAAKkO,OAE5BlO,KAAKkoD,cAAclnD,KAAK9G,KAAM+P,EAAOC,EAAQhQ,KAAKwa,KAAK4c,SAAU22B,EAAWlmC,GAE5E7nB,KAAK4gB,OAASvgB,EAAO2tD,cAAc3nD,UAAUua,QAIjDvgB,EAAO2tD,cAAc3nD,UAAYkB,OAAOmZ,OAAO5a,KAAKkoD,cAAc3nD,WAClEhG,EAAO2tD,cAAc3nD,UAAU8B,YAAc9H,EAAO2tD,cAepD3tD,EAAO2tD,cAAc3nD,UAAU0uE,SAAW,SAAU/5D,EAAe/U,EAAGwG,EAAGwR,GAErEjD,EAAc4Q,kBAEd5rB,KAAK80E,YAAYrnE,SAASuN,EAAcyP,gBACxCzqB,KAAK80E,YAAYnjE,GAAK1L,EACtBjG,KAAK80E,YAAYljE,GAAKnF,EAElBzM,KAAKo3B,SAASlvB,OAASpC,KAAKkvE,eAE5Bh1E,KAAKi1E,YAAYj6D,EAAehb,KAAK80E,YAAa72D,GAIlDje,KAAKk1E,aAAal6D,EAAehb,KAAK80E,YAAa72D,IAkB3D5d,EAAO2tD,cAAc3nD,UAAU8uE,YAAc,SAAUn6D,EAAe/U,EAAGwG,EAAGwR,GAExEje,KAAK80E,YAAY7/D,WAAWL,UAAU3O,EAAGwG,GAErCzM,KAAKo3B,SAASlvB,OAASpC,KAAKkvE,eAE5Bh1E,KAAKi1E,YAAYj6D,EAAehb,KAAK80E,YAAa72D,GAIlDje,KAAKk1E,aAAal6D,EAAehb,KAAK80E,YAAa72D,IAoB3D5d,EAAO2tD,cAAc3nD,UAAUua,OAAS,SAAU5F,EAAe5G,EAAQ6J,GAEtDvU,SAAX0K,GAAmC,OAAXA,EAExBpU,KAAK80E,YAAYrnE,SAASuN,EAAcyP,gBAIxCzqB,KAAK80E,YAAYrnE,SAAS2G,GAG1BpU,KAAKo3B,SAASlvB,OAASpC,KAAKkvE,eAE5Bh1E,KAAKi1E,YAAYj6D,EAAehb,KAAK80E,YAAa72D,GAIlDje,KAAKk1E,aAAal6D,EAAehb,KAAK80E,YAAa72D,IA4C3D5d,EAAOqxD,KAAO,SAAUl3C,EAAMvU,EAAGwG,EAAGglD,EAAMv0C,GAEtCjX,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EAILglD,EAFS/nD,SAAT+nD,GAA+B,OAATA,EAEf,GAIAA,EAAKjqD,WAGhB0V,EAAQ7c,EAAOmI,MAAM0C,UAAWgS,GAMhCld,KAAKkI,KAAO7H,EAAOgB,KAMnBrB,KAAK+tB,YAAc1tB,EAAOY,OAO1BjB,KAAK0nB,QAAU,GAAIrnB,GAAO2M,MAQ1BhN,KAAKo1E,WAAa,KAKlBp1E,KAAKsrB,OAASxlB,KAAKw6B,WAAW5f,OAAO1gB,MAKrCA,KAAKqkB,QAAUrkB,KAAKsrB,OAAOiV,WAAW,MAKtCvgC,KAAKq1E,UAKLr1E,KAAKs1E,gBAKLt1E,KAAKu1E,cAKLv1E,KAAKw1E,eAQLx1E,KAAKy1E,WAAY,EAajBz1E,KAAK01E,iBAAkB,EAMvB11E,KAAK21E,KAAOn7D,EAAK4c,SAASvP,WAM1B7nB,KAAK41E,MAAQnkB,EAMbzxD,KAAK61E,gBAAkB,KAMvB71E,KAAK81E,aAAe,EAMpB91E,KAAK+1E,WAAa,EAMlB/1E,KAAK22B,OAAS,EAMd32B,KAAK42B,QAAU,EAEfv2B,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAG3G,KAAK4oD,QAAQC,WAAW3uD,KAAKsrB,SAElEtrB,KAAKg2E,SAAS94D,GAED,KAATu0C,GAEAzxD,KAAKi2E,cAKb51E,EAAOqxD,KAAKrrD,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WACpDhG,EAAOqxD,KAAKrrD,UAAU8B,YAAc9H,EAAOqxD,KAQ3CrxD,EAAOqxD,KAAKrrD,UAAU2W,UAAY,WAE9B,MAAKhd,MAAK6zD,oBAAuB7zD,KAAK8zD,qBAAwB9zD,KAAK+zD,mBAK5D/zD,KAAKg0D,iBAHD,GAaf3zD,EAAOqxD,KAAKrrD,UAAUkY,OAAS,aAU/Ble,EAAOqxD,KAAKrrD,UAAUyd,QAAU,SAAUwS,GAEtCt2B,KAAKmiC,QAAQre,SAAQ,GAErBhe,KAAKw6B,WAAWxd,OAAO9iB,MAEvBK,EAAOqmD,UAAU2C,QAAQhjD,UAAUyd,QAAQhd,KAAK9G,KAAMs2B,IAmB1Dj2B,EAAOqxD,KAAKrrD,UAAU6vE,UAAY,SAAUjwE,EAAGwG,EAAGuR,EAAOk/C,EAAMiZ,EAAcC,GAiBzE,MAfU1sE,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVsU,IAAuBA,EAAQ,oBACtBtU,SAATwzD,IAAsBA,EAAO,GACZxzD,SAAjBysE,IAA8BA,GAAe,GAC9BzsE,SAAf0sE,IAA4BA,GAAa,GAE7Cp2E,KAAKkd,MAAMmgD,cAAgBp3D,EAC3BjG,KAAKkd,MAAMogD,cAAgB7wD,EAC3BzM,KAAKkd,MAAMigD,YAAcn/C,EACzBhe,KAAKkd,MAAMkgD,WAAaF,EACxBl9D,KAAKkd,MAAMi5D,aAAeA,EAC1Bn2E,KAAKkd,MAAMk5D,WAAaA,EACxBp2E,KAAKynB,OAAQ,EAENznB,MA4BXK,EAAOqxD,KAAKrrD,UAAU2vE,SAAW,SAAU94D,EAAOqB,GAE/B7U,SAAX6U,IAAwBA,GAAS,GAErCrB,EAAQA,MACRA,EAAMo1C,KAAOp1C,EAAMo1C,MAAQ,kBAC3Bp1C,EAAMm5D,gBAAkBn5D,EAAMm5D,iBAAmB,KACjDn5D,EAAMolB,KAAOplB,EAAMolB,MAAQ,QAC3BplB,EAAM6T,MAAQ7T,EAAM6T,OAAS,OAC7B7T,EAAMo5D,aAAep5D,EAAMo5D,cAAgB,OAC3Cp5D,EAAMq5D,aAAer5D,EAAMq5D,cAAgB,MAC3Cr5D,EAAMqhD,OAASrhD,EAAMqhD,QAAU,QAC/BrhD,EAAMs5D,gBAAkBt5D,EAAMs5D,iBAAmB,EACjDt5D,EAAMu5D,SAAWv5D,EAAMu5D,WAAY,EACnCv5D,EAAMw5D,cAAgBx5D,EAAMw5D,eAAiB,IAC7Cx5D,EAAMy5D,SAAWz5D,EAAMy5D,UAAY,EACnCz5D,EAAMmgD,cAAgBngD,EAAMmgD,eAAiB,EAC7CngD,EAAMogD,cAAgBpgD,EAAMogD,eAAiB,EAC7CpgD,EAAMigD,YAAcjgD,EAAMigD,aAAe,gBACzCjgD,EAAMkgD,WAAalgD,EAAMkgD,YAAc,EACvClgD,EAAM05D,KAAO15D,EAAM05D,MAAQ,CAE3B,IAAI9uB,GAAa9nD,KAAK62E,iBAAiB35D,EAAMo1C,KAuC7C,OArCIp1C,GAAM45D,YAENhvB,EAAWgvB,UAAY55D,EAAM45D,WAG7B55D,EAAM65D,cAENjvB,EAAWivB,YAAc75D,EAAM65D,aAG/B75D,EAAM85D,aAENlvB,EAAWkvB,WAAa95D,EAAM85D,YAG9B95D,EAAM+5D,WAEwB,gBAAnB/5D,GAAM+5D,WAEb/5D,EAAM+5D,SAAW/5D,EAAM+5D,SAAW,MAGtCnvB,EAAWmvB,SAAW/5D,EAAM+5D,UAGhCj3E,KAAK61E,gBAAkB/tB,EAEvB5qC,EAAMo1C,KAAOtyD,KAAKk3E,iBAAiBl3E,KAAK61E,iBAExC71E,KAAKkd,MAAQA,EACbld,KAAKynB,OAAQ,EAETlJ,GAEAve,KAAKi2E,aAGFj2E,MAUXK,EAAOqxD,KAAKrrD,UAAU4vE,WAAa,WAE/Bj2E,KAAKmiC,QAAQuQ,YAAY7qB,WAAa7nB,KAAK21E,KAE3C31E,KAAKqkB,QAAQiuC,KAAOtyD,KAAKkd,MAAMo1C,IAE/B,IAAI6kB,GAAan3E,KAAKyxD,IAElBzxD,MAAKkd,MAAMu5D,WAEXU,EAAan3E,KAAKo3E,YAAYp3E,KAAKyxD,MAIvC,IAAI4lB,GAAQF,EAAWxuE,MAAM,kBAGzBiuE,EAAO52E,KAAKkd,MAAM05D,KAClBU,KACAC,EAAe,EACfC,EAAiBx3E,KAAKy3E,wBAAwBz3E,KAAKkd,MAAMo1C,MAEzDolB,EAAaL,EAAMxvE,MAEnB7H,MAAKkd,MAAMy5D,SAAW,GAAK32E,KAAKkd,MAAMy5D,SAAWU,EAAMxvE,SAEvD6vE,EAAa13E,KAAKkd,MAAMy5D,UAG5B32E,KAAK+1E,WAAa,CAElB,KAAK,GAAIjuE,GAAI,EAAO4vE,EAAJ5vE,EAAgBA,IAChC,CACI,GAAa,IAAT8uE,EACJ,CAEI,GAAIvY,GAAar+D,KAAKkd,MAAMs5D,gBAAkBx2E,KAAK0nB,QAAQzhB,CAIvDo4D,IAFAr+D,KAAKq1E,OAAOxtE,OAAS,GAAK7H,KAAKs1E,aAAaztE,OAAS,GAAK7H,KAAKw1E,YAAY3tE,OAAS,GAAK7H,KAAKu1E,WAAW1tE,OAAS,EAErG7H,KAAK23E,YAAYN,EAAMvvE,IAIvB9H,KAAKqkB,QAAQuzD,YAAYP,EAAMvvE,IAAIiI,MAIhD/P,KAAKkd,MAAMu5D,WAEXpY,GAAar+D,KAAKqkB,QAAQuzD,YAAY,KAAK7nE,WAInD,CAEI,GAAIqB,GAAOimE,EAAMvvE,GAAGa,MAAM,UACtB01D,EAAYr+D,KAAK0nB,QAAQzhB,EAAIjG,KAAKkd,MAAMs5D,eAE5C,IAAIhwE,MAAMa,QAAQuvE,GAId,IAAK,GAFDiB,GAAM,EAED5oE,EAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IACjC,CACI,GAAI6oE,GAAU,CAIVA,GAFA93E,KAAKq1E,OAAOxtE,OAAS,GAAK7H,KAAKs1E,aAAaztE,OAAS,GAAK7H,KAAKw1E,YAAY3tE,OAAS,GAAK7H,KAAKu1E,WAAW1tE,OAAS,EAExG7H,KAAK23E,YAAYvmE,EAAKnC,IAItBlJ,KAAKG,KAAKlG,KAAKqkB,QAAQuzD,YAAYxmE,EAAKnC,IAAIc,OAGtDd,EAAI,IAEJ4oE,GAAOjB,EAAK3nE,EAAI,IAGpBovD,EAAYwZ,EAAMC,MAKtB,KAAK,GAAI7oE,GAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IACjC,CAIQovD,GAFAr+D,KAAKq1E,OAAOxtE,OAAS,GAAK7H,KAAKs1E,aAAaztE,OAAS,GAAK7H,KAAKw1E,YAAY3tE,OAAS,GAAK7H,KAAKu1E,WAAW1tE,OAAS,EAErG7H,KAAK23E,YAAYvmE,EAAKnC,IAItBlJ,KAAKG,KAAKlG,KAAKqkB,QAAQuzD,YAAYxmE,EAAKnC,IAAIc,MAG7D,IAAIqhE,GAAOpxE,KAAKwa,KAAK0E,KAAK64D,WAAW1Z,EAAWuY,GAAQvY,CAExDA,IAAa+S,GAKzBkG,EAAWxvE,GAAK/B,KAAKG,KAAKm4D,GAC1BkZ,EAAexxE,KAAKoM,IAAIolE,EAAcD,EAAWxvE,IAGrD9H,KAAKsrB,OAAOvb,MAAQwnE,EAAev3E,KAAK21E,IAGxC,IAAIqC,GAAaR,EAAeP,SAAWj3E,KAAKkd,MAAMs5D,gBAAkBx2E,KAAK0nB,QAAQjb,EACjFuD,EAASgoE,EAAaN,EACtBO,EAAcj4E,KAAK81E,YAEL,GAAdmC,GAAmBlyE,KAAKoJ,IAAI8oE,GAAeD,IAE3CC,GAAeD,GAIC,IAAhBC,IAEAjoE,GAAWioE,EAAc,EAAKA,EAAcZ,EAAMxvE,OAASowE,GAAeZ,EAAMxvE,OAAS,IAG7F7H,KAAKsrB,OAAOtb,OAASA,EAAShQ,KAAK21E,KAEnC31E,KAAKqkB,QAAQxP,MAAM7U,KAAK21E,KAAM31E,KAAK21E,MAE/B5/B,UAAUmiC,YAEVl4E,KAAKqkB,QAAQ0uB,UAAU,EAAG,EAAG/yC,KAAKsrB,OAAOvb,MAAO/P,KAAKsrB,OAAOtb,QAG5DhQ,KAAKkd,MAAMm5D,kBAEXr2E,KAAKqkB,QAAQg1C,UAAYr5D,KAAKkd,MAAMm5D,gBACpCr2E,KAAKqkB,QAAQi1C,SAAS,EAAG,EAAGt5D,KAAKsrB,OAAOvb,MAAO/P,KAAKsrB,OAAOtb,SAG/DhQ,KAAKqkB,QAAQg1C,UAAYr5D,KAAKkd,MAAMolB,KACpCtiC,KAAKqkB,QAAQiuC,KAAOtyD,KAAKkd,MAAMo1C,KAC/BtyD,KAAKqkB,QAAQi6C,YAAct+D,KAAKkd,MAAMqhD,OACtCv+D,KAAKqkB,QAAQ8zD,aAAe,aAE5Bn4E,KAAKqkB,QAAQg6C,UAAYr+D,KAAKkd,MAAMs5D,gBACpCx2E,KAAKqkB,QAAQ+zD,QAAU,QACvBp4E,KAAKqkB,QAAQg0D,SAAW,OAExB,IAAIC,GACAC,CAKJ,KAHAv4E,KAAK+1E,WAAa,EAGbjuE,EAAI,EAAO4vE,EAAJ5vE,EAAgBA,IAIxBwwE,EAAgBt4E,KAAKkd,MAAMs5D,gBAAkB,EAC7C+B,EAAiBv4E,KAAKkd,MAAMs5D,gBAAkB,EAAI1uE,EAAIkwE,EAAcR,EAAegB,OAE/E1wE,EAAI,IAEJywE,GAAkBN,EAAcnwE,GAGX,UAArB9H,KAAKkd,MAAM6T,MAEXunD,GAAiBf,EAAeD,EAAWxvE,GAEjB,WAArB9H,KAAKkd,MAAM6T,QAEhBunD,IAAkBf,EAAeD,EAAWxvE,IAAM,GAGlD9H,KAAKy1E,YAEL6C,EAAgBvyE,KAAK+H,MAAMwqE,GAC3BC,EAAgBxyE,KAAK+H,MAAMyqE,IAG3Bv4E,KAAKq1E,OAAOxtE,OAAS,GAAK7H,KAAKs1E,aAAaztE,OAAS,GAAK7H,KAAKw1E,YAAY3tE,OAAS,GAAK7H,KAAKu1E,WAAW1tE,OAAS,EAElH7H,KAAKy4E,WAAWpB,EAAMvvE,GAAIwwE,EAAeC,IAIrCv4E,KAAKkd,MAAMqhD,QAAUv+D,KAAKkd,MAAMs5D,kBAEhCx2E,KAAK04E,aAAa14E,KAAKkd,MAAMi5D,cAEhB,IAATS,EAEA52E,KAAKqkB,QAAQs0D,WAAWtB,EAAMvvE,GAAIwwE,EAAeC,GAIjDv4E,KAAK44E,cAAcvB,EAAMvvE,GAAIwwE,EAAeC,GAAe,IAI/Dv4E,KAAKkd,MAAMolB,OAEXtiC,KAAK04E,aAAa14E,KAAKkd,MAAMk5D,YAEhB,IAATQ,EAEA52E,KAAKqkB,QAAQ05C,SAASsZ,EAAMvvE,GAAIwwE,EAAeC,GAI/Cv4E,KAAK44E,cAAcvB,EAAMvvE,GAAIwwE,EAAeC,GAAe,IAM3Ev4E,MAAK64E,iBAeTx4E,EAAOqxD,KAAKrrD,UAAUuyE,cAAgB,SAAUxnE,EAAMnL,EAAGwG,EAAG61B,GAExD,GAAImvB,GAAOrgD,EAAKzI,MAAM,UAClBiuE,EAAO52E,KAAKkd,MAAM05D,KAClBkC,EAAO,CAEX,IAAItyE,MAAMa,QAAQuvE,GAId,IAAK,GAFDiB,GAAM,EAED5oE,EAAI,EAAGA,EAAIwiD,EAAK5pD,OAAQoH,IAEzBA,EAAI,IAEJ4oE,GAAOjB,EAAK3nE,EAAI,IAGpB6pE,EAAO7yE,EAAI4xE,EAEPv1C,EAEAtiC,KAAKqkB,QAAQ05C,SAAStM,EAAKxiD,GAAI6pE,EAAMrsE,GAIrCzM,KAAKqkB,QAAQs0D,WAAWlnB,EAAKxiD,GAAI6pE,EAAMrsE,OAM/C,KAAK,GAAIwC,GAAI,EAAGA,EAAIwiD,EAAK5pD,OAAQoH,IACjC,CACI,GAAI6oE,GAAU/xE,KAAKG,KAAKlG,KAAKqkB,QAAQuzD,YAAYnmB,EAAKxiD,IAAIc,MAG1D+oE,GAAO94E,KAAKwa,KAAK0E,KAAK64D,WAAW9xE,EAAG2wE,GAEhCt0C,EAEAtiC,KAAKqkB,QAAQ05C,SAAStM,EAAKxiD,GAAI6pE,EAAMrsE,GAIrCzM,KAAKqkB,QAAQs0D,WAAWlnB,EAAKxiD,GAAI6pE,EAAMrsE,GAG3CxG,EAAI6yE,EAAOhB,IAavBz3E,EAAOqxD,KAAKrrD,UAAUqyE,aAAe,SAAUx4D,GAEvCA,GAEAlgB,KAAKqkB,QAAQg5C,cAAgBr9D,KAAKkd,MAAMmgD,cACxCr9D,KAAKqkB,QAAQi5C,cAAgBt9D,KAAKkd,MAAMogD,cACxCt9D,KAAKqkB,QAAQ84C,YAAcn9D,KAAKkd,MAAMigD,YACtCn9D,KAAKqkB,QAAQ+4C,WAAap9D,KAAKkd,MAAMkgD,aAIrCp9D,KAAKqkB,QAAQg5C,cAAgB,EAC7Br9D,KAAKqkB,QAAQi5C,cAAgB,EAC7Bt9D,KAAKqkB,QAAQ84C,YAAc,EAC3Bn9D,KAAKqkB,QAAQ+4C,WAAa,IAalC/8D,EAAOqxD,KAAKrrD,UAAUsxE,YAAc,SAAUvmE,GAI1C,IAAK,GAFD2nE,GAAa,EAERjxE,EAAI,EAAGA,EAAIsJ,EAAKvJ,OAAQC,IACjC,CACI,GAAIkxE,GAAS5nE,EAAKtJ,EAElB,IAAI9H,KAAKw1E,YAAY3tE,OAAS,GAAK7H,KAAKu1E,WAAW1tE,OAAS,EAC5D,CACI,GAAIigD,GAAa9nD,KAAK62E,iBAAiB72E,KAAKqkB,QAAQiuC,KAEhDtyD,MAAKu1E,WAAWv1E,KAAK+1E,cAErBjuB,EAAWgvB,UAAY92E,KAAKu1E,WAAWv1E,KAAK+1E,aAG5C/1E,KAAKw1E,YAAYx1E,KAAK+1E,cAEtBjuB,EAAWkvB,WAAah3E,KAAKw1E,YAAYx1E,KAAK+1E,aAGlD/1E,KAAKqkB,QAAQiuC,KAAOtyD,KAAKk3E,iBAAiBpvB,GAG1C9nD,KAAKkd,MAAMqhD,QAAUv+D,KAAKkd,MAAMs5D,kBAE5Bx2E,KAAKs1E,aAAat1E,KAAK+1E,cAEvB/1E,KAAKqkB,QAAQi6C,YAAct+D,KAAKs1E,aAAat1E,KAAK+1E,aAGtD/1E,KAAK04E,aAAa14E,KAAKkd,MAAMi5D,eAG7Bn2E,KAAKkd,MAAMolB,OAEPtiC,KAAKq1E,OAAOr1E,KAAK+1E,cAEjB/1E,KAAKqkB,QAAQg1C,UAAYr5D,KAAKq1E,OAAOr1E,KAAK+1E,aAG9C/1E,KAAK04E,aAAa14E,KAAKkd,MAAMk5D,aAGjC2C,GAAc/4E,KAAKqkB,QAAQuzD,YAAYoB,GAAQjpE,MAE/C/P,KAAK+1E,aAGT,MAAOhwE,MAAKG,KAAK6yE,IASrB14E,EAAOqxD,KAAKrrD,UAAUoyE,WAAa,SAAUrnE,EAAMnL,EAAGwG,GAElD,IAAK,GAAI3E,GAAI,EAAGA,EAAIsJ,EAAKvJ,OAAQC,IACjC,CACI,GAAIkxE,GAAS5nE,EAAKtJ,EAElB,IAAI9H,KAAKw1E,YAAY3tE,OAAS,GAAK7H,KAAKu1E,WAAW1tE,OAAS,EAC5D,CACI,GAAIigD,GAAa9nD,KAAK62E,iBAAiB72E,KAAKqkB,QAAQiuC,KAEhDtyD,MAAKu1E,WAAWv1E,KAAK+1E,cAErBjuB,EAAWgvB,UAAY92E,KAAKu1E,WAAWv1E,KAAK+1E,aAG5C/1E,KAAKw1E,YAAYx1E,KAAK+1E,cAEtBjuB,EAAWkvB,WAAah3E,KAAKw1E,YAAYx1E,KAAK+1E,aAGlD/1E,KAAKqkB,QAAQiuC,KAAOtyD,KAAKk3E,iBAAiBpvB,GAG1C9nD,KAAKkd,MAAMqhD,QAAUv+D,KAAKkd,MAAMs5D,kBAE5Bx2E,KAAKs1E,aAAat1E,KAAK+1E,cAEvB/1E,KAAKqkB,QAAQi6C,YAAct+D,KAAKs1E,aAAat1E,KAAK+1E,aAGtD/1E,KAAK04E,aAAa14E,KAAKkd,MAAMi5D,cAC7Bn2E,KAAKqkB,QAAQs0D,WAAWK,EAAQ/yE,EAAGwG,IAGnCzM,KAAKkd,MAAMolB,OAEPtiC,KAAKq1E,OAAOr1E,KAAK+1E,cAEjB/1E,KAAKqkB,QAAQg1C,UAAYr5D,KAAKq1E,OAAOr1E,KAAK+1E,aAG9C/1E,KAAK04E,aAAa14E,KAAKkd,MAAMk5D,YAC7Bp2E,KAAKqkB,QAAQ05C,SAASib,EAAQ/yE,EAAGwG,IAGrCxG,GAAKjG,KAAKqkB,QAAQuzD,YAAYoB,GAAQjpE,MAEtC/P,KAAK+1E,eAWb11E,EAAOqxD,KAAKrrD,UAAU4yE,YAAc,WAMhC,MAJAj5E,MAAKq1E,UACLr1E,KAAKs1E,gBACLt1E,KAAKynB,OAAQ,EAENznB,MAUXK,EAAOqxD,KAAKrrD,UAAU6yE,gBAAkB,WAMpC,MAJAl5E,MAAKu1E,cACLv1E,KAAKw1E,eACLx1E,KAAKynB,OAAQ,EAENznB,MAmBXK,EAAOqxD,KAAKrrD,UAAU8yE,SAAW,SAAUn7D,EAAOzE,GAK9C,MAHAvZ,MAAKq1E,OAAO97D,GAAYyE,EACxBhe,KAAKynB,OAAQ,EAENznB,MAqBXK,EAAOqxD,KAAKrrD,UAAU+yE,eAAiB,SAAUp7D,EAAOzE,GAKpD,MAHAvZ,MAAKs1E,aAAa/7D,GAAYyE,EAC9Bhe,KAAKynB,OAAQ,EAENznB,MAmBXK,EAAOqxD,KAAKrrD,UAAUgzE,aAAe,SAAUn8D,EAAO3D,GAKlD,MAHAvZ,MAAKu1E,WAAWh8D,GAAY2D,EAC5Bld,KAAKynB,OAAQ,EAENznB,MAmBXK,EAAOqxD,KAAKrrD,UAAUizE,cAAgB,SAAUC,EAAQhgE,GAKpD,MAHAvZ,MAAKw1E,YAAYj8D,GAAYggE,EAC7Bv5E,KAAKynB,OAAQ,EAENznB,MAeXK,EAAOqxD,KAAKrrD,UAAUmzE,qBAAuB,SAAU/nB,GAEnDzxD,KAAKmiC,QAAQuQ,YAAY7qB,WAAa7nB,KAAK21E,KAC3C31E,KAAKqkB,QAAQiuC,KAAOtyD,KAAKkd,MAAMo1C,IAE/B,IAAImnB,GAAez5E,KAAKo3E,YAAY3lB,EAEpC,OAAOgoB,GAAa9wE,MAAM,mBAW9BtI,EAAOqxD,KAAKrrD,UAAU+wE,YAAc,SAAU3lB,GAE1C,MAAIzxD,MAAK01E,gBAEE11E,KAAK05E,iBAAiBjoB,GAItBzxD,KAAK25E,cAAcloB,IAelCpxD,EAAOqxD,KAAKrrD,UAAUqzE,iBAAmB,SAAUjoB,GAe/C,IAAK,GAbDptC,GAAUrkB,KAAKqkB,QACfqyD,EAAgB12E,KAAKkd,MAAMw5D,cAE3B3oE,EAAS,GAITspE,EAAQ5lB,EACP7lD,QAAQ,OAAQ,KAChBjD,MAAM,WAEPixE,EAAavC,EAAMxvE,OAEdC,EAAI,EAAO8xE,EAAJ9xE,EAAgBA,IAChC,CACI,GAAIsJ,GAAOimE,EAAMvvE,GACbiF,EAAM,EAGVqE,GAAOA,EAAKxF,QAAQ,aAAc,GAIlC,IAAIyyD,GAAYh6C,EAAQuzD,YAAYxmE,GAAMrB,KAE1C,IAAgB2mE,EAAZrY,EAEAtwD,GAAUqD,EAAO,SAFrB,CAYA,IAAK,GALDyoE,GAAmBnD,EAGnBoD,EAAQ1oE,EAAKzI,MAAM,KAEdkP,EAAI,EAAGA,EAAIiiE,EAAMjyE,OAAQgQ,IAClC,CACI,GAAIkiE,GAAOD,EAAMjiE,GACbmiE,EAAgBD,EAAO,IACvBE,EAAY51D,EAAQuzD,YAAYoC,GAAejqE,KAEnD,IAAIkqE,EAAYJ,EAChB,CAEI,GAAU,IAANhiE,EACJ,CAII,IAFA,GAAIqiE,GAAUF,EAEPE,EAAQryE,SAEXqyE,EAAUA,EAAQ3zE,MAAM,EAAG,IAC3B0zE,EAAY51D,EAAQuzD,YAAYsC,GAASnqE,QAExB8pE,GAAbI,MAQR,IAAKC,EAAQryE,OAET,KAAM,IAAImP,OAAM,qEAIpB,IAAImjE,GAAaJ,EAAK3vE,OAAO8vE,EAAQryE,OAErCiyE,GAAMjiE,GAAKsiE,EAGXptE,GAAOmtE,EAIX,GAAI9rE,GAAU0rE,EAAMjiE,GAAS,OAAIA,EAAIA,EAAI,EAGrCosD,EAAY6V,EAAMvzE,MAAM6H,GAAQvF,KAAK,KAExC+C,QAAQ,YAAa,GAGtByrE,GAAMvvE,EAAI,GAAKm8D,EAAY,KAAOoT,EAAMvvE,EAAI,IAAM,IAClD8xE,EAAavC,EAAMxvE,MAEnB,OAMAkF,GAAOitE,EACPH,GAAoBI,EAK5BlsE,GAAUhB,EAAInB,QAAQ,YAAa,IAAM,MAM7C,MAFAmC,GAASA,EAAOnC,QAAQ,cAAe,KAa3CvL,EAAOqxD,KAAKrrD,UAAUszE,cAAgB,SAAUloB,GAK5C,IAAK,GAHDngD,GAAS,GACT+lE,EAAQ5lB,EAAK9oD,MAAM,MAEdb,EAAI,EAAGA,EAAIuvE,EAAMxvE,OAAQC,IAClC,CAII,IAAK,GAHDsyE,GAAYp6E,KAAKkd,MAAMw5D,cACvBoD,EAAQzC,EAAMvvE,GAAGa,MAAM,KAElBkP,EAAI,EAAGA,EAAIiiE,EAAMjyE,OAAQgQ,IAClC,CACI,GAAIoiE,GAAYj6E,KAAKqkB,QAAQuzD,YAAYkC,EAAMjiE,IAAI9H,MAC/CsqE,EAAqBJ,EAAYj6E,KAAKqkB,QAAQuzD,YAAY,KAAK7nE,KAE/DsqE,GAAqBD,GAGjBviE,EAAI,IAEJvG,GAAU,MAEdA,GAAUwoE,EAAMjiE,GAAK,IACrBuiE,EAAYp6E,KAAKkd,MAAMw5D,cAAgBuD,IAIvCG,GAAaC,EACb/oE,GAAUwoE,EAAMjiE,GAAK,KAIzB/P,EAAIuvE,EAAMxvE,OAAO,IAEjByJ,GAAU,MAIlB,MAAOA,IAWXjR,EAAOqxD,KAAKrrD,UAAUi0E,WAAa,SAAUxyB,GAEzC,GAAIwK,GAAOtyD,KAAKk3E,iBAAiBpvB,EAE7B9nD,MAAKkd,MAAMo1C,OAASA,IAEpBtyD,KAAKkd,MAAMo1C,KAAOA,EAClBtyD,KAAKynB,OAAQ,EAETznB,KAAKwpB,QAELxpB,KAAK4rB,oBAajBvrB,EAAOqxD,KAAKrrD,UAAUwwE,iBAAmB,SAAUvkB,GAU/C,GAAIr8C,GAAIq8C,EAAK7L,MAAM,uSAEnB,IAAIxwC,EACJ,CACI,GAAIskE,GAAStkE,EAAE,GAAG08B,MAQlB,OALK,2DAA2D6nC,KAAKD,IAAY,QAAQC,KAAKD,KAE1FA,EAAS,IAAMA,EAAS,MAIxBjoB,KAAMA,EACNwkB,UAAW7gE,EAAE,IAAM,SACnB8gE,YAAa9gE,EAAE,IAAM,SACrB+gE,WAAY/gE,EAAE,IAAM,SACpBghE,SAAUhhE,EAAE,IAAM,SAClBwkE,WAAYF,GAOhB,MAFAnyE,SAAQG,KAAK,sCAAwC+pD,IAGjDA,KAAMA,IAalBjyD,EAAOqxD,KAAKrrD,UAAU6wE,iBAAmB,SAAUpvB,GAE/C,GACIztB,GADApxB,IAwBJ,OArBAoxB,GAAIytB,EAAWgvB,UACXz8C,GAAW,WAANA,GAAkBpxB,EAAM2J,KAAKynB,GAEtCA,EAAIytB,EAAWivB,YACX18C,GAAW,WAANA,GAAkBpxB,EAAM2J,KAAKynB,GAEtCA,EAAIytB,EAAWkvB,WACX38C,GAAW,WAANA,GAAkBpxB,EAAM2J,KAAKynB,GAEtCA,EAAIytB,EAAWmvB,SACX58C,GAAW,WAANA,GAAkBpxB,EAAM2J,KAAKynB,GAEtCA,EAAIytB,EAAW2yB,WACXpgD,GAAKpxB,EAAM2J,KAAKynB,GAEfpxB,EAAMpB,QAGPoB,EAAM2J,KAAKk1C,EAAWwK,MAGnBrpD,EAAMJ,KAAK,MAmBtBxI,EAAOqxD,KAAKrrD,UAAUq0E,QAAU,SAAUjpB,EAAMyJ,GAe5C,MAbkBxxD,UAAdwxD,IAA2BA,GAAY,GAE3Cl7D,KAAKyxD,KAAOA,EAAKjqD,YAAc,GAE3B0zD,EAEAl7D,KAAKi2E,aAILj2E,KAAKynB,OAAQ,EAGVznB,MAyBXK,EAAOqxD,KAAKrrD,UAAUs0E,UAAY,SAAU5O,GAExC,IAAKvlE,MAAMa,QAAQ0kE,GAEf,MAAO/rE,KAMP,KAAK,GAFDyW,GAAI,GAEC3O,EAAI,EAAGA,EAAIikE,EAAKlkE,OAAQC,IAEzBtB,MAAMa,QAAQ0kE,EAAKjkE,KAEnB2O,GAAKs1D,EAAKjkE,GAAGe,KAAK,KAEdf,EAAIikE,EAAKlkE,OAAS,IAElB4O,GAAK,QAKTA,GAAKs1D,EAAKjkE,GAENA,EAAIikE,EAAKlkE,OAAS,IAElB4O,GAAK,KASrB,OAHAzW,MAAKyxD,KAAOh7C,EACZzW,KAAKynB,OAAQ,EAENznB,MAmCXK,EAAOqxD,KAAKrrD,UAAUu0E,cAAgB,SAAU30E,EAAGwG,EAAGsD,EAAOC,GAyBzD,MAvBUtG,UAANzD,EAEAjG,KAAKo1E,WAAa,MAIbp1E,KAAKo1E,WAMNp1E,KAAKo1E,WAAW5nE,MAAMvH,EAAGwG,EAAGsD,EAAOC,GAJnChQ,KAAKo1E,WAAa,GAAI/0E,GAAOkN,UAAUtH,EAAGwG,EAAGsD,EAAOC,GAOpDhQ,KAAKkd,MAAMw5D,cAAgB3mE,IAE3B/P,KAAKkd,MAAMw5D,cAAgB3mE,IAInC/P,KAAK64E,gBAEE74E,MAUXK,EAAOqxD,KAAKrrD,UAAUwyE,cAAgB,WAElC,GAAI/pB,GAAO9uD,KAAKmiC,QAAQuQ,YACpBE,EAAO5yC,KAAKmiC,QAAQyQ,KACpBliB,EAAQ1wB,KAAKmiC,QAAQzR,MAErBpT,EAAItd,KAAKsrB,OAAOvb,MAChBwN,EAAIvd,KAAKsrB,OAAOtb,MAiBpB,IAfA8+C,EAAK/+C,MAAQuN,EACbwxC,EAAK9+C,OAASuN,EAEdq1B,EAAK7iC,MAAQuN,EACbs1B,EAAK5iC,OAASuN,EAEdmT,EAAM3gB,MAAQuN,EACdoT,EAAM1gB,OAASuN,EAEfvd,KAAKmiC,QAAQpyB,MAAQuN,EACrBtd,KAAKmiC,QAAQnyB,OAASuN,EAEtBvd,KAAK22B,OAASrZ,EACdtd,KAAK42B,QAAUrZ,EAEXvd,KAAKo1E,WACT,CACI,GAAInvE,GAAIjG,KAAKo1E,WAAWnvE,EACpBwG,EAAIzM,KAAKo1E,WAAW3oE,CAGQ,WAA5BzM,KAAKkd,MAAMo5D,aAEXrwE,GAAKjG,KAAKo1E,WAAWrlE,MAAQ/P,KAAKsrB,OAAOvb,MAER,WAA5B/P,KAAKkd,MAAMo5D,eAEhBrwE,GAAKjG,KAAKo1E,WAAWhmE,UAAapP,KAAKsrB,OAAOvb,MAAQ,GAG1B,WAA5B/P,KAAKkd,MAAMq5D,aAEX9pE,GAAKzM,KAAKo1E,WAAWplE,OAAShQ,KAAKsrB,OAAOtb,OAET,WAA5BhQ,KAAKkd,MAAMq5D,eAEhB9pE,GAAKzM,KAAKo1E,WAAW7lE,WAAcvP,KAAKsrB,OAAOtb,OAAS,GAG5DhQ,KAAK66E,MAAM50E,GAAKA,EAChBjG,KAAK66E,MAAMpuE,GAAKA,EAIpBzM,KAAK8pD,WAAoB,IAANxsC,GAAiB,IAANC,EAE9Bvd,KAAKmiC,QAAQktB,gBAAiB,EAE9BrvD,KAAKmiC,QAAQuQ,YAAYjrB,SAW7BpnB,EAAOqxD,KAAKrrD,UAAUu+D,aAAe,SAAUpN,GAEvCx3D,KAAKynB,QAELznB,KAAKi2E,aACLj2E,KAAKynB,OAAQ,GAGjB3hB,KAAKsoB,OAAO/nB,UAAUu+D,aAAa99D,KAAK9G,KAAMw3D,IAWlDn3D,EAAOqxD,KAAKrrD,UAAU6/D,cAAgB,SAAU1O,GAExCx3D,KAAKynB,QAELznB,KAAKi2E,aACLj2E,KAAKynB,OAAQ,GAGjB3hB,KAAKsoB,OAAO/nB,UAAU6/D,cAAcp/D,KAAK9G,KAAMw3D,IAWnDn3D,EAAOqxD,KAAKrrD,UAAUoxE,wBAA0B,SAAUX,GAEtD,GAAIgE,GAAaz6E,EAAOqxD,KAAKqpB,oBAAoBjE,EAEjD,KAAKgE,EACL,CACIA,IAEA,IAAIxvD,GAASjrB,EAAOqxD,KAAKspB,qBACrB32D,EAAUhkB,EAAOqxD,KAAKupB,qBAE1B52D,GAAQiuC,KAAOwkB,CAEf,IAAI/mE,GAAQhK,KAAKG,KAAKme,EAAQuzD,YAAY,QAAQ7nE,OAC9CmrE,EAAWn1E,KAAKG,KAAKme,EAAQuzD,YAAY,QAAQ7nE,OACjDC,EAAS,EAAIkrE,CAgBjB,IAdAA,EAAsB,IAAXA,EAAiB,EAE5B5vD,EAAOvb,MAAQA,EACfub,EAAOtb,OAASA,EAEhBqU,EAAQg1C,UAAY,OACpBh1C,EAAQi1C,SAAS,EAAG,EAAGvpD,EAAOC,GAE9BqU,EAAQiuC,KAAOwkB,EAEfzyD,EAAQ8zD,aAAe,aACvB9zD,EAAQg1C,UAAY,OACpBh1C,EAAQ05C,SAAS,OAAQ,EAAGmd,IAEvB72D,EAAQ6uB,aAAa,EAAG,EAAGnjC,EAAOC,GAQnC,MANA8qE,GAAWtC,OAAS0C,EACpBJ,EAAWK,QAAUD,EAAW,EAChCJ,EAAW7D,SAAW6D,EAAWtC,OAASsC,EAAWK,QAErD96E,EAAOqxD,KAAKqpB,oBAAoBjE,GAAagE,EAEtCA,CAGX,IAIIhzE,GAAG+P,EAJHujE,EAAY/2D,EAAQ6uB,aAAa,EAAG,EAAGnjC,EAAOC,GAAQqyB,KACtDs1B,EAASyjB,EAAUvzE,OACnBuJ,EAAe,EAARrB,EAIPsrE,EAAM,EACNp/C,GAAO,CAGX,KAAKn0B,EAAI,EAAOozE,EAAJpzE,EAAcA,IAC1B,CACI,IAAK+P,EAAI,EAAOzG,EAAJyG,EAAUA,GAAK,EAEvB,GAA2B,MAAvBujE,EAAUC,EAAMxjE,GACpB,CACIokB,GAAO,CACP,OAIR,GAAKA,EAMD,KAJAo/C,IAAOjqE,EAcf,IANA0pE,EAAWtC,OAAS0C,EAAWpzE,EAE/BuzE,EAAM1jB,EAASvmD,EACf6qB,GAAO,EAGFn0B,EAAIkI,EAAQlI,EAAIozE,EAAUpzE,IAC/B,CACI,IAAK+P,EAAI,EAAOzG,EAAJyG,EAAUA,GAAK,EAEvB,GAA2B,MAAvBujE,EAAUC,EAAMxjE,GACpB,CACIokB,GAAO,CACP,OAIR,GAAKA,EAMD,KAJAo/C,IAAOjqE,EAQf0pE,EAAWK,QAAUrzE,EAAIozE,EAEzBJ,EAAWK,SAAW,EACtBL,EAAW7D,SAAW6D,EAAWtC,OAASsC,EAAWK,QAErD96E,EAAOqxD,KAAKqpB,oBAAoBjE,GAAagE,EAGjD,MAAOA,IAYXz6E,EAAOqxD,KAAKrrD,UAAUiH,UAAY,SAAU8G,GAQxC,MANIpU,MAAKynB,QAELznB,KAAKi2E,aACLj2E,KAAKynB,OAAQ,GAGV3hB,KAAKsoB,OAAO/nB,UAAUiH,UAAUxG,KAAK9G,KAAMoU,IAYtD7M,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAK41E,OAGhB3pE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK41E,QAEf51E,KAAK41E,MAAQrsE,EAAM/B,YAAc,GACjCxH,KAAKynB,OAAQ,EAETznB,KAAKwpB,QAELxpB,KAAK4rB,sBAmBrBrkB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,WAEzC2F,IAAK,WACD,MAAOhM,MAAKk3E,iBAAiBl3E,KAAK61E,kBAGtC5pE,IAAK,SAAU1C,GAEXA,EAAQA,GAAS,kBACjBvJ,KAAK61E,gBAAkB71E,KAAK62E,iBAAiBttE,GAC7CvJ,KAAKs6E,WAAWt6E,KAAK61E,oBAgB7BtuE,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAK61E,gBAAgB4E,YAGhCxuE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,QACjBA,EAAQA,EAAMopC,OAGT,2DAA2D6nC,KAAKjxE,IAAW,QAAQixE,KAAKjxE,KAEzFA,EAAQ,IAAMA,EAAQ,KAG1BvJ,KAAK61E,gBAAgB4E,WAAalxE,EAClCvJ,KAAKs6E,WAAWt6E,KAAK61E,oBAe7BtuE,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,YAEzC2F,IAAK,WAED,GAAIhC,GAAOhK,KAAK61E,gBAAgBoB,QAEhC,OAAIjtE,IAAQ,cAAcwwE,KAAKxwE,GAEpBK,SAASL,EAAM,IAIfA,GAKfiC,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,IAEI,gBAAVA,KAEPA,GAAgB,MAGpBvJ,KAAK61E,gBAAgBoB,SAAW1tE,EAChCvJ,KAAKs6E,WAAWt6E,KAAK61E,oBAW7BtuE,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAK61E,gBAAgBmB,YAAc,UAG9C/qE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,SACjBvJ,KAAK61E,gBAAgBmB,WAAaztE,EAClCvJ,KAAKs6E,WAAWt6E,KAAK61E,oBAW7BtuE,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,aAEzC2F,IAAK,WACD,MAAOhM,MAAK61E,gBAAgBiB,WAAa,UAG7C7qE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,SACjBvJ,KAAK61E,gBAAgBiB,UAAYvtE,EACjCvJ,KAAKs6E,WAAWt6E,KAAK61E,oBAW7BtuE,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,eAEzC2F,IAAK,WACD,MAAOhM,MAAK61E,gBAAgBkB,aAAe,UAG/C9qE,IAAK,SAAS1C,GAEVA,EAAQA,GAAS,SACjBvJ,KAAK61E,gBAAgBkB,YAAcxtE,EACnCvJ,KAAKs6E,WAAWt6E,KAAK61E,oBAU7BtuE,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMolB,MAGtBr2B,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMolB,OAErBtiC,KAAKkd,MAAMolB,KAAO/4B,EAClBvJ,KAAKynB,OAAQ,MAczBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,SAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAM6T,OAGtB9kB,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAM6T,QAErB/wB,KAAKkd,MAAM6T,MAAQxnB,EACnBvJ,KAAKynB,OAAQ,MAazBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAK21E,MAGhB1pE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK21E,OAEf31E,KAAK21E,KAAOpsE,EACZvJ,KAAKynB,OAAQ,MAgBzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAM05D,MAGtB3qE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAM05D,OAErB52E,KAAKkd,MAAM05D,KAAOrtE,EAClBvJ,KAAKynB,OAAQ,MAYzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,gBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMo5D,cAGtBrqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMo5D,eAErBt2E,KAAKkd,MAAMo5D,aAAe/sE,EAC1BvJ,KAAKynB,OAAQ,MAYzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,gBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMq5D,cAGtBtqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMq5D,eAErBv2E,KAAKkd,MAAMq5D,aAAehtE,EAC1BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,UAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMqhD,QAGtBtyD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMqhD,SAErBv+D,KAAKkd,MAAMqhD,OAASh1D,EACpBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,mBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMs5D,iBAGtBvqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMs5D,kBAErBx2E,KAAKkd,MAAMs5D,gBAAkBjtE,EAC7BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,YAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMu5D,UAGtBxqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMu5D,WAErBz2E,KAAKkd,MAAMu5D,SAAWltE,EACtBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,iBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMw5D,eAGtBzqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMw5D,gBAErB12E,KAAKkd,MAAMw5D,cAAgBntE,EAC3BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,eAEzC2F,IAAK,WACD,MAAOhM,MAAK81E,cAGhB7pE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK81E,eAEf91E,KAAK81E,aAAewF,WAAW/xE,GAC/BvJ,KAAKynB,OAAQ,EAETznB,KAAKwpB,QAELxpB,KAAK4rB,sBAYrBrkB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,iBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMmgD,eAGtBpxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMmgD,gBAErBr9D,KAAKkd,MAAMmgD,cAAgB9zD,EAC3BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,iBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMogD,eAGtBrxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMogD,gBAErBt9D,KAAKkd,MAAMogD,cAAgB/zD,EAC3BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,eAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMigD,aAGtBlxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMigD,cAErBn9D,KAAKkd,MAAMigD,YAAc5zD,EACzBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMkgD,YAGtBnxD,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMkgD,aAErBp9D,KAAKkd,MAAMkgD,WAAa7zD,EACxBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,gBAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMi5D,cAGtBlqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMi5D,eAErBn2E,KAAKkd,MAAMi5D,aAAe5sE,EAC1BvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,cAEzC2F,IAAK,WACD,MAAOhM,MAAKkd,MAAMk5D,YAGtBnqE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKkd,MAAMk5D,aAErBp2E,KAAKkd,MAAMk5D,WAAa7sE,EACxBvJ,KAAKynB,OAAQ,MAWzBlgB,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,SAEzC2F,IAAK,WAQD,MANIhM,MAAKynB,QAELznB,KAAKi2E,aACLj2E,KAAKynB,OAAQ,GAGVznB,KAAK6U,MAAM5O,EAAIjG,KAAKmiC,QAAQzR,MAAM3gB,OAG7C9D,IAAK,SAAS1C,GAEVvJ,KAAK6U,MAAM5O,EAAIsD,EAAQvJ,KAAKmiC,QAAQzR,MAAM3gB,MAC1C/P,KAAK22B,OAASptB,KAStBhC,OAAO2E,eAAe7L,EAAOqxD,KAAKrrD,UAAW,UAEzC2F,IAAK,WAQD,MANIhM,MAAKynB,QAELznB,KAAKi2E,aACLj2E,KAAKynB,OAAQ,GAGVznB,KAAK6U,MAAMpI,EAAIzM,KAAKmiC,QAAQzR,MAAM1gB,QAG7C/D,IAAK,SAAS1C,GAEVvJ,KAAK6U,MAAMpI,EAAIlD,EAAQvJ,KAAKmiC,QAAQzR,MAAM1gB,OAC1ChQ,KAAK42B,QAAUrtB,KAKvBlJ,EAAOqxD,KAAKqpB,uBAEZ16E,EAAOqxD,KAAKspB,qBAAuBlvD,SAASyvD,cAAc,UAC1Dl7E,EAAOqxD,KAAKupB,sBAAwB56E,EAAOqxD,KAAKspB,qBAAqBz6C,WAAW,MAuDhFlgC,EAAOspD,WAAa,SAAUnvC,EAAMvU,EAAGwG,EAAG6lD,EAAMb,EAAMznD,EAAM+mB,GAExD9qB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACT6lD,EAAOA,GAAQ,GACfb,EAAOA,GAAQ,GACfznD,EAAOA,GAAQ,GACf+mB,EAAQA,GAAS,OAEjBjrB,KAAKwkB,uBAAuBxjB,KAAK9G,MAMjCA,KAAKkI,KAAO7H,EAAOkB,WAMnBvB,KAAK+tB,YAAc1tB,EAAOY,OAM1BjB,KAAKw7E,UAAY,EAMjBx7E,KAAKy7E,WAAa,EAKlBz7E,KAAKqpB,OAAS,GAAIhpB,GAAO2M,MAMzBhN,KAAK07E,YAAc,GAAIr7E,GAAO2M,MAM9BhN,KAAK4pD,WAML5pD,KAAK27E,UAAY,EAMjB37E,KAAK41E,MAAQnkB,EAAKjqD,YAAc,GAMhCxH,KAAK47E,MAAQphE,EAAKsF,MAAM+7D,cAAcvpB,GAMtCtyD,KAAK87E,MAAQxpB,EAMbtyD,KAAK+7E,UAAY/xE,EAMjBhK,KAAKg8E,OAASjrD,EAMd/wB,KAAKi8E,MAAQ,SAEbj8E,KAAKi2E,aAKLj2E,KAAKynB,OAAQ,EAEbpnB,EAAOqmD,UAAUkB,KAAKtnC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAG,GAAI,OAI1DpM,EAAOspD,WAAWtjD,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACxEhG,EAAOspD,WAAWtjD,UAAU8B,YAAc9H,EAAOspD,WAEjDtpD,EAAOqmD,UAAUkB,KAAKC,QAAQ/gD,KAAKzG,EAAOspD,WAAWtjD,WACjD,QACA,WACA,SACA,UACA,gBACA,eACA,UACA,WACA,cACA;AAGJhG,EAAOspD,WAAWtjD,UAAUwtD,iBAAmBxzD,EAAOqmD,UAAUuB,YAAYjrC,UAC5E3c,EAAOspD,WAAWtjD,UAAUytD,kBAAoBzzD,EAAOqmD,UAAU6G,SAASvwC,UAC1E3c,EAAOspD,WAAWtjD,UAAU0tD,iBAAmB1zD,EAAOqmD,UAAUsG,QAAQhwC,UACxE3c,EAAOspD,WAAWtjD,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UASlE3c,EAAOspD,WAAWtjD,UAAU2W,UAAY,WAEpC,MAAKhd,MAAK6zD,oBAAuB7zD,KAAK8zD,qBAAwB9zD,KAAK+zD,mBAK5D/zD,KAAKg0D,iBAHD,GAWf3zD,EAAOspD,WAAWtjD,UAAU+jB,WAAa,WAErC/pB,EAAOqmD,UAAUuB,YAAY79B,WAAWtjB,KAAK9G,MAC7CK,EAAOqmD,UAAU0B,cAAch+B,WAAWtjB,KAAK9G,MAE3CA,KAAK2vB,MAAQ3vB,KAAK2vB,KAAKznB,OAAS7H,EAAOutB,QAAQC,SAE1C7tB,KAAKw7E,YAAcx7E,KAAK2vB,KAAKusD,aAAiBl8E,KAAKy7E,aAAez7E,KAAK2vB,KAAKwsD,cAE7En8E,KAAK2vB,KAAKlQ,QAAQzf,KAAKw7E,UAAWx7E,KAAKy7E,cAcnDp7E,EAAOspD,WAAWtjD,UAAUq0E,QAAU,SAAUjpB,GAE5CzxD,KAAKyxD,KAAOA,GAehBpxD,EAAOspD,WAAWtjD,UAAU+1E,SAAW,SAAU/5C,EAAMxtB,EAAO48C,GAW1D,IAAK,GATDxrD,GAAI,EACJqX,EAAI,EACJ++D,EAAY,GACZC,EAAe,EACfC,EAAe,KACfC,EAAYx8E,KAAK27E,UAAY,EAAK37E,KAAK27E,UAAY,KACnDlpB,KAGK3qD,EAAI,EAAGA,EAAI2pD,EAAK5pD,OAAQC,IACjC,CACI,GAAI6I,GAAO7I,IAAM2pD,EAAK5pD,OAAS,CAE/B,IAAI,iBAAiB40E,KAAKhrB,EAAKirB,OAAO50E,IAElC,OAASiI,MAAOuN,EAAGm0C,KAAMA,EAAKrnD,OAAO,EAAGtC,GAAI6I,IAAKA,EAAK8hD,MAAOA,EAI7D,IAAInS,GAAWmR,EAAKjR,WAAW14C,GAC3B60E,EAAWt6C,EAAKowB,MAAMnS,GAEtBrxC,EAAI,CAISvF,UAAbizE,IAEAr8B,EAAW,GACXq8B,EAAWt6C,EAAKowB,MAAMnS,GAI1B,IAAIs8B,GAAWL,GAAgBI,EAASC,QAAQL,GAAiBI,EAASC,QAAQL,GAAgB,CAYlG,IATI,OAAOE,KAAKhrB,EAAKirB,OAAO50E,MACxBu0E,EAAYv0E,EACZw0E,EAAeh/D,GAInBrO,GAAK2tE,EAAUD,EAASx6C,QAAQpyB,MAAQ4sE,EAAS9pB,SAAWh+C,EAGxD2nE,GAAcl/D,EAAIrO,GAAMutE,GAAaH,EAAY,GAGjD,OAAStsE,MAAOusE,GAAgBh/D,EAAGm0C,KAAMA,EAAKrnD,OAAO,EAAGtC,GAAKA,EAAIu0E,IAAa1rE,IAAKA,EAAK8hD,MAAOA,EAI/Fn1C,KAAMq/D,EAASE,SAAWD,GAAW/nE,EAErC49C,EAAM7/C,KAAK3M,GAAK02E,EAAS9pB,QAAU+pB,GAAW/nE,GAE9C5O,IAAM02E,EAASE,SAAWD,GAAW/nE,EAErC0nE,EAAej8B,EAK3B,OAASvwC,MAAOuN,EAAGm0C,KAAMA,EAAM9gD,IAAKA,EAAK8hD,MAAOA,IAepDpyD,EAAOspD,WAAWtjD,UAAUy2E,UAAY,SAAUrrB,EAAM7lD,GAEpClC,SAAZkC,IAEAA,EAAU,GAGd,IAAIy2B,GAAOriC,KAAK47E,MAAMtpB,IAEtB,KAAKjwB,EAED,MAAO,EAMX,KAAK,GAHD06C,GAAK,mBACL1F,EAAQ5lB,EAAK7lD,QAAQmxE,EAAI,MAAMp0E,MAAM,MAEhCb,EAAI,EAAGA,EAAIuvE,EAAMxvE,OAAQC,IAClC,CAII,IAAK,GAHDiG,GAAS,GACTqD,EAAOimE,EAAMvvE,GAERmH,EAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IAIzBlB,EAFAs0B,EAAKowB,MAAMrhD,EAAKovC,WAAWvxC,IAElBlB,EAAOlH,OAAOuK,EAAKnC,IAInBlB,EAAOlH,OAAO+E,EAI/ByrE,GAAMvvE,GAAKiG,EAGf,MAAOspE,GAAMxuE,KAAK,OAUtBxI,EAAOspD,WAAWtjD,UAAU4vE,WAAa,WAErC,GAAI5zC,GAAOriC,KAAK47E,MAAMtpB,IAEtB,IAAKjwB,EAAL,CAKA,GAAIovB,GAAOzxD,KAAKyxD,KACZ58C,EAAQ7U,KAAK+7E,UAAY15C,EAAKr4B,KAC9BqtE,KAEA5qE,EAAI,CAERzM,MAAKw7E,UAAY,CAEjB,GACA,CACI,GAAIpqE,GAAOpR,KAAKo8E,SAAS/5C,EAAMxtB,EAAO48C,EAEtCrgD,GAAK3E,EAAIA,EAET4qE,EAAMzkE,KAAKxB,GAEPA,EAAKrB,MAAQ/P,KAAKw7E,YAElBx7E,KAAKw7E,UAAYpqE,EAAKrB,OAG1BtD,GAAM41B,EAAK21C,WAAanjE,EAExB48C,EAAOA,EAAKrnD,OAAOgH,EAAKqgD,KAAK5pD,OAAS,SAEjCuJ,EAAKT,OAAQ,EAEtB3Q,MAAKy7E,WAAahvE,CAOlB,KAAK,GALD9E,GAAI,EACJopB,EAAQ,EACRu3C,EAAKtoE,KAAKw7E,UAAYx7E,KAAKqpB,OAAOpjB,EAClCsiE,EAAKvoE,KAAKy7E,WAAaz7E,KAAKqpB,OAAO5c,EAE9B3E,EAAI,EAAGA,EAAIuvE,EAAMxvE,OAAQC,IAClC,CACI,GAAIsJ,GAAOimE,EAAMvvE,EAEG,WAAhB9H,KAAKg8E,OAELjrD,EAAQ/wB,KAAKw7E,UAAYpqE,EAAKrB,MAET,WAAhB/P,KAAKg8E,SAEVjrD,GAAS/wB,KAAKw7E,UAAYpqE,EAAKrB,OAAS,EAG5C,KAAK,GAAId,GAAI,EAAGA,EAAImC,EAAKqgD,KAAK5pD,OAAQoH,IACtC,CACI,GAAIqxC,GAAWlvC,EAAKqgD,KAAKjR,WAAWvxC,GAChC0tE,EAAWt6C,EAAKowB,MAAMnS,EAET52C,UAAbizE,IAEAr8B,EAAW,GACXq8B,EAAWt6C,EAAKowB,MAAMnS,GAG1B,IAAIx1B,GAAI9qB,KAAK4pD,QAAQjiD,EAEjBmjB,GAGAA,EAAEqX,QAAUw6C,EAASx6C,SAKrBrX,EAAI,GAAIhlB,MAAKsoB,OAAOuuD,EAASx6C,SAC7BrX,EAAE1f,KAAOgG,EAAKqgD,KAAKxiD,GACnBjP,KAAK4pD,QAAQh3C,KAAKkY,IAGtBA,EAAEvR,SAAStT,EAAKmL,EAAKqhD,MAAMxjD,GAAK8hB,EAASu3C,EACzCx9C,EAAEvR,SAAS9M,EAAK2E,EAAK3E,EAAKkwE,EAAS7pB,QAAUj+C,EAAU0zD,EAEvDz9C,EAAEjW,MAAM5I,IAAI4I,GACZiW,EAAEoxC,KAAOl8D,KAAKk8D,KACdpxC,EAAEqX,QAAQktB,gBAAiB,EAEtBvkC,EAAEtB,QAEHxpB,KAAK+c,SAAS+N,GAGlBnjB,KAMR,IAAKG,EAAIH,EAAGG,EAAI9H,KAAK4pD,QAAQ/hD,OAAQC,IAEjC9H,KAAKqyB,YAAYryB,KAAK4pD,QAAQ9hD,MAkBtCzH,EAAOspD,WAAWtjD,UAAU22E,YAAc,WAKtC,IAAK,GAHDp1E,GAAM5H,KAAK4pD,QAAQ/hD,OACnBo1E,KAEKn1E,EAAI,EAAGA,EAAI9H,KAAK4pD,QAAQ/hD,OAAQC,IAEjC9H,KAAK4pD,QAAQ9hD,GAAG0hB,SAAWxpB,KAE3BA,KAAK4pD,QAAQ9hD,GAAGgc,UAIhBm5D,EAAKrqE,KAAK5S,KAAK4pD,QAAQ9hD,GAS/B,OALA9H,MAAK4pD,WACL5pD,KAAK4pD,QAAUqzB,EAEfj9E,KAAKi2E,aAEEruE,EAAMq1E,EAAKp1E,QAUtBxH,EAAOspD,WAAWtjD,UAAUulB,gBAAkB,YAEtC5rB,KAAKynB,OAAUznB,KAAKqpB,OAAOza,OAAO5O,KAAK07E,eAEvC17E,KAAKi2E,aACLj2E,KAAKynB,OAAQ,EACbznB,KAAK07E,YAAYjuE,SAASzN,KAAKqpB,SAGnCvjB,KAAKwkB,uBAAuBjkB,UAAUulB,gBAAgB9kB,KAAK9G,OAQ/DuH,OAAO2E,eAAe7L,EAAOspD,WAAWtjD,UAAW,SAE/C2F,IAAK,WACD,MAAOhM,MAAKg8E,QAGhB/vE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKg8E,QAAqB,SAAVzyE,GAA8B,WAAVA,GAAgC,UAAVA,IAEpEvJ,KAAKg8E,OAASzyE,EACdvJ,KAAKi2E,iBAWjB1uE,OAAO2E,eAAe7L,EAAOspD,WAAWtjD,UAAW,QAE/C2F,IAAK,WACD,MAAOhM,MAAKi8E,OAGhBhwE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAKi8E,QAEfj8E,KAAKi8E,MAAQ1yE,EACbvJ,KAAKi2E,iBAWjB1uE,OAAO2E,eAAe7L,EAAOspD,WAAWtjD,UAAW,QAE/C2F,IAAK,WACD,MAAOhM,MAAK87E,OAGhB7vE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK87E,QAEf97E,KAAK87E,MAAQvyE,EAAMopC,OACnB3yC,KAAK47E,MAAQ57E,KAAKwa,KAAKsF,MAAM+7D,cAAc77E,KAAK87E,OAChD97E,KAAKi2E,iBAWjB1uE,OAAO2E,eAAe7L,EAAOspD,WAAWtjD,UAAW,YAE/C2F,IAAK,WACD,MAAOhM,MAAK+7E,WAGhB9vE,IAAK,SAAS1C,GAEVA,EAAQc,SAASd,EAAO,IAEpBA,IAAUvJ,KAAK+7E,WAAaxyE,EAAQ,IAEpCvJ,KAAK+7E,UAAYxyE,EACjBvJ,KAAKi2E,iBAWjB1uE,OAAO2E,eAAe7L,EAAOspD,WAAWtjD,UAAW,QAE/C2F,IAAK,WACD,MAAOhM,MAAK41E,OAGhB3pE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK41E,QAEf51E,KAAK41E,MAAQrsE,EAAM/B,YAAc,GACjCxH,KAAKi2E,iBAoBjB1uE,OAAO2E,eAAe7L,EAAOspD,WAAWtjD,UAAW,YAE/C2F,IAAK,WAED,MAAOhM,MAAK27E,WAIhB1vE,IAAK,SAAS1C,GAENA,IAAUvJ,KAAK27E,YAEf37E,KAAK27E,UAAYpyE,EACjBvJ,KAAKi2E,iBAiBjB1uE,OAAO2E,eAAe7L,EAAOspD,WAAWtjD,UAAW,YAE/C2F,IAAK,WAED,OAAQhM,KAAK47E,MAAM9sB,KAAKf,WAI5B9hD,IAAK,SAAS1C,GAENA,EAEAvJ,KAAK47E,MAAM9sB,KAAKf,UAAY,EAI5B/tD,KAAK47E,MAAM9sB,KAAKf,UAAY,KA+BxC1tD,EAAO0yD,UAAY,SAAUv4C,EAAMzO,EAAKwmD,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEtH,IAAKt4C,EAAKsF,MAAMo9D,cAAcnxE,GAE1B,OAAO,CAGSrC,UAAhBgpD,GAA6C,OAAhBA,IAE7BA,EAAcl4C,EAAKsF,MAAM+uC,SAAS9iD,GAAKgE,MAAQwiD,GAMnDvyD,KAAKuyD,eAAiBA,EAKtBvyD,KAAKwyD,gBAAkBA,EAKvBxyD,KAAKm9E,kBAAoBxqB,GAAY,EAKrC3yD,KAAKo9E,kBAAoBxqB,GAAY,EAKrC5yD,KAAKq9E,gBAAkB3qB,EAMvB1yD,KAAKy1C,QAAUod,GAAW,EAM1B7yD,KAAK01C,QAAUod,GAAW,EAK1B9yD,KAAK+wB,MAAQ,OAMb/wB,KAAKs9E,WAAY,EAMjBt9E,KAAKu9E,eAAgB,EAMrBv9E,KAAKw9E,eAAiB,EAMtBx9E,KAAKy9E,eAAiB,EAOtBz9E,KAAK09E,WAAa,EAKlB19E,KAAK29E,QAAUnjE,EAAKsF,MAAM+uC,SAAS9iD,GAMnC/L,KAAK41E,MAAQ,GAMb51E,KAAK49E,YAKL59E,KAAKsuD,UAAY,GAAIjuD,GAAO03D,SAO5B,KAAK,GAJD8lB,GAAW79E,KAAKy1C,QAChBqoC,EAAW99E,KAAK01C,QAChBxoC,EAAI,EAEC+B,EAAI,EAAGA,EAAIwjD,EAAM5qD,OAAQoH,IAClC,CACI,GAAIyhB,GAAQ1wB,KAAKsuD,UAAU2J,SAAS,GAAI53D,GAAO63D,MAAMjpD,EAAG4uE,EAAUC,EAAU99E,KAAKuyD,eAAgBvyD,KAAKwyD,iBAEtGxyD,MAAK49E,SAASnrB,EAAMjS,WAAWvxC,IAAMyhB,EAAMhB,MAE3CxiB,IAEIA,IAAMlN,KAAKq9E,iBAEXnwE,EAAI,EACJ2wE,EAAW79E,KAAKy1C,QAChBqoC,GAAY99E,KAAKwyD,gBAAkBxyD,KAAKo9E,mBAIxCS,GAAY79E,KAAKuyD,eAAiBvyD,KAAKm9E,kBAI/C3iE,EAAKsF,MAAMi+D,gBAAgBhyE,EAAK/L,KAAKsuD,WAMrCtuD,KAAKg+E,MAAQ,GAAI39E,GAAOswD,MAAMn2C,EAAM,EAAG,EAAGzO,EAAK,GAE/C1L,EAAO2tD,cAAclnD,KAAK9G,KAAMwa,EAAM,IAAK,IAAK,GAAIna,EAAOqF,WAAWG,SAKtE7F,KAAKkI,KAAO7H,EAAO8B,WAIvB9B,EAAO0yD,UAAU1sD,UAAYkB,OAAOmZ,OAAOrgB,EAAO2tD,cAAc3nD,WAChEhG,EAAO0yD,UAAU1sD,UAAU8B,YAAc9H,EAAO0yD,UAOhD1yD,EAAO0yD,UAAUkrB,WAAa,OAO9B59E,EAAO0yD,UAAUmrB,YAAc,QAO/B79E,EAAO0yD,UAAUorB,aAAe,SAOhC99E,EAAO0yD,UAAUqrB,UAAY,oGAO7B/9E,EAAO0yD,UAAUsrB,UAAY,+DAO7Bh+E,EAAO0yD,UAAUurB,UAAY,wCAO7Bj+E,EAAO0yD,UAAUwrB,UAAY,wCAO7Bl+E,EAAO0yD,UAAUyrB,UAAY,mDAO7Bn+E,EAAO0yD,UAAU0rB,UAAY,oDAO7Bp+E,EAAO0yD,UAAU2rB,UAAY,oDAO7Br+E,EAAO0yD,UAAU4rB,UAAY,yCAO7Bt+E,EAAO0yD,UAAU6rB,UAAY,kDAO7Bv+E,EAAO0yD,UAAU8rB,WAAa,6BAO9Bx+E,EAAO0yD,UAAU+rB,WAAa,oDAW9Bz+E,EAAO0yD,UAAU1sD,UAAU04E,cAAgB,SAAUhvE,EAAOivE,GAElCt1E,SAAlBs1E,IAA+BA,EAAgB,QAEnDh/E,KAAK09E,WAAa3tE,EAClB/P,KAAK+wB,MAAQiuD,GAgBjB3+E,EAAO0yD,UAAU1sD,UAAUq0E,QAAU,SAAUuE,EAAS3B,EAAW4B,EAAkBjH,EAAa+G,EAAeG,GAE7Gn/E,KAAKs9E,UAAYA,IAAa,EAC9Bt9E,KAAKw9E,eAAiB0B,GAAoB,EAC1Cl/E,KAAKy9E,eAAiBxF,GAAe,EACrCj4E,KAAK+wB,MAAQiuD,GAAiB,OAE1BG,EAEAn/E,KAAKu9E,eAAgB,EAIrBv9E,KAAKu9E,eAAgB,EAGrB0B,EAAQp3E,OAAS,IAEjB7H,KAAKyxD,KAAOwtB,IAWpB5+E,EAAO0yD,UAAU1sD,UAAU+4E,mBAAqB,WAE5C,GAAIlwE,GAAK,EACLI,EAAK,CAKT,IAFAtP,KAAKie,QAEDje,KAAKs9E,UACT,CACI,GAAIjG,GAAQr3E,KAAK41E,MAAMjtE,MAAM,KAEzB3I,MAAK09E,WAAa,EAElB19E,KAAK8Y,OAAO9Y,KAAK09E,WAAarG,EAAMxvE,QAAU7H,KAAKwyD,gBAAkBxyD,KAAKy9E,gBAAmBz9E,KAAKy9E,gBAAgB,GAIlHz9E,KAAK8Y,OAAO9Y,KAAKq/E,kBAAoBr/E,KAAKuyD,eAAiBvyD,KAAKw9E,gBAAkBnG,EAAMxvE,QAAU7H,KAAKwyD,gBAAkBxyD,KAAKy9E,gBAAmBz9E,KAAKy9E,gBAAgB,EAI1K,KAAK,GAAI31E,GAAI,EAAGA,EAAIuvE,EAAMxvE,OAAQC,IAG9BoH,EAAK,EAGDlP,KAAK+wB,QAAU1wB,EAAO0yD,UAAUmrB,YAEhChvE,EAAKlP,KAAK+P,MAASsnE,EAAMvvE,GAAGD,QAAU7H,KAAKuyD,eAAiBvyD,KAAKw9E,gBAE5Dx9E,KAAK+wB,QAAU1wB,EAAO0yD,UAAUorB,eAErCjvE,EAAMlP,KAAK+P,MAAQ,EAAOsnE,EAAMvvE,GAAGD,QAAU7H,KAAKuyD,eAAiBvyD,KAAKw9E,gBAAmB,EAC3FtuE,GAAMlP,KAAKw9E,eAAiB,GAIvB,EAALtuE,IAEAA,EAAK,GAGTlP,KAAKs/E,UAAUjI,EAAMvvE,GAAIoH,EAAII,EAAItP,KAAKw9E,gBAEtCluE,GAAMtP,KAAKwyD,gBAAkBxyD,KAAKy9E,mBAKlCz9E,MAAK09E,WAAa,EAElB19E,KAAK8Y,OAAO9Y,KAAK09E,WAAY19E,KAAKwyD,iBAAiB,GAInDxyD,KAAK8Y,OAAO9Y,KAAK41E,MAAM/tE,QAAU7H,KAAKuyD,eAAiBvyD,KAAKw9E,gBAAiBx9E,KAAKwyD,iBAAiB,GAIvGtjD,EAAK,EAEDlP,KAAK+wB,QAAU1wB,EAAO0yD,UAAUmrB,YAEhChvE,EAAKlP,KAAK+P,MAAS/P,KAAK41E,MAAM/tE,QAAU7H,KAAKuyD,eAAiBvyD,KAAKw9E,gBAE9Dx9E,KAAK+wB,QAAU1wB,EAAO0yD,UAAUorB,eAErCjvE,EAAMlP,KAAK+P,MAAQ,EAAO/P,KAAK41E,MAAM/tE,QAAU7H,KAAKuyD,eAAiBvyD,KAAKw9E,gBAAmB,EAC7FtuE,GAAMlP,KAAKw9E,eAAiB,GAIvB,EAALtuE,IAEAA,EAAK,GAGTlP,KAAKs/E,UAAUt/E,KAAK41E,MAAO1mE,EAAI,EAAGlP,KAAKw9E,eAG3Cx9E,MAAKqvD,gBAAiB,GAe1BhvD,EAAO0yD,UAAU1sD,UAAUi5E,UAAY,SAAUluE,EAAMnL,EAAGwG,EAAG+wE,GAEzD,IAAK,GAAIvuE,GAAI,EAAGA,EAAImC,EAAKvJ,OAAQoH,IAG7B,GAAuB,MAAnBmC,EAAKsrE,OAAOztE,GAEZhJ,GAAKjG,KAAKuyD,eAAiBirB,MAK3B,IAAIx9E,KAAK49E,SAASxsE,EAAKovC,WAAWvxC,KAAO,IAErCjP,KAAKg+E,MAAMttD,MAAQ1wB,KAAK49E,SAASxsE,EAAKovC,WAAWvxC,IACjDjP,KAAK+0E,SAAS/0E,KAAKg+E,MAAO/3E,EAAGwG,GAAG,GAEhCxG,GAAKjG,KAAKuyD,eAAiBirB,EAEvBv3E,EAAIjG,KAAK+P,OAET,OAcpB1P,EAAO0yD,UAAU1sD,UAAUg5E,eAAiB,WAExC,GAAIE,GAAc,CAElB,IAAIv/E,KAAK41E,MAAM/tE,OAAS,EAIpB,IAAK,GAFDwvE,GAAQr3E,KAAK41E,MAAMjtE,MAAM,MAEpBb,EAAI,EAAGA,EAAIuvE,EAAMxvE,OAAQC,IAE1BuvE,EAAMvvE,GAAGD,OAAS03E,IAElBA,EAAclI,EAAMvvE,GAAGD,OAKnC,OAAO03E,IAYXl/E,EAAO0yD,UAAU1sD,UAAUm5E,4BAA8B,SAAUC,GAI/D,IAAK,GAFDC,GAAY,GAEPzwE,EAAI,EAAGA,EAAIjP,KAAK41E,MAAM/tE,OAAQoH,IACvC,CACI,GAAI0wE,GAAQ3/E,KAAK41E,MAAM3mE,GACnB2wE,EAAOD,EAAMn/B,WAAW,IAExBxgD,KAAK49E,SAASgC,IAAS,IAAOH,GAAqB,OAAVE,KAEzCD,EAAYA,EAAU74E,OAAO84E,IAIrC,MAAOD,IAcXr/E,EAAO0yD,UAAU1sD,UAAUw5E,aAAe,SAAU55E,EAAGwG,GAEnD,GAAIzM,KAAKy1C,UAAYxvC,GAAKjG,KAAK01C,UAAYjpC,EAA3C,CAWA,IANA,GAAIqzE,GAAQ75E,EAAIjG,KAAKy1C,QACjBsqC,EAAQtzE,EAAIzM,KAAK01C,QAEjBsqC,EAAShgF,KAAKwa,KAAKsF,MAAMuuC,aAAaruD,KAAKg+E,MAAMjyE,KAAKk0E,YACtDn4E,EAAIk4E,EAAOn4E,OAERC,KAEHk4E,EAAOl4E,GAAG7B,GAAK65E,EACfE,EAAOl4E,GAAG2E,GAAKszE,CAGnB//E,MAAKo/E,uBAQT73E,OAAO2E,eAAe7L,EAAO0yD,UAAU1sD,UAAW,QAE9C2F,IAAK,WAED,MAAOhM,MAAK41E,OAIhB3pE,IAAK,SAAU1C,GAEX,GAAI22E,EAIAA,GAFAlgF,KAAKu9E,cAEKh0E,EAAM42E,cAIN52E,EAGV22E,IAAYlgF,KAAK41E,QAEjB51E,KAAK41E,MAAQsK,EAEblgF,KAAKw/E,4BAA4Bx/E,KAAKs9E,WAEtCt9E,KAAKo/E,yBAWjB73E,OAAO2E,eAAe7L,EAAO0yD,UAAU1sD,UAAW,YAE9C2F,IAAK,WAED,MAAOhM,MAAKg+E,MAAMjjD,UAItB9uB,IAAK,SAAU1C,GAEXvJ,KAAKg+E,MAAMjjD,SAAWxxB,EACtBvJ,KAAKo/E,wBA+Cb/+E,EAAOmxD,KAAO,SAAUh3C,EAAMvU,EAAGwG,EAAGV,EAAK2kB,EAAO3Z,GAE5C/W,KAAK+W,UACL/W,KAAK+W,OAASA,EACd/W,KAAKogF,qBAAsB,EAC3BpgF,KAAKqgF,yBAA2B,KAChCp6E,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTV,EAAMA,GAAO,KACb2kB,EAAQA,GAAS,KAMjB1wB,KAAKkI,KAAO7H,EAAOgC,KAEnByD,KAAK0rD,KAAK1qD,KAAK9G,KAAMK,EAAOi5B,MAAM3zB,QAAS3F,KAAK+W,QAEhD1W,EAAOqmD,UAAUkB,KAAKtnC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK2kB,IAI3DrwB,EAAOmxD,KAAKnrD,UAAYkB,OAAOmZ,OAAO5a,KAAK0rD,KAAKnrD,WAChDhG,EAAOmxD,KAAKnrD,UAAU8B,YAAc9H,EAAOmxD,KAE3CnxD,EAAOqmD,UAAUkB,KAAKC,QAAQ/gD,KAAKzG,EAAOmxD,KAAKnrD,WAC3C,QACA,YACA,WACA,SACA,aACA,OACA,QACA,UACA,gBACA,UACA,WACA,cACA,UACA,cACA,QACA,cACA,aAGJhG,EAAOmxD,KAAKnrD,UAAUwtD,iBAAmBxzD,EAAOqmD,UAAUuB,YAAYjrC,UACtE3c,EAAOmxD,KAAKnrD,UAAUytD,kBAAoBzzD,EAAOqmD,UAAU6G,SAASvwC,UACpE3c,EAAOmxD,KAAKnrD,UAAU0tD,iBAAmB1zD,EAAOqmD,UAAUsG,QAAQhwC,UAClE3c,EAAOmxD,KAAKnrD,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UAQ5D3c,EAAOmxD,KAAKnrD,UAAU2W,UAAY,WAE9B,MAAKhd,MAAK6zD,oBAAuB7zD,KAAK8zD,qBAAwB9zD,KAAK+zD,mBAK5D/zD,KAAKg0D,iBAHD,GAaf3zD,EAAOmxD,KAAKnrD,UAAUkY,OAAS,WAEvBve,KAAKogF,qBAELpgF,KAAKsgF,gBAAgBx5E,KAAK9G,OAgBlCK,EAAOmxD,KAAKnrD,UAAUqZ,MAAQ,SAASzZ,EAAGwG,GAItC,MAFApM,GAAOqmD,UAAUkJ,MAAMvpD,UAAUqZ,MAAM5Y,KAAK9G,KAAMiG,EAAGwG,GAE9CzM,MAUXuH,OAAO2E,eAAe7L,EAAOmxD,KAAKnrD,UAAW,mBAEzC2F,IAAK,WAED,MAAOhM,MAAKugF,kBAIhBt0E,IAAK,SAAU1C,GAEPA,GAA0B,kBAAVA,IAEhBvJ,KAAKogF,qBAAsB,EAC3BpgF,KAAKugF,iBAAmBh3E,IAIxBvJ,KAAKogF,qBAAsB,EAC3BpgF,KAAKugF,iBAAmB,SAapCh5E,OAAO2E,eAAe7L,EAAOmxD,KAAKnrD,UAAW,YAEzC2F,IAAK,WAKD,IAAK,GAFD0jB,GAAOpf,EAAIC,EAAIC,EAAIC,EAAIV,EAAOC,EAAQ0D,EADtC4vD,KAGKx7D,EAAI,EAAGA,EAAI9H,KAAK+W,OAAOlP,OAAQC,IAEpC4nB,EAAY,EAAJ5nB,EAERwI,EAAKtQ,KAAK00E,SAAShlD,GAAS1vB,KAAK6U,MAAM5O,EACvCsK,EAAKvQ,KAAK00E,SAAShlD,EAAQ,GAAK1vB,KAAK6U,MAAMpI,EAC3C+D,EAAKxQ,KAAK00E,SAAShlD,EAAQ,GAAK1vB,KAAK6U,MAAM5O,EAC3CwK,EAAKzQ,KAAK00E,SAAShlD,EAAQ,GAAK1vB,KAAK6U,MAAMpI,EAE3CsD,EAAQ1P,EAAO0F,KAAKy6E,WAAWlwE,EAAIE,GACnCR,EAAS3P,EAAO0F,KAAKy6E,WAAWjwE,EAAIE,GAEpCH,GAAMtQ,KAAKya,MAAMxU,EACjBsK,GAAMvQ,KAAKya,MAAMhO,EACjBiH,EAAO,GAAIrT,GAAOkN,UAAU+C,EAAIC,EAAIR,EAAOC,GAC3CszD,EAAS1wD,KAAKc,EAGlB,OAAO4vD,MA+DfjjE,EAAO6hC,WAAa,SAAU1nB,EAAMvU,EAAGwG,EAAGsD,EAAOC,EAAQjE,EAAK2kB,GAE1DzqB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACTsD,EAAQA,GAAS,IACjBC,EAASA,GAAU,IACnBjE,EAAMA,GAAO,KACb2kB,EAAQA,GAAS,KAMjB1wB,KAAKkI,KAAO7H,EAAOiB,WAMnBtB,KAAK+tB,YAAc1tB,EAAOY,OAM1BjB,KAAKygF,QAAU,GAAIpgF,GAAO2M,KAE1B,IAAI0zE,GAAMlmE,EAAKsF,MAAM+uC,SAAS,aAAa,EAE3C/oD,MAAK66E,aAAa75E,KAAK9G,KAAM,GAAI8F,MAAK4oD,QAAQgyB,EAAI5xB,MAAO/+C,EAAOC,GAEhE3P,EAAOqmD,UAAUkB,KAAKtnC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK2kB,IAI3DrwB,EAAO6hC,WAAW77B,UAAYkB,OAAOmZ,OAAO5a,KAAK66E,aAAat6E,WAC9DhG,EAAO6hC,WAAW77B,UAAU8B,YAAc9H,EAAO6hC,WAEjD7hC,EAAOqmD,UAAUkB,KAAKC,QAAQ/gD,KAAKzG,EAAO6hC,WAAW77B,WACjD,QACA,YACA,WACA,SACA,aACA,UACA,gBACA,SACA,WACA,eACA,UACA,WACA,cACA,UACA,cACA,QACA,aAGJhG,EAAO6hC,WAAW77B,UAAUwtD,iBAAmBxzD,EAAOqmD,UAAUuB,YAAYjrC,UAC5E3c,EAAO6hC,WAAW77B,UAAUytD,kBAAoBzzD,EAAOqmD,UAAU6G,SAASvwC,UAC1E3c,EAAO6hC,WAAW77B,UAAU0tD,iBAAmB1zD,EAAOqmD,UAAUsG,QAAQhwC,UACxE3c,EAAO6hC,WAAW77B,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UAQlE3c,EAAO6hC,WAAW77B,UAAU2W,UAAY,WAYpC,MAVuB,KAAnBhd,KAAKygF,QAAQx6E,IAEbjG,KAAK4gF,aAAa36E,GAAKjG,KAAKygF,QAAQx6E,EAAIjG,KAAKwa,KAAKmE,KAAKkiE,gBAGpC,IAAnB7gF,KAAKygF,QAAQh0E,IAEbzM,KAAK4gF,aAAan0E,GAAKzM,KAAKygF,QAAQh0E,EAAIzM,KAAKwa,KAAKmE,KAAKkiE,gBAGtD7gF,KAAK6zD,oBAAuB7zD,KAAK8zD,qBAAwB9zD,KAAK+zD,mBAK5D/zD,KAAKg0D,iBAHD,GAkBf3zD,EAAO6hC,WAAW77B,UAAUy6E,WAAa,SAAS76E,EAAGwG,GAEjDzM,KAAKygF,QAAQx0E,IAAIhG,EAAGwG,IAUxBpM,EAAO6hC,WAAW77B,UAAU06E,WAAa,WAErC/gF,KAAKygF,QAAQx0E,IAAI,EAAG,IAYxB5L,EAAO6hC,WAAW77B,UAAUyd,QAAU,SAASwS,GAE3Cj2B,EAAOqmD,UAAU2C,QAAQhjD,UAAUyd,QAAQhd,KAAK9G,KAAMs2B,GAEtDxwB,KAAK66E,aAAat6E,UAAUyd,QAAQhd,KAAK9G,OAe7CK,EAAO6hC,WAAW77B,UAAUqZ,MAAQ,SAASzZ,EAAGwG,GAO5C,MALApM,GAAOqmD,UAAUkJ,MAAMvpD,UAAUqZ,MAAM5Y,KAAK9G,KAAMiG,EAAGwG,GAErDzM,KAAK4gF,aAAa36E,EAAI,EACtBjG,KAAK4gF,aAAan0E,EAAI,EAEfzM,MAiCXK,EAAOu3B,OAAS,WAOZ53B,KAAKghF,cAAgB,EAOrBhhF,KAAKihF,aAAc,EAQnBjhF,KAAKkhF,SAAU,EAMflhF,KAAKu8B,KAAM,EAMXv8B,KAAKmhF,WAAa,EAMlBnhF,KAAK66B,UAAW,EAMhB76B,KAAK2sB,aAAc,EAMnB3sB,KAAKs8B,SAAU,EAMft8B,KAAKohF,MAAO,EAMZphF,KAAKqhF,YAAa,EAMlBrhF,KAAKshF,UAAW,EAMhBthF,KAAKuhF,QAAS,EAMdvhF,KAAKwhF,WAAY,EAMjBxhF,KAAKmkC,SAAU,EAMfnkC,KAAKyhF,UAAW,EAMhBzhF,KAAK0hF,OAAQ,EAMb1hF,KAAK2hF,OAAQ,EAMb3hF,KAAK4hF,SAAU,EAMf5hF,KAAK6hF,cAAe,EAQpB7hF,KAAKsrB,QAAS,EAMdtrB,KAAK8hF,kBAAoB,KAMzB9hF,KAAKw6B,OAAQ,EAMbx6B,KAAK+hF,MAAO,EAMZ/hF,KAAKgiF,YAAa,EAMlBhiF,KAAKiiF,cAAe,EAMpBjiF,KAAKkiF,QAAS,EAMdliF,KAAKmiF,OAAQ,EAMbniF,KAAKmjC,aAAc,EAMnBnjC,KAAKoiF,YAAa,EAMlBpiF,KAAKqiF,WAAY,EAMjBriF,KAAKsiF,cAAe,EAMpBtiF,KAAKuiF,YAAa,EAQlBviF,KAAK2+B,OAAQ,EAMb3+B,KAAK4+B,WAAY,EAOjB5+B,KAAK8kC,WAAa,KAQlB9kC,KAAKwiF,OAAQ,EAMbxiF,KAAKu6B,QAAS,EAMdv6B,KAAKyiF,cAAgB,EAMrBziF,KAAK0iF,UAAW,EAMhB1iF,KAAK2iF,SAAU,EAMf3iF,KAAK4iF,eAAiB,EAMtB5iF,KAAK6iF,IAAK,EAMV7iF,KAAK8iF,UAAY,EAMjB9iF,KAAK+iF,SAAU,EAMf/iF,KAAKgjF,eAAiB,EAMtBhjF,KAAKijF,MAAO,EAMZjjF,KAAKkjF,cAAe,EAMpBljF,KAAKmjF,QAAS,EAMdnjF,KAAKojF,OAAQ,EAMbpjF,KAAKqjF,QAAS,EAMdrjF,KAAKsjF,cAAgB,EAMrBtjF,KAAKujF,QAAS,EAMdvjF,KAAKwjF,MAAO,EAQZxjF,KAAKyjF,WAAY,EAMjBzjF,KAAKs6B,UAAW,EAMhBt6B,KAAK0jF,KAAM,EAMX1jF,KAAK2jF,MAAO,EAMZ3jF,KAAK4jF,KAAM,EAMX5jF,KAAK6jF,KAAM,EAOX7jF,KAAK8jF,KAAM,EAMX9jF,KAAK+jF,MAAO,EAMZ/jF,KAAKgkF,OAAQ,EAQbhkF,KAAKikF,UAAW,EAMhBjkF,KAAKkkF,WAAY,EAMjBlkF,KAAKmkF,UAAW,EAMhBnkF,KAAKokF,WAAY,EAMjBpkF,KAAKqkF,UAAW,EAMhBrkF,KAAKskF,UAAW,EAQhBtkF,KAAKukF,QAAS,EAMdvkF,KAAKwkF,SAAU,EAMfxkF,KAAKykF,MAAO,EAQZzkF,KAAK0kF,WAAa,EAMlB1kF,KAAK2kF,cAAe,EAMpB3kF,KAAKm7D,eAAgB,EAMrBn7D,KAAK4kF,cAAe,EAMpB5kF,KAAK6kF,YAAa,EAMlB7kF,KAAK8kF,kBAAoB,GAMzB9kF,KAAK+kF,iBAAmB,GAMxB/kF,KAAKglF,oBAAqB,GAM9B3kF,EAAOu3B,OAAS,GAAIv3B,GAAOu3B,OAc3Bv3B,EAAOu3B,OAAOqtD,cAAgB,GAAI5kF,GAAO+a,OAgBzC/a,EAAOu3B,OAAOoB,UAAY,SAAU3F,EAAUhP,EAAS6gE,GAEnD,GAAIC,GAAanlF,KAAKolF,WAEtB,IAAIplF,KAAKghF,gBAAkBmE,EAEvB9xD,EAASvsB,KAAKud,EAASrkB,UAEtB,IAAImlF,EAAWE,UAAYH,EAE5BC,EAAWG,OAASH,EAAWG,WAC/BH,EAAWG,OAAO1yE,MAAMygB,EAAUhP,QAGtC,CACI8gE,EAAWE,SAAWF,EAAW7+E,KAAKtG,MACtCmlF,EAAWG,OAASH,EAAWG,WAC/BH,EAAWG,OAAO1yE,MAAMygB,EAAUhP,GAElC,IAAIiY,GAAoC,mBAAnBv0B,QAAOu0B,QACxBzB,EAAWkb,UAAsB,UAET,cAAxBjqB,SAASy5D,YAAqD,gBAAxBz5D,SAASy5D,WAG/Cx9E,OAAOy9E,WAAWL,EAAWE,SAAU,GAElC/oD,IAAYzB,EAIjB/O,SAASO,iBAAiB,cAAe84D,EAAWE,UAAU,IAI9Dv5D,SAASO,iBAAiB,mBAAoB84D,EAAWE,UAAU,GACnEt9E,OAAOskB,iBAAiB,OAAQ84D,EAAWE,UAAU,MAajEhlF,EAAOu3B,OAAOwtD,YAAc,WAExB,GAAID,GAAanlF,KAAKolF,WAEtB,IAAKt5D,SAAS6D,MAIT,IAAK3vB,KAAKghF,cACf,CACIhhF,KAAKghF,cAAgBp5D,KAAKmR,MAE1BjN,SAASyB,oBAAoB,cAAe43D,EAAWE,UACvDv5D,SAASyB,oBAAoB,mBAAoB43D,EAAWE,UAC5Dt9E,OAAOwlB,oBAAoB,OAAQ43D,EAAWE,UAE9CrlF,KAAKylF,cACLzlF,KAAKihF,aAAc,EAEnBjhF,KAAKilF,cAAcpmE,SAAS7e,KAG5B,KADA,GAAI0lF,GACIA,EAAOP,EAAWG,OAAOt6C,SACjC,CACI,GAAI3X,GAAWqyD,EAAK,GAChBrhE,EAAUqhE,EAAK,EACnBryD,GAASvsB,KAAKud,EAASrkB,MAI3BA,KAAKolF,YAAc,KACnBplF,KAAKylF,YAAc,KACnBzlF,KAAKilF,cAAgB,UA1BrBl9E,QAAOy9E,WAAWL,EAAWE,SAAU,KAsC/ChlF,EAAOu3B,OAAO6tD,YAAc,WAOxB,QAASE,KAEL,GAAInyE,GAAKuiC,UAAUG,SAEf,oBAAmBumC,KAAKjpE,GAExBkZ,EAAOk5D,MAAO,EAET,SAASnJ,KAAKjpE,IAAO,kBAAkBipE,KAAKjpE,IAAO,sBAAsBipE,KAAKjpE,GAEnFkZ,EAAOm5D,QAAS,EAIX,UAAUpJ,KAAKjpE,GAEpBkZ,EAAOyX,SAAU,EAEZ,OAAOs4C,KAAKjpE,GAEjBkZ,EAAO+0D,UAAW,EAEb,kBAAkBhF,KAAKjpE,IAE5BkZ,EAAO6P,KAAM,EACZwZ,UAAoB,WAAE0Q,MAAM,YAC7B/5B,EAAOy0D,WAAa92E,SAASy7E,OAAOC,GAAI,KAEnC,QAAQtJ,KAAKjpE,GAElBkZ,EAAOg1D,OAAQ,EAEV,SAASjF,KAAKjpE,GAEnBkZ,EAAOi1D,OAAQ,EAEV,UAAUlF,KAAKjpE,KAEpBkZ,EAAOk1D,SAAU,IAGjB,iBAAiBnF,KAAKjpE,IAAO,YAAYipE,KAAKjpE,MAE9CkZ,EAAOyX,SAAU,EACjBzX,EAAO6P,KAAM,EACb7P,EAAOi1D,OAAQ,EACfj1D,EAAOk1D,SAAU,EACjBl1D,EAAOm1D,cAAe,EAG1B,IAAI2B,GAAO,OAAO/G,KAAKjpE,IAEnBkZ,EAAOk1D,SAAWl1D,EAAOi1D,OAAUj1D,EAAOg1D,QAAU8B,GAAS92D,EAAO+0D,YAEpE/0D,EAAOw0D,SAAU,IAIjBx0D,EAAOm1D,cAAkB,cAAcpF,KAAKjpE,IAAS,SAASipE,KAAKjpE,MAEnEkZ,EAAOw0D,SAAU,GAQzB,QAAS8E,KAELt5D,EAAOpB,SAAWvjB,OAAiC,0BAAK2kB,EAAOmO,QAE/D,KACInO,EAAOu1D,eAAiBA,aAAagE,QACvC,MAAOC,GACLx5D,EAAOu1D,cAAe,EAG1Bv1D,EAAOq1D,QAASh6E,OAAa,MAAOA,OAAmB,YAAOA,OAAiB,UAAOA,OAAa,MACnG2kB,EAAOs1D,aAAej6E,OAA0B,kBAEhD2kB,EAAO8N,MAAQ,WAAgB,IAAM,GAAIlP,GAASQ,SAASyvD,cAAe,SAAyE,OAA7BjwD,GAAOwP,cAAe,IAAiB/yB,OAAOo+E,wBAA2B76D,EAAOiV,WAAY,UAAajV,EAAOiV,WAAY,uBAA4B,MAAOt1B,GAAM,OAAO,MAClSyhB,EAAO8N,QAAU9N,EAAO8N,MAExB9N,EAAOw1D,SAAWn6E,OAAe,OAEjC2kB,EAAOyW,YAAc,sBAAwBrX,WAAY,yBAA2BA,WAAY,4BAA8BA,UAE9HY,EAAO61D,WAAsC,eAAxBz2D,SAASs6D,WAE9BrwC,UAAUusC,aAAevsC,UAAUusC,cAAgBvsC,UAAUswC,oBAAsBtwC,UAAUuwC,iBAAmBvwC,UAAUwwC,gBAAkBxwC,UAAUywC,cAEtJz+E,OAAO0+E,IAAM1+E,OAAO0+E,KAAO1+E,OAAO2+E,WAAa3+E,OAAO4+E,QAAU5+E,OAAO6+E,MAEvEl6D,EAAO41D,aAAe51D,EAAO41D,gBAAkBvsC,UAAUusC,gBAAkBv6E,OAAO0+E,IAG9E/5D,EAAOi2D,SAAWj2D,EAAOk2D,eAAiB,KAE1Cl2D,EAAO41D,cAAe,IAOrB51D,EAAO6P,MAAQ7P,EAAOm2D,IAAMn2D,EAAOi2D,SAAWj2D,EAAO6N,UAEtD7N,EAAOo1D,mBAAoB,IAI3Bp1D,EAAO22D,QAAU32D,EAAOw2D,gBAExBx2D,EAAOo1D,mBAAoB,GAQnC,QAAS+E,MAED,gBAAkB/6D,UAASg7D,iBAAoB/+E,OAAOguC,UAAUgxC,gBAAkBh/E,OAAOguC,UAAUgxC,gBAAkB,KAErHr6D,EAAOiS,OAAQ,IAGf52B,OAAOguC,UAAUixC,kBAAoBj/E,OAAOguC,UAAUkxC,kBAEtDv6D,EAAOkS,WAAY,GAGlBlS,EAAOmO,WAGJ,WAAa9yB,SAAW2kB,EAAOm2D,IAAM,cAAgB96E,QAGrD2kB,EAAOoY,WAAa,QAEf,gBAAkB/8B,QAGvB2kB,EAAOoY,WAAa,aAEfpY,EAAOi2D,SAAW,oBAAsB56E,UAG7C2kB,EAAOoY,WAAa,mBAShC,QAASoiD,KAeL,IAAK,GAbDC,IACA,oBACA,oBACA,0BACA,0BACA,sBACA,sBACA,uBACA,wBAGA7hD,EAAUxZ,SAASyvD,cAAc,OAE5BzzE,EAAI,EAAGA,EAAIq/E,EAAGt/E,OAAQC,IAE3B,GAAIw9B,EAAQ6hD,EAAGr/E,IACf,CACI4kB,EAAOm4D,YAAa,EACpBn4D,EAAOo4D,kBAAoBqC,EAAGr/E,EAC9B,OAIR,GAAIs/E,IACA,mBACA,iBACA,yBACA,uBACA,qBACA,mBACA,sBACA,oBAGJ,IAAI16D,EAAOm4D,WAEP,IAAK,GAAI/8E,GAAI,EAAGA,EAAIs/E,EAAIv/E,OAAQC,IAE5B,GAAIgkB,SAASs7D,EAAIt/E,IACjB,CACI4kB,EAAOq4D,iBAAmBqC,EAAIt/E,EAC9B,OAMRC,OAAgB,SAAKs/E,QAA8B,uBAEnD36D,EAAOs4D,oBAAqB,GAQpC,QAASsC,KAEL,GAAI9zE,GAAKuiC,UAAUG,SA4FnB,IA1FI,QAAQumC,KAAKjpE,GAEbkZ,EAAO81D,OAAQ,EAEV,YAAY/F,KAAKjpE,GAEtBkZ,EAAOu2D,MAAO,EAET,gBAAgBxG,KAAKjpE,KAAQkZ,EAAOm1D,cAEzCn1D,EAAO6N,QAAS,EAChB7N,EAAO+1D,cAAgBp4E,SAASy7E,OAAOC,GAAI,KAEtC,WAAWtJ,KAAKjpE,GAErBkZ,EAAOg2D,UAAW,EAEb,kBAAkBjG,KAAKjpE,IAE5BkZ,EAAOi2D,SAAU,EACjBj2D,EAAOk2D,eAAiBv4E,SAASy7E,OAAOC,GAAI,KAEvC,cAActJ,KAAKjpE,IAAOkZ,EAAO6P,IAEtC7P,EAAOw2D,cAAe,EAEjB,mBAAmBzG,KAAKjpE,IAE7BkZ,EAAOm2D,IAAK,EACZn2D,EAAOo2D,UAAYz4E,SAASy7E,OAAOC,GAAI,KAElC,SAAStJ,KAAKjpE,GAEnBkZ,EAAOy2D,QAAS,EAEX,QAAQ1G,KAAKjpE,GAElBkZ,EAAO02D,OAAQ,EAEV,gBAAgB3G,KAAKjpE,KAAQkZ,EAAOm1D,cAEzCn1D,EAAO22D,QAAS,EAEZ,mBAAmB5G,KAAKjpE,KAExBkZ,EAAO42D,cAAgBj5E,SAASy7E,OAAOC,GAAI,MAG1C,uCAAuCtJ,KAAKjpE,KAEjDkZ,EAAOm2D,IAAK,EACZn2D,EAAOq2D,SAAU,EACjBr2D,EAAOs2D,eAAiB34E,SAASy7E,OAAOC,GAAI,IAC5Cr5D,EAAOo2D,UAAYz4E,SAASy7E,OAAOyB,GAAI,KAIvC,OAAO9K,KAAKjpE,KAEZkZ,EAAO82D,MAAO,GAIdztC,UAAsB,aAEtBrpB,EAAO62D,QAAS,GAGU,mBAAnBx7E,QAAOu0B,UAEd5P,EAAO4P,SAAU,GAGE,mBAAZkrD,UAA8C,mBAAZC,WAEzC/6D,EAAO00D,MAAO,GAGd10D,EAAO00D,MAAoC,gBAArBoG,SAAQE,WAE9Bh7D,EAAO20D,aAAemG,QAAQE,SAAS,eAEvCh7D,EAAO40D,WAAakG,QAAQE,SAASpG,UAGrCvrC,UAAsB,aAEtBrpB,EAAOmO,UAAW,GAGlBnO,EAAOmO,SAEP,IACInO,EAAOC,YAAmC,mBAAbC,UAEjC,MAAMs5D,GAEFx5D,EAAOC,aAAc,EAIA,mBAAlB5kB,QAAOw5E,SAEd70D,EAAO60D,QAAS,GAGhB,YAAY9E,KAAKjpE,KAEjBkZ,EAAO80D,WAAY,GAQ3B,QAASmG,KAEL,GAAIC,GAAe97D,SAASyvD,cAAc,SACtCjqE,GAAS,CAEb,MACQA,IAAWs2E,EAAaC,eAEpBD,EAAaC,YAAY,8BAA8Bj8E,QAAQ,OAAQ,MAEvE8gB,EAAOu3D,UAAW,GAGlB2D,EAAaC,YAAY,mCAAmCj8E,QAAQ,OAAQ,MAG5E8gB,EAAOw3D,WAAY,EACnBx3D,EAAOy3D,UAAW,GAGlByD,EAAaC,YAAY,oCAAoCj8E,QAAQ,OAAQ,MAE7E8gB,EAAO03D,WAAY,GAGnBwD,EAAaC,YAAY,4BAA4Bj8E,QAAQ,OAAQ,MAErE8gB,EAAO23D,UAAW,GAGlBuD,EAAaC,YAAY,+CAA+Cj8E,QAAQ,OAAQ,MAExF8gB,EAAO43D,UAAW,IAG5B,MAAOr5E,KAMb,QAAS68E,KAELp7D,EAAO+2D,YAAe17E,OAAe,MACrC2kB,EAAO4N,YAAcvyB,OAAqB,eAAKA,OAA2B,mBAC1E,IAAIggF,GAAej8D,SAASyvD,cAAc,SACtCjqE,GAAS,CAEb,KACI,IAAIA,IAAWy2E,EAAaF,eAEpBE,EAAaF,YAAY,8BAA8Bj8E,QAAQ,OAAQ,MAEvE8gB,EAAOg3D,KAAM,IAGbqE,EAAaF,YAAY,4BAA4Bj8E,QAAQ,OAAQ,KAAOm8E,EAAaF,YAAY,eAAej8E,QAAQ,OAAQ,OAEpI8gB,EAAOi3D,MAAO,GAGdoE,EAAaF,YAAY,eAAej8E,QAAQ,OAAQ,MAExD8gB,EAAOk3D,KAAM,GAMbmE,EAAaF,YAAY,yBAAyBj8E,QAAQ,OAAQ,MAElE8gB,EAAOm3D,KAAM,IAGbkE,EAAaF,YAAY,iBAAmBE,EAAaF,YAAY,cAAcj8E,QAAQ,OAAQ,OAEnG8gB,EAAOo3D,KAAM,GAGbiE,EAAaF,YAAY,+BAA+Bj8E,QAAQ,OAAQ,MAExE8gB,EAAOq3D,MAAO,GAG0C,KAAxDgE,EAAaF,YAAY,4BAEzB,GAAIn7D,EAAOu2D,KAEPv2D,EAAOs3D,OAAQ,MAEd,IAAIt3D,EAAO22D,QAAU32D,EAAO42D,eAAiB,GAE1C,uBAAuB7G,KAAK1mC,UAAUG,WAC1C,CACI,GAAI8xC,GAAQ39E,SAASy7E,OAAOC,GAAI,IAC5BkC,EAAQ59E,SAASy7E,OAAOoC,GAAI,KAEjB,KAAVF,GAAgBC,GAAS,IAAOD,EAAQ,MAEzCt7D,EAAOs3D,OAAQ,IAMrC,MAAO/4E,KAQb,QAASk9E,KAELz7D,EAAOg4D,WAAa38E,OAAyB,kBAAK,EAClD2kB,EAAO63D,OAAgE,IAAvDxuC,UAAUG,UAAUtL,cAAcva,QAAQ,UAC1D3D,EAAO83D,QAAgC,GAArB93D,EAAOg4D,YAAmBh4D,EAAO63D,OACnD73D,EAAO+3D,KAA4D,IAArD1uC,UAAUG,UAAUtL,cAAcva,QAAQ,QAE/B,mBAAd+3D,WAEP17D,EAAO01D,YAAa,EAIpB11D,EAAO01D,YAAa,EAGG,mBAAhBvqB,cAAqD,mBAAfwwB,aAAqD,mBAAhBrgF,eAElF0kB,EAAOi4D,aAAe2D,IACtB57D,EAAOyuC,cAAgBzuC,EAAOi4D,cAGlCj4D,EAAOk4D,aAAuC,mBAAhB/sB,cAA4D,mBAAtB0wB,oBAA2D,mBAAfC,aAAsD,OAAxB97D,EAAOi4D,cAAyB8D,IAE9K1yC,UAAU2yC,QAAU3yC,UAAU2yC,SAAW3yC,UAAU4yC,eAAiB5yC,UAAU6yC,YAAc7yC,UAAU8yC,UAElG9yC,UAAU2yC,UAEVh8D,EAAO21D,WAAY,GAU3B,QAASiG,KAEL,GAAI75E,GAAI,GAAIopD,aAAY,GACpBhpD,EAAI,GAAIw5E,YAAW55E,GACnBQ,EAAI,GAAIjH,aAAYyG,EAOxB,OALAI,GAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IAEK,YAARI,EAAE,IAEK,EAGC,YAARA,EAAE,IAEK,EAKA,KAUf,QAASw5E,KAEL,GAA0B/+E,SAAtB6+E,kBAEA,OAAO,CAGX,IAAIO,GAAOhjF,KAAKw6B,WAAW5f,OAAO1gB,KAAM,EAAG,GACvCs3D,EAAMwxB,EAAKvoD,WAAW,KAE1B,KAAK+2B,EAED,OAAO,CAGX,IAAIluC,GAAQkuC,EAAIyxB,gBAAgB,EAAG,EAInC,OAFAjjF,MAAKw6B,WAAWxd,OAAO9iB,MAEhBopB,EAAMiZ,eAAgBkmD,mBAOjC,QAASS,KAEL,GACIC,GADAC,EAAKp9D,SAASyvD,cAAc,KAE5B4N,GACAC,gBAAmB,oBACnBC,WAAc,eACdC,YAAe,gBACfC,aAAgB,iBAChBnjB,UAAa,YAIjBt6C,UAAS6D,KAAK65D,aAAaN,EAAI,KAE/B,KAAK,GAAIvhF,KAAKwhF,GAEUz/E,SAAhBw/E,EAAGhsE,MAAMvV,KAETuhF,EAAGhsE,MAAMvV,GAAK,2BACdshF,EAAQlhF,OAAO0hF,iBAAiBP,GAAIQ,iBAAiBP,EAAWxhF,IAIxEmkB,UAAS6D,KAAK0C,YAAY62D,GAC1Bx8D,EAAOy1D,MAAmBz4E,SAAVu/E,GAAuBA,EAAMphF,OAAS,GAAe,SAAVohF,EAlkB/D,GAAIv8D,GAAS1sB,IAukBb2lF,KACA2B,IACAQ,IACAH,IACAqB,IACAb,IACAnC,IACAkB,IACAL,KAYJxmF,EAAOu3B,OAAO+xD,aAAe,SAAUzhF,GAEnC,MAAa,QAATA,GAAkBlI,KAAK4jF,KAEhB,EAEO,QAAT17E,IAAmBlI,KAAK0jF,KAAO1jF,KAAK2jF,OAElC,EAEO,QAATz7E,GAAkBlI,KAAK8jF,KAErB,EAEO,SAAT57E,GAAmBlI,KAAK2jF,MAEtB,EAEO,QAATz7E,GAAkBlI,KAAK6jF,KAErB,EAEO,SAAT37E,GAAmBlI,KAAK+jF,MAEtB,IAEO,QAAT77E,IAAkBlI,KAAKgkF,QAiBpC3jF,EAAOu3B,OAAOgyD,aAAe,SAAU1hF,GAEnC,MAAa,SAATA,IAAoBlI,KAAKokF,WAAapkF,KAAKqkF,WAEpC,EAEO,QAATn8E,IAAmBlI,KAAKmkF,UAAYnkF,KAAKkkF,YAEvC,EAEQ,QAATh8E,GAA2B,QAATA,IAAmBlI,KAAKikF,WAIlC,SAAT/7E,IAAmBlI,KAAKskF,WAFtB,GAmBfjkF,EAAOu3B,OAAOiyD,cAAgB,WAE1B,MAAI9hF,QAAOK,SAAWL,OAAOK,QAAiB,SAEnC,EAGPL,OAAOK,UAEPA,QAAQ0hF,UACR1hF,QAAQ2hF,aAEJ3hF,QAAQ6V,OAER7V,QAAQ6V,QAGR7V,QAAkB,UAEXA,QAAkB,SAAEP,OAAS,GAIrC,GAgBXxH,EAAOu3B,OAAOoyD,sBAAwB,WAElC,GAAIC,GAAUliF,OAAOguC,UAAUG,UAAUuQ,MAAM,iCAC/C,OAAOwjC,IAAWA,EAAQ,GAAK,KAiBnC5pF,EAAOkrB,QAaH7K,OAAQ,SAAU8I,EAAQzZ,EAAOC,EAAQ2E,EAAI0iD,GAEzCtnD,EAAQA,GAAS,IACjBC,EAASA,GAAU,GAEnB,IAAIsb,GAAS,EAAaQ,SAASyvD,cAAc,UAAYz1E,KAAKw6B,WAAW5f,OAAO8I,EAAQzZ,EAAOC,EAWnG,OATkB,gBAAP2E,IAA0B,KAAPA,IAE1B2W,EAAO3W,GAAKA,GAGhB2W,EAAOvb,MAAQA,EACfub,EAAOtb,OAASA,EAChBsb,EAAOpO,MAAMgtE,QAAU,QAEhB5+D,GAYXH,mBAAoB,SAAUG,EAAQtN,GAMlC,MAJAA,GAAQA,GAAS,aAEjBsN,EAAOpO,MAAMm5D,gBAAkBr4D,EAExBsN,GAYXG,eAAgB,SAAUH,EAAQ/hB,GAQ9B,MANAA,GAAQA,GAAS,OAEjB+hB,EAAOpO,MAAMitE,cAAgB5gF,EAC7B+hB,EAAOpO,MAAM,mBAAqB3T,EAClC+hB,EAAOpO,MAAM,gBAAkB3T,EAExB+hB,GAYXE,cAAe,SAAUF,EAAQ/hB,GAY7B,MAVAA,GAAQA,GAAS,OAEjB+hB,EAAOpO,MAAM,yBAA2B3T,EACxC+hB,EAAOpO,MAAM,uBAAyB3T,EACtC+hB,EAAOpO,MAAM,sBAAwB3T,EACrC+hB,EAAOpO,MAAM,oBAAsB3T,EACnC+hB,EAAOpO,MAAM,mBAAqB3T,EAClC+hB,EAAOpO,MAAM,eAAiB3T,EAC9B+hB,EAAOpO,MAAM,+BAAiC,mBAEvCoO,GAcX0P,SAAU,SAAU1P,EAAQ9B,EAAQ4gE,GAEhC,GAAIpjF,EA+BJ,OA7BuB0C,UAAnB0gF,IAAgCA,GAAiB,GAEjD5gE,IAEsB,gBAAXA,GAGPxiB,EAAS8kB,SAASu+D,eAAe7gE,GAEV,gBAAXA,IAA2C,IAApBA,EAAOze,WAG1C/D,EAASwiB,IAKZxiB,IAEDA,EAAS8kB,SAAS6D,MAGlBy6D,GAAkBpjF,EAAOkW,QAEzBlW,EAAOkW,MAAMotE,SAAW,UAG5BtjF,EAAOujF,YAAYj/D,GAEZA,GAUX4Q,cAAe,SAAU5Q,GAEjBA,EAAOk/D,YAEPl/D,EAAOk/D,WAAWn4D,YAAY/G,IAkBtC/G,aAAc,SAAUF,EAASi8C,EAAYC,EAAY3E,EAAQC,EAAQ2E,EAAOC,GAI5E,MAFAp8C,GAAQE,aAAaq3C,EAAQ4E,EAAOC,EAAO5E,EAAQyE,EAAYC,GAExDl8C,GAgBX87C,oBAAqB,SAAU97C,EAAS9a,GAEpC,GAAIkN,GAAIpW,EAAOkrB,OAAOksC,mBAAmBpzC,EAOzC,OALI5N,KAEA4N,EAAQ5N,GAAKlN,GAGV8a,GAWXozC,mBAAoB,SAAUpzC,GAE1B,GAAIomE,IAAW,IAAK,UAAW,MAAO,OAAQ,KAE9C,KAAK,GAAIC,KAAUD,GACnB,CACI,GAAIh0E,GAAIg0E,EAAOC,GAAU,sBAEzB,IAAIj0E,IAAK4N,GAEL,MAAO5N,GAIf,MAAO,OAWXypD,oBAAqB,SAAU77C,GAE3B,GAAI5N,GAAIpW,EAAOkrB,OAAOksC,mBAAmBpzC,EAEzC,OAAI5N,GAEO4N,EAAQ5N,GAFnB,QAeJk0E,uBAAwB,SAAUr/D,GAI9B,IAAK,GAFDs/D,IAAU,gBAAiB,cAAe,mBAAoB,4BAA6B,oBAAqB,aAE3G9iF,EAAI,EAAGA,EAAI8iF,EAAM/iF,OAAQC,IAE9BwjB,EAAOpO,MAAM,mBAAqB0tE,EAAM9iF,EAK5C,OAFAwjB,GAAOpO,MAAM2tE,oBAAsB,mBAE5Bv/D,GAYXw/D,yBAA0B,SAAUx/D,GAKhC,MAHAA,GAAOpO,MAAM,mBAAqB,OAClCoO,EAAOpO,MAAM2tE,oBAAsB,UAE5Bv/D,IAoBfjrB,EAAO45B,sBAAwB,SAASzf,EAAMuwE,GAElBrhF,SAApBqhF,IAAiCA,GAAkB,GAKvD/qF,KAAKwa,KAAOA,EAMZxa,KAAKy3B,WAAY,EAKjBz3B,KAAK+qF,gBAAkBA,CASvB,KAAK,GAPDC,IACA,KACA,MACA,SACA,KAGK/kF,EAAI,EAAGA,EAAI+kF,EAAQnjF,SAAWE,OAAOkjF,sBAAuBhlF,IAEjE8B,OAAOkjF,sBAAwBljF,OAAOijF,EAAQ/kF,GAAK,yBACnD8B,OAAOmjF,qBAAuBnjF,OAAOijF,EAAQ/kF,GAAK,uBAOtDjG,MAAKmrF,eAAgB,EAMrBnrF,KAAKorF,QAAU,KAMfprF,KAAKqrF,WAAa,MAItBhrF,EAAO45B,sBAAsB5zB,WAMzBqK,MAAO,WAEH1Q,KAAKy3B,WAAY,CAEjB,IAAIhR,GAAQzmB,MAEP+H,OAAOkjF,uBAAyBjrF,KAAK+qF,iBAEtC/qF,KAAKmrF,eAAgB,EAErBnrF,KAAKorF,QAAU,WACX,MAAO3kE,GAAM6kE,oBAGjBtrF,KAAKqrF,WAAatjF,OAAOy9E,WAAWxlF,KAAKorF,QAAS,KAIlDprF,KAAKmrF,eAAgB,EAErBnrF,KAAKorF,QAAU,SAAUzsE,GACrB,MAAO8H,GAAM8kE,UAAU5sE,IAG3B3e,KAAKqrF,WAAatjF,OAAOkjF,sBAAsBjrF,KAAKorF,WAS5DG,UAAW,SAAUC,GAEbxrF,KAAKy3B,YAGLz3B,KAAKwa,KAAK+D,OAAOxY,KAAKI,MAAMqlF,IAE5BxrF,KAAKqrF,WAAatjF,OAAOkjF,sBAAsBjrF,KAAKorF,WAS5DE,iBAAkB,WAEVtrF,KAAKy3B,YAELz3B,KAAKwa,KAAK+D,OAAOqJ,KAAKmR,OAEtB/4B,KAAKqrF,WAAatjF,OAAOy9E,WAAWxlF,KAAKorF,QAASprF,KAAKwa,KAAKmE,KAAK8sE,cASzExvD,KAAM,WAEEj8B,KAAKmrF,cAELO,aAAa1rF,KAAKqrF,YAIlBtjF,OAAOmjF,qBAAqBlrF,KAAKqrF,YAGrCrrF,KAAKy3B,WAAY,GASrBk0D,aAAc,WACV,MAAO3rF,MAAKmrF,eAQhBS,MAAO,WACH,MAAQ5rF,MAAKmrF,iBAAkB,IAKvC9qF,EAAO45B,sBAAsB5zB,UAAU8B,YAAc9H,EAAO45B,sBAkB5D55B,EAAO0F,MAOH8lF,IAAe,EAAV9lF,KAAK+G,GAUVoqB,QAAS,SAAUjlB,EAAKE,GAEpB,MAAOpM,MAAKI,MAAMJ,KAAK4D,UAAYwI,EAAMF,EAAM,GAAKA,IAaxD65E,WAAY,SAAUr9E,EAAGI,EAAGk9E,GAIxB,MAFgBriF,UAAZqiF,IAAyBA,EAAU,MAEhChmF,KAAKoJ,IAAIV,EAAII,GAAKk9E,GAa7BC,cAAe,SAAUv9E,EAAGI,EAAGk9E,GAI3B,MAFgBriF,UAAZqiF,IAAyBA,EAAU,MAE5Bl9E,EAAIk9E,EAARt9E,GAaXw9E,iBAAkB,SAAUx9E,EAAGI,EAAGk9E,GAI9B,MAFgBriF,UAAZqiF,IAAyBA,EAAU,MAEhCt9E,EAAII,EAAIk9E,GAYnBG,UAAW,SAAUC,EAAKJ,GAItB,MAFgBriF,UAAZqiF,IAAyBA,EAAU,MAEhChmF,KAAKG,KAAKimF,EAAMJ,IAY3BK,WAAY,SAAUD,EAAKJ,GAIvB,MAFgBriF,UAAZqiF,IAAyBA,EAAU,MAEhChmF,KAAKI,MAAMgmF,EAAMJ,IAW5BM,QAAS,WAKL,IAAK,GAHDhiB,GAAM,EACNziE,EAAMb,UAAUc,OAEXC,EAAI,EAAOF,EAAJE,EAASA,IAErBuiE,IAAStjE,UAAUe,EAGvB,OAAOuiE,GAAMziE,GASjB0kF,MAAO,SAAU1mE,GAEb,MAAOA,GAAI,GAef2mE,OAAQ,SAAUxsE,EAAOysE,EAAK97E,GAI1B,MAFchH,UAAVgH,IAAuBA,EAAQ,GAEvB,IAAR87E,EACOzsE,GAGXA,GAASrP,EACTqP,EAAQysE,EAAMzmF,KAAK+H,MAAMiS,EAAQysE,GAE1B97E,EAAQqP,IAgBnB0sE,YAAa,SAAU1sE,EAAOysE,EAAK97E,GAI/B,MAFchH,UAAVgH,IAAuBA,EAAQ,GAEvB,IAAR87E,EACOzsE,GAGXA,GAASrP,EACTqP,EAAQysE,EAAMzmF,KAAKI,MAAM4Z,EAAQysE,GAE1B97E,EAAQqP,IAgBnBg4D,WAAY,SAAUh4D,EAAOysE,EAAK97E,GAI9B,MAFchH,UAAVgH,IAAuBA,EAAQ,GAEvB,IAAR87E,EACOzsE,GAGXA,GAASrP,EACTqP,EAAQysE,EAAMzmF,KAAKG,KAAK6Z,EAAQysE,GAEzB97E,EAAQqP,IAuCnB2sE,QAAS,SAAUnjF,EAAOojF,EAAO79B,GAEfplD,SAAVijF,IAAuBA,EAAQ,GACtBjjF,SAATolD,IAAsBA,EAAO,GAEjC,IAAI7+C,GAAIlK,KAAK6mF,IAAI99B,GAAO69B,EAExB,OAAO5mF,MAAK+H,MAAMvE,EAAQ0G,GAAKA,GAcnC48E,QAAS,SAAUtjF,EAAOojF,EAAO79B,GAEfplD,SAAVijF,IAAuBA,EAAQ,GACtBjjF,SAATolD,IAAsBA,EAAO,GAEjC,IAAI7+C,GAAIlK,KAAK6mF,IAAI99B,GAAO69B,EAExB,OAAO5mF,MAAKI,MAAMoD,EAAQ0G,GAAKA,GAcnC68E,OAAQ,SAAUvjF,EAAOojF,EAAO79B,GAEdplD,SAAVijF,IAAuBA,EAAQ,GACtBjjF,SAATolD,IAAsBA,EAAO,GAEjC,IAAI7+C,GAAIlK,KAAK6mF,IAAI99B,GAAO69B,EAExB,OAAO5mF,MAAKG,KAAKqD,EAAQ0G,GAAKA,GAclC88E,aAAc,SAAUz8E,EAAIC,EAAIC,EAAIC,GAEhC,MAAO1K,MAAK+M,MAAMrC,EAAKF,EAAIC,EAAKF,IAiBpC08E,cAAe,SAAU18E,EAAIC,EAAIC,EAAIC,GAEjC,MAAO1K,MAAK+M,MAAMtC,EAAKF,EAAIG,EAAKF,IAYpC08E,mBAAoB,SAAUtY,EAAQC,GAElC,MAAO7uE,MAAK+M,MAAM8hE,EAAOnoE,EAAIkoE,EAAOloE,EAAGmoE,EAAO3uE,EAAI0uE,EAAO1uE,IAW7DinF,oBAAqB,SAAUvY,EAAQC,GAEnC,MAAO7uE,MAAK+M,MAAM8hE,EAAO3uE,EAAI0uE,EAAO1uE,EAAG2uE,EAAOnoE,EAAIkoE,EAAOloE,IAU7D0gF,aAAc,SAAUC,GAEpB,MAAOptF,MAAKqtF,eAAeD,EAAWrnF,KAAK+G,IAAI,IAUnDugF,eAAgB,SAAUD,GAGtB,MADAA,IAAuB,EAAIrnF,KAAK+G,GACzBsgF,GAAY,EAAIA,EAAWA,EAAW,EAAIrnF,KAAK+G,IAa1DwgF,OAAQ,SAAU/jF,EAAOypB,EAAQ7gB,GAE7B,MAAOpM,MAAKkM,IAAI1I,EAAQypB,EAAQ7gB,IAapCo7E,OAAQ,SAAUhkF,EAAOypB,EAAQ/gB,GAE7B,MAAOlM,MAAKoM,IAAI5I,EAAQypB,EAAQ/gB,IAepCc,KAAM,SAAUxJ,EAAO0I,EAAKE,GAExB,GAAIq7E,GAAQr7E,EAAMF,CAElB,IAAa,GAATu7E,EAEA,MAAO,EAGX,IAAIl8E,IAAU/H,EAAQ0I,GAAOu7E,CAO7B,OALa,GAATl8E,IAEAA,GAAUk8E,GAGPl8E,EAASW,GAepBw7E,UAAW,SAAUlkF,EAAOypB,EAAQ7gB,GAEhC,GAAIi/D,EAMJ,OALA7nE,GAAQxD,KAAKoJ,IAAI5F,GACjBypB,EAASjtB,KAAKoJ,IAAI6jB,GAClB7gB,EAAMpM,KAAKoJ,IAAIgD,GACfi/D,GAAQ7nE,EAAQypB,GAAU7gB,GAa9Bu7E,MAAO,SAAU9nE,GAGb,SAAc,EAAJA,IAWd+nE,OAAQ,SAAU/nE,GAGd,QAAa,EAAJA,IAab3T,IAAK,WAED,GAAyB,IAArBlL,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAIs7B,GAAOt7B,UAAU,OAIrB,IAAIs7B,GAAOt7B,SAGf,KAAK,GAAIe,GAAI,EAAGmK,EAAM,EAAGrK,EAAMy6B,EAAKx6B,OAAYD,EAAJE,EAASA,IAE7Cu6B,EAAKv6B,GAAKu6B,EAAKpwB,KAEfA,EAAMnK,EAId,OAAOu6B,GAAKpwB,IAahBE,IAAK,WAED,GAAyB,IAArBpL,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAIs7B,GAAOt7B,UAAU,OAIrB,IAAIs7B,GAAOt7B,SAGf,KAAK,GAAIe,GAAI,EAAGqK,EAAM,EAAGvK,EAAMy6B,EAAKx6B,OAAYD,EAAJE,EAASA,IAE7Cu6B,EAAKv6B,GAAKu6B,EAAKlwB,KAEfA,EAAMrK,EAId,OAAOu6B,GAAKlwB,IAWhBy7E,YAAa,SAAU76D,GAEnB,GAAyB,IAArBhsB,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAIs7B,GAAOt7B,UAAU,OAIrB,IAAIs7B,GAAOt7B,UAAUR,MAAM,EAG/B,KAAK,GAAIuB,GAAI,EAAGmK,EAAM,EAAGrK,EAAMy6B,EAAKx6B,OAAYD,EAAJE,EAASA,IAE7Cu6B,EAAKv6B,GAAGirB,GAAYsP,EAAKpwB,GAAK8gB,KAE9B9gB,EAAMnK,EAId,OAAOu6B,GAAKpwB,GAAK8gB,IAWrB86D,YAAa,SAAU96D,GAEnB,GAAyB,IAArBhsB,UAAUc,QAAwC,gBAAjBd,WAAU,GAE3C,GAAIs7B,GAAOt7B,UAAU,OAIrB,IAAIs7B,GAAOt7B,UAAUR,MAAM,EAG/B,KAAK,GAAIuB,GAAI,EAAGqK,EAAM,EAAGvK,EAAMy6B,EAAKx6B,OAAYD,EAAJE,EAASA,IAE7Cu6B,EAAKv6B,GAAGirB,GAAYsP,EAAKlwB,GAAK4gB,KAE9B5gB,EAAMrK,EAId,OAAOu6B,GAAKlwB,GAAK4gB,IAYrB6zB,UAAW,SAAU14C,EAAO4/E,GAExB,MAAOA,GAAU9tF,KAAK+S,KAAK7E,GAAQnI,KAAK+G,GAAI/G,KAAK+G,IAAM9M,KAAK+S,KAAK7E,EAAO,KAAM,MAYlF6/E,oBAAqB,SAAU1zD,EAAGse,GAE9B,GAAI1iC,GAAIokB,EAAExyB,OAAS,EACfqC,EAAI+L,EAAI0iC,EACR7wC,EAAI/B,KAAKI,MAAM+D,EAEnB,OAAQ,GAAJyuC,EAEO34C,KAAKmf,OAAOkb,EAAE,GAAIA,EAAE,GAAInwB,GAG/ByuC,EAAI,EAEG34C,KAAKmf,OAAOkb,EAAEpkB,GAAIokB,EAAEpkB,EAAI,GAAIA,EAAI/L,GAGpClK,KAAKmf,OAAOkb,EAAEvyB,GAAIuyB,EAAEvyB,EAAI,EAAImO,EAAIA,EAAInO,EAAI,GAAIoC,EAAIpC,IAY3DkmF,oBAAqB,SAAU3zD,EAAGse,GAK9B,IAAK,GAHD9pC,GAAI,EACJ+W,EAAIyU,EAAExyB,OAAS,EAEVC,EAAI,EAAQ8d,GAAL9d,EAAQA,IAEpB+G,GAAK9I,KAAK6mF,IAAI,EAAIj0C,EAAG/yB,EAAI9d,GAAK/B,KAAK6mF,IAAIj0C,EAAG7wC,GAAKuyB,EAAEvyB,GAAK9H,KAAKiuF,UAAUroE,EAAG9d,EAG5E,OAAO+G,IAYXq/E,wBAAyB,SAAU7zD,EAAGse,GAElC,GAAI1iC,GAAIokB,EAAExyB,OAAS,EACfqC,EAAI+L,EAAI0iC,EACR7wC,EAAI/B,KAAKI,MAAM+D,EAEnB,OAAImwB,GAAE,KAAOA,EAAEpkB,IAEH,EAAJ0iC,IAEA7wC,EAAI/B,KAAKI,MAAM+D,EAAI+L,GAAK,EAAI0iC,KAGzB34C,KAAKmuF,WAAW9zD,GAAGvyB,EAAI,EAAImO,GAAKA,GAAIokB,EAAEvyB,GAAIuyB,GAAGvyB,EAAI,GAAKmO,GAAIokB,GAAGvyB,EAAI,GAAKmO,GAAI/L,EAAIpC,IAI7E,EAAJ6wC,EAEOte,EAAE,IAAMr6B,KAAKmuF,WAAW9zD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAKnwB,GAAKmwB,EAAE,IAG/Dse,EAAI,EAEGte,EAAEpkB,IAAMjW,KAAKmuF,WAAW9zD,EAAEpkB,GAAIokB,EAAEpkB,GAAIokB,EAAEpkB,EAAI,GAAIokB,EAAEpkB,EAAI,GAAI/L,EAAI+L,GAAKokB,EAAEpkB,IAGvEjW,KAAKmuF,WAAW9zD,EAAEvyB,EAAIA,EAAI,EAAI,GAAIuyB,EAAEvyB,GAAIuyB,EAAMvyB,EAAI,EAARmO,EAAYA,EAAInO,EAAI,GAAIuyB,EAAMvyB,EAAI,EAARmO,EAAYA,EAAInO,EAAI,GAAIoC,EAAIpC,IAc/GqX,OAAQ,SAAUivE,EAAI91E,EAAI3Q,GAEtB,OAAQ2Q,EAAK81E,GAAMzmF,EAAIymF,GAW3BH,UAAW,SAAUroE,EAAG9d,GAEpB,MAAO9H,MAAKquF,UAAUzoE,GAAK5lB,KAAKquF,UAAUvmF,GAAK9H,KAAKquF,UAAUzoE,EAAI9d,IAStEumF,UAAW,SAAU9kF,GAEjB,GAAc,IAAVA,EAEA,MAAO,EAKX,KAFA,GAAI+kF,GAAM/kF,IAEFA,GAEJ+kF,GAAO/kF,CAGX,OAAO+kF,IAgBXH,WAAY,SAAUC,EAAI91E,EAAIC,EAAIg2E,EAAI5mF,GAElC,GAAI6mF,GAAiB,IAAXj2E,EAAK61E,GAAWK,EAAiB,IAAXF,EAAKj2E,GAAWgqD,EAAK36D,EAAIA,EAAG46D,EAAK56D,EAAI26D,CAErE,QAAQ,EAAIhqD,EAAK,EAAIC,EAAKi2E,EAAKC,GAAMlsB,GAAM,GAAKjqD,EAAK,EAAIC,EAAK,EAAIi2E,EAAKC,GAAMnsB,EAAKksB,EAAK7mF,EAAI2Q,GAY/FkoE,WAAY,SAAU/xE,EAAGI,GAErB,MAAO9I,MAAKoJ,IAAIV,EAAII,IAWxB6/E,kBAAmB,SAAUnlF,GAGzB,MAAQA,GAAQ,EAAKxD,KAAKG,KAAKqD,GAASxD,KAAKI,MAAMoD,IAiBvDolF,gBAAiB,SAAU9mF,EAAQ+mF,EAAcC,EAAcC,GAEtCplF,SAAjBklF,IAA8BA,EAAe,GAC5BllF,SAAjBmlF,IAA8BA,EAAe,GAC/BnlF,SAAdolF,IAA2BA,EAAY,EAS3C,KAAK,GAPD1hF,GAAMwhF,EACNzhF,EAAM0hF,EACNE,EAAMD,EAAY/oF,KAAK+G,GAAKjF,EAE5BmnF,KACAC,KAEKhgF,EAAI,EAAOpH,EAAJoH,EAAYA,IAExB9B,GAAOC,EAAM2hF,EACb3hF,GAAOD,EAAM4hF,EAEbC,EAAS//E,GAAK9B,EACd8hF,EAAShgF,GAAK7B,CAIlB,QAASA,IAAK6hF,EAAU9hF,IAAK6hF,EAAUnnF,OAAQA,IAcnDgG,SAAU,SAAUyC,EAAIC,EAAIC,EAAIC,GAE5B,GAAIpC,GAAKiC,EAAKE,EACVlC,EAAKiC,EAAKE,CAEd,OAAO1K,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAepC4gF,WAAY,SAAU5+E,EAAIC,EAAIC,EAAIC,GAE9B,GAAIpC,GAAKiC,EAAKE,EACVlC,EAAKiC,EAAKE,CAEd,OAAOpC,GAAKA,EAAKC,EAAKA,GAe1B6gF,YAAa,SAAU7+E,EAAIC,EAAIC,EAAIC,EAAIm8E,GAInC,MAFYljF,UAARkjF,IAAqBA,EAAM,GAExB7mF,KAAKmK,KAAKnK,KAAK6mF,IAAIp8E,EAAKF,EAAIs8E,GAAO7mF,KAAK6mF,IAAIn8E,EAAKF,EAAIq8E,KAahEp3E,MAAO,SAAU6kB,EAAGpoB,EAAKE,GAErB,MAAQF,GAAJooB,EAEOpoB,EAEIooB,EAANloB,EAEEA,EAIAkoB,GAcf+0D,YAAa,SAAUnpF,EAAGwI,GAEtB,MAAWA,GAAJxI,EAAQwI,EAAIxI,GAcvBopF,OAAQ,SAAU5gF,EAAGI,EAAGqK,GAEpB,MAAQnT,MAAKoJ,IAAIV,EAAII,IAAMqK,GAe/Bo2E,UAAW,SAAUrpF,EAAG+M,EAAIC,EAAIC,EAAIC,GAEhC,MAAOD,IAAOjN,EAAI+M,IAASG,EAAKD,IAASD,EAAKD,IAalDu8E,WAAY,SAAUtpF,EAAGgM,EAAKE,GAM1B,MAHAlM,GAAIF,KAAKoM,IAAI,EAAGpM,KAAKkM,IAAI,GAAIhM,EAAIgM,IAAQE,EAAMF,KAGxChM,EAAIA,GAAK,EAAI,EAAIA,IAa5BupF,aAAc,SAAUvpF,EAAGgM,EAAKE,GAI5B,MAFAlM,GAAIF,KAAKoM,IAAI,EAAGpM,KAAKkM,IAAI,GAAIhM,EAAIgM,IAAQE,EAAMF,KAExChM,EAAIA,EAAIA,GAAKA,GAAS,EAAJA,EAAQ,IAAM,KAa3C8hE,KAAM,SAAU9hE,GAEZ,MAAa,GAAJA,EAAU,GAASA,EAAI,EAAM,EAAI,GAa9CwpF,QAAS,SAAUhhF,EAAGI,EAAGigD,GAIrB,MAFaplD,UAATolD,IAAsBA,EAAO,GAE7BrgD,EAAII,GAAKigD,EAAOjgD,EAET,EAEEigD,EAAJrgD,GAAYqgD,EAAOrgD,EAEjB,GAICA,EAAIqgD,GAAQjgD,GAOhC,IAAI6gF,GAAwB3pF,KAAK+G,GAAK,IAClC6iF,EAAwB,IAAM5pF,KAAK+G,EAiwuCnC,OAxvuCJzM,GAAO0F,KAAKgJ,SAAW,SAAmB6gF,GACtC,MAAOA,GAAUF,GAUrBrvF,EAAO0F,KAAK2P,SAAW,SAAmBo4E,GACtC,MAAOA,GAAU6B,GAyBrBtvF,EAAOy4B,oBAAsB,SAAU+2D,GAErBnmF,SAAVmmF,IAAuBA,MAM3B7vF,KAAKiP,EAAI,EAMTjP,KAAK8vF,GAAK,EAMV9vF,KAAK+vF,GAAK,EAMV/vF,KAAKgwF,GAAK,EAEW,gBAAVH,GAEP7vF,KAAKkgB,MAAM2vE,GAIX7vF,KAAKiwF,IAAIJ,IAKjBxvF,EAAOy4B,oBAAoBzyB,WASvByY,IAAK,WAED,GAAInX,GAAI,QAAU3H,KAAK8vF,GAAc,uBAAT9vF,KAAKiP,CAOjC,OALAjP,MAAKiP,EAAQ,EAAJtH,EACT3H,KAAK8vF,GAAK9vF,KAAK+vF,GACf/vF,KAAK+vF,GAAK/vF,KAAKgwF,GACfhwF,KAAKgwF,GAAKroF,EAAI3H,KAAKiP,EAEZjP,KAAKgwF,IAWhBC,IAAK,SAAUJ,GAQX,GALA7vF,KAAK8vF,GAAK9vF,KAAKivB,KAAK;AACpBjvB,KAAK+vF,GAAK/vF,KAAKivB,KAAKjvB,KAAK8vF,IACzB9vF,KAAKgwF,GAAKhwF,KAAKivB,KAAKjvB,KAAK+vF,IACzB/vF,KAAKiP,EAAI,EAEJ4gF,EAML,IAAK,GAAI/nF,GAAI,EAAGA,EAAI+nF,EAAMhoF,QAAuB,MAAZgoF,EAAM/nF,GAAaA,IACxD,CACI,GAAImxB,GAAO42D,EAAM/nF,EAEjB9H,MAAK8vF,IAAM9vF,KAAKivB,KAAKgK,GACrBj5B,KAAK8vF,OAAS9vF,KAAK8vF,GAAK,GACxB9vF,KAAK+vF,IAAM/vF,KAAKivB,KAAKgK,GACrBj5B,KAAK+vF,OAAS/vF,KAAK+vF,GAAK,GACxB/vF,KAAKgwF,IAAMhwF,KAAKivB,KAAKgK,GACrBj5B,KAAKgwF,OAAShwF,KAAKgwF,GAAK,KAahC/gE,KAAM,SAAUoT,GAEZ,GAAI9kB,GAAGzV,EAAG8d,CAIV,KAHAA,EAAI,WACJyc,EAAOA,EAAK76B,WAEPM,EAAI,EAAGA,EAAIu6B,EAAKx6B,OAAQC,IACzB8d,GAAKyc,EAAKme,WAAW14C,GACrByV,EAAI,mBAAsBqI,EAC1BA,EAAIrI,IAAM,EACVA,GAAKqI,EACLrI,GAAKqI,EACLA,EAAIrI,IAAM,EACVA,GAAKqI,EACLA,GAAS,WAAJrI,CAGT,OAAmB,yBAAXqI,IAAM,IAUlBsqE,QAAS,WAEL,MAA8B,YAAvBlwF,KAAK8e,IAAI7X,MAAMjH,OAU1B+e,KAAM,WAEF,MAAO/e,MAAK8e,IAAI7X,MAAMjH,MAAgD,wBAAhB,QAAvBA,KAAK8e,IAAI7X,MAAMjH,MAAmB,IAUrEkkE,KAAM,WAEF,MAAOlkE,MAAKkwF,UAAYlwF,KAAK+e,QAYjCoxE,eAAgB,SAAUl+E,EAAKE,GAE3B,MAAOpM,MAAKI,MAAMnG,KAAKowF,YAAY,EAAGj+E,EAAMF,EAAM,GAAKA,IAa3DilB,QAAS,SAAUjlB,EAAKE,GAEpB,MAAOnS,MAAKmwF,eAAel+E,EAAKE,IAYpCi+E,YAAa,SAAUn+E,EAAKE,GAExB,MAAOnS,MAAK+e,QAAU5M,EAAMF,GAAOA,GAUvCo+E,OAAQ,WAEJ,MAAO,GAAI,EAAIrwF,KAAK+e,QAUxBu0C,KAAM,WAEF,GAAI7kD,GAAI,GACJI,EAAI,EAER,KAAKA,EAAIJ,EAAI,GAAIA,IAAM,GAAII,IAAKJ,EAAI,EAAQ,EAAJA,EAAM,GAAO,GAAFA,EAAO,EAAEzO,KAAK+e,QAAY,GAAFtQ,EAAO,GAAK,GAAK,GAAGjH,SAAS,IAAM,KAI9G,MAAOqH,IAWXyhF,KAAM,SAAUC,GAEZ,MAAOA,GAAIvwF,KAAKmwF,eAAe,EAAGI,EAAI1oF,OAAS,KAUnDkgE,KAAM,WAEF,MAAO/nE,MAAKswF,MAAM,GAAI,KAW1BE,aAAc,SAAUD,GAEpB,MAAOA,MAAOxqF,KAAK6mF,IAAI5sF,KAAK+e,OAAQ,IAAMwxE,EAAI1oF,OAAS,GAAK,MAYhE41C,UAAW,SAAUxrC,EAAKE,GAEtB,MAAOnS,MAAKowF,YAAYn+E,GAAO,UAAcE,GAAO,YAUxDjE,MAAO,WAEH,MAAOlO,MAAKmwF,eAAe,KAAM,MAqBrCjwE,MAAO,SAAUA,GAYb,MAVqB,gBAAVA,IAAsBA,EAAMumC,MAAM,WAEzCvmC,EAAQA,EAAMvX,MAAM,KAEpB3I,KAAKiP,EAAIqsE,WAAWp7D,EAAM,IAC1BlgB,KAAK8vF,GAAKxU,WAAWp7D,EAAM,IAC3BlgB,KAAK+vF,GAAKzU,WAAWp7D,EAAM,IAC3BlgB,KAAKgwF,GAAK1U,WAAWp7D,EAAM,MAGvB,OAAQlgB,KAAKiP,EAAGjP,KAAK8vF,GAAI9vF,KAAK+vF,GAAI/vF,KAAKgwF,IAAInnF,KAAK,OAMhExI,EAAOy4B,oBAAoBzyB,UAAU8B,YAAc9H,EAAOy4B,oBAwB1Dz4B,EAAOowF,SAAW,SAASxqF,EAAGwG,EAAGsD,EAAOC,EAAQ0gF,EAAYC,EAAWC,GAMnE5wF,KAAK0wF,WAAa,GAMlB1wF,KAAK2wF,UAAY,EAKjB3wF,KAAK4wF,MAAQ,EAKb5wF,KAAK2a,UAKL3a,KAAK6wF,WAKL7wF,KAAK8wF,SAML9wF,KAAK+wF,UAEL/wF,KAAK0f,MAAMzZ,EAAGwG,EAAGsD,EAAOC,EAAQ0gF,EAAYC,EAAWC,IAI3DvwF,EAAOowF,SAASpqF,WAcZqZ,MAAO,SAAUzZ,EAAGwG,EAAGsD,EAAOC,EAAQ0gF,EAAYC,EAAWC,GAEzD5wF,KAAK0wF,WAAaA,GAAc,GAChC1wF,KAAK2wF,UAAYA,GAAa,EAC9B3wF,KAAK4wF,MAAQA,GAAS,EAEtB5wF,KAAK2a,QACD1U,EAAGF,KAAK+H,MAAM7H,GACdwG,EAAG1G,KAAK+H,MAAMrB,GACdsD,MAAOA,EACPC,OAAQA,EACRghF,SAAUjrF,KAAKI,MAAM4J,EAAQ,GAC7BkhF,UAAWlrF,KAAKI,MAAM6J,EAAS,GAC/BpF,MAAO7E,KAAK+H,MAAM7H,GAAKF,KAAKI,MAAM4J,EAAQ,GAC1CpB,OAAQ5I,KAAK+H,MAAMrB,GAAK1G,KAAKI,MAAM6J,EAAS,IAGhDhQ,KAAK6wF,QAAQhpF,OAAS,EACtB7H,KAAK8wF,MAAMjpF,OAAS,GAUxBqpF,SAAU,SAAUh7D,GAEhBA,EAAMzuB,QAAQzH,KAAKmxF,gBAAiBnxF,MAAM,IAU9CmxF,gBAAiB,SAAUp6D,GAEnBA,EAAOpH,MAAQoH,EAAOvM,QAEtBxqB,KAAKoxF,OAAOr6D,EAAOpH,OAU3BhnB,MAAO,WAGH3I,KAAK8wF,MAAM,GAAK,GAAIzwF,GAAOowF,SAASzwF,KAAK2a,OAAO/P,MAAO5K,KAAK2a,OAAOlO,EAAGzM,KAAK2a,OAAOq2E,SAAUhxF,KAAK2a,OAAOs2E,UAAWjxF,KAAK0wF,WAAY1wF,KAAK2wF,UAAY3wF,KAAK4wF,MAAQ,GAGlK5wF,KAAK8wF,MAAM,GAAK,GAAIzwF,GAAOowF,SAASzwF,KAAK2a,OAAO1U,EAAGjG,KAAK2a,OAAOlO,EAAGzM,KAAK2a,OAAOq2E,SAAUhxF,KAAK2a,OAAOs2E,UAAWjxF,KAAK0wF,WAAY1wF,KAAK2wF,UAAY3wF,KAAK4wF,MAAQ,GAG9J5wF,KAAK8wF,MAAM,GAAK,GAAIzwF,GAAOowF,SAASzwF,KAAK2a,OAAO1U,EAAGjG,KAAK2a,OAAOhM,OAAQ3O,KAAK2a,OAAOq2E,SAAUhxF,KAAK2a,OAAOs2E,UAAWjxF,KAAK0wF,WAAY1wF,KAAK2wF,UAAY3wF,KAAK4wF,MAAQ,GAGnK5wF,KAAK8wF,MAAM,GAAK,GAAIzwF,GAAOowF,SAASzwF,KAAK2a,OAAO/P,MAAO5K,KAAK2a,OAAOhM,OAAQ3O,KAAK2a,OAAOq2E,SAAUhxF,KAAK2a,OAAOs2E,UAAWjxF,KAAK0wF,WAAY1wF,KAAK2wF,UAAY3wF,KAAK4wF,MAAQ,IAU3KQ,OAAQ,SAAUzhE,GAEd,GACID,GADA5nB,EAAI,CAIR,IAAqB,MAAjB9H,KAAK8wF,MAAM,KAEXphE,EAAQ1vB,KAAK6xB,SAASlC,GAER,KAAVD,GAGA,WADA1vB,MAAK8wF,MAAMphE,GAAO0hE,OAAOzhE,EAOjC,IAFA3vB,KAAK6wF,QAAQj+E,KAAK+c,GAEd3vB,KAAK6wF,QAAQhpF,OAAS7H,KAAK0wF,YAAc1wF,KAAK4wF,MAAQ5wF,KAAK2wF,UAS3D,IANqB,MAAjB3wF,KAAK8wF,MAAM,IAEX9wF,KAAK2I,QAIFb,EAAI9H,KAAK6wF,QAAQhpF,QAEpB6nB,EAAQ1vB,KAAK6xB,SAAS7xB,KAAK6wF,QAAQ/oF,IAErB,KAAV4nB,EAGA1vB,KAAK8wF,MAAMphE,GAAO0hE,OAAOpxF,KAAK6wF,QAAQ1tE,OAAOrb,EAAG,GAAG,IAInDA,KAchB+pB,SAAU,SAAUne,GAGhB,GAAIgc,GAAQ,EA8BZ,OA5BIhc,GAAKzN,EAAIjG,KAAK2a,OAAO/P,OAAS8I,EAAK9I,MAAQ5K,KAAK2a,OAAO/P,MAEnD8I,EAAKjH,EAAIzM,KAAK2a,OAAOhM,QAAU+E,EAAK/E,OAAS3O,KAAK2a,OAAOhM,OAGzD+gB,EAAQ,EAEHhc,EAAKjH,EAAIzM,KAAK2a,OAAOhM,SAG1B+gB,EAAQ,GAGPhc,EAAKzN,EAAIjG,KAAK2a,OAAO/P,QAGtB8I,EAAKjH,EAAIzM,KAAK2a,OAAOhM,QAAU+E,EAAK/E,OAAS3O,KAAK2a,OAAOhM,OAGzD+gB,EAAQ,EAEHhc,EAAKjH,EAAIzM,KAAK2a,OAAOhM,SAG1B+gB,EAAQ,IAITA,GAWX2hE,SAAU,SAAU3jF,GAEhB,GAAIA,YAAkBrN,GAAOkN,UAEzB,GAAI+jF,GAAgBtxF,KAAK6wF,QAErBnhE,EAAQ1vB,KAAK6xB,SAASnkB,OAG9B,CACI,IAAKA,EAAOiiB,KAER,MAAO3vB,MAAK+wF,MAGhB,IAAIO,GAAgBtxF,KAAK6wF,QAErBnhE,EAAQ1vB,KAAK6xB,SAASnkB,EAAOiiB,MAoBrC,MAjBI3vB,MAAK8wF,MAAM,KAGG,KAAVphE,EAEA4hE,EAAgBA,EAAczqF,OAAO7G,KAAK8wF,MAAMphE,GAAO2hE,SAAS3jF,KAKhE4jF,EAAgBA,EAAczqF,OAAO7G,KAAK8wF,MAAM,GAAGO,SAAS3jF,IAC5D4jF,EAAgBA,EAAczqF,OAAO7G,KAAK8wF,MAAM,GAAGO,SAAS3jF,IAC5D4jF,EAAgBA,EAAczqF,OAAO7G,KAAK8wF,MAAM,GAAGO,SAAS3jF,IAC5D4jF,EAAgBA,EAAczqF,OAAO7G,KAAK8wF,MAAM,GAAGO,SAAS3jF,MAI7D4jF,GAQXrzE,MAAO,WAEHje,KAAK6wF,QAAQhpF,OAAS,CAItB,KAFA,GAAIC,GAAI9H,KAAK8wF,MAAMjpF,OAEZC,KAEH9H,KAAK8wF,MAAMhpF,GAAGmW,QACdje,KAAK8wF,MAAM3tE,OAAOrb,EAAG,EAGzB9H,MAAK8wF,MAAMjpF,OAAS,IAK5BxH,EAAOowF,SAASpqF,UAAU8B,YAAc9H,EAAOowF,SAmD/CpwF,EAAOy5B,IAAM,SAAUtf,GAEnBxa,KAAKwa,KAAOA,GAIhBna,EAAOy5B,IAAIzzB,WAQPkrF,YAAa,WAET,MAAIxpF,QAAOypF,UAAYzpF,OAAOypF,SAASC,SAC5B1pF,OAAOypF,SAASC,SAGpB,MAcXC,gBAAiB,SAAUC,GACvB,MAAoD,KAA7C5pF,OAAOypF,SAASC,SAASphE,QAAQshE,IAgB5CC,kBAAmB,SAAU7lF,EAAKxC,EAAOsoF,EAAUp+B,GAE9B/pD,SAAbmoF,IAA0BA,GAAW,GAC7BnoF,SAAR+pD,GAA6B,KAARA,IAAcA,EAAM1rD,OAAOypF,SAASM,KAE7D,IAAI/jF,GAAS,GACTgvE,EAAK,GAAI+I,QAAO,UAAY/5E,EAAM,kBAAmB,KAEzD,IAAIgxE,EAAGN,KAAKhpB,GAIJ1lD,EAFiB,mBAAVxE,IAAmC,OAAVA,EAEvBkqD,EAAI7nD,QAAQmxE,EAAI,KAAOhxE,EAAM,IAAMxC,EAAQ,QAI3CkqD,EAAI7nD,QAAQmxE,EAAI,QAAQnxE,QAAQ,UAAW,QAKxD,IAAqB,mBAAVrC,IAAmC,OAAVA,EACpC,CACI,GAAIwoF,GAAiC,KAArBt+B,EAAIpjC,QAAQ,KAAc,IAAM,IAC5CpB,EAAOwkC,EAAI9qD,MAAM,IACrB8qD,GAAMxkC,EAAK,GAAK8iE,EAAYhmF,EAAM,IAAMxC,EAEpC0lB,EAAK,KACLwkC,GAAO,IAAMxkC,EAAK,IAGtBlhB,EAAS0lD,MAKT1lD,GAAS0lD,CAIjB,OAAIo+B,QAEA9pF,OAAOypF,SAASM,KAAO/jF,GAIhBA,GAafikF,eAAgB,SAAUC,GAEJvoF,SAAduoF,IAA2BA,EAAY,GAE3C,IAAIlkF,MACAmkF,EAAYV,SAASW,OAAOC,UAAU,GAAGzpF,MAAM,IAEnD,KAAK,GAAIb,KAAKoqF,GACd,CACI,GAAInmF,GAAMmmF,EAAUpqF,GAAGa,MAAM,IAE7B,IAAIoD,EAAIlE,OAAS,EACjB,CACI,GAAIoqF,GAAaA,GAAajyF,KAAKqyF,UAAUtmF,EAAI,IAE7C,MAAO/L,MAAKqyF,UAAUtmF,EAAI,GAI1BgC,GAAO/N,KAAKqyF,UAAUtmF,EAAI,KAAO/L,KAAKqyF,UAAUtmF,EAAI,KAKhE,MAAOgC,IAYXskF,UAAW,SAAU9oF,GACjB,MAAO+oF,oBAAmB/oF,EAAMqC,QAAQ,MAAO,QAKvDvL,EAAOy5B,IAAIzzB,UAAU8B,YAAc9H,EAAOy5B,IAqB1Cz5B,EAAOo5B,aAAe,SAAUjf,GAK5Bxa,KAAKwa,KAAOA,EAaZxa,KAAKuyF,YAAa,EAMlBvyF,KAAKwyF,WAMLxyF,KAAKyyF,QAELzyF,KAAK0yF,SAEDC,OAAUtyF,EAAOuyF,OAAOD,OACxBE,OAAUxyF,EAAOuyF,OAAOC,OACxBC,OAAUzyF,EAAOuyF,OAAOE,OACxBC,OAAU1yF,EAAOuyF,OAAOG,OACxBC,OAAU3yF,EAAOuyF,OAAOI,OAExBC,OAAU5yF,EAAOuyF,OAAOK,OAAOC,KAC/BC,KAAQ9yF,EAAOuyF,OAAOQ,UAAUC,IAChCC,MAASjzF,EAAOuyF,OAAOU,MAAMD,IAC7BE,MAASlzF,EAAOuyF,OAAOY,QAAQH,IAC/BI,MAASpzF,EAAOuyF,OAAOc,QAAQL,IAC/BM,KAAQtzF,EAAOuyF,OAAOgB,WAAWP,IACjCQ,KAAQxzF,EAAOuyF,OAAOkB,YAAYT,IAClCU,KAAQ1zF,EAAOuyF,OAAOoB,SAASX,IAC/BY,QAAW5zF,EAAOuyF,OAAOqB,QAAQZ,IACjCa,KAAQ7zF,EAAOuyF,OAAOsB,KAAKb,IAC3Bc,OAAU9zF,EAAOuyF,OAAOuB,OAAOd,IAE/Be,cAAe/zF,EAAOuyF,OAAOQ,UAAUiB,GACvCC,eAAgBj0F,EAAOuyF,OAAOU,MAAMe,GACpCE,eAAgBl0F,EAAOuyF,OAAOY,QAAQa,GACtCG,eAAgBn0F,EAAOuyF,OAAOc,QAAQW,GACtCI,cAAep0F,EAAOuyF,OAAOgB,WAAWS,GACxCK,cAAer0F,EAAOuyF,OAAOkB,YAAYO,GACzCM,cAAet0F,EAAOuyF,OAAOoB,SAASK,GACtCO,iBAAkBv0F,EAAOuyF,OAAOqB,QAAQI,GACxCQ,cAAex0F,EAAOuyF,OAAOsB,KAAKG,GAClCS,gBAAiBz0F,EAAOuyF,OAAOuB,OAAOE,GAEtCU,eAAgB10F,EAAOuyF,OAAOQ,UAAUC,IACxC2B,gBAAiB30F,EAAOuyF,OAAOU,MAAMD,IACrC4B,gBAAiB50F,EAAOuyF,OAAOY,QAAQH,IACvC6B,gBAAiB70F,EAAOuyF,OAAOc,QAAQL,IACvC8B,eAAgB90F,EAAOuyF,OAAOgB,WAAWP,IACzC+B,eAAgB/0F,EAAOuyF,OAAOkB,YAAYT,IAC1CgC,eAAgBh1F,EAAOuyF,OAAOoB,SAASX,IACvCiC,kBAAmBj1F,EAAOuyF,OAAOqB,QAAQZ,IACzCkC,eAAgBl1F,EAAOuyF,OAAOsB,KAAKb,IACnCmC,iBAAkBn1F,EAAOuyF,OAAOuB,OAAOd,IAEvCoC,iBAAkBp1F,EAAOuyF,OAAOQ,UAAUsC,MAC1CC,kBAAmBt1F,EAAOuyF,OAAOU,MAAMoC,MACvCE,kBAAmBv1F,EAAOuyF,OAAOY,QAAQkC,MACzCG,kBAAmBx1F,EAAOuyF,OAAOc,QAAQgC,MACzCI,iBAAkBz1F,EAAOuyF,OAAOgB,WAAW8B,MAC3CK,iBAAkB11F,EAAOuyF,OAAOkB,YAAY4B,MAC5CM,iBAAkB31F,EAAOuyF,OAAOoB,SAAS0B,MACzCO,oBAAqB51F,EAAOuyF,OAAOqB,QAAQyB,MAC3CQ,iBAAkB71F,EAAOuyF,OAAOsB,KAAKwB,MACrCS,mBAAoB91F,EAAOuyF,OAAOuB,OAAOuB,OAI7C11F,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAKo2F,UAAWp2F,MACtCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAKq2F,WAAYr2F,OAI5CK,EAAOo5B,aAAapzB,WAOhBiwF,OAAQ,WAEJ,MAAOt2F,MAAKwyF,SAQhB5uE,UAAW,WAEP,IAAK,GAAI9b,GAAI,EAAGA,EAAI9H,KAAKwyF,QAAQ3qF,OAAQC,IAErC9H,KAAKwyF,QAAQ1qF,GAAGyuF,eAAgB,CAGpCv2F,MAAKyyF,SAWTlpC,WAAY,SAAUxgD,EAAK4iB,GAENjiB,SAAbiiB,IAA0BA,GAAW,EAEzC,IAAI7jB,GACAF,CAEJ,IAAIpB,MAAMa,QAAQ0B,GAEd,IAAKjB,EAAI,EAAGF,EAAMmB,EAAIlB,OAAYD,EAAJE,EAASA,IAEnC9H,KAAKupD,WAAWxgD,EAAIjB,QAGvB,IAAIiB,EAAIb,OAAS7H,EAAOmB,OAASmqB,EAElC,IAAK,GAAI7jB,GAAI,EAAGF,EAAMmB,EAAI4iB,SAAS9jB,OAAYD,EAAJE,EAASA,IAEhD9H,KAAKupD,WAAWxgD,EAAI4iB,SAAS7jB,QAIrC,CACI,IAAKA,EAAI,EAAGF,EAAM5H,KAAKwyF,QAAQ3qF,OAAYD,EAAJE,EAASA,IAExCiB,IAAQ/I,KAAKwyF,QAAQ1qF,GAAGd,QAExBhH,KAAK8iB,OAAO9iB,KAAKwyF,QAAQ1qF,GAIjC,KAAKA,EAAI,EAAGF,EAAM5H,KAAKyyF,KAAK5qF,OAAYD,EAAJE,EAASA,IAErCiB,IAAQ/I,KAAKyyF,KAAK3qF,GAAGd,QAErBhH,KAAK8iB,OAAO9iB,KAAKyyF,KAAK3qF,MActC+J,IAAK,SAAUk/C,GAEXA,EAAMylC,SAAWx2F,KACjBA,KAAKyyF,KAAK7/E,KAAKm+C,IAWnBrwC,OAAQ,SAAU4U,GAEd,MAAO,IAAIj1B,GAAOuzD,MAAMt+B,EAAQt1B,KAAKwa,KAAMxa,OAU/C8iB,OAAQ,SAAUiuC,GAEd,GAAIjpD,GAAI9H,KAAKwyF,QAAQniE,QAAQ0gC,EAEnB,MAANjpD,EAEA9H,KAAKwyF,QAAQ1qF,GAAGyuF,eAAgB,GAIhCzuF,EAAI9H,KAAKyyF,KAAKpiE,QAAQ0gC,GAEZ,KAANjpD,IAEA9H,KAAKyyF,KAAK3qF,GAAGyuF,eAAgB,KAYzCh4E,OAAQ,WAEJ,GAAIk4E,GAAYz2F,KAAKyyF,KAAK5qF,OACtB6uF,EAAY12F,KAAKwyF,QAAQ3qF,MAE7B,IAAkB,IAAd6uF,GAAiC,IAAdD,EAEnB,OAAO,CAKX,KAFA,GAAI3uF,GAAI,EAEG4uF,EAAJ5uF,GAEC9H,KAAKwyF,QAAQ1qF,GAAGyW,OAAOve,KAAKwa,KAAKmE,KAAKA,MAEtC7W,KAIA9H,KAAKwyF,QAAQrvE,OAAOrb,EAAG,GAEvB4uF,IAWR,OANID,GAAY,IAEZz2F,KAAKwyF,QAAUxyF,KAAKwyF,QAAQ3rF,OAAO7G,KAAKyyF,MACxCzyF,KAAKyyF,KAAK5qF,OAAS,IAGhB,GAWX8uF,WAAY,SAASrhE,GAEjB,MAAOt1B,MAAKwyF,QAAQoE,KAAK,SAAS7lC,GAC9B,MAAOA,GAAM/pD,SAAWsuB,KAWhC8gE,UAAW,WAEP,IAAK,GAAItuF,GAAI9H,KAAKwyF,QAAQ3qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAKwyF,QAAQ1qF,GAAG+uF,UAWxBR,WAAY,WAER,IAAK,GAAIvuF,GAAI9H,KAAKwyF,QAAQ3qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAKwyF,QAAQ1qF,GAAGgvF,WAUxBC,SAAU,WAEN,IAAK,GAAIjvF,GAAI9H,KAAKwyF,QAAQ3qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAKwyF,QAAQ1qF,GAAG0a,SAUxBw0E,UAAW,WAEP,IAAK,GAAIlvF,GAAI9H,KAAKwyF,QAAQ3qF,OAAS,EAAGC,GAAK,EAAGA,IAE1C9H,KAAKwyF,QAAQ1qF,GAAG4a,QAAO,KAOnCriB,EAAOo5B,aAAapzB,UAAU8B,YAAc9H,EAAOo5B,aAqBnDp5B,EAAOuzD,MAAQ,SAAU5sD,EAAQwT,EAAMy8E,GAKnCj3F,KAAKwa,KAAOA,EAKZxa,KAAKgH,OAASA,EAKdhH,KAAKi3F,QAAUA,EAKfj3F,KAAKk3F,YASLl3F,KAAK4I,SAAU,EASf5I,KAAKm3F,UAAY,EAKjBn3F,KAAKo3F,cAAgB,EAOrBp3F,KAAKu2F,eAAgB,EAOrBv2F,KAAKq3F,QAAU,GAAIh3F,GAAO+a,OAQ1Bpb,KAAKs3F,OAAS,GAAIj3F,GAAO+a,OAOzBpb,KAAKu3F,SAAW,GAAIl3F,GAAO+a,OAQ3Bpb,KAAKw3F,gBAAkB,GAAIn3F,GAAO+a,OAOlCpb,KAAKy3F,WAAa,GAAIp3F,GAAO+a,OAM7Bpb,KAAKy3B,WAAY,EAOjBz3B,KAAKqJ,QAAU,EAKfrJ,KAAK86E,cAKL96E,KAAK03F,aAAe,KAMpB13F,KAAK23F,UAAW,EAgBhB33F,KAAKuyF,WAAa0E,EAAQ1E,WAO1BvyF,KAAK43F,kBAAoB,KAOzB53F,KAAK63F,yBAA2B,KAOhC73F,KAAK83F,YAAc,EAMnB93F,KAAKo4B,aAAc,EAMnBp4B,KAAK+3F,aAAc,GAGvB13F,EAAOuzD,MAAMvtD,WAkBT+F,GAAI,SAAU0uE,EAAYj/D,EAAUm8E,EAAMr1E,EAAW0xB,EAAO5rB,EAAQwvE,GAchE,OAZiBvuF,SAAbmS,GAAsC,GAAZA,KAAiBA,EAAW,KAC7CnS,SAATsuF,GAA+B,OAATA,IAAiBA,EAAO33F,EAAOuyF,OAAOsF,SAC9CxuF,SAAdiZ,IAA2BA,GAAY,GAC7BjZ,SAAV2qC,IAAuBA,EAAQ,GACpB3qC,SAAX+e,IAAwBA,EAAS,GACxB/e,SAATuuF,IAAsBA,GAAO,GAEb,gBAATD,IAAqBh4F,KAAKi3F,QAAQvE,QAAQsF,KAEjDA,EAAOh4F,KAAKi3F,QAAQvE,QAAQsF,IAG5Bh4F,KAAKy3B,WAELrvB,QAAQG,KAAK,sDACNvI,OAGXA,KAAKk3F,SAAStkF,KAAK,GAAIvS,GAAO83F,UAAUn4F,MAAMoM,GAAG0uE,EAAYj/D,EAAUm8E,EAAM3jD,EAAO5rB,EAAQwvE,IAExFt1E,GAEA3iB,KAAK0Q,QAGF1Q,OAoBXmM,KAAM,SAAU2uE,EAAYj/D,EAAUm8E,EAAMr1E,EAAW0xB,EAAO5rB,EAAQwvE,GAclE,MAZiBvuF,UAAbmS,IAA0BA,EAAW,KAC5BnS,SAATsuF,GAA+B,OAATA,IAAiBA,EAAO33F,EAAOuyF,OAAOsF,SAC9CxuF,SAAdiZ,IAA2BA,GAAY,GAC7BjZ,SAAV2qC,IAAuBA,EAAQ,GACpB3qC,SAAX+e,IAAwBA,EAAS,GACxB/e,SAATuuF,IAAsBA,GAAO,GAEb,gBAATD,IAAqBh4F,KAAKi3F,QAAQvE,QAAQsF,KAEjDA,EAAOh4F,KAAKi3F,QAAQvE,QAAQsF,IAG5Bh4F,KAAKy3B,WAELrvB,QAAQG,KAAK,wDACNvI,OAGXA,KAAKk3F,SAAStkF,KAAK,GAAIvS,GAAO83F,UAAUn4F,MAAMmM,KAAK2uE,EAAYj/D,EAAUm8E,EAAM3jD,EAAO5rB,EAAQwvE,IAE1Ft1E,GAEA3iB,KAAK0Q,QAGF1Q,OAaX0Q,MAAO,SAAUgf,GAIb,GAFchmB,SAAVgmB,IAAuBA,EAAQ,GAEjB,OAAd1vB,KAAKwa,MAAiC,OAAhBxa,KAAKgH,QAA4C,IAAzBhH,KAAKk3F,SAASrvF,QAAgB7H,KAAKy3B,UAEjF,MAAOz3B,KAIX,KAAK,GAAI8H,GAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAGtC,IAAK,GAAIirB,KAAY/yB,MAAKk3F,SAASpvF,GAAGswF,KAElCp4F,KAAK86E,WAAW/nD,GAAY/yB,KAAKgH,OAAO+rB,IAAa,EAEhDvsB,MAAMa,QAAQrH,KAAK86E,WAAW/nD,MAG/B/yB,KAAK86E,WAAW/nD,IAAa,EAKzC,KAAK,GAAIjrB,GAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAEtC9H,KAAKk3F,SAASpvF,GAAGuwF,YAgBrB,OAbAr4F,MAAKi3F,QAAQplF,IAAI7R,MAEjBA,KAAKy3B,WAAY,GAEL,EAAR/H,GAAaA,EAAQ1vB,KAAKk3F,SAASrvF,OAAS,KAE5C6nB,EAAQ,GAGZ1vB,KAAKqJ,QAAUqmB,EAEf1vB,KAAKk3F,SAASl3F,KAAKqJ,SAASqH,QAErB1Q,MAaXi8B,KAAM,SAAUq8D,GAsBZ,MApBiB5uF,UAAb4uF,IAA0BA,GAAW,GAEzCt4F,KAAKy3B,WAAY,EAEjBz3B,KAAK43F,kBAAoB,KACzB53F,KAAK63F,yBAA2B,KAE5BS,IAEAt4F,KAAKy3F,WAAW54E,SAAS7e,KAAKgH,OAAQhH,MACtCA,KAAK+3F,aAAc,EAEf/3F,KAAK03F,cAEL13F,KAAK03F,aAAahnF,SAI1B1Q,KAAKi3F,QAAQn0E,OAAO9iB,MAEbA,MAeXu4F,gBAAiB,SAAUxlE,EAAUxpB,EAAOmmB,GAExC,GAA6B,IAAzB1vB,KAAKk3F,SAASrvF,OAAgB,MAAO7H,KAIzC,IAFc0J,SAAVgmB,IAAuBA,EAAQ,GAErB,KAAVA,EAEA,IAAK,GAAI5nB,GAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAEtC9H,KAAKk3F,SAASpvF,GAAGirB,GAAYxpB,MAKjCvJ,MAAKk3F,SAASxnE,GAAOqD,GAAYxpB,CAGrC,OAAOvJ,OAeXq0C,MAAO,SAAUx4B,EAAU6T,GAEvB,MAAO1vB,MAAKu4F,gBAAgB,QAAS18E,EAAU6T,IAgBnDjH,OAAQ,SAAUmM,EAAO4jE,EAAa9oE,GAMlC,MAJoBhmB,UAAhB8uF,IAA6BA,EAAc,GAE/Cx4F,KAAKu4F,gBAAgB,gBAAiB3jE,EAAOlF,GAEtC1vB,KAAKu4F,gBAAgB,cAAeC,EAAa9oE,IAe5D8oE,YAAa,SAAU38E,EAAU6T,GAE7B,MAAO1vB,MAAKu4F,gBAAgB,cAAe18E,EAAU6T,IAiBzDuoE,KAAM,SAASloE,EAAQ0oE,EAAW/oE,GAM9B,MAJkBhmB,UAAd+uF,IAA2BA,EAAY,GAE3Cz4F,KAAKu4F,gBAAgB,OAAQxoE,EAAQL,GAE9B1vB,KAAKu4F,gBAAgB,YAAaE,EAAW/oE,IAexD+oE,UAAW,SAAU58E,EAAU6T,GAE3B,MAAO1vB,MAAKu4F,gBAAgB,YAAa18E,EAAU6T,IAevDgpE,OAAQ,SAAUV,EAAMtoE,GAOpB,MALoB,gBAATsoE,IAAqBh4F,KAAKi3F,QAAQvE,QAAQsF,KAEjDA,EAAOh4F,KAAKi3F,QAAQvE,QAAQsF,IAGzBh4F,KAAKu4F,gBAAgB,iBAAkBP,EAAMtoE,IAgBxDipE,cAAe,SAAUA,EAAet0E,EAASqL,GAM7C,MAJgBhmB,UAAZ2a,IAAyBA,EAAUhkB,EAAO0F,MAE9C/F,KAAKu4F,gBAAgB,wBAAyBI,EAAejpE,GAEtD1vB,KAAKu4F,gBAAgB,uBAAwBl0E,EAASqL,IAYjEkpE,UAAW,SAAUhkE,GAMjB,MAJclrB,UAAVkrB,IAAuBA,EAAQ,GAEnC50B,KAAKo3F,cAAgBxiE,EAEd50B,MAkBX64F,MAAO,WAIH,IAFA,GAAI/wF,GAAIf,UAAUc,OAEXC,KAECA,EAAI,EAEJf,UAAUe,EAAI,GAAG4vF,aAAe3wF,UAAUe,GAI1C9H,KAAK03F,aAAe3wF,UAAUe,EAItC,OAAO9H,OAoBXgnD,KAAM,SAAUz9C,GAMZ,MAJcG,UAAVH,IAAuBA,GAAQ,GAEnCvJ,KAAKo3F,cAAgB,EAAU,GAAK,EAE7Bp3F,MAYX6hB,iBAAkB,SAAUwR,EAAUtQ,GAKlC,MAHA/iB,MAAK43F,kBAAoBvkE,EACzBrzB,KAAK63F,yBAA2B90E,EAEzB/iB,MASXwiB,MAAO,WAEHxiB,KAAK23F,UAAW,EAEhB33F,KAAKo4B,aAAc,EAEnBp4B,KAAK83F,YAAc93F,KAAKwa,KAAKmE,KAAKA,MAUtCk4E,OAAQ,WAEC72F,KAAKo4B,cAENp4B,KAAK23F,UAAW,EAEhB33F,KAAK83F,YAAc93F,KAAKwa,KAAKmE,KAAKA,OAU1C+D,OAAQ,WAEJ,GAAI1iB,KAAK23F,SACT,CACI33F,KAAK23F,UAAW,EAEhB33F,KAAKo4B,aAAc,CAEnB,KAAK,GAAItwB,GAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAEjC9H,KAAKk3F,SAASpvF,GAAG2vB,YAElBz3B,KAAKk3F,SAASpvF,GAAGgxF,WAAc94F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK83F,eAY1EhB,QAAS,WAED92F,KAAKo4B,aAMLp4B,KAAK0iB,UAYbnE,OAAQ,SAAUI,GAEd,GAAI3e,KAAKu2F,gBAAkBv2F,KAAKgH,OAE5B,OAAO,CAGX,IAAIhH,KAAK23F,SAEL,OAAO,CAGX,IAAIoB,GAAS/4F,KAAKk3F,SAASl3F,KAAKqJ,SAASkV,OAAOI,EAEhD,IAAIo6E,IAAW14F,EAAO83F,UAAUa,QAE5B,OAAO,CAEN,IAAID,IAAW14F,EAAO83F,UAAUc,QAcjC,MAZKj5F,MAAK+3F,cAEN/3F,KAAKq3F,QAAQx4E,SAAS7e,KAAKgH,OAAQhH,MACnCA,KAAK+3F,aAAc,GAGQ,OAA3B/3F,KAAK43F,mBAEL53F,KAAK43F,kBAAkB9wF,KAAK9G,KAAK63F,yBAA0B73F,KAAMA,KAAKk3F,SAASl3F,KAAKqJ,SAASE,MAAOvJ,KAAKk3F,SAASl3F,KAAKqJ,UAIpHrJ,KAAKy3B,SAEX,IAAIshE,IAAW14F,EAAO83F,UAAUe,OAWjC,MATkD,KAA9Cl5F,KAAKk3F,SAASl3F,KAAKqJ,SAAS+tF,cAE5Bp3F,KAAKs3F,OAAOz4E,SAAS7e,KAAKgH,OAAQhH,MAIlCA,KAAKu3F,SAAS14E,SAAS7e,KAAKgH,OAAQhH,OAGjC,CAEN,IAAI+4F,IAAW14F,EAAO83F,UAAUgB,SACrC,CACI,GAAIb,IAAW,CAwBf,OArBIt4F,MAAK4I,SAEL5I,KAAKqJ,UAEDrJ,KAAKqJ,QAAU,IAEfrJ,KAAKqJ,QAAUrJ,KAAKk3F,SAASrvF,OAAS,EACtCywF,GAAW,KAKft4F,KAAKqJ,UAEDrJ,KAAKqJ,UAAYrJ,KAAKk3F,SAASrvF,SAE/B7H,KAAKqJ,QAAU,EACfivF,GAAW,IAIfA,EAG2B,KAAvBt4F,KAAKo3F,eAELp3F,KAAKk3F,SAASl3F,KAAKqJ,SAASqH,QAC5B1Q,KAAKs3F,OAAOz4E,SAAS7e,KAAKgH,OAAQhH,OAC3B,GAEFA,KAAKo3F,cAAgB,GAE1Bp3F,KAAKo3F,gBAELp3F,KAAKk3F,SAASl3F,KAAKqJ,SAASqH,QAC5B1Q,KAAKu3F,SAAS14E,SAAS7e,KAAKgH,OAAQhH,OAC7B,IAKPA,KAAKy3B,WAAY,EACjBz3B,KAAKy3F,WAAW54E,SAAS7e,KAAKgH,OAAQhH,MACtCA,KAAK+3F,aAAc,EAEf/3F,KAAK03F,cAEL13F,KAAK03F,aAAahnF,SAGf,IAMX1Q,KAAKw3F,gBAAgB34E,SAAS7e,KAAKgH,OAAQhH,MAC3CA,KAAKk3F,SAASl3F,KAAKqJ,SAASqH,SACrB,KAiBnB0oF,aAAc,SAAUryC,EAAW1kB,GAE/B,GAAkB,OAAdriC,KAAKwa,MAAiC,OAAhBxa,KAAKgH,OAE3B,MAAO,KAGO0C,UAAdq9C,IAA2BA,EAAY,IAC9Br9C,SAAT24B,IAAsBA,KAG1B,KAAK,GAAIv6B,GAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAGtC,IAAK,GAAIirB,KAAY/yB,MAAKk3F,SAASpvF,GAAGswF,KAElCp4F,KAAK86E,WAAW/nD,GAAY/yB,KAAKgH,OAAO+rB,IAAa,EAEhDvsB,MAAMa,QAAQrH,KAAK86E,WAAW/nD,MAG/B/yB,KAAK86E,WAAW/nD,IAAa,EAKzC,KAAK,GAAIjrB,GAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAEtC9H,KAAKk3F,SAASpvF,GAAGuwF,YAGrB,KAAK,GAAIvwF,GAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAEtCu6B,EAAOA,EAAKx7B,OAAO7G,KAAKk3F,SAASpvF,GAAGsxF,aAAaryC,GAGrD,OAAO1kB,KAUf96B,OAAO2E,eAAe7L,EAAOuzD,MAAMvtD,UAAW,iBAE1C2F,IAAK,WAID,IAAK,GAFD4oB,GAAQ,EAEH9sB,EAAI,EAAGA,EAAI9H,KAAKk3F,SAASrvF,OAAQC,IAEtC8sB,GAAS50B,KAAKk3F,SAASpvF,GAAG+T,QAG9B,OAAO+Y,MAMfv0B,EAAOuzD,MAAMvtD,UAAU8B,YAAc9H,EAAOuzD,MAiB5CvzD,EAAO83F,UAAY,SAAU3uE,GAKzBxpB,KAAKwpB,OAASA,EAKdxpB,KAAKwa,KAAOgP,EAAOhP,KAMnBxa,KAAKq5F,UAMLr5F,KAAKs5F,eAMLt5F,KAAKo4F,QAMLp4F,KAAKu5F,aAMLv5F,KAAK6b,SAAW,IAMhB7b,KAAKyvF,QAAU,EAMfzvF,KAAKuJ,MAAQ,EAKbvJ,KAAKo3F,cAAgB,EAKrBp3F,KAAKw4F,YAAc,EAMnBx4F,KAAKw5F,YAAc,EAMnBx5F,KAAK0W,aAAc,EAMnB1W,KAAKi4F,MAAO,EAKZj4F,KAAKy4F,UAAY,EAMjBz4F,KAAKy5F,WAAY,EAMjBz5F,KAAKq0C,MAAQ,EAKbr0C,KAAKmiE,GAAK,EAKVniE,KAAK84F,UAAY,KAMjB94F,KAAK05F,eAAiBr5F,EAAOuyF,OAAOsF,QAMpCl4F,KAAK25F,sBAAwBt5F,EAAO0F,KAAKgoF,oBAMzC/tF,KAAK45F,qBAAuBv5F,EAAO0F,KAMnC/F,KAAKy3B,WAAY,EAMjBz3B,KAAK65F,QAAS,GAQlBx5F,EAAO83F,UAAUa,QAAU,EAM3B34F,EAAO83F,UAAUc,QAAU,EAM3B54F,EAAO83F,UAAUe,OAAS,EAM1B74F,EAAO83F,UAAUgB,SAAW,EAE5B94F,EAAO83F,UAAU9xF,WAeb+F,GAAI,SAAU0uE,EAAYj/D,EAAUm8E,EAAM3jD,EAAO5rB,EAAQwvE,GAWrD,MATAj4F,MAAKo4F,KAAOtd,EACZ96E,KAAK6b,SAAWA,EAChB7b,KAAK05F,eAAiB1B,EACtBh4F,KAAKq0C,MAAQA,EACbr0C,KAAKw5F,YAAc/wE,EACnBzoB,KAAKi4F,KAAOA,EAEZj4F,KAAK65F,QAAS,EAEP75F,MAiBXmM,KAAM,SAAU2uE,EAAYj/D,EAAUm8E,EAAM3jD,EAAO5rB,EAAQwvE,GAWvD,MATAj4F,MAAKo4F,KAAOtd,EACZ96E,KAAK6b,SAAWA,EAChB7b,KAAK05F,eAAiB1B,EACtBh4F,KAAKq0C,MAAQA,EACbr0C,KAAKw5F,YAAc/wE,EACnBzoB,KAAKi4F,KAAOA,EAEZj4F,KAAK65F,QAAS,EAEP75F,MAUX0Q,MAAO,WAsBH,GApBA1Q,KAAK84F,UAAY94F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKq0C,MAExCr0C,KAAKwpB,OAAO5gB,QAEZ5I,KAAKmiE,GAAKniE,KAAK6b,SAIf7b,KAAKmiE,GAAK,EAGVniE,KAAKq0C,MAAQ,EAEbr0C,KAAKy3B,WAAY,EAIjBz3B,KAAKy3B,WAAY,EAGjBz3B,KAAK65F,OAGL,IAAK,GAAI9mE,KAAY/yB,MAAKs5F,YAEtBt5F,KAAKq5F,OAAOtmE,GAAY/yB,KAAKu5F,UAAUxmE,GACvC/yB,KAAKo4F,KAAKrlE,GAAY/yB,KAAKs5F,YAAYvmE,GACvC/yB,KAAKwpB,OAAOxiB,OAAO+rB,GAAY/yB,KAAKq5F,OAAOtmE,EAQnD,OAJA/yB,MAAKuJ,MAAQ,EACbvJ,KAAK85F,YAAc,EACnB95F,KAAKo3F,cAAgBp3F,KAAKw5F,YAEnBx5F,MAWXq4F,WAAY,WAER,IAAK,GAAItlE,KAAY/yB,MAAKwpB,OAAOsxD,WACjC,CAKI,GAHA96E,KAAKq5F,OAAOtmE,GAAY/yB,KAAKwpB,OAAOsxD,WAAW/nD,GAG3CvsB,MAAMa,QAAQrH,KAAKo4F,KAAKrlE,IAC5B,CACI,GAAmC,IAA/B/yB,KAAKo4F,KAAKrlE,GAAUlrB,OAEpB,QAGiB,KAAjB7H,KAAKyvF,UAILzvF,KAAKo4F,KAAKrlE,IAAa/yB,KAAKq5F,OAAOtmE,IAAWlsB,OAAO7G,KAAKo4F,KAAKrlE,KAIpC,mBAAxB/yB,MAAKo4F,KAAKrlE,IAEkB,gBAAxB/yB,MAAKo4F,KAAKrlE,KAGjB/yB,KAAKo4F,KAAKrlE,GAAY/yB,KAAKq5F,OAAOtmE,GAAYuoD,WAAWt7E,KAAKo4F,KAAKrlE,GAAW,KAGlF/yB,KAAKwpB,OAAOsxD,WAAW/nD,GAAY/yB,KAAKo4F,KAAKrlE,IAK7C/yB,KAAKo4F,KAAKrlE,GAAY/yB,KAAKq5F,OAAOtmE,GAGtC/yB,KAAKs5F,YAAYvmE,GAAY/yB,KAAKq5F,OAAOtmE,GACzC/yB,KAAKu5F,UAAUxmE,GAAY/yB,KAAKo4F,KAAKrlE,GAGzC,MAAO/yB,OAYXue,OAAQ,SAAUI,GAEd,GAAK3e,KAAKy3B,WAcN,GAAI9Y,EAAO3e,KAAK84F,UAEZ,MAAOz4F,GAAO83F,UAAUc,YAfhC,CACI,KAAIt6E,GAAQ3e,KAAK84F,WAMb,MAAOz4F,GAAO83F,UAAUa,OAJxBh5F,MAAKy3B,WAAY,EAgBzB,GAAIsiE,GAAM/5F,KAAKwpB,OAAiB,WAAIxpB,KAAKwa,KAAKmE,KAAK8uC,iBAAmBztD,KAAKwa,KAAKmE,KAAKC,SAEjF5e,MAAKwpB,OAAO5gB,SAEZ5I,KAAKmiE,IAAM43B,EAAK/5F,KAAKwpB,OAAO2tE,UAC5Bn3F,KAAKmiE,GAAKp8D,KAAKoM,IAAInS,KAAKmiE,GAAI,KAI5BniE,KAAKmiE,IAAM43B,EAAK/5F,KAAKwpB,OAAO2tE,UAC5Bn3F,KAAKmiE,GAAKp8D,KAAKkM,IAAIjS,KAAKmiE,GAAIniE,KAAK6b,WAGrC7b,KAAKyvF,QAAUzvF,KAAKmiE,GAAKniE,KAAK6b,SAE9B7b,KAAKuJ,MAAQvJ,KAAK05F,eAAe15F,KAAKyvF,QAEtC,KAAK,GAAI18D,KAAY/yB,MAAKo4F,KAC1B,CACI,GAAI1nF,GAAQ1Q,KAAKq5F,OAAOtmE,GACpBpiB,EAAM3Q,KAAKo4F,KAAKrlE,EAEhBvsB,OAAMa,QAAQsJ,GAEd3Q,KAAKwpB,OAAOxiB,OAAO+rB,GAAY/yB,KAAK25F,sBAAsB7yF,KAAK9G,KAAK45F,qBAAsBjpF,EAAK3Q,KAAKuJ,OAIpGvJ,KAAKwpB,OAAOxiB,OAAO+rB,GAAYriB,GAAUC,EAAMD,GAAS1Q,KAAKuJ,MAIrE,OAAMvJ,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAKyvF,SAAmBzvF,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAKyvF,QAEtEzvF,KAAKyoB,SAGTpoB,EAAO83F,UAAUc,SAa5BG,aAAc,SAAUryC,GAEhB/mD,KAAKwpB,OAAO5gB,QAEZ5I,KAAKmiE,GAAKniE,KAAK6b,SAIf7b,KAAKmiE,GAAK,CAGd,IAAI9/B,MACAi2D,GAAW,EACX0B,EAAO,EAAIjzC,EAAa,GAE5B,GACA,CACQ/mD,KAAKwpB,OAAO5gB,SAEZ5I,KAAKmiE,IAAM63B,EACXh6F,KAAKmiE,GAAKp8D,KAAKoM,IAAInS,KAAKmiE,GAAI,KAI5BniE,KAAKmiE,IAAM63B,EACXh6F,KAAKmiE,GAAKp8D,KAAKkM,IAAIjS,KAAKmiE,GAAIniE,KAAK6b,WAGrC7b,KAAKyvF,QAAUzvF,KAAKmiE,GAAKniE,KAAK6b,SAE9B7b,KAAKuJ,MAAQvJ,KAAK05F,eAAe15F,KAAKyvF,QAEtC,IAAIwK,KAEJ,KAAK,GAAIlnE,KAAY/yB,MAAKo4F,KAC1B,CACI,GAAI1nF,GAAQ1Q,KAAKq5F,OAAOtmE,GACpBpiB,EAAM3Q,KAAKo4F,KAAKrlE,EAEhBvsB,OAAMa,QAAQsJ,GAEdspF,EAAKlnE,GAAY/yB,KAAK25F,sBAAsBhpF,EAAK3Q,KAAKuJ,OAItD0wF,EAAKlnE,GAAYriB,GAAUC,EAAMD,GAAS1Q,KAAKuJ,MAIvD84B,EAAKzvB,KAAKqnF,KAEJj6F,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAKyvF,SAAmBzvF,KAAKwpB,OAAO5gB,SAA4B,IAAjB5I,KAAKyvF,WAE7E6I,GAAW,UAGTA,EAEV,IAAIt4F,KAAKi4F,KACT,CACI,GAAIiC,GAAW73D,EAAK97B,OACpB2zF,GAAStxF,UACTy5B,EAAOA,EAAKx7B,OAAOqzF,GAGvB,MAAO73D,IAWX5Z,OAAQ,WAGJ,GAAIzoB,KAAKi4F,KACT,CAEI,GAAIj4F,KAAKy5F,WAAoC,IAAvBz5F,KAAKo3F,cAC3B,CAEI,IAAK,GAAIrkE,KAAY/yB,MAAKs5F,YAEtBt5F,KAAKq5F,OAAOtmE,GAAY/yB,KAAKs5F,YAAYvmE,GACzC/yB,KAAKo4F,KAAKrlE,GAAY/yB,KAAKu5F,UAAUxmE,EAKzC,OAFA/yB,MAAKy5F,WAAY,EAEVp5F,EAAO83F,UAAUgB,SAG5Bn5F,KAAKy5F,WAAaz5F,KAAKy5F,cAIvB,IAA2B,IAAvBz5F,KAAKo3F,cAEL,MAAO/2F,GAAO83F,UAAUgB,QAIhC,IAAIn5F,KAAKy5F,UAGL,IAAK,GAAI1mE,KAAY/yB,MAAKs5F,YAEtBt5F,KAAKq5F,OAAOtmE,GAAY/yB,KAAKu5F,UAAUxmE,GACvC/yB,KAAKo4F,KAAKrlE,GAAY/yB,KAAKs5F,YAAYvmE,OAI/C,CAEI,IAAK,GAAIA,KAAY/yB,MAAKs5F,YAEtBt5F,KAAKq5F,OAAOtmE,GAAY/yB,KAAKs5F,YAAYvmE,GACzC/yB,KAAKo4F,KAAKrlE,GAAY/yB,KAAKu5F,UAAUxmE,EAKrC/yB,MAAKo3F,cAAgB,GAErBp3F,KAAKo3F,gBAwBb,MApBAp3F,MAAK84F,UAAY94F,KAAKwa,KAAKmE,KAAKA,KAE5B3e,KAAKi4F,MAAQj4F,KAAKy5F,UAElBz5F,KAAK84F,WAAa94F,KAAKy4F,UAEjBz4F,KAAKy5F,YAEXz5F,KAAK84F,WAAa94F,KAAKw4F,aAGvBx4F,KAAKwpB,OAAO5gB,QAEZ5I,KAAKmiE,GAAKniE,KAAK6b,SAIf7b,KAAKmiE,GAAK,EAGP9hE,EAAO83F,UAAUe,SAMhC74F,EAAO83F,UAAU9xF,UAAU8B,YAAc9H,EAAO83F,UAehD93F,EAAOuyF,QAOHK,QASIC,KAAM,SAAWv6C,GAEb,MAAOA,KAWfy6C,WASIiB,GAAI,SAAW17C,GAEX,MAAOA,GAAIA,GAWf06C,IAAK,SAAW16C,GAEZ,MAAOA,IAAM,EAAIA,IAWrB+8C,MAAO,SAAW/8C,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,GAC9B,MAAUA,GAAMA,EAAI,GAAM,KAW3C26C,OASIe,GAAI,SAAW17C,GAEX,MAAOA,GAAIA,EAAIA,GAWnB06C,IAAK,SAAW16C,GAEZ,QAASA,EAAIA,EAAIA,EAAI,GAWzB+8C,MAAO,SAAW/8C,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,EAAIA,EACpC,KAAUA,GAAK,GAAMA,EAAIA,EAAI,KAW5C66C,SASIa,GAAI,SAAW17C,GAEX,MAAOA,GAAIA,EAAIA,EAAIA,GAWvB06C,IAAK,SAAW16C,GAEZ,MAAO,MAAQA,EAAIA,EAAIA,EAAIA,GAW/B+8C,MAAO,SAAW/8C,GAEd,OAAOA,GAAK,GAAM,EAAU,GAAMA,EAAIA,EAAIA,EAAIA,GACrC,KAAUA,GAAK,GAAMA,EAAIA,EAAIA,EAAI,KAWlD+6C,SASIW,GAAI,SAAW17C,GAEX,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAW3B06C,IAAK,SAAW16C,GAEZ,QAASA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,GAWjC+8C,MAAO,SAAW/8C,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAC5C,KAAUA,GAAK,GAAMA,EAAIA,EAAIA,EAAIA,EAAI,KAWpDi7C,YASIS,GAAI,SAAW17C,GAEX,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACb,EAAI5yC,KAAKoH,IAAKwrC,EAAI5yC,KAAK+G,GAAK,IAWvCumF,IAAK,SAAW16C,GAEZ,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACb5yC,KAAKqH,IAAKurC,EAAI5yC,KAAK+G,GAAK,IAWnC4oF,MAAO,SAAW/8C,GAEd,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACb,IAAQ,EAAI5yC,KAAKoH,IAAKpH,KAAK+G,GAAK6rC,MAW/Cm7C,aASIO,GAAI,SAAW17C,GAEX,MAAa,KAANA,EAAU,EAAI5yC,KAAK6mF,IAAK,KAAMj0C,EAAI,IAW7C06C,IAAK,SAAW16C,GAEZ,MAAa,KAANA,EAAU,EAAI,EAAI5yC,KAAK6mF,IAAK,EAAG,IAAOj0C,IAWjD+8C,MAAO,SAAW/8C,GAEd,MAAW,KAANA,EAAiB,EACX,IAANA,EAAiB,GACfA,GAAK,GAAM,EAAW,GAAM5yC,KAAK6mF,IAAK,KAAMj0C,EAAI,GAChD,KAAU5yC,KAAK6mF,IAAK,EAAG,KAASj0C,EAAI,IAAQ,KAW3Dq7C,UASIK,GAAI,SAAW17C,GAEX,MAAO,GAAI5yC,KAAKmK,KAAM,EAAIyoC,EAAIA,IAWlC06C,IAAK,SAAW16C,GAEZ,MAAO5yC,MAAKmK,KAAM,KAAQyoC,EAAIA,IAWlC+8C,MAAO,SAAW/8C,GAEd,OAAOA,GAAK,GAAM,GAAY,IAAQ5yC,KAAKmK,KAAM,EAAIyoC,EAAIA,GAAK,GACvD,IAAQ5yC,KAAKmK,KAAM,GAAMyoC,GAAK,GAAKA,GAAK,KAWvDs7C,SASII,GAAI,SAAW17C,GAEX,GAAIliC,GAAGhI,EAAI,GAAKwB,EAAI,EACpB,OAAW,KAAN0oC,EAAiB,EACX,IAANA,EAAiB,IAChBlqC,GAAS,EAAJA,GAAUA,EAAI,EAAGgI,EAAIxG,EAAI,GAC/BwG,EAAIxG,EAAIlK,KAAKo0F,KAAM,EAAI1rF,IAAQ,EAAI1I,KAAK+G,MAClC2B,EAAI1I,KAAK6mF,IAAK,EAAG,IAAOj0C,GAAK,IAAQ5yC,KAAKqH,KAAOurC,EAAIliC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,MAW5FojF,IAAK,SAAW16C,GAEZ,GAAIliC,GAAGhI,EAAI,GAAKwB,EAAI,EACpB,OAAW,KAAN0oC,EAAiB,EACX,IAANA,EAAiB,IAChBlqC,GAAS,EAAJA,GAAUA,EAAI,EAAGgI,EAAIxG,EAAI,GAC/BwG,EAAIxG,EAAIlK,KAAKo0F,KAAM,EAAI1rF,IAAQ,EAAI1I,KAAK+G,IACpC2B,EAAI1I,KAAK6mF,IAAK,EAAG,IAAOj0C,GAAK5yC,KAAKqH,KAAOurC,EAAIliC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,GAAM,IAWxFylF,MAAO,SAAW/8C,GAEd,GAAIliC,GAAGhI,EAAI,GAAKwB,EAAI,EACpB,OAAW,KAAN0oC,EAAiB,EACX,IAANA,EAAiB,IAChBlqC,GAAS,EAAJA,GAAUA,EAAI,EAAGgI,EAAIxG,EAAI,GAC/BwG,EAAIxG,EAAIlK,KAAKo0F,KAAM,EAAI1rF,IAAQ,EAAI1I,KAAK+G,KACtC6rC,GAAK,GAAM,GAAa,IAAQlqC,EAAI1I,KAAK6mF,IAAK,EAAG,IAAOj0C,GAAK,IAAQ5yC,KAAKqH,KAAOurC,EAAIliC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,IAC7GxB,EAAI1I,KAAK6mF,IAAK,EAAG,KAAQj0C,GAAK,IAAQ5yC,KAAKqH,KAAOurC,EAAIliC,IAAQ,EAAI1Q,KAAK+G,IAAOmD,GAAM,GAAM,KAWzGikF,MASIG,GAAI,SAAW17C,GAEX,GAAIliC,GAAI,OACR,OAAOkiC,GAAIA,IAAQliC,EAAI,GAAMkiC,EAAIliC,IAWrC48E,IAAK,SAAW16C,GAEZ,GAAIliC,GAAI,OACR,SAASkiC,EAAIA,IAAQliC,EAAI,GAAMkiC,EAAIliC,GAAM,GAW7Ci/E,MAAO,SAAW/8C,GAEd,GAAIliC,GAAI,SACR,QAAOkiC,GAAK,GAAM,EAAW,IAAQA,EAAIA,IAAQliC,EAAI,GAAMkiC,EAAIliC,IACxD,KAAUkiC,GAAK,GAAMA,IAAQliC,EAAI,GAAMkiC,EAAIliC,GAAM,KAWhE09E,QASIE,GAAI,SAAW17C,GAEX,MAAO,GAAIt4C,EAAOuyF,OAAOuB,OAAOd,IAAK,EAAI16C,IAW7C06C,IAAK,SAAW16C,GAEZ,MAAW,GAAI,KAAVA,EAEM,OAASA,EAAIA,EAEN,EAAI,KAAVA,EAED,QAAWA,GAAO,IAAM,MAAWA,EAAI,IAEhC,IAAM,KAAZA,EAED,QAAWA,GAAO,KAAO,MAAWA,EAAI,MAIxC,QAAWA,GAAO,MAAQ,MAAWA,EAAI,SAaxD+8C,MAAO,SAAW/8C,GAEd,MAAS,GAAJA,EAAoD,GAAnCt4C,EAAOuyF,OAAOuB,OAAOE,GAAQ,EAAJ17C,GACA,GAAxCt4C,EAAOuyF,OAAOuB,OAAOd,IAAS,EAAJ16C,EAAQ,GAAY,MAQjEt4C,EAAOuyF,OAAOsF,QAAU73F,EAAOuyF,OAAOK,OAAOC,KAC7C7yF,EAAOuyF,OAAOD,OAAStyF,EAAOuyF,OAAOK,OAAOC,KAC5C7yF,EAAOuyF,OAAOC,OAASxyF,EAAOuyF,OAAOQ,UAAUC,IAC/ChzF,EAAOuyF,OAAOE,OAASzyF,EAAOuyF,OAAOU,MAAMD,IAC3ChzF,EAAOuyF,OAAOG,OAAS1yF,EAAOuyF,OAAOY,QAAQH,IAC7ChzF,EAAOuyF,OAAOI,OAAS3yF,EAAOuyF,OAAOc,QAAQL,IAuC7ChzF,EAAOm5B,KAAO,SAAUhf,GAMpBxa,KAAKwa,KAAOA,EAOZxa,KAAK2e,KAAO,EAOZ3e,KAAKo6F,SAAW,EAchBp6F,KAAK+4B,IAAM,EAcX/4B,KAAK07B,QAAU,EAaf17B,KAAK4e,UAAY,EAajB5e,KAAK6gF,eAAiB,EAAI,GAO1B7gF,KAAKytD,iBAAoB,EAAI,GAAM,IAOnCztD,KAAKq7B,eAAiB,EAAM,GAW5Br7B,KAAKq6F,YAAc,GAYnBr6F,KAAKs6F,aAAet6F,KAAKw7B,WASzBx7B,KAAKu7B,WAAa,EAOlBv7B,KAAKu6F,gBAAiB,EAStBv6F,KAAKggF,OAAS,EASdhgF,KAAKg6F,IAAM,EASXh6F,KAAKw6F,OAAS,IASdx6F,KAAKy6F,OAAS,EAUdz6F,KAAK06F,MAAQ,IASb16F,KAAK26F,MAAQ,EAOb36F,KAAK46F,cAAgB,EAMrB56F,KAAKyrF,WAAa,EAMlBzrF,KAAK66F,aAAe,EAMpB76F,KAAKkwB,OAAS,GAAI7vB,GAAOy6F,MAAM96F,KAAKwa,MAAM,GAM1Cxa,KAAK+6F,YAAc,EAMnB/6F,KAAKg7F,oBAAsB,EAM3Bh7F,KAAKi7F,SAAW,EAMhBj7F,KAAKk7F,gBAAkB,EAMvBl7F,KAAKm7F,cAAgB,EAMrBn7F,KAAKo7F,cAAe,EAMpBp7F,KAAKq7F,YAITh7F,EAAOm5B,KAAKnzB,WAQRsW,KAAM,WAEF3c,KAAKi7F,SAAWrzE,KAAKmR,MACrB/4B,KAAK2e,KAAOiJ,KAAKmR,MACjB/4B,KAAKkwB,OAAOxf,QACZ1Q,KAAK66F,aAAe76F,KAAK2e,MAW7B9M,IAAK,SAAUypF,GAIX,MAFAt7F,MAAKq7F,QAAQzoF,KAAK0oF,GAEXA,GAWX56E,OAAQ,SAAU66E,GAEM7xF,SAAhB6xF,IAA6BA,GAAc,EAE/C,IAAID,GAAQ,GAAIj7F,GAAOy6F,MAAM96F,KAAKwa,KAAM+gF,EAIxC,OAFAv7F,MAAKq7F,QAAQzoF,KAAK0oF,GAEXA,GASX13E,UAAW,WAEP,IAAK,GAAI9b,GAAI,EAAGA,EAAI9H,KAAKq7F,QAAQxzF,OAAQC,IAErC9H,KAAKq7F,QAAQvzF,GAAGgc,SAGpB9jB,MAAKq7F,WAELr7F,KAAKkwB,OAAOtM,aAShBgY,QAAS,WAGL,GAAI4/D,GAAkBx7F,KAAK2e,IAG3B3e,MAAK2e,KAAOiJ,KAAKmR,MAGjB/4B,KAAK4e,UAAY5e,KAAK2e,KAAO68E,GAWjCj9E,OAAQ,SAAUI,GAGd,GAAI68E,GAAkBx7F,KAAK2e,IAG3B3e,MAAK2e,KAAOiJ,KAAKmR,MAGjB/4B,KAAK4e,UAAY5e,KAAK2e,KAAO68E,EAG7Bx7F,KAAKo6F,SAAWp6F,KAAK+4B,IAIrB/4B,KAAK+4B,IAAMpa,EAGX3e,KAAK07B,QAAU17B,KAAK+4B,IAAM/4B,KAAKo6F,SAE3Bp6F,KAAKwa,KAAKkd,IAAIyzD,gBAKdnrF,KAAKyrF,WAAa1lF,KAAKI,MAAMJ,KAAKoM,IAAI,EAAI,IAASnS,KAAKq6F,aAAgBr6F,KAAK66F,aAAel8E,KAG5F3e,KAAK66F,aAAel8E,EAAO3e,KAAKyrF,YAKhCzrF,KAAKu6F,gBAELv6F,KAAKy7F,uBAIJz7F,KAAKwa,KAAKqG,SAGX7gB,KAAKkwB,OAAO3R,OAAOve,KAAK2e,MAEpB3e,KAAKq7F,QAAQxzF,QAEb7H,KAAK07F,iBAajBA,aAAc,WAMV,IAHA,GAAI5zF,GAAI,EACJF,EAAM5H,KAAKq7F,QAAQxzF,OAEZD,EAAJE,GAEC9H,KAAKq7F,QAAQvzF,GAAGyW,OAAOve,KAAK2e,MAE5B7W,KAKA9H,KAAKq7F,QAAQl4E,OAAOrb,EAAG,GACvBF,MAaZ6zF,qBAAsB,WAGlBz7F,KAAK+6F,cACL/6F,KAAKg7F,qBAAuBh7F,KAAK07B,QAG7B17B,KAAK+6F,aAAkC,EAAnB/6F,KAAKq6F,cAGzBr6F,KAAKs6F,aAAiF,EAAlEv0F,KAAKI,MAAM,KAAOnG,KAAKg7F,oBAAsBh7F,KAAK+6F,cACtE/6F,KAAK+6F,YAAc,EACnB/6F,KAAKg7F,oBAAsB,GAG/Bh7F,KAAK06F,MAAQ30F,KAAKkM,IAAIjS,KAAK06F,MAAO16F,KAAK07B,SACvC17B,KAAK26F,MAAQ50F,KAAKoM,IAAInS,KAAK26F,MAAO36F,KAAK07B,SAEvC17B,KAAKggF,SAEDhgF,KAAK+4B,IAAM/4B,KAAKk7F,gBAAkB,MAElCl7F,KAAKg6F,IAAMj0F,KAAK+H,MAAqB,IAAd9N,KAAKggF,QAAkBhgF,KAAK+4B,IAAM/4B,KAAKk7F,kBAC9Dl7F,KAAKw6F,OAASz0F,KAAKkM,IAAIjS,KAAKw6F,OAAQx6F,KAAKg6F,KACzCh6F,KAAKy6F,OAAS10F,KAAKoM,IAAInS,KAAKy6F,OAAQz6F,KAAKg6F,KACzCh6F,KAAKk7F,gBAAkBl7F,KAAK+4B,IAC5B/4B,KAAKggF,OAAS,IAWtB9yD,WAAY,WAERltB,KAAKm7F,cAAgBvzE,KAAKmR,MAE1B/4B,KAAKkwB,OAAO1N,OAIZ,KAFA,GAAI1a,GAAI9H,KAAKq7F,QAAQxzF,OAEdC,KAEH9H,KAAKq7F,QAAQvzF,GAAG+uF,UAWxB1pE,YAAa,WAGTntB,KAAK2e,KAAOiJ,KAAKmR,MAEjB/4B,KAAK46F,cAAgB56F,KAAK2e,KAAO3e,KAAKm7F,cAEtCn7F,KAAKkwB,OAAOxN,QAIZ,KAFA,GAAI5a,GAAI9H,KAAKq7F,QAAQxzF,OAEdC,KAEH9H,KAAKq7F,QAAQvzF,GAAGgvF,WAWxB9tE,oBAAqB,WACjB,MAAqC,MAA7BhpB,KAAK2e,KAAO3e,KAAKi7F,WAU7BU,aAAc,SAAUC,GACpB,MAAO57F,MAAK2e,KAAOi9E,GAUvBC,oBAAqB,SAAUD,GAC3B,MAA6B,MAArB57F,KAAK2e,KAAOi9E,IAQxBl8E,MAAO,WAEH1f,KAAKi7F,SAAWj7F,KAAK2e,KACrB3e,KAAK4jB,cAcbrc,OAAO2E,eAAe7L,EAAOm5B,KAAKnzB,UAAW,cAEzC2F,IAAK,WAED,MAAOhM,MAAKq6F,aAIhBpuF,IAAK,SAAU1C,GAEXvJ,KAAKq6F,YAAc9wF,EAInBvJ,KAAK6gF,eAAiB,EAAIt3E,EAE1BvJ,KAAKytD,iBAAyC,IAAtBztD,KAAK6gF,eAE7B7gF,KAAKq7B,eAAiB,EAAM9xB,KAMpClJ,EAAOm5B,KAAKnzB,UAAU8B,YAAc9H,EAAOm5B,KAsB3Cn5B,EAAOy6F,MAAQ,SAAUtgF,EAAM+gF,GAEP7xF,SAAhB6xF,IAA6BA,GAAc,GAM/Cv7F,KAAKwa,KAAOA,EAUZxa,KAAK87F,SAAU,EAMf97F,KAAKu7F,YAAcA,EAOnBv7F,KAAK+7F,SAAU,EAMf/7F,KAAK07B,QAAU,EAKf17B,KAAKkwB,UASLlwB,KAAKy3F,WAAa,GAAIp3F,GAAO+a,OAO7Bpb,KAAKg8F,SAAW,EAKhBh8F,KAAKi8F,QAAU,IAOfj8F,KAAK6gB,QAAS,EAMd7gB,KAAKo4B,aAAc,EAOnBp4B,KAAKi7F,SAAW,EAMhBj7F,KAAKm7F,cAAgB,EAMrBn7F,KAAKk8F,YAAc,EAMnBl8F,KAAKm8F,KAAOv0E,KAAKmR,MAMjB/4B,KAAKiqB,KAAO,EAMZjqB,KAAKo8F,QAAU,EAMfp8F,KAAKkqB,GAAK,EAMVlqB,KAAKq8F,MAAQ,EAMbr8F,KAAKs8F,SAAW,GASpBj8F,EAAOy6F,MAAMyB,OAAS,IAOtBl8F,EAAOy6F,MAAM0B,OAAS,IAOtBn8F,EAAOy6F,MAAM2B,KAAO,IAOpBp8F,EAAOy6F,MAAM4B,QAAU,IAEvBr8F,EAAOy6F,MAAMz0F,WAiBTqa,OAAQ,SAAU2zB,EAAO2S,EAAM21C,EAAatpE,EAAUtQ,EAAiBpc,GAEnE0tC,EAAQtuC,KAAK+H,MAAMumC,EAEnB,IAAIuoD,GAAOvoD,CAIPuoD,IAFc,IAAd58F,KAAKm8F,KAEGn8F,KAAKwa,KAAKmE,KAAKA,KAIf3e,KAAKm8F,IAGjB,IAAIhwE,GAAQ,GAAI9rB,GAAOw8F,WAAW78F,KAAMq0C,EAAOuoD,EAAMD,EAAa31C,EAAM3zB,EAAUtQ,EAAiBpc,EAQnG,OANA3G,MAAKkwB,OAAOtd,KAAKuZ,GAEjBnsB,KAAKs0B,QAELt0B,KAAK+7F,SAAU,EAER5vE,GAmBXta,IAAK,SAAUwiC,EAAOhhB,EAAUtQ,GAE5B,MAAO/iB,MAAK0gB,OAAO2zB,GAAO,EAAO,EAAGhhB,EAAUtQ,EAAiBvc,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KAqBzG0hB,OAAQ,SAAU4rB,EAAOsoD,EAAatpE,EAAUtQ,GAE5C,MAAO/iB,MAAK0gB,OAAO2zB,GAAO,EAAOsoD,EAAatpE,EAAUtQ,EAAiBvc,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KAmBnHigD,KAAM,SAAU3S,EAAOhhB,EAAUtQ,GAE7B,MAAO/iB,MAAK0gB,OAAO2zB,GAAO,EAAM,EAAGhhB,EAAUtQ,EAAiBvc,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,KASxG2J,MAAO,SAAU2jC,GAEb,IAAIr0C,KAAK87F,QAAT,CAKA97F,KAAKi7F,SAAWj7F,KAAKwa,KAAKmE,KAAKA,MAAQ01B,GAAS,GAEhDr0C,KAAK87F,SAAU,CAEf,KAAK,GAAIh0F,GAAI,EAAGA,EAAI9H,KAAKkwB,OAAOroB,OAAQC,IAEpC9H,KAAKkwB,OAAOpoB,GAAG80F,KAAO58F,KAAKkwB,OAAOpoB,GAAGusC,MAAQr0C,KAAKi7F,WAU1Dh/D,KAAM,SAAU6gE,GAEZ98F,KAAK87F,SAAU,EAEKpyF,SAAhBozF,IAA6BA,GAAc,GAE3CA,IAEA98F,KAAKkwB,OAAOroB,OAAS,IAU7Bib,OAAQ,SAAUqJ,GAEd,IAAK,GAAIrkB,GAAI,EAAGA,EAAI9H,KAAKkwB,OAAOroB,OAAQC,IAEpC,GAAI9H,KAAKkwB,OAAOpoB,KAAOqkB,EAGnB,MADAnsB,MAAKkwB,OAAOpoB,GAAGyuF,eAAgB,GACxB,CAIf,QAAO,GAUXjiE,MAAO,WAECt0B,KAAKkwB,OAAOroB,OAAS,IAGrB7H,KAAKkwB,OAAOmE,KAAKr0B,KAAK00B,aAEtB10B,KAAKg8F,SAAWh8F,KAAKkwB,OAAO,GAAG0sE,OAUvCloE,YAAa,SAAUjmB,EAAGI,GAEtB,MAAIJ,GAAEmuF,KAAO/tF,EAAE+tF,KAEJ,GAEFnuF,EAAEmuF,KAAO/tF,EAAE+tF,KAET,EAGJ,GAUXG,mBAAoB,WAIhB,IAFA/8F,KAAKkqB,GAAKlqB,KAAKkwB,OAAOroB,OAEf7H,KAAKkqB,MAEJlqB,KAAKkwB,OAAOlwB,KAAKkqB,IAAIqsE,eAErBv2F,KAAKkwB,OAAO/M,OAAOnjB,KAAKkqB,GAAI,EAIpClqB,MAAKiqB,KAAOjqB,KAAKkwB,OAAOroB,OACxB7H,KAAKkqB,GAAK,GAYd3L,OAAQ,SAAUI,GAEd,GAAI3e,KAAK6gB,OAEL,OAAO,CAoBX,IAjBA7gB,KAAK07B,QAAU/c,EAAO3e,KAAKm8F,KAC3Bn8F,KAAKm8F,KAAOx9E,EAGR3e,KAAK07B,QAAU17B,KAAKi8F,SAKpBj8F,KAAKg9F,aAAar+E,EAAO3e,KAAK07B,SAGlC17B,KAAKo8F,QAAU,EAGfp8F,KAAK+8F,qBAED/8F,KAAK87F,SAAW97F,KAAKm8F,MAAQn8F,KAAKg8F,UAAYh8F,KAAKiqB,KAAO,EAC9D,CACI,KAAOjqB,KAAKkqB,GAAKlqB,KAAKiqB,MAAQjqB,KAAK87F,SAE3B97F,KAAKm8F,MAAQn8F,KAAKkwB,OAAOlwB,KAAKkqB,IAAI0yE,OAAS58F,KAAKkwB,OAAOlwB,KAAKkqB,IAAIqsE,eAGhEv2F,KAAKs8F,SAAYt8F,KAAKm8F,KAAOn8F,KAAKkwB,OAAOlwB,KAAKkqB,IAAImqB,OAAUr0C,KAAKm8F,KAAOn8F,KAAKkwB,OAAOlwB,KAAKkqB,IAAI0yE,MAEzF58F,KAAKs8F,SAAW,IAEhBt8F,KAAKs8F,SAAWt8F,KAAKm8F,KAAOn8F,KAAKkwB,OAAOlwB,KAAKkqB,IAAImqB,OAGjDr0C,KAAKkwB,OAAOlwB,KAAKkqB,IAAI88B,QAAS,GAE9BhnD,KAAKkwB,OAAOlwB,KAAKkqB,IAAI0yE,KAAO58F,KAAKs8F,SACjCt8F,KAAKkwB,OAAOlwB,KAAKkqB,IAAImJ,SAASpsB,MAAMjH,KAAKkwB,OAAOlwB,KAAKkqB,IAAInH,gBAAiB/iB,KAAKkwB,OAAOlwB,KAAKkqB,IAAIvjB,OAE1F3G,KAAKkwB,OAAOlwB,KAAKkqB,IAAIyyE,YAAc,GAExC38F,KAAKkwB,OAAOlwB,KAAKkqB,IAAIyyE,cACrB38F,KAAKkwB,OAAOlwB,KAAKkqB,IAAI0yE,KAAO58F,KAAKs8F,SACjCt8F,KAAKkwB,OAAOlwB,KAAKkqB,IAAImJ,SAASpsB,MAAMjH,KAAKkwB,OAAOlwB,KAAKkqB,IAAInH,gBAAiB/iB,KAAKkwB,OAAOlwB,KAAKkqB,IAAIvjB,QAI/F3G,KAAKo8F,UACLp8F,KAAKkwB,OAAOlwB,KAAKkqB,IAAIqsE,eAAgB,EACrCv2F,KAAKkwB,OAAOlwB,KAAKkqB,IAAImJ,SAASpsB,MAAMjH,KAAKkwB,OAAOlwB,KAAKkqB,IAAInH,gBAAiB/iB,KAAKkwB,OAAOlwB,KAAKkqB,IAAIvjB,OAGnG3G,KAAKkqB,IASTlqB,MAAKkwB,OAAOroB,OAAS7H,KAAKo8F,QAE1Bp8F,KAAKs0B,SAILt0B,KAAK+7F,SAAU,EACf/7F,KAAKy3F,WAAW54E,SAAS7e,OAIjC,OAAIA,KAAK+7F,UAAW/7F,KAAKu7F,aAe7B/4E,MAAO,WAEExiB,KAAK87F,UAKV97F,KAAKo4B,aAAc,EAEfp4B,KAAK6gB,SAKT7gB,KAAKm7F,cAAgBn7F,KAAKwa,KAAKmE,KAAKA,KAEpC3e,KAAK6gB,QAAS,KASlBg2E,OAAQ,YAEA72F,KAAK6gB,QAAW7gB,KAAK87F,UAKzB97F,KAAKm7F,cAAgBn7F,KAAKwa,KAAKmE,KAAKA,KAEpC3e,KAAK6gB,QAAS,IAUlBm8E,aAAc,SAAUC,GAEpB,IAAK,GAAIn1F,GAAI,EAAGA,EAAI9H,KAAKkwB,OAAOroB,OAAQC,IAEpC,IAAK9H,KAAKkwB,OAAOpoB,GAAGyuF,cACpB,CAEI,GAAI5uF,GAAI3H,KAAKkwB,OAAOpoB,GAAG80F,KAAOK,CAEtB,GAAJt1F,IAEAA,EAAI,GAIR3H,KAAKkwB,OAAOpoB,GAAG80F,KAAO58F,KAAKm8F,KAAOx0F,EAI1C,GAAIsM,GAAIjU,KAAKg8F,SAAWiB,CAEhB,GAAJhpF,EAEAjU,KAAKg8F,SAAWh8F,KAAKm8F,KAIrBn8F,KAAKg8F,SAAWh8F,KAAKm8F,KAAOloF,GAUpCyO,OAAQ,WAEJ,GAAK1iB,KAAK6gB,OAAV,CAKA,GAAIkY,GAAM/4B,KAAKwa,KAAKmE,KAAKA,IACzB3e,MAAKk8F,aAAenjE,EAAM/4B,KAAKm8F,KAC/Bn8F,KAAKm8F,KAAOpjE,EAEZ/4B,KAAKg9F,aAAah9F,KAAKm7F,eAEvBn7F,KAAK6gB,QAAS,EACd7gB,KAAKo4B,aAAc,IASvB0+D,QAAS,WAED92F,KAAKo4B,aAMLp4B,KAAK0iB,UAWbkB,UAAW,WAEP5jB,KAAKy3F,WAAW7zE,YAChB5jB,KAAKkwB,OAAOroB,OAAS,EACrB7H,KAAKiqB,KAAO,EACZjqB,KAAKkqB,GAAK,GAUdpG,QAAS,WAEL9jB,KAAKy3F,WAAW7zE,YAChB5jB,KAAK87F,SAAU,EACf97F,KAAKkwB,UACLlwB,KAAKiqB,KAAO,EACZjqB,KAAKkqB,GAAK,IAWlB3iB,OAAO2E,eAAe7L,EAAOy6F,MAAMz0F,UAAW,QAE1C2F,IAAK,WACD,MAAOhM,MAAKg8F,YAUpBz0F,OAAO2E,eAAe7L,EAAOy6F,MAAMz0F,UAAW,YAE1C2F,IAAK,WAED,MAAIhM,MAAK87F,SAAW97F,KAAKg8F,SAAWh8F,KAAKm8F,KAE9Bn8F,KAAKg8F,SAAWh8F,KAAKm8F,KAIrB,KAYnB50F,OAAO2E,eAAe7L,EAAOy6F,MAAMz0F,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKkwB,OAAOroB,UAU3BN,OAAO2E,eAAe7L,EAAOy6F,MAAMz0F,UAAW,MAE1C2F,IAAK,WAED,MAAIhM,MAAK87F,QAEE97F,KAAKm8F,KAAOn8F,KAAKi7F,SAAWj7F,KAAKk8F,YAIjC,KAYnB30F,OAAO2E,eAAe7L,EAAOy6F,MAAMz0F,UAAW,WAE1C2F,IAAK,WAED,MAAIhM,MAAK87F,QAEY,KAAV97F,KAAK+5F,GAIL,KAOnB15F,EAAOy6F,MAAMz0F,UAAU8B,YAAc9H,EAAOy6F,MA6B5Cz6F,EAAOw8F,WAAa,SAAUvB,EAAOjnD,EAAOuoD,EAAMD,EAAa31C,EAAM3zB,EAAUtQ,EAAiBpc,GAO5F3G,KAAKs7F,MAAQA,EAKbt7F,KAAKq0C,MAAQA,EAKbr0C,KAAK48F,KAAOA,EAKZ58F,KAAK28F,YAAcA,EAAc,EAKjC38F,KAAKgnD,KAAOA,EAKZhnD,KAAKqzB,SAAWA,EAKhBrzB,KAAK+iB,gBAAkBA,EAKvB/iB,KAAK2G,KAAOA,EAMZ3G,KAAKu2F,eAAgB,GAIzBl2F,EAAOw8F,WAAWx2F,UAAU8B,YAAc9H,EAAOw8F,WAgBjDx8F,EAAO6nD,iBAAmB,SAAUnxB,GAKhC/2B,KAAK+2B,OAASA,EAKd/2B,KAAKwa,KAAOuc,EAAOvc,KASnBxa,KAAKk9F,aAAe,KAMpBl9F,KAAKm9F,YAAc,KAMnBn9F,KAAKo9F,iBAAkB,EAMvBp9F,KAAKq9F,UAAW,EAOhBr9F,KAAKs9F,WAAa,KAMlBt9F,KAAKu9F,UAMLv9F,KAAKw9F,kBAITn9F,EAAO6nD,iBAAiB7hD,WAYpB+nD,cAAe,SAAUE,EAAW59B,GAEhC,GAAkBhnB,SAAd4kD,EAEA,OAAO,CAGX,IAAItuD,KAAKq9F,SAGL,IAAK,GAAII,KAAQz9F,MAAKu9F,OAElBv9F,KAAKu9F,OAAOE,GAAM1f,gBAAgBzvB,EAwB1C,OApBAtuD,MAAKs9F,WAAahvC,EAEJ5kD,SAAVgnB,GAAiC,OAAVA,EAEvB1wB,KAAK0wB,MAAQ,EAIQ,gBAAVA,GAEP1wB,KAAKwvD,UAAY9+B,EAIjB1wB,KAAK0wB,MAAQA,EAIrB1wB,KAAKq9F,UAAW,GAET,GAaXK,cAAe,SAAUpvC,EAAW59B,GAIhC,GAFA1wB,KAAKs9F,WAAahvC,EAAU9iD,QAExBxL,KAAKq9F,SAGL,IAAK,GAAII,KAAQz9F,MAAKu9F,OAElBv9F,KAAKu9F,OAAOE,GAAM1f,gBAAgB/9E,KAAKs9F,WAsB/C,OAlBc5zF,UAAVgnB,GAAiC,OAAVA,EAEvB1wB,KAAK0wB,MAAQ,EAIQ,gBAAVA,GAEP1wB,KAAKwvD,UAAY9+B,EAIjB1wB,KAAK0wB,MAAQA,EAIrB1wB,KAAKq9F,UAAW,GAET,GAeXxrF,IAAK,SAAUzG,EAAM40E,EAAQj5B,EAAWC,EAAM22C,GAoC1C,MAlCA3d,GAASA,MACTj5B,EAAYA,GAAa,GAEZr9C,SAATs9C,IAAsBA,GAAO,GAGTt9C,SAApBi0F,IAIIA,KAFA3d,GAA+B,gBAAdA,GAAO,KAUhChgF,KAAKw9F,iBAELx9F,KAAKs9F,WAAWM,gBAAgB5d,EAAQ2d,EAAiB39F,KAAKw9F,eAE9Dx9F,KAAKu9F,OAAOnyF,GAAQ,GAAI/K,GAAOwmD,UAAU7mD,KAAKwa,KAAMxa,KAAK+2B,OAAQ3rB,EAAMpL,KAAKs9F,WAAYt9F,KAAKw9F,cAAez2C,EAAWC,GAEvHhnD,KAAKm9F,YAAcn9F,KAAKu9F,OAAOnyF,GAK3BpL,KAAK+2B,OAAOu4B,gBAEZtvD,KAAK+2B,OAAOw4B,gBAAiB,GAG1BvvD,KAAKu9F,OAAOnyF,IAYvByyF,eAAgB,SAAU7d,EAAQ2d,GAENj0F,SAApBi0F,IAAiCA,GAAkB,EAEvD,KAAK,GAAI71F,GAAI,EAAGA,EAAIk4E,EAAOn4E,OAAQC,IAE/B,GAAI61F,KAAoB,GAEpB,GAAI3d,EAAOl4E,GAAK9H,KAAKs9F,WAAW1oE,MAE5B,OAAO,MAKX,IAAI50B,KAAKs9F,WAAWQ,eAAe9d,EAAOl4E,OAAQ,EAE9C,OAAO,CAKnB,QAAO,GAiBXg/C,KAAM,SAAU17C,EAAM27C,EAAWC,EAAMC,GAEnC,MAAIjnD,MAAKu9F,OAAOnyF,GAERpL,KAAKm9F,cAAgBn9F,KAAKu9F,OAAOnyF,GAE7BpL,KAAKm9F,YAAYY,aAAc,GAE/B/9F,KAAKm9F,YAAYt8E,QAAS,EACnB7gB,KAAKm9F,YAAYr2C,KAAKC,EAAWC,EAAMC,IAG3CjnD,KAAKm9F,aAIRn9F,KAAKm9F,aAAen9F,KAAKm9F,YAAYY,WAErC/9F,KAAKm9F,YAAYlhE,OAGrBj8B,KAAKm9F,YAAcn9F,KAAKu9F,OAAOnyF,GAC/BpL,KAAKm9F,YAAYt8E,QAAS,EAC1B7gB,KAAKk9F,aAAel9F,KAAKm9F,YAAYD,aAC9Bl9F,KAAKm9F,YAAYr2C,KAAKC,EAAWC,EAAMC,IAtBtD,QAoCJhrB,KAAM,SAAU7wB,EAAM29C,GAECr/C,SAAfq/C,IAA4BA,GAAa,IAEzC/oD,KAAKm9F,aAAgC,gBAAT/xF,IAAqBA,IAASpL,KAAKm9F,YAAY/xF,MAE3EpL,KAAKm9F,YAAYlhE,KAAK8sB,IAY9BxqC,OAAQ,WAEJ,MAAIve,MAAKo9F,kBAAoBp9F,KAAK+2B,OAAOlc,SAE9B,EAGP7a,KAAKm9F,aAAen9F,KAAKm9F,YAAY5+E,UAErCve,KAAKk9F,aAAel9F,KAAKm9F,YAAYD,cAC9B,IAGJ,GAUX5rE,KAAM,SAAUV,GAER5wB,KAAKm9F,cAELn9F,KAAKm9F,YAAY7rE,KAAKV,GACtB5wB,KAAKk9F,aAAel9F,KAAKm9F,YAAYD,eAW7C3rE,SAAU,SAAUX,GAEZ5wB,KAAKm9F,cAELn9F,KAAKm9F,YAAY5rE,SAASX,GAC1B5wB,KAAKk9F,aAAel9F,KAAKm9F,YAAYD,eAY7Cc,aAAc,SAAU5yF,GAEpB,MAAoB,gBAATA,IAEHpL,KAAKu9F,OAAOnyF,GAELpL,KAAKu9F,OAAOnyF,GAIpB,MASX6yF,aAAc,aAadn6E,QAAS,WAEL,GAAI25E,GAAO,IAEX,KAAK,GAAIA,KAAQz9F,MAAKu9F,OAEdv9F,KAAKu9F,OAAOvyF,eAAeyyF,IAE3Bz9F,KAAKu9F,OAAOE,GAAM35E,SAI1B9jB,MAAKu9F,UACLv9F,KAAKw9F,iBACLx9F,KAAKs9F,WAAa,KAClBt9F,KAAKm9F,YAAc,KACnBn9F,KAAKk9F,aAAe,KACpBl9F,KAAK+2B,OAAS,KACd/2B,KAAKwa,KAAO,OAMpBna,EAAO6nD,iBAAiB7hD,UAAU8B,YAAc9H,EAAO6nD,iBAOvD3gD,OAAO2E,eAAe7L,EAAO6nD,iBAAiB7hD,UAAW,aAErD2F,IAAK,WACD,MAAOhM,MAAKs9F,cAUpB/1F,OAAO2E,eAAe7L,EAAO6nD,iBAAiB7hD,UAAW,cAErD2F,IAAK,WAED,MAAOhM,MAAKs9F,WAAW1oE,SAS/BrtB,OAAO2E,eAAe7L,EAAO6nD,iBAAiB7hD,UAAW,UAErD2F,IAAK,WAED,MAAOhM,MAAKm9F,YAAYxF,UAI5B1rF,IAAK,SAAU1C,GAEXvJ,KAAKm9F,YAAYt8E,OAAStX,KAUlChC,OAAO2E,eAAe7L,EAAO6nD,iBAAiB7hD,UAAW,QAErD2F,IAAK,WAED,MAAIhM,MAAKm9F,YAEEn9F,KAAKm9F,YAAY/xF,KAF5B,UAaR7D,OAAO2E,eAAe7L,EAAO6nD,iBAAiB7hD,UAAW,SAErD2F,IAAK,WAED,MAAIhM,MAAKk9F,aAEEl9F,KAAKk9F,aAAaxtE,MAF7B;EAOJzjB,IAAK,SAAU1C,GAEU,gBAAVA,IAAsBvJ,KAAKs9F,YAAkD,OAApCt9F,KAAKs9F,WAAWY,SAAS30F,KAEzEvJ,KAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAAS30F,GAEzCvJ,KAAKk9F,cAELl9F,KAAK+2B,OAAO+2B,SAAS9tD,KAAKk9F,kBAY1C31F,OAAO2E,eAAe7L,EAAO6nD,iBAAiB7hD,UAAW,aAErD2F,IAAK,WAED,MAAIhM,MAAKk9F,aAEEl9F,KAAKk9F,aAAa9xF,KAF7B,QAOJa,IAAK,SAAU1C,GAEU,gBAAVA,IAAsBvJ,KAAKs9F,YAAwD,OAA1Ct9F,KAAKs9F,WAAWa,eAAe50F,IAE/EvJ,KAAKk9F,aAAel9F,KAAKs9F,WAAWa,eAAe50F,GAE/CvJ,KAAKk9F,eAELl9F,KAAKo+F,YAAcp+F,KAAKk9F,aAAaxtE,MAErC1vB,KAAK+2B,OAAO+2B,SAAS9tD,KAAKk9F,gBAK9B90F,QAAQG,KAAK,yBAA2BgB,MA2BpDlJ,EAAOwmD,UAAY,SAAUrsC,EAAMgP,EAAQpe,EAAMkjD,EAAW0xB,EAAQj5B,EAAWC,GAE9Dt9C,SAATs9C,IAAsBA,GAAO,GAKjChnD,KAAKwa,KAAOA,EAMZxa,KAAKoqD,QAAU5gC,EAMfxpB,KAAKs9F,WAAahvC,EAKlBtuD,KAAKoL,KAAOA,EAMZpL,KAAKq+F,WACLr+F,KAAKq+F,QAAUr+F,KAAKq+F,QAAQx3F,OAAOm5E,GAKnChgF,KAAKq0C,MAAQ,IAAO0S,EAKpB/mD,KAAKgnD,KAAOA,EAKZhnD,KAAKs+F,UAAY,EAMjBt+F,KAAKinD,gBAAiB,EAMtBjnD,KAAKu+F,YAAa,EAMlBv+F,KAAK+9F,WAAY,EAMjB/9F,KAAK23F,UAAW,EAOhB33F,KAAKw+F,gBAAkB,EAOvBx+F,KAAKo+F,YAAc,EAOnBp+F,KAAKy+F,WAAa,EAOlBz+F,KAAK0+F,WAAa,EAKlB1+F,KAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQr+F,KAAKo+F,cAK/Dp+F,KAAKq3F,QAAU,GAAIh3F,GAAO+a,OAW1Bpb,KAAK2+F,SAAW,KAKhB3+F,KAAKy3F,WAAa,GAAIp3F,GAAO+a,OAK7Bpb,KAAKs3F,OAAS,GAAIj3F,GAAO+a,OAMzBpb,KAAK4+F,YAAa,EAGlB5+F,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAKuiB,QAASviB,MACpCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAKyiB,SAAUziB,OAI1CK,EAAOwmD,UAAUxgD,WAWbygD,KAAM,SAAUC,EAAWC,EAAMC,GAsC7B,MApCyB,gBAAdF,KAGP/mD,KAAKq0C,MAAQ,IAAO0S,GAGJ,iBAATC,KAGPhnD,KAAKgnD,KAAOA,GAGc,mBAAnBC,KAGPjnD,KAAKinD,eAAiBA,GAG1BjnD,KAAK+9F,WAAY,EACjB/9F,KAAKu+F,YAAa,EAClBv+F,KAAK6gB,QAAS,EACd7gB,KAAKs+F,UAAY,EAEjBt+F,KAAK6+F,eAAiB7+F,KAAKwa,KAAKmE,KAAKA,KACrC3e,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKq0C,MAEjDr0C,KAAKo+F,YAAcp+F,KAAK4+F,WAAa5+F,KAAKq+F,QAAQx2F,OAAS,EAAI,EAC/D7H,KAAK++F,oBAAmB,GAAO,GAE/B/+F,KAAKoqD,QAAQl6B,OAAO8uE,0BAA0Bh/F,KAAKoqD,QAASpqD,MAE5DA,KAAKq3F,QAAQx4E,SAAS7e,KAAKoqD,QAASpqD,MAEpCA,KAAKoqD,QAAQlD,WAAWi2C,YAAcn9F,KACtCA,KAAKoqD,QAAQlD,WAAWg2C,aAAel9F,KAAKk9F,aAErCl9F,MASXojB,QAAS,WAELpjB,KAAK+9F,WAAY,EACjB/9F,KAAKu+F,YAAa,EAClBv+F,KAAK6gB,QAAS,EACd7gB,KAAKs+F,UAAY,EAEjBt+F,KAAK6+F,eAAiB7+F,KAAKwa,KAAKmE,KAAKA,KACrC3e,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKq0C,MAEjDr0C,KAAKo+F,YAAc,EAEnBp+F,KAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQr+F,KAAKo+F,cAE/Dp+F,KAAKoqD,QAAQ0D,SAAS9tD,KAAKk9F,cAE3Bl9F,KAAKoqD,QAAQlD,WAAWi2C,YAAcn9F,KACtCA,KAAKoqD,QAAQlD,WAAWg2C,aAAel9F,KAAKk9F,aAE5Cl9F,KAAKq3F,QAAQx4E,SAAS7e,KAAKoqD,QAASpqD,OAUxC4I,QAAS,WAGL,MAFA5I,MAAKk6F,UAAYl6F,KAAKk6F,SAEfl6F,MAWXi/F,YAAa,WAGT,MAFAj/F,MAAKy3F,WAAWxxE,QAAQjmB,KAAK4I,QAAQtC,KAAKtG,OAEnCA,KAAK4I,WAUhBklD,SAAU,SAASoxC,EAASC,GAExB,GAAIC,EAQJ,IAN2B11F,SAAvBy1F,IAEAA,GAAqB,GAIF,gBAAZD,GAEP,IAAK,GAAIp3F,GAAI,EAAGA,EAAI9H,KAAKq+F,QAAQx2F,OAAQC,IAEjC9H,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQv2F,IAAIsD,OAAS8zF,IAEnDE,EAAat3F,OAIpB,IAAuB,gBAAZo3F,GAEZ,GAAIC,EAEAC,EAAaF,MAIb,KAAK,GAAIp3F,GAAI,EAAGA,EAAI9H,KAAKq+F,QAAQx2F,OAAQC,IAEjC9H,KAAKq+F,QAAQv2F,KAAOo3F,IAEpBE,EAAat3F,EAMzBs3F,KAGAp/F,KAAKo+F,YAAcgB,EAAa,EAGhCp/F,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KAErC3e,KAAKue,WAab0d,KAAM,SAAU8sB,EAAYs2C,GAEL31F,SAAfq/C,IAA4BA,GAAa,GACpBr/C,SAArB21F,IAAkCA,GAAmB,GAEzDr/F,KAAK+9F,WAAY,EACjB/9F,KAAKu+F,YAAa,EAClBv+F,KAAK6gB,QAAS,EAEVkoC,IAEA/oD,KAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQ,IAC1Dr+F,KAAKoqD,QAAQ0D,SAAS9tD,KAAKk9F,eAG3BmC,IAEAr/F,KAAKoqD,QAAQl6B,OAAOovE,6BAA6Bt/F,KAAKoqD,QAASpqD,MAC/DA,KAAKy3F,WAAW54E,SAAS7e,KAAKoqD,QAASpqD,QAU/CuiB,QAAS,WAEDviB,KAAK+9F,YAEL/9F,KAAKy+F,WAAaz+F,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,OAU/D8D,SAAU,WAEFziB,KAAK+9F,YAEL/9F,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKy+F,aAUzDlgF,OAAQ,WAEJ,MAAIve,MAAK23F,UAEE,EAGP33F,KAAK+9F,WAAa/9F,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAK8+F,gBAE9C9+F,KAAK0+F,WAAa,EAGlB1+F,KAAKy+F,WAAaz+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK8+F,eAE7C9+F,KAAK6+F,eAAiB7+F,KAAKwa,KAAKmE,KAAKA,KAEjC3e,KAAKy+F,WAAaz+F,KAAKq0C,QAGvBr0C,KAAK0+F,WAAa34F,KAAKI,MAAMnG,KAAKy+F,WAAaz+F,KAAKq0C,OACpDr0C,KAAKy+F,YAAez+F,KAAK0+F,WAAa1+F,KAAKq0C,OAI/Cr0C,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAKq0C,MAAQr0C,KAAKy+F,YAE3Dz+F,KAAK4+F,WACL5+F,KAAKo+F,aAAep+F,KAAK0+F,WAEzB1+F,KAAKo+F,aAAep+F,KAAK0+F,YAGxB1+F,KAAK4+F,YAAc5+F,KAAKo+F,aAAep+F,KAAKq+F,QAAQx2F,QAAU7H,KAAK4+F,YAAc5+F,KAAKo+F,aAAe,GAElGp+F,KAAKgnD,MAGLhnD,KAAKo+F,YAAcr4F,KAAKoJ,IAAInP,KAAKo+F,aAAep+F,KAAKq+F,QAAQx2F,OAEzD7H,KAAK4+F,aACL5+F,KAAKo+F,YAAcp+F,KAAKq+F,QAAQx2F,OAAS,EAAI7H,KAAKo+F,aAGtDp+F,KAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQr+F,KAAKo+F,cAG3Dp+F,KAAKk9F,cAELl9F,KAAKoqD,QAAQ0D,SAAS9tD,KAAKk9F,cAG/Bl9F,KAAKs+F,YACLt+F,KAAKoqD,QAAQl6B,OAAOqvE,yBAAyBv/F,KAAKoqD,QAASpqD,MAC3DA,KAAKs3F,OAAOz4E,SAAS7e,KAAKoqD,QAASpqD,MAE/BA,KAAK2+F,UAEL3+F,KAAK2+F,SAAS9/E,SAAS7e,KAAMA,KAAKk9F,gBAGzBl9F,KAAKs9F,aAIP,IAKXt9F,KAAKs4F,YACE,GAKJt4F,KAAK++F,oBAAmB,KAIhC,GAgBXA,mBAAoB,SAAUS,EAAcC,GAIxC,GAFiB/1F,SAAb+1F,IAA0BA,GAAW,IAEpCz/F,KAAKs9F,WAGN,OAAO,CAIX,IAAIjiB,GAAMr7E,KAAKk9F,aAAaxtE,KAS5B,OAPA1vB,MAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQr+F,KAAKo+F,cAE3Dp+F,KAAKk9F,eAAiBuC,IAAcA,GAAYpkB,IAAQr7E,KAAKk9F,aAAaxtE,QAE1E1vB,KAAKoqD,QAAQ0D,SAAS9tD,KAAKk9F,cAG3Bl9F,KAAK2+F,UAAYa,GAEjBx/F,KAAK2+F,SAAS9/E,SAAS7e,KAAMA,KAAKk9F,gBAGzBl9F,KAAKs9F,aAIP,GAWfhsE,KAAM,SAAUV,GAEKlnB,SAAbknB,IAA0BA,EAAW,EAEzC,IAAIF,GAAQ1wB,KAAKo+F,YAAcxtE,CAE3BF,IAAS1wB,KAAKq+F,QAAQx2F,SAElB7H,KAAKgnD,KAELt2B,GAAS1wB,KAAKq+F,QAAQx2F,OAItB6oB,EAAQ1wB,KAAKq+F,QAAQx2F,OAAS,GAIlC6oB,IAAU1wB,KAAKo+F,cAEfp+F,KAAKo+F,YAAc1tE,EACnB1wB,KAAK++F,oBAAmB,KAWhCxtE,SAAU,SAAUX,GAEClnB,SAAbknB,IAA0BA,EAAW,EAEzC,IAAIF,GAAQ1wB,KAAKo+F,YAAcxtE,CAEnB,GAARF,IAEI1wB,KAAKgnD,KAELt2B,EAAQ1wB,KAAKq+F,QAAQx2F,OAAS6oB,EAI9BA,KAIJA,IAAU1wB,KAAKo+F,cAEfp+F,KAAKo+F,YAAc1tE,EACnB1wB,KAAK++F,oBAAmB,KAWhChhB,gBAAiB,SAAUzvB,GAEvBtuD,KAAKs9F,WAAahvC,EAClBtuD,KAAKk9F,aAAel9F,KAAKs9F,WAAat9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQr+F,KAAKo+F,YAAcp+F,KAAKq+F,QAAQx2F,SAAW,MAS3Hic,QAAS,WAEA9jB,KAAKs9F,aAMVt9F,KAAKwa,KAAK+H,QAAQO,OAAO9iB,KAAKuiB,QAASviB,MACvCA,KAAKwa,KAAKiI,SAASK,OAAO9iB,KAAKyiB,SAAUziB,MAEzCA,KAAKwa,KAAO,KACZxa,KAAKoqD,QAAU,KACfpqD,KAAKq+F,QAAU,KACfr+F,KAAKs9F,WAAa,KAClBt9F,KAAKk9F,aAAe,KACpBl9F,KAAK+9F,WAAY,EAEjB/9F,KAAKq3F,QAAQ7wE,UACbxmB,KAAKs3F,OAAO9wE,UACZxmB,KAAKy3F,WAAWjxE,UAEZxmB,KAAK2+F,UAEL3+F,KAAK2+F,SAASn4E,YAWtB8xE,SAAU,WAENt4F,KAAKo+F,YAAcp+F,KAAKq+F,QAAQx2F,OAAS,EACzC7H,KAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQr+F,KAAKo+F,cAE/Dp+F,KAAK+9F,WAAY,EACjB/9F,KAAKu+F,YAAa,EAClBv+F,KAAK6gB,QAAS,EAEd7gB,KAAKoqD,QAAQl6B,OAAOovE,6BAA6Bt/F,KAAKoqD,QAASpqD,MAE/DA,KAAKy3F,WAAW54E,SAAS7e,KAAKoqD,QAASpqD,MAEnCA,KAAKinD,gBAELjnD,KAAKoqD,QAAQuC,SAOzBtsD,EAAOwmD,UAAUxgD,UAAU8B,YAAc9H,EAAOwmD,UAMhDt/C,OAAO2E,eAAe7L,EAAOwmD,UAAUxgD,UAAW,UAE9C2F,IAAK,WAED,MAAOhM,MAAK23F,UAIhB1rF,IAAK,SAAU1C,GAEXvJ,KAAK23F,SAAWpuF,EAEZA,EAGAvJ,KAAKw+F,gBAAkBx+F,KAAKwa,KAAKmE,KAAKA,KAKlC3e,KAAK+9F,YAEL/9F,KAAK8+F,eAAiB9+F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAKq0C,UAYjE9sC,OAAO2E,eAAe7L,EAAOwmD,UAAUxgD,UAAW,YAE9C2F,IAAK,WAED,MAAOhM,MAAK4+F,YAIhB3yF,IAAK,SAAU1C,GAEXvJ,KAAK4+F,WAAar1F,KAW1BhC,OAAO2E,eAAe7L,EAAOwmD,UAAUxgD,UAAW,cAE9C2F,IAAK,WACD,MAAOhM,MAAKq+F,QAAQx2F,UAS5BN,OAAO2E,eAAe7L,EAAOwmD,UAAUxgD,UAAW,SAE9C2F,IAAK,WAED,MAA0B,QAAtBhM,KAAKk9F,aAEEl9F,KAAKk9F,aAAaxtE,MAIlB1vB,KAAKo+F,aAKpBnyF,IAAK,SAAU1C,GAEXvJ,KAAKk9F,aAAel9F,KAAKs9F,WAAWY,SAASl+F,KAAKq+F,QAAQ90F,IAEhC,OAAtBvJ,KAAKk9F,eAELl9F,KAAKo+F,YAAc70F,EACnBvJ,KAAKoqD,QAAQ0D,SAAS9tD,KAAKk9F,cAEvBl9F,KAAK2+F,UAEL3+F,KAAK2+F,SAAS9/E,SAAS7e,KAAMA,KAAKk9F,kBAYlD31F,OAAO2E,eAAe7L,EAAOwmD,UAAUxgD,UAAW,SAE9C2F,IAAK,WAED,MAAOjG,MAAK+H,MAAM,IAAO9N,KAAKq0C,QAIlCpoC,IAAK,SAAU1C,GAEPA,GAAS,IAETvJ,KAAKq0C,MAAQ,IAAO9qC,MAWhChC,OAAO2E,eAAe7L,EAAOwmD,UAAUxgD,UAAW,gBAE9C2F,IAAK,WAED,MAA0B,QAAlBhM,KAAK2+F,UAIjB1yF,IAAK,SAAU1C,GAEPA,GAA2B,OAAlBvJ,KAAK2+F,SAEd3+F,KAAK2+F,SAAW,GAAIt+F,GAAO+a,OAErB7R,GAA2B,OAAlBvJ,KAAK2+F,WAEpB3+F,KAAK2+F,SAASn4E,UACdxmB,KAAK2+F,SAAW,SAqB5Bt+F,EAAOwmD,UAAU64C,mBAAqB,SAAUhV,EAAQh6E,EAAOurB,EAAM0jE,EAAQC,GAE1Dl2F,SAAXi2F,IAAwBA,EAAS,GAErC,IAAI5xF,MACA2iB,EAAQ,EAEZ,IAAYuL,EAARvrB,EAEA,IAAK,GAAI5I,GAAI4I,EAAYurB,GAALn0B,EAAWA,IAKvB4oB,EAHmB,gBAAZkvE,GAGCv/F,EAAOmI,MAAMgC,IAAI1C,EAAEN,WAAYo4F,EAAS,IAAK,GAI7C93F,EAAEN,WAGdkpB,EAAQg6D,EAASh6D,EAAQivE,EAEzB5xF,EAAO6E,KAAK8d,OAKhB,KAAK,GAAI5oB,GAAI4I,EAAO5I,GAAKm0B,EAAMn0B,IAKvB4oB,EAHmB,gBAAZkvE,GAGCv/F,EAAOmI,MAAMgC,IAAI1C,EAAEN,WAAYo4F,EAAS,IAAK,GAI7C93F,EAAEN,WAGdkpB,EAAQg6D,EAASh6D,EAAQivE,EAEzB5xF,EAAO6E,KAAK8d,EAIpB,OAAO3iB,IAsBX1N,EAAO63D,MAAQ,SAAUxoC,EAAOzpB,EAAGwG,EAAGsD,EAAOC,EAAQ5E,GAKjDpL,KAAK0vB,MAAQA,EAKb1vB,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAKdhQ,KAAKoL,KAAOA,EAKZpL,KAAKyY,QAAU1S,KAAKI,MAAM4J,EAAQ,GAKlC/P,KAAK0Y,QAAU3S,KAAKI,MAAM6J,EAAS,GAKnChQ,KAAK6N,SAAWxN,EAAO0F,KAAK8H,SAAS,EAAG,EAAGkC,EAAOC,GAMlDhQ,KAAK6/F,SAAU,EAMf7/F,KAAK8/F,kBAAoB,KAMzB9/F,KAAKgvD,SAAU,EAKfhvD,KAAKmvD,YAAcp/C,EAKnB/P,KAAKovD,YAAcp/C,EAMnBhQ,KAAKivD,kBAAoB,EAMzBjvD,KAAKkvD,kBAAoB,EAMzBlvD,KAAK+/F,kBAAoB,EAMzB//F,KAAKggG,kBAAoB,EAKzBhgG,KAAK4K,MAAQ5K,KAAKiG,EAAIjG,KAAK+P,MAK3B/P,KAAK2O,OAAS3O,KAAKyM,EAAIzM,KAAKgQ,QAIhC3P,EAAO63D,MAAM7xD,WASTyS,OAAQ,SAAU/I,EAAOC,GAErBhQ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EACdhQ,KAAKyY,QAAU1S,KAAKI,MAAM4J,EAAQ,GAClC/P,KAAK0Y,QAAU3S,KAAKI,MAAM6J,EAAS,GACnChQ,KAAK6N,SAAWxN,EAAO0F,KAAK8H,SAAS,EAAG,EAAGkC,EAAOC,GAClDhQ,KAAKmvD,YAAcp/C,EACnB/P,KAAKovD,YAAcp/C,EACnBhQ,KAAK4K,MAAQ5K,KAAKiG,EAAI8J,EACtB/P,KAAK2O,OAAS3O,KAAKyM,EAAIuD,GAgB3BiwF,QAAS,SAAUjxC,EAASkxC,EAAaC,EAAcC,EAAOC,EAAOC,EAAWC,GAE5EvgG,KAAKgvD,QAAUA,EAEXA,IAEAhvD,KAAKmvD,YAAc+wC,EACnBlgG,KAAKovD,YAAc+wC,EACnBngG,KAAKyY,QAAU1S,KAAKI,MAAM+5F,EAAc,GACxClgG,KAAK0Y,QAAU3S,KAAKI,MAAMg6F,EAAe,GACzCngG,KAAKivD,kBAAoBmxC,EACzBpgG,KAAKkvD,kBAAoBmxC,EACzBrgG,KAAK+/F,kBAAoBO,EACzBtgG,KAAKggG,kBAAoBO,IAYjC/0F,MAAO,WAEH,GAAIuC,GAAS,GAAI1N,GAAO63D,MAAMl4D,KAAK0vB,MAAO1vB,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,OAAQhQ,KAAKoL,KAExF,KAAK,GAAIpC,KAAQhJ,MAETA,KAAKgL,eAAehC,KAEpB+E,EAAO/E,GAAQhJ,KAAKgJ,GAI5B,OAAO+E,IAWXyyF,QAAS,SAAUzzF,GAWf,MATYrD,UAARqD,EAEAA,EAAM,GAAI1M,GAAOkN,UAAUvN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAI5DjD,EAAIS,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAGxCjD,IAMf1M,EAAO63D,MAAM7xD,UAAU8B,YAAc9H,EAAO63D,MAc5C73D,EAAO03D,UAAY,WAMf/3D,KAAKq+F,WAMLr+F,KAAKygG,gBAITpgG,EAAO03D,UAAU1xD,WASb4xD,SAAU,SAAUvnC,GAWhB,MATAA,GAAMhB,MAAQ1vB,KAAKq+F,QAAQx2F,OAE3B7H,KAAKq+F,QAAQzrF,KAAK8d,GAEC,KAAfA,EAAMtlB,OAENpL,KAAKygG,YAAY/vE,EAAMtlB,MAAQslB,EAAMhB,OAGlCgB,GAWXwtE,SAAU,SAAUxuE,GAOhB,MALIA,IAAS1vB,KAAKq+F,QAAQx2F,SAEtB6nB,EAAQ,GAGL1vB,KAAKq+F,QAAQ3uE,IAWxByuE,eAAgB,SAAU/yF,GAEtB,MAAsC,gBAA3BpL,MAAKygG,YAAYr1F,GAEjBpL,KAAKq+F,QAAQr+F,KAAKygG,YAAYr1F,IAGlC,MAWX0yF,eAAgB,SAAU1yF,GAEtB,MAA8B,OAA1BpL,KAAKygG,YAAYr1F,IAezBI,MAAO,WAKH,IAAK,GAHDuC,GAAS,GAAI1N,GAAO03D,UAGfjwD,EAAI,EAAGA,EAAI9H,KAAKq+F,QAAQx2F,OAAQC,IAErCiG,EAAOswF,QAAQzrF,KAAK5S,KAAKq+F,QAAQv2F,GAAG0D,QAGxC,KAAK,GAAIyE,KAAKjQ,MAAKygG,YAEXzgG,KAAKygG,YAAYz1F,eAAeiF,IAEhClC,EAAO0yF,YAAY7tF,KAAK5S,KAAKygG,YAAYxwF,GAIjD,OAAOlC,IAaX2yF,cAAe,SAAUhwF,EAAOC,EAAK5C,GAElBrE,SAAXqE,IAAwBA,KAE5B,KAAK,GAAIjG,GAAI4I,EAAYC,GAAL7I,EAAUA,IAE1BiG,EAAO6E,KAAK5S,KAAKq+F,QAAQv2F,GAG7B,OAAOiG,IAcXkyE,UAAW,SAAUD,EAAQ2d,EAAiB5vF,GAK1C,GAHwBrE,SAApBi0F,IAAiCA,GAAkB,GACxCj0F,SAAXqE,IAAwBA,MAEbrE,SAAXs2E,GAA0C,IAAlBA,EAAOn4E,OAG/B,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAKq+F,QAAQx2F,OAAQC,IAGrCiG,EAAO6E,KAAK5S,KAAKq+F,QAAQv2F,QAM7B,KAAK,GAAIA,GAAI,EAAGA,EAAIk4E,EAAOn4E,OAAQC,IAG3B61F,EAGA5vF,EAAO6E,KAAK5S,KAAKk+F,SAASle,EAAOl4E,KAKjCiG,EAAO6E,KAAK5S,KAAKm+F,eAAene,EAAOl4E,IAKnD,OAAOiG,IAcX6vF,gBAAiB,SAAU5d,EAAQ2d,EAAiB5vF,GAKhD,GAHwBrE,SAApBi0F,IAAiCA,GAAkB,GACxCj0F,SAAXqE,IAAwBA,MAEbrE,SAAXs2E,GAA0C,IAAlBA,EAAOn4E,OAG/B,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAKq+F,QAAQx2F,OAAQC,IAErCiG,EAAO6E,KAAK5S,KAAKq+F,QAAQv2F,GAAG4nB,WAMhC,KAAK,GAAI5nB,GAAI,EAAGA,EAAIk4E,EAAOn4E,OAAQC,IAG3B61F,GAAmB39F,KAAKq+F,QAAQre,EAAOl4E,IAEvCiG,EAAO6E,KAAK5S,KAAKq+F,QAAQre,EAAOl4E,IAAI4nB,OAIhC1vB,KAAKm+F,eAAene,EAAOl4E,KAE3BiG,EAAO6E,KAAK5S,KAAKm+F,eAAene,EAAOl4E,IAAI4nB,MAM3D,OAAO3hB,IASX+V,QAAS,WAEL9jB,KAAKq+F,QAAU,KACfr+F,KAAKygG,YAAc,OAM3BpgG,EAAO03D,UAAU1xD,UAAU8B,YAAc9H,EAAO03D,UAOhDxwD,OAAO2E,eAAe7L,EAAO03D,UAAU1xD,UAAW,SAE9C2F,IAAK,WACD,MAAOhM,MAAKq+F,QAAQx2F,UAiB5BxH,EAAOsgG,iBAeHC,YAAa,SAAUpmF,EAAMzO,EAAK80F,EAAYC,EAAaC,EAAUC,EAAQC,GAEzE,GAAIryC,GAAM7iD,CAOV,IALmB,gBAARA,KAEP6iD,EAAMp0C,EAAKsF,MAAM+uC,SAAS9iD,IAGlB,OAAR6iD,EAEA,MAAO,KAGX,IAAI7+C,GAAQ6+C,EAAI7+C,MACZC,EAAS4+C,EAAI5+C,MAEC,IAAd6wF,IAEAA,EAAa96F,KAAKI,OAAO4J,EAAQhK,KAAKkM,IAAI,GAAI4uF,KAG/B,GAAfC,IAEAA,EAAc/6F,KAAKI,OAAO6J,EAASjK,KAAKkM,IAAI,GAAI6uF,IAGpD,IAAII,GAAMn7F,KAAKI,OAAO4J,EAAQixF,IAAWH,EAAaI,IAClDE,EAASp7F,KAAKI,OAAO6J,EAASgxF,IAAWF,EAAcG,IACvDrsE,EAAQssE,EAAMC,CAQlB,IANiB,KAAbJ,IAEAnsE,EAAQmsE,GAIE,IAAVhxF,GAA0B,IAAXC,GAAwB6wF,EAAR9wF,GAA+B+wF,EAAT9wF,GAAkC,IAAV4kB,EAG7E,MADAxsB,SAAQG,KAAK,wCAA0CwD,EAAM,uEACtD,IAQX,KAAK,GAJDs2B,GAAO,GAAIhiC,GAAO03D,UAClB9xD,EAAI+6F,EACJv0F,EAAIu0F,EAECl5F,EAAI,EAAO8sB,EAAJ9sB,EAAWA,IAEvBu6B,EAAK41B,SAAS,GAAI53D,GAAO63D,MAAMpwD,EAAG7B,EAAGwG,EAAGo0F,EAAYC,EAAa,KAEjE76F,GAAK46F,EAAaI,EAEdh7F,EAAI46F,EAAa9wF,IAEjB9J,EAAI+6F,EACJv0F,GAAKq0F,EAAcG,EAI3B,OAAO5+D,IAYX++D,SAAU,SAAU5mF,EAAM6mF,GAGtB,IAAKA,EAAa,OAId,MAFAj5F,SAAQG,KAAK,iGACbH,SAAQC,IAAIg5F,EAWhB,KAAK,GAFDC,GAJAj/D,EAAO,GAAIhiC,GAAO03D,UAGlBioB,EAASqhB,EAAa,OAGjBv5F,EAAI,EAAGA,EAAIk4E,EAAOn4E,OAAQC,IAE/Bw5F,EAAWj/D,EAAK41B,SAAS,GAAI53D,GAAO63D,MAChCpwD,EACAk4E,EAAOl4E,GAAG4oB,MAAMzqB,EAChB+5E,EAAOl4E,GAAG4oB,MAAMjkB,EAChBuzE,EAAOl4E,GAAG4oB,MAAMpT,EAChB0iE,EAAOl4E,GAAG4oB,MAAMnT,EAChByiE,EAAOl4E,GAAGy5F,WAGVvhB,EAAOl4E,GAAGknD,SAEVsyC,EAASrB,QACLjgB,EAAOl4E,GAAGknD,QACVgxB,EAAOl4E,GAAG05F,WAAWlkF,EACrB0iE,EAAOl4E,GAAG05F,WAAWjkF,EACrByiE,EAAOl4E,GAAG25F,iBAAiBx7F,EAC3B+5E,EAAOl4E,GAAG25F,iBAAiBh1F,EAC3BuzE,EAAOl4E,GAAG25F,iBAAiBnkF,EAC3B0iE,EAAOl4E,GAAG25F,iBAAiBlkF,EAKvC,OAAO8kB,IAYXq/D,cAAe,SAAUlnF,EAAM6mF,GAG3B,GAAIM,IAAa,SAAU,YAAY,aAAa,YAAa,YAYjE,IAVAA,EAAUl6F,QAAS,SAASsE,GACxB,MAAKs1F,GAAKt1F,GAAV,QAEI3D,QAAQG,KAAK,oFAAsFwD,EAAM,cACzG3D,SAAQC,IAAIg5F,MAMQ,GAAzBA,EAAa,OAAEx5F,OAGd,MAFAO,SAAQG,KAAK,uGACbH,SAAQC,IAAIg5F,EAYhB,KAAK,GAFDC,GANAj/D,EAAO,GAAIhiC,GAAO03D,UAElB6pC,EAAaP,EAAiB,WAC9BQ,EAAYR,EAAgB,UAE5BrhB,EAASqhB,EAAa,OAAE,GAAU,MAG7Bv5F,EAAI,EAAGA,EAAIk4E,EAAOn4E,OAAQC,IAE/Bw5F,EAAWj/D,EAAK41B,SAAS,GAAI53D,GAAO63D,MAChCpwD,EACAk4E,EAAOl4E,GAAG7B,EACV+5E,EAAOl4E,GAAG2E,EACVo1F,EACAD,EACA,SAAW95F,IAIfw5F,EAASrB,SAAQ,EAGrB,OAAO59D,IAYXy/D,aAAc,SAAUtnF,EAAM6mF,GAG1B,IAAKA,EAAa,OAId,MAFAj5F,SAAQG,KAAK,sGACbH,SAAQC,IAAIg5F,EAKhB,IAIIC,GAJAj/D,EAAO,GAAIhiC,GAAO03D,UAGlBioB,EAASqhB,EAAa,OAEtBv5F,EAAI,CAER,KAAK,GAAIiE,KAAOi0E,GAEZshB,EAAWj/D,EAAK41B,SAAS,GAAI53D,GAAO63D,MAChCpwD,EACAk4E,EAAOj0E,GAAK2kB,MAAMzqB,EAClB+5E,EAAOj0E,GAAK2kB,MAAMjkB,EAClBuzE,EAAOj0E,GAAK2kB,MAAMpT,EAClB0iE,EAAOj0E,GAAK2kB,MAAMnT,EAClBxR,IAGAi0E,EAAOj0E,GAAKijD,SAEZsyC,EAASrB,QACLjgB,EAAOj0E,GAAKijD,QACZgxB,EAAOj0E,GAAKy1F,WAAWlkF,EACvB0iE,EAAOj0E,GAAKy1F,WAAWjkF,EACvByiE,EAAOj0E,GAAK01F,iBAAiBx7F,EAC7B+5E,EAAOj0E,GAAK01F,iBAAiBh1F,EAC7BuzE,EAAOj0E,GAAK01F,iBAAiBnkF,EAC7B0iE,EAAOj0E,GAAK01F,iBAAiBlkF,GAIrCzV,GAGJ,OAAOu6B,IAYX0/D,QAAS,SAAUvnF,EAAMwnF,GAGrB,IAAKA,EAAIC,qBAAqB,gBAG1B,WADA75F,SAAQG,KAAK,8FAoBjB,KAAK,GAbD+4F,GAEAl2F,EACAslB,EACAzqB,EACAwG,EACAsD,EACAC,EACAkyF,EACAC,EACAtB,EACAC,EAbAz+D,EAAO,GAAIhiC,GAAO03D,UAClBioB,EAASgiB,EAAIC,qBAAqB,cAc7Bn6F,EAAI,EAAGA,EAAIk4E,EAAOn4E,OAAQC,IAE/B4oB,EAAQsvD,EAAOl4E,GAAGs6F,WAElBh3F,EAAOslB,EAAMtlB,KAAK7B,MAClBtD,EAAIoE,SAASqmB,EAAMzqB,EAAEsD,MAAO,IAC5BkD,EAAIpC,SAASqmB,EAAMjkB,EAAElD,MAAO,IAC5BwG,EAAQ1F,SAASqmB,EAAM3gB,MAAMxG,MAAO,IACpCyG,EAAS3F,SAASqmB,EAAM1gB,OAAOzG,MAAO,IAEtC24F,EAAS,KACTC,EAAS,KAELzxE,EAAMwxE,SAENA,EAASn8F,KAAKoJ,IAAI9E,SAASqmB,EAAMwxE,OAAO34F,MAAO,KAC/C44F,EAASp8F,KAAKoJ,IAAI9E,SAASqmB,EAAMyxE,OAAO54F,MAAO,KAC/Cs3F,EAAax2F,SAASqmB,EAAMmwE,WAAWt3F,MAAO,IAC9Cu3F,EAAcz2F,SAASqmB,EAAMowE,YAAYv3F,MAAO,KAGpD+3F,EAAWj/D,EAAK41B,SAAS,GAAI53D,GAAO63D,MAAMpwD,EAAG7B,EAAGwG,EAAGsD,EAAOC,EAAQ5E,IAGnD,OAAX82F,GAA8B,OAAXC,GAEnBb,EAASrB,SAAQ,EAAMlwF,EAAOC,EAAQkyF,EAAQC,EAAQtB,EAAYC,EAI1E,OAAOz+D,KAuCfhiC,EAAOi5B,MAAQ,SAAU9e,GAKrBxa,KAAKwa,KAAOA,EAMZxa,KAAKqiG,gBAAiB,EAOtBriG,KAAKsiG,QACDh3E,UACAlC,SACA+Y,WACAliB,SACAuzC,SACA/B,QACA4vC,QACAW,OACA3hF,WACA4yC,WACAsvC,UACA7uC,cACA8uC,cACA50B,UACAxa,kBAOJpzD,KAAKyiG,WAMLziG,KAAK0iG,aAAe,GAAI/xC,OAMxB3wD,KAAK2iG,SAAW,KAKhB3iG,KAAK4iG,cAAgB,GAAIviG,GAAO+a,OAMhCpb,KAAK6iG,aAEL7iG,KAAK6iG,UAAUxiG,EAAOi5B,MAAM74B,QAAUT,KAAKsiG,OAAOh3E,OAClDtrB,KAAK6iG,UAAUxiG,EAAOi5B,MAAMn4B,OAASnB,KAAKsiG,OAAOl5E,MACjDppB,KAAK6iG,UAAUxiG,EAAOi5B,MAAMwpE,SAAW9iG,KAAKsiG,OAAOngE,QACnDniC,KAAK6iG,UAAUxiG,EAAOi5B,MAAMypE,OAAS/iG,KAAKsiG,OAAOriF,MACjDjgB,KAAK6iG,UAAUxiG,EAAOi5B,MAAMj4B,MAAQrB,KAAKsiG,OAAO7wC,KAChDzxD,KAAK6iG,UAAUxiG,EAAOi5B,MAAM0pE,SAAWhjG,KAAKsiG,OAAOjiF,QACnDrgB,KAAK6iG,UAAUxiG,EAAOi5B,MAAM53B,SAAW1B,KAAKsiG,OAAOrvC,QACnDjzD,KAAK6iG,UAAUxiG,EAAOi5B,MAAM2pE,QAAUjjG,KAAKsiG,OAAOC,OAClDviG,KAAK6iG,UAAUxiG,EAAOi5B,MAAMx3B,YAAc9B,KAAKsiG,OAAO5uC,WACtD1zD,KAAK6iG,UAAUxiG,EAAOi5B,MAAM4pE,YAAcljG,KAAKsiG,OAAOE,WACtDxiG,KAAK6iG,UAAUxiG,EAAOi5B,MAAM6pE,MAAQnjG,KAAKsiG,OAAOjB,KAChDrhG,KAAK6iG,UAAUxiG,EAAOi5B,MAAM8pE,KAAOpjG,KAAKsiG,OAAON,IAC/ChiG,KAAK6iG,UAAUxiG,EAAOi5B,MAAMz2B,OAAS7C,KAAKsiG,OAAO9uC,MACjDxzD,KAAK6iG,UAAUxiG,EAAOi5B,MAAM+pE,QAAUrjG,KAAKsiG,OAAO10B,OAClD5tE,KAAK6iG,UAAUxiG,EAAOi5B,MAAMgqE,gBAAkBtjG,KAAKsiG,OAAOlvC,cAE1DpzD,KAAKujG,kBACLvjG,KAAKwjG,mBAQTnjG,EAAOi5B,MAAM74B,OAAS,EAMtBJ,EAAOi5B,MAAMn4B,MAAQ,EAMrBd,EAAOi5B,MAAMwpE,QAAU,EAMvBziG,EAAOi5B,MAAMypE,MAAQ,EAMrB1iG,EAAOi5B,MAAMj4B,KAAO,EAMpBhB,EAAOi5B,MAAM0pE,QAAU,EAMvB3iG,EAAOi5B,MAAM53B,QAAU,EAMvBrB,EAAOi5B,MAAM2pE,OAAS,EAMtB5iG,EAAOi5B,MAAMx3B,WAAa,EAM1BzB,EAAOi5B,MAAM4pE,WAAa,GAM1B7iG,EAAOi5B,MAAM6pE,KAAO,GAMpB9iG,EAAOi5B,MAAM8pE,IAAM,GAMnB/iG,EAAOi5B,MAAMz2B,MAAQ,GAMrBxC,EAAOi5B,MAAM+pE,OAAS,GAMtBhjG,EAAOi5B,MAAMgqE,eAAiB,GAO9BjjG,EAAOi5B,MAAM3zB,QAAU,KAOvBtF,EAAOi5B,MAAMmqE,QAAU,KAEvBpjG,EAAOi5B,MAAMjzB,WAcTq9F,UAAW,SAAU33F,EAAKuf,EAAQjH,GAEd3a,SAAZ2a,IAAyBA,EAAUiH,EAAOiV,WAAW,OAEzDvgC,KAAKsiG,OAAOh3E,OAAOvf,IAASuf,OAAQA,EAAQjH,QAASA,IAczDo1C,SAAU,SAAU1tD,EAAK0nD,EAAKpxB,GAEtBriC,KAAKk9E,cAAcnxE,IAEnB/L,KAAK2jG,YAAY53F,EAGrB,IAAI6iD,IACA7iD,IAAKA,EACL0nD,IAAKA,EACLpxB,KAAMA,EACNysB,KAAM,GAAIhpD,MAAKgyD,YAAYz1B,GAC3B3R,MAAO,GAAIrwB,GAAO63D,MAAM,EAAG,EAAG,EAAG71B,EAAKtyB,MAAOsyB,EAAKryB,OAAQjE,GAC1DuiD,UAAW,GAAIjuD,GAAO03D,UAkB1B,OAfAnJ,GAAIN,UAAU2J,SAAS,GAAI53D,GAAO63D,MAAM,EAAG,EAAG,EAAG71B,EAAKtyB,MAAOsyB,EAAKryB,OAAQyjD,IAE1EzzD,KAAKsiG,OAAOl5E,MAAMrd,GAAO6iD,EAEzB5uD,KAAK4jG,YAAYnwC,EAAK7E,GAEV,cAAR7iD,EAEA1L,EAAOi5B,MAAM3zB,QAAU,GAAIG,MAAK4oD,QAAQE,EAAIE,MAE/B,cAAR/iD,IAEL1L,EAAOi5B,MAAMmqE,QAAU,GAAI39F,MAAK4oD,QAAQE,EAAIE,OAGzCF,GAaX20C,gBAAiB,WAEb,GAAI30C,GAAM,GAAI+B,MAEd/B,GAAIvjD,IAAM,wKAEV,IAAItC,GAAM/I,KAAKy5D,SAAS,YAAa,KAAM7K,EAG3C7lD,GAAI+lD,KAAKC,YAAa,EAGtB1uD,EAAOi5B,MAAM3zB,QAAU,GAAIG,MAAK4oD,QAAQ3lD,EAAI+lD,OAahD00C,gBAAiB,WAEb,GAAI50C,GAAM,GAAI+B,MAEd/B,GAAIvjD,IAAM,4WAEV,IAAItC,GAAM/I,KAAKy5D,SAAS,YAAa,KAAM7K,EAG3CvuD,GAAOi5B,MAAMmqE,QAAU,GAAI39F,MAAK4oD,QAAQ3lD,EAAI+lD,OAchD+0C,SAAU,SAAU93F,EAAK0nD,EAAKpxB,EAAM/H,EAAUwpE,GAEzBp6F,SAAb4wB,IAA0BA,GAAW,EAAMwpE,GAAW,GACzCp6F,SAAbo6F,IAA0BxpE,GAAW,EAAOwpE,GAAW,EAE3D,IAAIC,IAAU,CAEVD,KAEAC,GAAU,GAGd/jG,KAAKsiG,OAAOriF,MAAMlU,IACd0nD,IAAKA,EACLpxB,KAAMA,EACN2hE,YAAY,EACZD,QAASA,EACTzpE,SAAUA,EACVwpE,SAAUA,EACV7gE,OAAQjjC,KAAKwa,KAAKyF,MAAMgkF,aAG5BjkG,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAOriF,MAAMlU,KAY5Cm4F,QAAS,SAAUn4F,EAAK0nD,EAAKpxB,GAEzBriC,KAAKsiG,OAAO7wC,KAAK1lD,IAAS0nD,IAAKA,EAAKpxB,KAAMA,GAE1CriC,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAO7wC,KAAK1lD,KAa3Co4F,eAAgB,SAAUp4F,EAAK0nD,EAAK2tC,EAAUgD,GAE1CpkG,KAAKsiG,OAAOjiF,QAAQtU,IAAS0nD,IAAKA,EAAKpxB,KAAM++D,EAAUgD,OAAQA,GAE/DpkG,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAOjiF,QAAQtU,KAa9Cs4F,WAAY,SAAUt4F,EAAK0nD,EAAK6wC,EAASF,GAErCpkG,KAAKsiG,OAAOrvC,QAAQlnD,IAAS0nD,IAAKA,EAAKpxB,KAAMiiE,EAASF,OAAQA,GAE9DpkG,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAOrvC,QAAQlnD,KAW9Cw4F,UAAW,SAAUx4F,EAAKy4F,GAEtBxkG,KAAKsiG,OAAOC,OAAOx2F,GAAOy4F,GAa9B7wC,cAAe,SAAU5nD,EAAK2nD,EAAYpF,GAYtC,MAVAoF,GAAW3nD,IAAMA,EAECrC,SAAd4kD,IAEAA,EAAY,GAAIjuD,GAAO03D,UACvBzJ,EAAU2J,SAASvE,EAAWsE,eAGlCh4D,KAAKsiG,OAAO5uC,WAAW3nD,IAASs2B,KAAMqxB,EAAYpF,UAAWA,GAEtDoF,GAgBX+wC,cAAe,SAAU14F,EAAK0nD,EAAKpxB,EAAMqiE,EAAWC,EAAWhyC,EAAUC,GAErE,GAAI7pD,IACA0qD,IAAKA,EACLpxB,KAAMA,EACNiwB,KAAM,KACNxD,KAAM,GAAIhpD,MAAKgyD,YAAYz1B,GAGd34B,UAAbipD,IAA0BA,EAAW,GACxBjpD,SAAbkpD,IAA0BA,EAAW,GAEvB,SAAd+xC,EAEA57F,EAAIupD,KAAOjyD,EAAOukG,aAAaC,eAAeH,EAAW37F,EAAI+lD,KAAM6D,EAAUC,GAI7E7pD,EAAIupD,KAAOjyD,EAAOukG,aAAaE,cAAcJ,EAAW37F,EAAI+lD,KAAM6D,EAAUC,GAGhF5yD,KAAKsiG,OAAOE,WAAWz2F,GAAOhD,EAE9B/I,KAAK4jG,YAAYnwC,EAAK1qD,IAY1Bg8F,QAAS,SAAUh5F,EAAK0nD,EAAKpxB,GAEzBriC,KAAKsiG,OAAOjB,KAAKt1F,IAAS0nD,IAAKA,EAAKpxB,KAAMA,GAE1CriC,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAOjB,KAAKt1F,KAY3Ci5F,OAAQ,SAAUj5F,EAAK0nD,EAAKpxB,GAExBriC,KAAKsiG,OAAON,IAAIj2F,IAAS0nD,IAAKA,EAAKpxB,KAAMA,GAEzCriC,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAON,IAAIj2F,KAa1Ck5F,SAAU,SAAUl5F,EAAK0nD,EAAKpxB,EAAM6iE,GAEhCllG,KAAKsiG,OAAO9uC,MAAMznD,IAAS0nD,IAAKA,EAAKpxB,KAAMA,EAAM6iE,OAAQA,EAAQjiE,QAAQ,GAEzEjjC,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAO9uC,MAAMznD,KAY5Co5F,UAAW,SAAUp5F,EAAK0nD,EAAKpxB,GAE3BriC,KAAKsiG,OAAO10B,OAAO7hE,IAAS0nD,IAAKA,EAAKpxB,KAAMA,GAE5CriC,KAAK4jG,YAAYnwC,EAAKzzD,KAAKsiG,OAAO10B,OAAO7hE,KAW7CwnD,iBAAkB,SAAUxnD,EAAKo2B,GAE7BniC,KAAKsiG,OAAOlvC,cAAcrnD,IAASo2B,QAASA,EAASzR,MAAO,GAAIrwB,GAAO63D,MAAM,EAAG,EAAG,EAAG/1B,EAAQpyB,MAAOoyB,EAAQnyB,OAAQ,GAAI,MAiB7Ho1F,eAAgB,SAAUr5F,EAAK0nD,EAAKpxB,EAAMw+D,EAAYC,EAAaC,EAAUC,EAAQC,GAEhEv3F,SAAbq3F,IAA0BA,EAAW,IAC1Br3F,SAAXs3F,IAAwBA,EAAS,GACrBt3F,SAAZu3F,IAAyBA,EAAU,EAEvC,IAAIl4F,IACAgD,IAAKA,EACL0nD,IAAKA,EACLpxB,KAAMA,EACNw+D,WAAYA,EACZC,YAAaA,EACbE,OAAQA,EACRC,QAASA,EACTnyC,KAAM,GAAIhpD,MAAKgyD,YAAYz1B,GAC3BisB,UAAWjuD,EAAOsgG,gBAAgBC,YAAY5gG,KAAKwa,KAAM6nB,EAAMw+D,EAAYC,EAAaC,EAAUC,EAAQC,GAG9GjhG,MAAKsiG,OAAOl5E,MAAMrd,GAAOhD,EAEzB/I,KAAK4jG,YAAYnwC,EAAK1qD,IAc1Bs8F,gBAAiB,SAAUt5F,EAAK0nD,EAAKpxB,EAAMqiE,EAAWN,GAElD,GAAIr7F,IACAgD,IAAKA,EACL0nD,IAAKA,EACLpxB,KAAMA,EACNysB,KAAM,GAAIhpD,MAAKgyD,YAAYz1B,GAG3B+hE,KAAW/jG,EAAOk5B,OAAO+rE,2BAEzBv8F,EAAIulD,UAAYjuD,EAAOsgG,gBAAgBoB,QAAQ/hG,KAAKwa,KAAMkqF,EAAW34F,GAEhEq4F,IAAW/jG,EAAOk5B,OAAOgsE,yBAE9Bx8F,EAAIulD,UAAYjuD,EAAOsgG,gBAAgBe,cAAc1hG,KAAKwa,KAAMkqF,EAAW34F,GAKvEvF,MAAMa,QAAQq9F,EAAU1kB,QAExBj3E,EAAIulD,UAAYjuD,EAAOsgG,gBAAgBS,SAASphG,KAAKwa,KAAMkqF,EAAW34F,GAItEhD,EAAIulD,UAAYjuD,EAAOsgG,gBAAgBmB,aAAa9hG,KAAKwa,KAAMkqF,EAAW34F,GAIlF/L,KAAKsiG,OAAOl5E,MAAMrd,GAAOhD,EAEzB/I,KAAK4jG,YAAYnwC,EAAK1qD,IAc1By8F,YAAa,SAAUz5F,GAEnB,GAAI0a,GAAQzmB,KAERigB,EAAQjgB,KAAKylG,SAAS15F,EAEtBkU,KAEAA,EAAMoiB,KAAKh3B,IAAM4U,EAAMwzC,IAEvBxzC,EAAMoiB,KAAKhW,iBAAiB,iBAAkB,WAC1C,MAAO5F,GAAMi/E,oBAAoB35F,KAClC,GAEHkU,EAAMoiB,KAAKriB,SAWnB0lF,oBAAqB,SAAU35F,GAE3B,GAAIkU,GAAQjgB,KAAKylG,SAAS15F,EAEtBkU,KAEAA,EAAMgjB,QAAS,EACfjjC,KAAK4iG,cAAc/jF,SAAS9S,KAWpC45F,YAAa,SAAU55F,EAAKgnB,EAAUxpB,GAElC,GAAI0W,GAAQjgB,KAAKylG,SAAS15F,EAEtBkU,KAEAA,EAAM8S,GAAYxpB,IAY1Bq8F,aAAc,SAAU75F,EAAKs2B,GAEzB,GAAIpiB,GAAQjgB,KAAKylG,SAAS15F,EAE1BkU,GAAMoiB,KAAOA,EACbpiB,EAAM8jF,SAAU,EAChB9jF,EAAM+jF,YAAa,GAWvB6B,eAAgB,SAAU95F,GAEtB,GAAIkU,GAAQjgB,KAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMypE,MAAO,iBAElD,OAAI9iF,GAEOA,EAAM8jF,QAFjB,QAeJ+B,aAAc,SAAU/5F,GAEpB,GAAIkU,GAAQjgB,KAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMypE,MAAO,iBAElD,OAAI9iF,GAEQA,EAAM8jF,UAAY/jG,KAAKwa,KAAKyF,MAAMgkF,YAF9C,QAmBJ8B,SAAU,SAAUjmF,EAAO/T,GAEvB,QAAI/L,KAAK6iG,UAAU/iF,GAAO/T,IAmB9Bi6F,SAAU,SAAUvyC,GAEhB,QAAIzzD,KAAKyiG,QAAQziG,KAAK4jG,YAAYnwC,KAgBtCwyC,eAAgB,SAAUl6F,GAEtB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM74B,OAAQsL,IAW9CmxE,cAAe,SAAUnxE,GAErB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAMn4B,MAAO4K,IAW7Cm6F,gBAAiB,SAAUn6F,GAEvB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAMwpE,QAAS/2F,IAW/Co6F,cAAe,SAAUp6F,GAErB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAMypE,MAAOh3F,IAW7Cq6F,aAAc,SAAUr6F,GAEpB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAMj4B,KAAM0K,IAW5Cs6F,gBAAiB,SAAUt6F,GAEvB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM0pE,QAASj3F,IAW/Cu6F,gBAAiB,SAAUv6F,GAEvB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM53B,QAASqK,IAW/Cw6F,eAAgB,SAAUx6F,GAEtB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM2pE,OAAQl3F,IAW9Cy6F,mBAAoB,SAAUz6F,GAE1B,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAMx3B,WAAYiK,IAWlD06F,mBAAoB,SAAU16F,GAE1B,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM4pE,WAAYn3F,IAWlD26F,aAAc,SAAU36F,GAEpB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM6pE,KAAMp3F,IAW5C46F,YAAa,SAAU56F,GAEnB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM8pE,IAAKr3F,IAW3C66F,cAAe,SAAU76F,GAErB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAMz2B,MAAOkJ,IAW7C86F,eAAgB,SAAU96F,GAEtB,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAM+pE,OAAQt3F,IAW9C+6F,sBAAuB,SAAU/6F,GAE7B,MAAO/L,MAAK+lG,SAAS1lG,EAAOi5B,MAAMgqE,eAAgBv3F,IAqBtDk6E,QAAS,SAAUl6E,EAAK+T,EAAO2T,EAAQV,GAEnC,MAAK/yB,MAAK+lG,SAASjmF,EAAO/T,GASLrC,SAAbqpB,EAEO/yB,KAAK6iG,UAAU/iF,GAAO/T,GAItB/L,KAAK6iG,UAAU/iF,GAAO/T,GAAKgnB,IAblCU,GAEArrB,QAAQG,KAAK,gBAAkBkrB,EAAS,UAAY1nB,EAAM,yBAe3D,OAeXkwD,UAAW,SAAUlwD,GAEjB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM74B,OAAQ,YAAa,WAoB/DouD,SAAU,SAAU9iD,EAAKg7F,GAETr9F,SAARqC,GAA6B,OAARA,IAErBA,EAAM,aAGGrC,SAATq9F,IAAsBA,GAAO,EAEjC,IAAIn4C,GAAM5uD,KAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMn4B,MAAO,WAOhD,OALY,QAARytD,IAEAA,EAAM5uD,KAAKimF,QAAQ,YAAa5lF,EAAOi5B,MAAMn4B,MAAO,aAGpD4lG,EAEOn4C,EAIAA,EAAIvsB,MAcnB2kE,gBAAiB,SAAUj7F,GAEvB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMwpE,QAAS,kBAAmB,UAetE2C,SAAU,SAAU15F,GAEhB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMypE,MAAO,aAejDkE,aAAc,SAAUl7F,GAEpB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMypE,MAAO,eAAgB,SAejEmE,QAAS,SAAUn7F,GAEf,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMj4B,KAAM,UAAW,SAmB3D8lG,eAAgB,SAAUp7F,EAAKupB,EAAQ8xE,GAEnC,GAAI/kE,GAAOriC,KAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM0pE,QAAS,iBAAkB,OAErE,IAAa,OAAT3gE,GAA4B34B,SAAX4rB,GAAmC,OAAXA,EAEzC,MAAO+M,EAIP,IAAIA,EAAK/M,GACT,CACI,GAAI+xE,GAAWhlE,EAAK/M,EAGpB,KAAI+xE,IAAYD,EAmBZ,MAAOC,EAjBP,KAAK,GAAIC,KAAWD,GAMhB,GAHAC,EAAUD,EAASC,GAGfA,EAAQF,aAAeA,EAEvB,MAAOE,EAKfl/F,SAAQG,KAAK,kEAAoE6+F,EAAa,OAASr7F,EAAM,SASjH3D,SAAQG,KAAK,qDAAuDwD,EAAM,MAAQupB,EAAS,IAInG,OAAO,OAeXiyE,eAAgB,SAAUx7F,GAEtB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM53B,QAAS,mBAenD8lG,UAAW,SAAUz7F,GAEjB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM2pE,OAAQ,cAelDwE,cAAe,SAAU17F,GAErB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMx3B,WAAY,gBAAiB,SAevE+5E,cAAe,SAAU9vE,GAErB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM4pE,WAAY,kBAmBtDwE,QAAS,SAAU37F,EAAKP,GAEpB,GAAI62B,GAAOriC,KAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM6pE,KAAM,UAAW,OAE3D,OAAI9gE,GAEI72B,EAEOnL,EAAOmI,MAAM0C,QAAO,EAAM1E,MAAMa,QAAQg7B,SAAiBA,GAIzDA,EAKJ,MAgBfslE,OAAQ,SAAU57F,GAEd,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM8pE,IAAK,SAAU,SAezDwE,SAAU,SAAU77F,GAEhB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMz2B,MAAO,aAejDglG,UAAW,SAAU97F,GAEjB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAM+pE,OAAQ,YAAa,SAe/DyE,iBAAkB,SAAU/7F,GAExB,MAAO/L,MAAKimF,QAAQl6E,EAAK1L,EAAOi5B,MAAMgqE,eAAgB,qBAgB1DyE,eAAgB,SAAUh8F,EAAK+T,GAI3B,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOi5B,MAAMn4B,OAEzCnB,KAAKimF,QAAQl6E,EAAK+T,EAAO,iBAAkB,SAYtDo+E,SAAU,SAAUnyF,EAAK+T,GAIrB,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOi5B,MAAMn4B,OAEzCnB,KAAKimF,QAAQl6E,EAAK+T,EAAO,WAAY,UAYhDkoF,cAAe,SAAUj8F,EAAK+T,GAE1B,GAAIuiB,GAAOriC,KAAKquD,aAAatiD,EAAK+T,EAElC,OAAIuiB,GAEOA,EAAKzN,MAIL,GAiBfy5B,aAAc,SAAUtiD,EAAK+T,GAIzB,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOi5B,MAAMn4B,OAEzCnB,KAAKimF,QAAQl6E,EAAK+T,EAAO,eAAgB,cAYpDquC,aAAc,SAAUpiD,EAAK+T,GAIzB,MAFcpW,UAAVoW,IAAuBA,EAAQzf,EAAOi5B,MAAMn4B,OAEM,OAA9CnB,KAAKimF,QAAQl6E,EAAK+T,EAAO,GAAI,cAYzCi+D,gBAAiB,SAAUhyE,EAAKuiD,EAAWxuC,GAEzBpW,SAAVoW,IAAuBA,EAAQzf,EAAOi5B,MAAMn4B,OAE5CnB,KAAK6iG,UAAU/iF,GAAO/T,KAEtB/L,KAAK6iG,UAAU/iF,GAAO/T,GAAKuiD,UAAYA,IAc/C25C,gBAAiB,SAAUl8F,EAAK2jB,EAAO5P,GAEnC,GAAIuiB,GAAOriC,KAAKquD,aAAatiD,EAAK+T,EAElC,OAAIuiB,GAEOA,EAAK67D,SAASxuE,GAId,MAcfyuE,eAAgB,SAAUpyF,EAAKX,EAAM0U,GAEjC,GAAIuiB,GAAOriC,KAAKquD,aAAatiD,EAAK+T,EAElC,OAAIuiB,GAEOA,EAAK87D,eAAe/yF,GAIpB,MAcf88F,OAAQ,SAAUz0C,GAEd,GAAIA,GAAMzzD,KAAK4jG,YAAYnwC,EAE3B,OAAIA,GAEOzzD,KAAKyiG,QAAQhvC,IAIpBrrD,QAAQG,KAAK,sCAAwCkrD,EAAO,uCACrD,OAYf00C,QAAS,SAAUroF,GAEDpW,SAAVoW,IAAuBA,EAAQzf,EAAOi5B,MAAMn4B,MAEhD,IAAI4L,KAEJ,IAAI/M,KAAK6iG,UAAU/iF,GAEf,IAAK,GAAI/T,KAAO/L,MAAK6iG,UAAU/iF,GAEf,cAAR/T,GAA+B,cAARA,GAEvBgB,EAAI6F,KAAK7G,EAKrB,OAAOgB,IAiBXq7F,aAAc,SAAUr8F,SAEb/L,MAAKsiG,OAAOh3E,OAAOvf,IAgB9B43F,YAAa,SAAU53F,EAAKs8F,GAEG3+F,SAAvB2+F,IAAoCA,GAAqB,EAE7D,IAAIz5C,GAAM5uD,KAAK6uD,SAAS9iD,GAAK,EAEzBs8F,IAAsBz5C,EAAIE,MAE1BF,EAAIE,KAAKhrC,gBAGN9jB,MAAKsiG,OAAOl5E,MAAMrd,IAiB7Bu8F,YAAa,SAAUv8F,SAEZ/L,MAAKsiG,OAAOriF,MAAMlU,IAa7Bw8F,WAAY,SAAUx8F,SAEX/L,MAAKsiG,OAAO7wC,KAAK1lD,IAa5By8F,cAAe,SAAUz8F,SAEd/L,MAAKsiG,OAAOjiF,QAAQtU,IAa/B08F,cAAe,SAAU18F,SAEd/L,MAAKsiG,OAAOrvC,QAAQlnD,IAa/B28F,aAAc,SAAU38F,SAEb/L,MAAKsiG,OAAOC,OAAOx2F,IAa9B48F,iBAAkB,SAAU58F,SAEjB/L,MAAKsiG,OAAO5uC,WAAW3nD,IAalC68F,iBAAkB,SAAU78F,SAEjB/L,MAAKsiG,OAAOE,WAAWz2F,IAalC88F,WAAY,SAAU98F,SAEX/L,MAAKsiG,OAAOjB,KAAKt1F,IAa5B+8F,UAAW,SAAU/8F,SAEV/L,MAAKsiG,OAAON,IAAIj2F,IAa3Bg9F,YAAa,SAAUh9F,SAEZ/L,MAAKsiG,OAAO9uC,MAAMznD,IAa7Bi9F,aAAc,SAAUj9F,SAEb/L,MAAKsiG,OAAO10B,OAAO7hE,IAa9Bk9F,oBAAqB,SAAUl9F,SAEpB/L,MAAKsiG,OAAOlvC,cAAcrnD,IAarCm9F,kBAAmB,SAAUn9F,SAElB/L,MAAKsiG,OAAO1B,YAAY70F,IAanCo9F,mBAAoB,SAAUp9F,SAEnB/L,MAAKsiG,OAAO8G,MAAMr9F,IAW7BovB,gBAAiB,WAEb,IAAK,GAAIpvB,KAAO/L,MAAKsiG,OAAOl5E,MAExBppB,KAAKsiG,OAAOl5E,MAAMrd,GAAK+iD,KAAKu6C,gBAepCzF,YAAa,SAAUnwC,EAAKpxB,GAExB,MAAKriC,MAAKqiG,gBAKVriG,KAAK0iG,aAAar3F,IAAMrL,KAAKwa,KAAKwF,KAAKspF,QAAU71C,EAEjDzzD,KAAK2iG,SAAW3iG,KAAK0iG,aAAar3F,IAGlCrL,KAAK0iG,aAAar3F,IAAM,GAGpBg3B,IAEAriC,KAAKyiG,QAAQziG,KAAK2iG,UAAYtgE,GAG3BriC,KAAK2iG,UAhBD,MA0Bf7+E,QAAS,WAEL,IAAK,GAAIhc,GAAI,EAAGA,EAAI9H,KAAK6iG,UAAUh7F,OAAQC,IAC3C,CACI,GAAIgY,GAAQ9f,KAAK6iG,UAAU/6F,EAE3B,KAAK,GAAIiE,KAAO+T,GAEA,cAAR/T,GAA+B,cAARA,IAEnB+T,EAAM/T,GAAc,SAEpB+T,EAAM/T,GAAK+X,gBAGRhE,GAAM/T,IAKzB/L,KAAKyiG,QAAU,KACfziG,KAAK0iG,aAAe,KACpB1iG,KAAK2iG,SAAW,OAMxBtiG,EAAOi5B,MAAMjzB,UAAU8B,YAAc9H,EAAOi5B,MAuB5Cj5B,EAAOk5B,OAAS,SAAU/e,GAOtBxa,KAAKwa,KAAOA,EAOZxa,KAAK8f,MAAQtF,EAAKsF,MAOlB9f,KAAK8+B,aAAc,EAOnB9+B,KAAKupG,WAAY,EAOjBvpG,KAAKwpG,WAAY,EAUjBxpG,KAAKypG,cAAgB,KAOrBzpG,KAAK0pG,aAAc,EASnB1pG,KAAKspG,QAAU,GAoBftpG,KAAKwkE,KAAO,GASZxkE,KAAK2pG,SACDtI,KAAM,mBACNW,IAAK,mBASThiG,KAAK4pG,YAAc,GAAIvpG,GAAO+a,OAO9Bpb,KAAK6pG,eAAiB,GAAIxpG,GAAO+a,OAWjCpb,KAAK8pG,eAAiB,GAAIzpG,GAAO+a,OAUjCpb,KAAK+pG,YAAc,GAAI1pG,GAAO+a,OAa9Bpb,KAAKgqG,eAAiB,GAAI3pG,GAAO+a,OAWjCpb,KAAKiqG,YAAc,GAAI5pG,GAAO+a,OAU9Bpb,KAAKkqG,mBAAoB,EAMzBlqG,KAAKmqG,4BAA6B,EASlCnqG,KAAKoqG,gBAAiB,EAUtBpqG,KAAKqqG,qBAAuB,EAM5BrqG,KAAKsqG,oBAAsB,EAU3BtqG,KAAKuqG,aAcLvqG,KAAKwqG,gBAQLxqG,KAAKyqG,gBAAkB,EASvBzqG,KAAK0qG,kBAAmB,EAOxB1qG,KAAK2qG,gBAAkB,EAOvB3qG,KAAK4qG,gBAAkB,EAOvB5qG,KAAK6qG,iBAAmB,EAOxB7qG,KAAK8qG,iBAAmB,GAQ5BzqG,EAAOk5B,OAAOwxE,yBAA2B,EAMzC1qG,EAAOk5B,OAAOyxE,wBAA0B,EAMxC3qG,EAAOk5B,OAAO+rE,2BAA6B,EAM3CjlG,EAAOk5B,OAAO0xE,yBAA2B,EAMzC5qG,EAAOk5B,OAAO2xE,oBAAsB,EAMpC7qG,EAAOk5B,OAAOgsE,yBAA2B,EAEzCllG,EAAOk5B,OAAOlzB,WAcV8kG,iBAAkB,SAAUp0E,EAAQjZ,GAEhCA,EAAYA,GAAa,EAEzB9d,KAAKypG,eAAkB1yE,OAAQA,EAAQjZ,UAAWA,EAAW/N,MAAOgnB,EAAOhnB,MAAOC,OAAQ+mB,EAAO/mB,OAAQ0D,KAAM,MAE7F,IAAdoK,EAGA9d,KAAKypG,cAAc/1F,KAAO,GAAIrT,GAAOkN,UAAU,EAAG,EAAG,EAAGwpB,EAAO/mB,QAK/DhQ,KAAKypG,cAAc/1F,KAAO,GAAIrT,GAAOkN,UAAU,EAAG,EAAGwpB,EAAOhnB,MAAO,GAGvEgnB,EAAO6b,KAAK5yC,KAAKypG,cAAc/1F,MAE/BqjB,EAAOlc,SAAU,GAYrB/B,OAAQ,WAEA9Y,KAAKypG,eAAiBzpG,KAAKypG,cAAcz5F,SAAWhQ,KAAKypG,cAAc1yE,OAAO/mB,SAE9EhQ,KAAKypG,cAAc/1F,KAAK1D,OAAShQ,KAAKypG,cAAc1yE,OAAO/mB,SAenEo7F,eAAgB,SAAUljG,EAAM6D,GAE5B,MAAO/L,MAAKqrG,cAAcnjG,EAAM6D,GAAO,IAe3Cs/F,cAAe,SAAUnjG,EAAM6D,GAI3B,IAAK,GAFDu/F,GAAY,GAEPxjG,EAAI,EAAGA,EAAI9H,KAAKuqG,UAAU1iG,OAAQC,IAC3C,CACI,GAAIi6E,GAAO/hF,KAAKuqG,UAAUziG,EAE1B,IAAIi6E,EAAK75E,OAASA,GAAQ65E,EAAKh2E,MAAQA,IAEnCu/F,EAAYxjG,GAGPi6E,EAAKwpB,SAAWxpB,EAAKypB,SAEtB,MAKZ,MAAOF,IAeXG,SAAU,SAAUvjG,EAAM6D,GAEtB,GAAI2/F,GAAY1rG,KAAKqrG,cAAcnjG,EAAM6D,EAEzC,OAAI2/F,GAAY,IAEHh8E,MAAOg8E,EAAW3pB,KAAM/hF,KAAKuqG,UAAUmB,KAG7C,GAgBXhsF,MAAO,SAAUohB,EAAMg8D,GAECpzF,SAAhBozF,IAA6BA,GAAc,GAE3C98F,KAAK8+B,cAKLgC,IAEA9gC,KAAKypG,cAAgB,MAGzBzpG,KAAKupG,WAAY,EAEjBvpG,KAAKyqG,gBAAkB,EACvBzqG,KAAKuqG,UAAU1iG,OAAS,EACxB7H,KAAKwqG,aAAa3iG,OAAS,EAE3B7H,KAAK0qG,kBAAmB,EACxB1qG,KAAK4qG,gBAAkB,EACvB5qG,KAAK2qG,gBAAkB,EACvB3qG,KAAK6qG,iBAAmB,EACxB7qG,KAAK8qG,iBAAmB,EAEpBhO,IAEA98F,KAAK4pG,YAAYhmF,YACjB5jB,KAAK6pG,eAAejmF,YACpB5jB,KAAK8pG,eAAelmF,YACpB5jB,KAAK+pG,YAAYnmF,YACjB5jB,KAAKgqG,eAAepmF,YACpB5jB,KAAKiqG,YAAYrmF,eAkBzB+nF,cAAe,SAAUzjG,EAAM6D,EAAK0nD,EAAKqnB,EAAY8wB,EAAWC,GAI5D,GAFkBniG,SAAdkiG,IAA2BA,GAAY,GAE/BliG,SAARqC,GAA6B,KAARA,EAGrB,MADA3D,SAAQG,KAAK,kDAAoDL,GAC1DlI,IAGX,IAAY0J,SAAR+pD,GAA6B,OAARA,EACzB,CACI,IAAIo4C,EAOA,MADAzjG,SAAQG,KAAK,8CAAgDL,EAAO,SAAW6D,GACxE/L,IALPyzD,GAAM1nD,EAAM8/F,EASpB,GAAI9pB,IACA75E,KAAMA,EACN6D,IAAKA,EACLy4D,KAAMxkE,KAAKwkE,KACX/Q,IAAKA,EACLq4C,UAAW9rG,KAAKsqG,oBAAsB,EACtCjoE,KAAM,KACNmpE,SAAS,EACTD,QAAQ,EACRrlB,OAAO,EAGX,IAAIpL,EAEA,IAAK,GAAI9xE,KAAQ8xE,GAEbiH,EAAK/4E,GAAQ8xE,EAAW9xE,EAIhC,IAAI0iG,GAAY1rG,KAAKqrG,cAAcnjG,EAAM6D,EAEzC,IAAI6/F,GAAaF,EAAY,GAC7B,CACI,GAAIK,GAAc/rG,KAAKuqG,UAAUmB,EAE5BK,GAAYP,SAAYO,EAAYR,QAMrCvrG,KAAKuqG,UAAU33F,KAAKmvE,GACpB/hF,KAAK4qG,mBALL5qG,KAAKuqG,UAAUmB,GAAa3pB,MAQb,KAAd2pB,IAEL1rG,KAAKuqG,UAAU33F,KAAKmvE,GACpB/hF,KAAK4qG,kBAGT,OAAO5qG,OAcXgsG,kBAAmB,SAAU9jG,EAAM6D,EAAK0nD,EAAKqnB,GAEzC,MAAO96E,MAAK2rG,cAAczjG,EAAM6D,EAAK0nD,EAAKqnB,GAAY,IA0B1DmxB,KAAM,SAAUlgG,EAAK0nD,EAAKpxB,EAAMtf,GAM5B,GAJYrZ,SAAR+pD,IAAqBA,EAAM,MAClB/pD,SAAT24B,IAAsBA,EAAO,MACT34B,SAApBqZ,IAAiCA,EAAkB,OAElD0wC,IAAQpxB,EAIT,MAFAj6B,SAAQG,KAAK,qEAENvI,IAGX,IAAIisG,IACA/jG,KAAM,WACN6D,IAAKA,EACL0nD,IAAKA,EACL+Q,KAAMxkE,KAAKwkE,KACXsnC,WAAW,EACXzpE,KAAM,KACNmpE,SAAS,EACTD,QAAQ,EACRrlB,OAAO,EACPnjE,gBAAiBA,EAIjBsf,KAEoB,gBAATA,KAEPA,EAAO8gE,KAAKjsF,MAAMmrB,IAGtB4pE,EAAK5pE,KAAOA,MAGZ4pE,EAAKV,QAAS,EAKlB,KAAK,GAAIzjG,GAAI,EAAGA,EAAI9H,KAAKuqG,UAAU1iG,OAAS,EAAGC,IAC/C,CACI,GAAIi6E,GAAO/hF,KAAKuqG,UAAUziG,EAE1B,KAAKi6E,IAAUA,EAAKwpB,SAAWxpB,EAAKypB,SAAyB,aAAdzpB,EAAK75E,KACpD,CACIlI,KAAKuqG,UAAUpnF,OAAOrb,EAAG,EAAGmkG,GAC5BjsG,KAAK2qG,iBACL,QAIR,MAAO3qG,OA2BXopB,MAAO,SAAUrd,EAAK0nD,EAAKm4C,GAEvB,MAAO5rG,MAAK2rG,cAAc,QAAS5/F,EAAK0nD,EAAK/pD,OAAWkiG,EAAW,SA4BvEM,OAAQ,SAAUpgG,EAAMqgG,GAEpB,GAAI3lG,MAAMa,QAAQ8kG,GAEd,IAAK,GAAIrkG,GAAI,EAAGA,EAAIgE,EAAKjE,OAAQC,IAE7B9H,KAAKopB,MAAMtd,EAAKhE,GAAIqkG,EAAKrkG,QAK7B,KAAK,GAAIA,GAAI,EAAGA,EAAIgE,EAAKjE,OAAQC,IAE7B9H,KAAKopB,MAAMtd,EAAKhE,GAIxB,OAAO9H,OAyBXyxD,KAAM,SAAU1lD,EAAK0nD,EAAKm4C,GAEtB,MAAO5rG,MAAK2rG,cAAc,OAAQ5/F,EAAK0nD,EAAK/pD,OAAWkiG,EAAW,SA0BtEvK,KAAM,SAAUt1F,EAAK0nD,EAAKm4C,GAEtB,MAAO5rG,MAAK2rG,cAAc,OAAQ5/F,EAAK0nD,EAAK/pD,OAAWkiG,EAAW,UAyBtEh+B,OAAQ,SAAU7hE,EAAK0nD,EAAKm4C,GAExB,MAAO5rG,MAAK2rG,cAAc,SAAU5/F,EAAK0nD,EAAK/pD,OAAWkiG,EAAW,UAyBxE5J,IAAK,SAAUj2F,EAAK0nD,EAAKm4C,GAErB,MAAO5rG,MAAK2rG,cAAc,MAAO5/F,EAAK0nD,EAAK/pD,OAAWkiG,EAAW,SA6BrEQ,OAAQ,SAAUrgG,EAAK0nD,EAAKpgC,EAAUtQ,GAMlC,MAJiBrZ,UAAb2pB,IAA0BA,GAAW,GAErCA,KAAa,GAA6B3pB,SAApBqZ,IAAiCA,EAAkB/iB,MAEtEA,KAAK2rG,cAAc,SAAU5/F,EAAK0nD,GAAOq4C,WAAW,EAAMz4E,SAAUA,EAAUtQ,gBAAiBA,IAAmB,EAAO,QA+BpIw/E,OAAQ,SAAUx2F,EAAK0nD,EAAKpgC,EAAUtQ,GAOlC,MALiBrZ,UAAb2pB,IAA0BA,GAAW,GAGrCA,KAAa,GAA6B3pB,SAApBqZ,IAAiCA,EAAkBsQ,GAEtErzB,KAAK2rG,cAAc,SAAU5/F,EAAK0nD,GAAOpgC,SAAUA,EAAUtQ,gBAAiBA,IAAmB,EAAO,SAoCnHspF,YAAa,SAAUtgG,EAAK0nD,EAAKotC,EAAYC,EAAaC,EAAUC,EAAQC,GAMxE,MAJiBv3F,UAAbq3F,IAA0BA,EAAW,IAC1Br3F,SAAXs3F,IAAwBA,EAAS,GACrBt3F,SAAZu3F,IAAyBA,EAAU,GAEhCjhG,KAAK2rG,cAAc,cAAe5/F,EAAK0nD,GAAOotC,WAAYA,EAAYC,YAAaA,EAAaC,SAAUA,EAAUC,OAAQA,EAAQC,QAASA,IAAW,EAAO,SA6B1K9vC,MAAO,SAAUplD,EAAKogG,EAAMG,GAExB,MAAItsG,MAAKwa,KAAKyF,MAAMssF,QAETvsG,MAGQ0J,SAAf4iG,IAA4BA,GAAa,GAEzB,gBAATH,KAEPA,GAAQA,IAGLnsG,KAAK2rG,cAAc,QAAS5/F,EAAKogG,GAAQv0C,OAAQ,KAAM00C,WAAYA,MA4B9El7C,YAAa,SAAUrlD,EAAKogG,EAAMK,EAASC,EAAUH,GAEjD,MAAItsG,MAAKwa,KAAKyF,MAAMssF,QAETvsG,MAGK0J,SAAZ8iG,IAAyBA,EAAU,MACtB9iG,SAAb+iG,IAA0BA,EAAW,MACtB/iG,SAAf4iG,IAA4BA,GAAa,GAE7CtsG,KAAKmxD,MAAMplD,EAAKogG,EAAMG,GAElBE,EAEAxsG,KAAKqhG,KAAKt1F,EAAM,cAAeygG,GAE1BC,GAEmB,gBAAbA,KAEPA,EAAWtJ,KAAKjsF,MAAMu1F,IAG1BzsG,KAAK8f,MAAMilF,QAAQh5F,EAAM,cAAe,GAAI0gG,IAI5CrkG,QAAQG,KAAK,8FAGVvI,OAgBX0sG,YAAa,SAAU3gG,EAAKogG,EAAMK,EAASC,EAAUH,GAEjD,MAAOtsG,MAAKoxD,YAAYrlD,EAAKogG,EAAMK,EAASC,EAAUH,IAiC1D94C,MAAO,SAAUznD,EAAKogG,EAAMQ,EAAWC,GAqBnC,MAnBkBljG,UAAdijG,IAIIA,EAFA3sG,KAAKwa,KAAKkS,OAAOi2D,QAEL,aAIA,kBAILj5E,SAAXkjG,IAAwBA,GAAS,GAEjB,gBAATT,KAEPA,GAAQA,IAGLnsG,KAAK2rG,cAAc,QAAS5/F,EAAKogG,GAAQv0C,OAAQ,KAAMg1C,OAAQA,EAAQD,UAAWA,KAiC7F15C,QAAS,SAAUlnD,EAAK0nD,EAAKpxB,EAAM+hE,GAmB/B,GAjBY16F,SAAR+pD,IAAqBA,EAAM,MAClB/pD,SAAT24B,IAAsBA,EAAO,MAClB34B,SAAX06F,IAAwBA,EAAS/jG,EAAOmuD,QAAQq+C,KAE/Cp5C,GAAQpxB,IAILoxB,EAFA2wC,IAAW/jG,EAAOmuD,QAAQq+C,IAEpB9gG,EAAM,OAINA,EAAM,SAKhBs2B,EACJ,CACI,OAAQ+hE,GAGJ,IAAK/jG,GAAOmuD,QAAQq+C,IAChB,KAGJ,KAAKxsG,GAAOmuD,QAAQs+C,WAEI,gBAATzqE,KAEPA,EAAO8gE,KAAKjsF,MAAMmrB,IAK9BriC,KAAK8f,MAAMukF,WAAWt4F,EAAK,KAAMs2B,EAAM+hE,OAIvCpkG,MAAK2rG,cAAc,UAAW5/F,EAAK0nD,GAAO2wC,OAAQA,GAGtD,OAAOpkG,OAmCXqgB,QAAS,SAAUtU,EAAK0nD,EAAKpxB,EAAM+hE,GA0B/B,MAxBY16F,UAAR+pD,IAAqBA,EAAM,MAClB/pD,SAAT24B,IAAsBA,EAAO,MAClB34B,SAAX06F,IAAwBA,EAAS/jG,EAAOutB,QAAQm/E,kBAE/Ct5C,GAAQpxB,IAEToxB,EAAM1nD,EAAM,SAIZs2B,GAEoB,gBAATA,KAEPA,EAAO8gE,KAAKjsF,MAAMmrB,IAGtBriC,KAAK8f,MAAMqkF,eAAep4F,EAAK,KAAMs2B,EAAM+hE,IAI3CpkG,KAAK2rG,cAAc,UAAW5/F,EAAK0nD,GAAO2wC,OAAQA,IAG/CpkG,MA0CXwiG,WAAY,SAAUz2F,EAAKihG,EAAYC,EAAUvI,EAAW/xC,EAAUC,GAmBlE,GAjBmBlpD,SAAfsjG,GAA2C,OAAfA,IAE5BA,EAAajhG,EAAM,QAGNrC,SAAbujG,IAA0BA,EAAW,MACvBvjG,SAAdg7F,IAA2BA,EAAY,MAE1B,OAAbuI,GAAmC,OAAdvI,IAErBuI,EAAWlhG,EAAM,QAGJrC,SAAbipD,IAA0BA,EAAW,GACxBjpD,SAAbkpD,IAA0BA,EAAW,GAGrCq6C,EAEAjtG,KAAK2rG,cAAc,aAAc5/F,EAAKihG,GAAcC,SAAUA,EAAUt6C,SAAUA,EAAUC,SAAUA,QAKtG,IAAyB,gBAAd8xC,GACX,CACI,GAAIrD,GAAMW,CAEV,KAEIX,EAAO8B,KAAKjsF,MAAMwtF,GAEtB,MAAQz5F,GAEJ+2F,EAAMhiG,KAAKktG,SAASxI,GAGxB,IAAK1C,IAAQX,EAET,KAAM,IAAIrqF,OAAM,iDAGpBhX,MAAK2rG,cAAc,aAAc5/F,EAAKihG,GAAcC,SAAU,KAAMvI,UAAWrD,GAAQW,EACnF2C,UAActD,EAAO,OAAS,MAAQ1uC,SAAUA,EAAUC,SAAUA,IAIhF,MAAO5yD,OA4CXmtG,eAAgB,SAAUphG,EAAKihG,EAAYC,EAAUvI,GAEjD,MAAO1kG,MAAKopG,MAAMr9F,EAAKihG,EAAYC,EAAUvI,EAAWrkG,EAAOk5B,OAAOwxE;EA4C1EqC,cAAe,SAAUrhG,EAAKihG,EAAYC,EAAUvI,GAEhD,MAAO1kG,MAAKopG,MAAMr9F,EAAKihG,EAAYC,EAAUvI,EAAWrkG,EAAOk5B,OAAOyxE,0BA4C1EqC,SAAU,SAAUthG,EAAKihG,EAAYC,EAAUvI,GAU3C,MARiBh7F,UAAbujG,IAA0BA,EAAW,MACvBvjG,SAAdg7F,IAA2BA,EAAY,MAEtCuI,GAAavI,IAEduI,EAAWlhG,EAAM,QAGd/L,KAAKopG,MAAMr9F,EAAKihG,EAAYC,EAAUvI,EAAWrkG,EAAOk5B,OAAO+rE,6BA2C1E8D,MAAO,SAAUr9F,EAAKihG,EAAYC,EAAUvI,EAAWN,GAwBnD,GAtBmB16F,SAAfsjG,GAA2C,OAAfA,IAE5BA,EAAajhG,EAAM,QAGNrC,SAAbujG,IAA0BA,EAAW,MACvBvjG,SAAdg7F,IAA2BA,EAAY,MAC5Bh7F,SAAX06F,IAAwBA,EAAS/jG,EAAOk5B,OAAOwxE,0BAE9CkC,GAAavI,IAIVuI,EAFA7I,IAAW/jG,EAAOk5B,OAAO+rE,2BAEdv5F,EAAM,OAINA,EAAM,SAKrBkhG,EAEAjtG,KAAK2rG,cAAc,eAAgB5/F,EAAKihG,GAAcC,SAAUA,EAAU7I,OAAQA,QAGtF,CACI,OAAQA,GAGJ,IAAK/jG,GAAOk5B,OAAOwxE,yBAEU,gBAAdrG,KAEPA,EAAYvB,KAAKjsF,MAAMwtF,GAE3B,MAGJ,KAAKrkG,GAAOk5B,OAAO+rE,2BAEf,GAAyB,gBAAdZ,GACX,CACI,GAAI1C,GAAMhiG,KAAKktG,SAASxI,EAExB,KAAK1C,EAED,KAAM,IAAIhrF,OAAM,iDAGpB0tF,GAAY1C,GAKxBhiG,KAAK2rG,cAAc,eAAgB5/F,EAAKihG,GAAcC,SAAU,KAAMvI,UAAWA,EAAWN,OAAQA,IAIxG,MAAOpkG,OAiBXstG,cAAe,SAAUj6E,EAAUtQ,GAE/B/iB,KAAKsqG,qBAEL,KACIj3E,EAASvsB,KAAKic,GAAmB/iB,KAAMA,MACzC,QACEA,KAAKsqG,sBAGT,MAAOtqG,OAcXutG,aAAc,SAAUrlG,EAAM6D,GAE1B,GAAIyhG,GAAQxtG,KAAKyrG,SAASvjG,EAAM6D,EAOhC,OALIyhG,KAEAA,EAAMzrB,KAAK+pB,WAAY,GAGpB9rG,MAaXytG,WAAY,SAAUvlG,EAAM6D,GAExB,GAAIyhG,GAAQxtG,KAAKyrG,SAASvjG,EAAM6D,EAE5ByhG,KAEKA,EAAMjC,QAAWiC,EAAMhC,SAExBxrG,KAAKuqG,UAAUpnF,OAAOqqF,EAAM99E,MAAO,KAY/C9L,UAAW,WAEP5jB,KAAKuqG,UAAU1iG,OAAS,EACxB7H,KAAKwqG,aAAa3iG,OAAS,GAS/B6I,MAAO,WAEC1Q,KAAKupG,YAKTvpG,KAAKwpG,WAAY,EACjBxpG,KAAKupG,WAAY,EAEjBvpG,KAAK0tG,iBAEL1tG,KAAK2tG,qBAiBTA,iBAAkB,WAEd,IAAK3tG,KAAKupG,UAIN,MAFAnhG,SAAQG,KAAK,uDACbvI,MAAK4tG,iBAAgB,EAKzB,KAAK,GAAI9lG,GAAI,EAAGA,EAAI9H,KAAKwqG,aAAa3iG,OAAQC,IAC9C,CACI,GAAIi6E,GAAO/hF,KAAKwqG,aAAa1iG,IAEzBi6E,EAAKwpB,QAAUxpB,EAAKmE,SAEpBlmF,KAAKwqG,aAAarnF,OAAOrb,EAAG,GAC5BA,IAEAi6E,EAAKypB,SAAU,EACfzpB,EAAK8rB,WAAa,KAClB9rB,EAAK+rB,cAAgB,KAEjB/rB,EAAKmE,OAELlmF,KAAKiqG,YAAYprF,SAASkjE,EAAKh2E,IAAKg2E,GAGtB,aAAdA,EAAK75E,MAELlI,KAAK8qG,mBACL9qG,KAAKgqG,eAAenrF,SAAS7e,KAAK+tG,SAAUhsB,EAAKh2E,KAAMg2E,EAAKmE,MAAOlmF,KAAK8qG,iBAAkB9qG,KAAK4qG,kBAE5E,aAAd7oB,EAAK75E,MAAuB65E,EAAKmE,QAGtClmF,KAAK6qG,mBACL7qG,KAAK8pG,eAAejrF,SAASkjE,EAAKh2E,KAAMg2E,EAAKmE,MAAOlmF,KAAK6qG,iBAAkB7qG,KAAK2qG,mBAW5F,IAAK,GAJDqD,IAAY,EAEZC,EAAgBjuG,KAAKoqG,eAAiB/pG,EAAO0F,KAAKyP,MAAMxV,KAAKqqG,qBAAsB,EAAG,IAAM,EAEvFviG,EAAI9H,KAAKyqG,gBAAiB3iG,EAAI9H,KAAKuqG,UAAU1iG,OAAQC,IAC9D,CACI,GAAIi6E,GAAO/hF,KAAKuqG,UAAUziG,EAuD1B,IApDkB,aAAdi6E,EAAK75E,OAAwB65E,EAAKmE,OAASnE,EAAKwpB,QAAUzjG,IAAM9H,KAAKyqG,kBAGrEzqG,KAAKkuG,YAAYnsB,GAEjB/hF,KAAK6qG,mBACL7qG,KAAK8pG,eAAejrF,SAASkjE,EAAKh2E,KAAMg2E,EAAKmE,MAAOlmF,KAAK6qG,iBAAkB7qG,KAAK2qG,kBAGhF5oB,EAAKwpB,QAAUxpB,EAAKmE,MAGhBp+E,IAAM9H,KAAKyqG,kBAEXzqG,KAAKyqG,gBAAkB3iG,EAAI,IAGzBi6E,EAAKypB,SAAWxrG,KAAKwqG,aAAa3iG,OAASomG,IAG/B,aAAdlsB,EAAK75E,MAAwB65E,EAAK1/C,KAS5B2rE,IAEDhuG,KAAK0qG,mBAEN1qG,KAAK0qG,kBAAmB,EACxB1qG,KAAK4pG,YAAY/qF,YAGrB7e,KAAKwqG,aAAa53F,KAAKmvE,GACvBA,EAAKypB,SAAU,EACfxrG,KAAK+pG,YAAYlrF,SAAS7e,KAAK+tG,SAAUhsB,EAAKh2E,IAAKg2E,EAAKtuB,KAExDzzD,KAAKmuG,SAASpsB,KAjBd/hF,KAAKwqG,aAAa53F,KAAKmvE,GACvBA,EAAKypB,SAAU,EAEfxrG,KAAKmuG,SAASpsB,MAkBjBA,EAAKwpB,QAAUxpB,EAAK+pB,YAErBkC,GAAY,GAKZhuG,KAAKwqG,aAAa3iG,QAAUomG,GAC3BD,GAAahuG,KAAK6qG,mBAAqB7qG,KAAK2qG,gBAE7C,MAQR,GAJA3qG,KAAK0tG,iBAID1tG,KAAKyqG,iBAAmBzqG,KAAKuqG,UAAU1iG,OAEvC7H,KAAK4tG,sBAEJ,KAAK5tG,KAAKwqG,aAAa3iG,OAC5B,CAGIO,QAAQG,KAAK,6EAEb,IAAIke,GAAQzmB,IAEZwlF,YAAW,WACP/+D,EAAMmnF,iBAAgB,IACvB,OAYXA,gBAAiB,SAAUQ,GAEnBpuG,KAAKwpG,YAKTxpG,KAAKwpG,WAAY,EACjBxpG,KAAKupG,WAAY,EAGZ6E,GAAapuG,KAAK0qG,mBAEnB1qG,KAAK0qG,kBAAmB,EACxB1qG,KAAK4pG,YAAY/qF,YAGrB7e,KAAK6pG,eAAehrF,WAEpB7e,KAAKwa,KAAK0F,MAAMyD,eAEhB3jB,KAAK0f,UAaT2uF,cAAe,SAAUtsB,EAAMusB,GAEN5kG,SAAjB4kG,IAA8BA,EAAe,IAEjDvsB,EAAKwpB,QAAS,EACdxpB,EAAKmE,QAAUooB,EAEXA,IAEAvsB,EAAKusB,aAAeA,EAEpBlmG,QAAQG,KAAK,mBAAqBw5E,EAAK75E,KAAO,IAAM65E,EAAKh2E,IAAM,MAAauiG,IAIhFtuG,KAAK2tG,oBAWTO,YAAa,SAAUjC,GAEnB,GAAIsC,GAAWtC,EAAK5pE,KAAK4pE,EAAKlgG,IAE9B,KAAKwiG,EAGD,WADAnmG,SAAQG,KAAK,mBAAqB0jG,EAAKlgG,IAAM,wCAIjD,KAAK,GAAIjE,GAAI,EAAGA,EAAIymG,EAAS1mG,OAAQC,IACrC,CACI,GAAIi6E,GAAOwsB,EAASzmG,EAEpB,QAAQi6E,EAAK75E,MAET,IAAK,QACDlI,KAAKopB,MAAM24D,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK6pB,UACpC,MAEJ,KAAK,OACD5rG,KAAKyxD,KAAKswB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK6pB,UACnC,MAEJ,KAAK,OACD5rG,KAAKqhG,KAAKtf,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK6pB,UACnC,MAEJ,KAAK,MACD5rG,KAAKgiG,IAAIjgB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK6pB,UAClC,MAEJ,KAAK,SACD5rG,KAAKosG,OAAOrqB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1uD,SAAU44E,EAAKlpF,iBAAmB/iB,KACvE,MAEJ,KAAK,SACDA,KAAKuiG,OAAOxgB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1uD,SAAU44E,EAAKlpF,iBAAmB/iB,KACvE,MAEJ,KAAK,cACDA,KAAKqsG,YAAYtqB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK8e,WAAY9e,EAAK+e,YAAa/e,EAAKgf,SAAUhf,EAAKif,OAAQjf,EAAKkf,QACzG,MAEJ,KAAK,QACDjhG,KAAKwzD,MAAMuuB,EAAKh2E,IAAKg2E,EAAKoqB,KAC1B,MAEJ,KAAK,QACDnsG,KAAKmxD,MAAM4wB,EAAKh2E,IAAKg2E,EAAKoqB,KAAMpqB,EAAKuqB,WACrC,MAEJ,KAAK,cACDtsG,KAAK0sG,YAAY3qB,EAAKh2E,IAAKg2E,EAAKoqB,KAAMpqB,EAAKyqB,QAASzqB,EAAK0qB,SAAU1qB,EAAKuqB,WACxE,MAEJ,KAAK,UACDtsG,KAAKizD,QAAQ8uB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAMhiC,EAAOmuD,QAAQuzB,EAAKqiB,QAChE,MAEJ,KAAK,UACDpkG,KAAKqgB,QAAQ0hE,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAMhiC,EAAOk5B,OAAOwoD,EAAKqiB,QAC/D,MAEJ,KAAK,aACDpkG,KAAKwiG,WAAWzgB,EAAKh2E,IAAKg2E,EAAKirB,WAAYjrB,EAAKkrB,SAAUlrB,EAAK2iB,UAAW3iB,EAAKpvB,SAAUovB,EAAKnvB,SAC9F,MAEJ,KAAK,iBACD5yD,KAAKmtG,eAAeprB,EAAKh2E,IAAKg2E,EAAKirB,WAAYjrB,EAAKkrB,SAAUlrB,EAAK2iB,UACnE,MAEJ,KAAK,gBACD1kG,KAAKotG,cAAcrrB,EAAKh2E,IAAKg2E,EAAKirB,WAAYjrB,EAAKkrB,SAAUlrB,EAAK2iB,UAClE,MAEJ,KAAK,WACD1kG,KAAKqtG,SAAStrB,EAAKh2E,IAAKg2E,EAAKirB,WAAYjrB,EAAKkrB,SAAUlrB,EAAK2iB,UAC7D,MAEJ,KAAK,QACD1kG,KAAKopG,MAAMrnB,EAAKh2E,IAAKg2E,EAAKirB,WAAYjrB,EAAKkrB,SAAUlrB,EAAK2iB,UAAWrkG,EAAOk5B,OAAOwoD,EAAKqiB,QACxF,MAEJ,KAAK,SACDpkG,KAAK4tE,OAAOmU,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK6pB,cAkBrD4C,aAAc,SAAU/6C,EAAKsuB,GAEzB,MAAKtuB,GAKDA,EAAIhN,MAAM,8CAEHgN,EAIAzzD,KAAKspG,QAAUvnB,EAAKvd,KAAO/Q,GAT3B,GAuBf06C,SAAU,SAAUpsB,GAGhB,OAAQA,EAAK75E,MAET,IAAK,WACDlI,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,OAAQ/hF,KAAK0uG,aACnE,MAEJ,KAAK,QACL,IAAK,cACL,IAAK,eACL,IAAK,aACD1uG,KAAK2uG,aAAa5sB,EAClB,MAEJ,KAAK,QACDA,EAAKtuB,IAAMzzD,KAAK4uG,YAAY7sB,EAAKtuB,KAE7BsuB,EAAKtuB,IAGDzzD,KAAKwa,KAAKyF,MAAM4uF,cAEhB7uG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,cAAe/hF,KAAK0uG,cAErE1uG,KAAKwa,KAAKyF,MAAM6uF,eAErB9uG,KAAK+uG,aAAahtB,GAKtB/hF,KAAKgvG,UAAUjtB,EAAM,KAAM,kFAE/B,MAEJ,KAAK,QACDA,EAAKtuB,IAAMzzD,KAAKivG,YAAYltB,EAAKtuB,KAE7BsuB,EAAKtuB,IAEDsuB,EAAK6qB,OAEL5sG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,OAAQ/hF,KAAK0uG,cAInE1uG,KAAKkvG,aAAantB,GAKtB/hF,KAAKgvG,UAAUjtB,EAAM,KAAM,kFAE/B,MAEJ,KAAK,OAED/hF,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,OAAQ/hF,KAAKmvG,iBACnE,MAEJ,KAAK,MAEDnvG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,OAAQ/hF,KAAKovG,gBACnE,MAEJ,KAAK,UAEGrtB,EAAKqiB,SAAW/jG,EAAOmuD,QAAQs+C,WAE/B9sG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,OAAQ/hF,KAAKmvG,kBAE9DptB,EAAKqiB,SAAW/jG,EAAOmuD,QAAQq+C,IAEpC7sG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,OAAQ/hF,KAAKqvG,iBAInErvG,KAAKquG,cAActsB,EAAM,2BAA6BA,EAAKqiB,OAE/D,MAEJ,KAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UACDpkG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,OAAQ/hF,KAAK0uG,aACnE,MAEJ,KAAK,SACD1uG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAAO,cAAe/hF,KAAK0uG,gBAUtFC,aAAc,SAAU5sB,GAEpB,GAAIt7D,GAAQzmB,IAEZ+hF,GAAK1/C,KAAO,GAAIsuB,OAChBoxB,EAAK1/C,KAAKj3B,KAAO22E,EAAKh2E,IAElB/L,KAAK0pG,cAEL3nB,EAAK1/C,KAAKqnE,YAAc1pG,KAAK0pG,aAGjC3nB,EAAK1/C,KAAKitE,OAAS,WACXvtB,EAAK1/C,KAAKitE,SAEVvtB,EAAK1/C,KAAKitE,OAAS,KACnBvtB,EAAK1/C,KAAKktE,QAAU,KACpB9oF,EAAMioF,aAAa3sB,KAI3BA,EAAK1/C,KAAKktE,QAAU,WACZxtB,EAAK1/C,KAAKitE,SAEVvtB,EAAK1/C,KAAKitE,OAAS,KACnBvtB,EAAK1/C,KAAKktE,QAAU,KACpB9oF,EAAMuoF,UAAUjtB,KAIxBA,EAAK1/C,KAAKh3B,IAAMrL,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAGxCA,EAAK1/C,KAAKi2D,UAAYvW,EAAK1/C,KAAKtyB,OAASgyE,EAAK1/C,KAAKryB,SAEnD+xE,EAAK1/C,KAAKitE,OAAS,KACnBvtB,EAAK1/C,KAAKktE,QAAU,KACpBvvG,KAAK0uG,aAAa3sB,KAS1BmtB,aAAc,SAAUntB,GAEpB,GAAIt7D,GAAQzmB,IAEZ+hF,GAAK1/C,KAAOvW,SAASyvD,cAAc,SACnCwG,EAAK1/C,KAAKj3B,KAAO22E,EAAKh2E,IACtBg2E,EAAK1/C,KAAKmtE,UAAW,EACrBztB,EAAK1/C,KAAKotE,UAAW,CAErB,IAAIC,GAAiB,WAEjB3tB,EAAK1/C,KAAK9U,oBAAoBw0D,EAAK4qB,UAAW+C,GAAgB,GAC9D3tB,EAAK1/C,KAAKktE,QAAU,KACpBxtB,EAAK1/C,KAAKstE,SAAU,EACpBtvG,EAAOE,MAAMkmB,EAAMjM,KAAK7F,IAAIqL,KAAK0uF,aAAa3sB,GAIlDA,GAAK1/C,KAAKktE,QAAU,WAChBxtB,EAAK1/C,KAAK9U,oBAAoBw0D,EAAK4qB,UAAW+C,GAAgB,GAC9D3tB,EAAK1/C,KAAKktE,QAAU,KACpBxtB,EAAK1/C,KAAKstE,SAAU,EACpBlpF,EAAMuoF,UAAUjtB,IAGpBA,EAAK1/C,KAAKhW,iBAAiB01D,EAAK4qB,UAAW+C,GAAgB,GAE3D3tB,EAAK1/C,KAAKh3B,IAAMrL,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAC5CA,EAAK1/C,KAAKriB,QAQd+uF,aAAc,SAAUhtB,GAEpB,GAAIt7D,GAAQzmB,IAEZ,IAAIA,KAAKwa,KAAKyF,MAAMgkF,YAGhBliB,EAAK1/C,KAAO,GAAIutE,OAChB7tB,EAAK1/C,KAAKj3B,KAAO22E,EAAKh2E,IACtBg2E,EAAK1/C,KAAK9hB,QAAU,OACpBwhE,EAAK1/C,KAAKh3B,IAAMrL,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAE5C/hF,KAAK0uG,aAAa3sB,OAGtB,CACIA,EAAK1/C,KAAO,GAAIutE,OAChB7tB,EAAK1/C,KAAKj3B,KAAO22E,EAAKh2E,GAEtB,IAAI8jG,GAAmB,WACnB9tB,EAAK1/C,KAAK9U,oBAAoB,iBAAkBsiF,GAAkB,GAClE9tB,EAAK1/C,KAAKktE,QAAU,KACpB9oF,EAAMioF,aAAa3sB,GAGvBA,GAAK1/C,KAAKktE,QAAU,WAChBxtB,EAAK1/C,KAAK9U,oBAAoB,iBAAkBsiF,GAAkB,GAClE9tB,EAAK1/C,KAAKktE,QAAU,KACpB9oF,EAAMuoF,UAAUjtB,IAGpBA,EAAK1/C,KAAK9hB,QAAU,OACpBwhE,EAAK1/C,KAAKh3B,IAAMrL,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GAC5CA,EAAK1/C,KAAKhW,iBAAiB,iBAAkBwjF,GAAkB,GAC/D9tB,EAAK1/C,KAAKriB,SAkBlByuF,QAAS,SAAU1sB,EAAMtuB,EAAKvrD,EAAMonG,EAAQC,GAExC,GAAIvvG,KAAKkqG,mBAAqBniG,OAAO+nG,eAGjC,WADA9vG,MAAK+vG,eAAehuB,EAAMtuB,EAAKvrD,EAAMonG,EAAQC,EAIjD,IAAIS,GAAM,GAAIC,eACdD,GAAIE,KAAK,MAAOz8C,GAAK,GACrBu8C,EAAIG,aAAejoG,EAEflI,KAAK2pG,QAAQ5nB,EAAK75E,OAElB8nG,EAAII,iBAAiB,SAAUpwG,KAAK2pG,QAAQ5nB,EAAK75E,OAGrDqnG,EAAUA,GAAWvvG,KAAKgvG,SAE1B,IAAIvoF,GAAQzmB,IAEZgwG,GAAIV,OAAS,WAET,IACI,MAAsB,IAAlBU,EAAIzqB,YAAmByqB,EAAIjX,QAAU,KAAOiX,EAAIjX,QAAU,IACnDwW,EAAQzoG,KAAK2f,EAAOs7D,EAAMiuB,GAG1BV,EAAOxoG,KAAK2f,EAAOs7D,EAAMiuB,GAEtC,MAAO/kG,GAKAwb,EAAM+iF,UAMHzhG,OAAgB,SAEhBK,QAAQ89E,MAAMj7E,GANlBwb,EAAM4nF,cAActsB,EAAM92E,EAAEolG,SAAW,eAYnDL,EAAIT,QAAU,WAEV,IAEI,MAAOA,GAAQzoG,KAAK2f,EAAOs7D,EAAMiuB,GAEnC,MAAO/kG,GAEAwb,EAAM+iF,UAMHzhG,OAAgB,SAEhBK,QAAQ89E,MAAMj7E,GANlBwb,EAAM4nF,cAActsB,EAAM92E,EAAEolG,SAAW,eAanDtuB,EAAK+rB,cAAgBkC,EACrBjuB,EAAK8rB,WAAap6C,EAElBu8C,EAAIM,QAmBRP,eAAgB,SAAUhuB,EAAMtuB,EAAKvrD,EAAMonG,EAAQC,GAG1CvvG,KAAKmqG,4BACJnqG,KAAKwa,KAAKkS,OAAOm2D,MAAM7iF,KAAKwa,KAAKkS,OAAOo2D,WAAa,MAEvD9iF,KAAKmqG,4BAA6B,EAClC/hG,QAAQG,KAAK,wDAIjB,IAAIynG,GAAM,GAAIjoG,QAAO+nG,cACrBE,GAAIE,KAAK,MAAOz8C,GAAK,GACrBu8C,EAAIG,aAAejoG,EAKnB8nG,EAAIO,QAAU,IAEdhB,EAAUA,GAAWvvG,KAAKgvG,SAE1B,IAAIvoF,GAAQzmB,IAEZgwG,GAAIT,QAAU,WACV,IACI,MAAOA,GAAQzoG,KAAK2f,EAAOs7D,EAAMiuB,GACnC,MAAO/kG,GACLwb,EAAM4nF,cAActsB,EAAM92E,EAAEolG,SAAW,eAI/CL,EAAIQ,UAAY,WACZ,IACI,MAAOjB,GAAQzoG,KAAK2f,EAAOs7D,EAAMiuB,GACnC,MAAO/kG,GACLwb,EAAM4nF,cAActsB,EAAM92E,EAAEolG,SAAW,eAI/CL,EAAIS,WAAa,aAEjBT,EAAIV,OAAS,WACT,IACI,MAAsB,IAAlBU,EAAIzqB,YAAmByqB,EAAIjX,QAAU,KAAOiX,EAAIjX,QAAU,IACnDwW,EAAQzoG,KAAK2f,EAAOs7D,EAAMiuB,GAG1BV,EAAOxoG,KAAK2f,EAAOs7D,EAAMiuB,GAGtC,MAAO/kG,GACLwb,EAAM4nF,cAActsB,EAAM92E,EAAEolG,SAAW,eAI/CtuB,EAAK+rB,cAAgBkC,EACrBjuB,EAAK8rB,WAAap6C,EAIlB+xB,WAAW,WACPwqB,EAAIM,QACL,IAcPrB,YAAa,SAAU9C,GAEnB,IAAK,GAAIrkG,GAAI,EAAGA,EAAIqkG,EAAKtkG,OAAQC,IACjC,CACI,GACI4oG,GADAj9C,EAAM04C,EAAKrkG,EAGf,IAAI2rD,EAAIk9C,KAKJ,GAHAD,EAAYj9C,EAAIvrD,KAChBurD,EAAMA,EAAIk9C,IAEN3wG,KAAKwa,KAAKkS,OAAOk9D,aAAa8mB,GAE9B,MAAOj9C,OAIf,CAEI,GAA6B,IAAzBA,EAAIpjC,QAAQ,UAA2C,IAAzBojC,EAAIpjC,QAAQ,SAE1C,MAAOojC,EAGPA,GAAIpjC,QAAQ,MAAQ,IAEpBojC,EAAMA,EAAIrpD,OAAO,EAAGqpD,EAAIpjC,QAAQ,MAGpC,IAAIw7E,GAAYp4C,EAAIrpD,QAAQrE,KAAKoM,IAAI,EAAGshD,EAAIm9C,YAAY,OAAS3pC,EAAAA,GAAY,EAI7E,IAFAypC,EAAY7E,EAAUjhE,cAElB5qC,KAAKwa,KAAKkS,OAAOk9D,aAAa8mB,GAE9B,MAAOvE,GAAKrkG,IAKxB,MAAO,OAcX8mG,YAAa,SAAUzC,GAEnB,GAAInsG,KAAKwa,KAAKyF,MAAMssF,QAEhB,MAAO,KAGX,KAAK,GAAIzkG,GAAI,EAAGA,EAAIqkG,EAAKtkG,OAAQC,IACjC,CACI,GACI+oG,GADAp9C,EAAM04C,EAAKrkG,EAGf,IAAI2rD,EAAIk9C,KAKJ,GAHAE,EAAYp9C,EAAIvrD,KAChBurD,EAAMA,EAAIk9C,IAEN3wG,KAAKwa,KAAKkS,OAAOi9D,aAAaknB,GAE9B,MAAOp9C,OAIf,CAEI,GAA6B,IAAzBA,EAAIpjC,QAAQ,UAA2C,IAAzBojC,EAAIpjC,QAAQ,SAE1C,MAAOojC,EAGPA,GAAIpjC,QAAQ,MAAQ,IAEpBojC,EAAMA,EAAIrpD,OAAO,EAAGqpD,EAAIpjC,QAAQ,MAGpC,IAAIw7E,GAAYp4C,EAAIrpD,QAAQrE,KAAKoM,IAAI,EAAGshD,EAAIm9C,YAAY,OAAS3pC,EAAAA,GAAY,EAI7E,IAFA4pC,EAAYhF,EAAUjhE,cAElB5qC,KAAKwa,KAAKkS,OAAOi9D,aAAaknB,GAE9B,MAAO1E,GAAKrkG,IAKxB,MAAO,OAaXknG,UAAW,SAAUjtB,EAAMiuB,EAAKc,GAE5B,GAAIr9C,GAAMsuB,EAAK8rB,YAAc7tG,KAAKwuG,aAAazsB,EAAKtuB,IAAKsuB,GACrDsuB,EAAU,gCAAkC58C,GAE3Cq9C,GAAUd,IAEXc,EAASd,EAAIjX,QAGb+X,IAEAT,EAAUA,EAAU,KAAOS,EAAS,KAGxC9wG,KAAKquG,cAActsB,EAAMsuB,IAY7B3B,aAAc,SAAU3sB,EAAMiuB,GAE1B,GAAIe,IAAW,CAEf,QAAQhvB,EAAK75E,MAET,IAAK,WAGD,GAAIm6B,GAAO8gE,KAAKjsF,MAAM84F,EAAIgB,aAC1BjvB,GAAK1/C,KAAOA,KACZ,MAEJ,KAAK,QAEDriC,KAAK8f,MAAM25C,SAASsoB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAC7C,MAEJ,KAAK,cAEDriC,KAAK8f,MAAMslF,eAAerjB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAM0/C,EAAK8e,WAAY9e,EAAK+e,YAAa/e,EAAKgf,SAAUhf,EAAKif,OAAQjf,EAAKkf,QAC7H,MAEJ,KAAK,eAED,GAAqB,MAAjBlf,EAAKkrB,SAELjtG,KAAK8f,MAAMulF,gBAAgBtjB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAM0/C,EAAK2iB,UAAW3iB,EAAKqiB,YAO/E,IAFA2M,GAAW,EAEPhvB,EAAKqiB,QAAU/jG,EAAOk5B,OAAOwxE,0BAA4BhpB,EAAKqiB,QAAU/jG,EAAOk5B,OAAOyxE,yBAA2BjpB,EAAKqiB,QAAU/jG,EAAOk5B,OAAOgsE,yBAE9IvlG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKkrB,SAAUlrB,GAAO,OAAQ/hF,KAAKmvG,sBAEvE,CAAA,GAAIptB,EAAKqiB,QAAU/jG,EAAOk5B,OAAO+rE,2BAMlC,KAAM,IAAItuF,OAAM,gDAAkD+qE,EAAKqiB,OAJvEpkG,MAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKkrB,SAAUlrB,GAAO,OAAQ/hF,KAAKovG,iBAOhF,KAEJ,KAAK,aAEIrtB,EAAKkrB,UAON8D,GAAW,EACX/wG,KAAKyuG,QAAQ1sB,EAAM/hF,KAAKwuG,aAAazsB,EAAKkrB,SAAUlrB,GAAO,OAAQ,SAAUA,EAAMiuB,GAC/E,GAAI3O,EAEJ,KAGIA,EAAO8B,KAAKjsF,MAAM84F,EAAIgB,cAE1B,MAAO/lG,IAEDo2F,GAEFtf,EAAK4iB,UAAY,OACjB3kG,KAAKmvG,iBAAiBptB,EAAMiuB,KAI5BjuB,EAAK4iB,UAAY,MACjB3kG,KAAKovG,gBAAgBrtB,EAAMiuB,OAxBnChwG,KAAK8f,MAAM2kF,cAAc1iB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAM0/C,EAAK2iB,UAAW3iB,EAAK4iB,UAAW5iB,EAAKpvB,SAAUovB,EAAKnvB,SA4BhH,MAEJ,KAAK,QAED,GAAImvB,EAAK6qB,OAEL,IAEI7qB,EAAK1/C,KAAO2tE,EAAIiB,SAEpB,MAAOhmG,GAEH,KAAM,IAAI+L,OAAM,sDAAwD+qE,EAAKh2E,KAIrF/L,KAAK8f,MAAMmlF,SAASljB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAM0/C,EAAK6qB,OACxD,MAEJ,KAAK,QAEG5sG,KAAKwa,KAAKyF,MAAM4uF,eAEhB9sB,EAAK1/C,KAAO2tE,EAAIiB,SAEhBjxG,KAAK8f,MAAM+jF,SAAS9hB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,MAAM,GAAM,GAErD0/C,EAAKuqB,YAELtsG,KAAKwa,KAAKyF,MAAMixF,OAAOnvB,EAAKh2E,MAKhC/L,KAAK8f,MAAM+jF,SAAS9hB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,MAAM,GAAO,EAE9D,MAEJ,KAAK,OACD0/C,EAAK1/C,KAAO2tE,EAAIgB,aAChBhxG,KAAK8f,MAAMokF,QAAQniB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAC5C,MAEJ,KAAK,SACD0/C,EAAK1/C,KAAO2tE,EAAIgB,aAChBhxG,KAAK8f,MAAMqlF,UAAUpjB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAC9C,MAEJ,KAAK,UACD,GAAIA,GAAO8gE,KAAKjsF,MAAM84F,EAAIgB,aAC1BhxG,MAAK8f,MAAMqkF,eAAepiB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKpxB,EAAM0/C,EAAKqiB,OACzD,MAEJ,KAAK,SACDriB,EAAK1/C,KAAOvW,SAASyvD,cAAc,UACnCwG,EAAK1/C,KAAK8uE,SAAW,aACrBpvB,EAAK1/C,KAAKn6B,KAAO,kBACjB65E,EAAK1/C,KAAK+uE,OAAQ,EAClBrvB,EAAK1/C,KAAKovB,KAAOu+C,EAAIgB,aACrBllF,SAASulF,KAAK9mB,YAAYxI,EAAK1/C,MAC3B0/C,EAAK1uD,WAEL0uD,EAAK1/C,KAAO0/C,EAAK1uD,SAASvsB,KAAKi7E,EAAKh/D,gBAAiBg/D,EAAKh2E,IAAKikG,EAAIgB,cAEvE,MAEJ,KAAK,SACGjvB,EAAK1uD,SAEL0uD,EAAK1/C,KAAO0/C,EAAK1uD,SAASvsB,KAAKi7E,EAAKh/D,gBAAiBg/D,EAAKh2E,IAAKikG,EAAIiB,UAInElvB,EAAK1/C,KAAO2tE,EAAIiB,SAGpBjxG,KAAK8f,MAAMykF,UAAUxiB,EAAKh2E,IAAKg2E,EAAK1/C,MAKxC0uE,GAEA/wG,KAAKquG,cAActsB,IAa3BotB,iBAAkB,SAAUptB,EAAMiuB,GAE9B,GAAI3tE,GAAO8gE,KAAKjsF,MAAM84F,EAAIgB,aAER,aAAdjvB,EAAK75E,KAELlI,KAAK8f,MAAMukF,WAAWtiB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKpxB,EAAM0/C,EAAKqiB,QAElC,eAAdriB,EAAK75E,KAEVlI,KAAK8f,MAAM2kF,cAAc1iB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAMA,EAAM0/C,EAAK4iB,UAAW5iB,EAAKpvB,SAAUovB,EAAKnvB,UAE/E,SAAdmvB,EAAK75E,KAEVlI,KAAK8f,MAAMilF,QAAQhjB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKpxB,GAIvCriC,KAAK8f,MAAMulF,gBAAgBtjB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAMA,EAAM0/C,EAAKqiB,QAGzEpkG,KAAKquG,cAActsB,IAWvBstB,gBAAiB,SAAUttB,EAAMiuB,GAE7B,GAAI3tE,GAAO2tE,EAAIgB,YAEfhxG,MAAK8f,MAAMukF,WAAWtiB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKpxB,EAAM0/C,EAAKqiB,QAErDpkG,KAAKquG,cAActsB,IAYvBqtB,gBAAiB,SAAUrtB,EAAMiuB,GAG7B,GAAI3tE,GAAO2tE,EAAIgB,aACXhP,EAAMhiG,KAAKktG,SAAS7qE,EAExB,KAAK2/D,EACL,CACI,GAAImO,GAAeH,EAAIG,cAAgBH,EAAIsB,WAG3C,OAFAlpG,SAAQG,KAAK,mBAAqBw5E,EAAKh2E,IAAM,kBAAoBokG,EAAe,SAChFnwG,MAAKquG,cAActsB,EAAM,eAIX,eAAdA,EAAK75E,KAELlI,KAAK8f,MAAM2kF,cAAc1iB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAM2/D,EAAKjgB,EAAK4iB,UAAW5iB,EAAKpvB,SAAUovB,EAAKnvB,UAE9E,iBAAdmvB,EAAK75E,KAEVlI,KAAK8f,MAAMulF,gBAAgBtjB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKsuB,EAAK1/C,KAAM2/D,EAAKjgB,EAAKqiB,QAEjD,QAAdriB,EAAK75E,MAEVlI,KAAK8f,MAAMklF,OAAOjjB,EAAKh2E,IAAKg2E,EAAKtuB,IAAKuuC,GAG1ChiG,KAAKquG,cAActsB,IAYvBmrB,SAAU,SAAU7qE,GAEhB,GAAI2/D,EAEJ,KAEI,GAAIj6F,OAAkB,UACtB,CACI,GAAIwpG,GAAY,GAAIC,UACpBxP,GAAMuP,EAAUE,gBAAgBpvE,EAAM,gBAItC2/D,GAAM,GAAI0P,eAAc,oBAExB1P,EAAI2P,MAAQ,QACZ3P,EAAI4P,QAAQvvE,GAGpB,MAAOp3B,GAEH+2F,EAAM,KAGV,MAAKA,IAAQA,EAAIlb,kBAAmBkb,EAAIC,qBAAqB,eAAep6F,OAMjEm6F,EAJA,MAiBf0L,eAAgB,WAER1tG,KAAKypG,gBAEgC,IAAjCzpG,KAAKypG,cAAc3rF,UAEnB9d,KAAKypG,cAAc/1F,KAAK3D,MAAQhK,KAAKI,MAAOnG,KAAKypG,cAAc15F,MAAQ,IAAO/P,KAAK+tG,UAInF/tG,KAAKypG,cAAc/1F,KAAK1D,OAASjK,KAAKI,MAAOnG,KAAKypG,cAAcz5F,OAAS,IAAOhQ,KAAK+tG,UAGrF/tG,KAAKypG,cAAc1yE,OAEnB/2B,KAAKypG,cAAc1yE,OAAO+xB,aAK1B9oD,KAAKypG,cAAgB,OAajCoI,iBAAkB,WAEd,MAAO7xG,MAAK8qG,kBAWhBrnF,iBAAkB,WAEd,MAAOzjB,MAAK4qG,gBAAkB5qG,KAAK8qG,kBAWvCgH,iBAAkB,WAEd,MAAO9xG,MAAK2qG,iBAWhBjnF,iBAAkB,WAEd,MAAO1jB,MAAK2qG,gBAAkB3qG,KAAK6qG,mBAe3CtjG,OAAO2E,eAAe7L,EAAOk5B,OAAOlzB,UAAW,iBAE3C2F,IAAK,WACD,GAAI+hG,GAAY/tG,KAAK8qG,iBAAmB9qG,KAAK4qG,gBAAmB,GAChE,OAAOvqG,GAAO0F,KAAKyP,MAAMu4F,GAAY,EAAG,EAAG,QAWnDxmG,OAAO2E,eAAe7L,EAAOk5B,OAAOlzB,UAAW,YAE3C2F,IAAK,WACD,MAAOjG,MAAK+H,MAAM9N,KAAK+xG,kBAK/B1xG,EAAOk5B,OAAOlzB,UAAU8B,YAAc9H,EAAOk5B,OAa7Cl5B,EAAOukG,cAYHpC,WAAY,SAAUR,EAAKtvD,EAAaigB,EAAUC,GAE9C,MAAO5yD,MAAK8kG,cAAc9C,EAAKtvD,EAAaigB,EAAUC,IAc1DkyC,cAAe,SAAU9C,EAAKtvD,EAAaigB,EAAUC,GAEjD,GAAIvwB,MACA2vE,EAAOhQ,EAAIC,qBAAqB,QAAQ,GACxCgQ,EAASjQ,EAAIC,qBAAqB,UAAU,EAEhD5/D,GAAKiwB,KAAO0/C,EAAKE,aAAa,QAC9B7vE,EAAKr4B,KAAOK,SAAS2nG,EAAKE,aAAa,QAAS,IAChD7vE,EAAK21C,WAAa3tE,SAAS4nG,EAAOC,aAAa,cAAe,IAAMt/C,EACpEvwB,EAAKowB,QAIL,KAAK,GAFD0/C,GAAUnQ,EAAIC,qBAAqB,QAE9Bn6F,EAAI,EAAGA,EAAIqqG,EAAQtqG,OAAQC,IACpC,CACI,GAAIw4C,GAAWj2C,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,MAAO,GAEvD7vE,GAAKowB,MAAMnS,IACPr6C,EAAGoE,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,KAAM,IAC1CzlG,EAAGpC,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,KAAM,IAC1CniG,MAAO1F,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,SAAU,IAClDliG,OAAQ3F,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,UAAW,IACpDr/C,QAASxoD,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,WAAY,IACtDp/C,QAASzoD,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,WAAY,IACtDr1B,SAAUxyE,SAAS8nG,EAAQrqG,GAAGoqG,aAAa,YAAa,IAAMv/C,EAC9DiqB,YAIR,GAAIw1B,GAAWpQ,EAAIC,qBAAqB,UAExC,KAAKn6F,EAAI,EAAGA,EAAIsqG,EAASvqG,OAAQC,IACjC,CACI,GAAI8jC,GAAQvhC,SAAS+nG,EAAStqG,GAAGoqG,aAAa,SAAU,IACpDG,EAAShoG,SAAS+nG,EAAStqG,GAAGoqG,aAAa,UAAW,IACtDl/E,EAAS3oB,SAAS+nG,EAAStqG,GAAGoqG,aAAa,UAAW,GAE1D7vE,GAAKowB,MAAM4/C,GAAQz1B,QAAQhxC,GAAS5Y,EAGxC,MAAOhzB,MAAKsyG,mBAAmB5/D,EAAarQ,IAchDwiE,eAAgB,SAAUxD,EAAM3uD,EAAaigB,EAAUC,GAEnD,GAAIvwB,IACAiwB,KAAM+uC,EAAK/uC,KAAK0/C,KAAKO,MACrBvoG,KAAMK,SAASg3F,EAAK/uC,KAAK0/C,KAAKz5C,MAAO,IACrCyf,WAAY3tE,SAASg3F,EAAK/uC,KAAK2/C,OAAOO,YAAa,IAAM5/C,EACzDH,SAqCJ,OAlCA4uC,GAAK/uC,KAAKG,MAAM,QAAQhrD,QAEpB,SAAmBuxE,GAEf,GAAI14B,GAAWj2C,SAAS2uE,EAAOy5B,IAAK,GAEpCpwE,GAAKowB,MAAMnS,IACPr6C,EAAGoE,SAAS2uE,EAAOx5C,GAAI,IACvB/yB,EAAGpC,SAAS2uE,EAAOv5C,GAAI,IACvB1vB,MAAO1F,SAAS2uE,EAAOriD,OAAQ,IAC/B3mB,OAAQ3F,SAAS2uE,EAAOpiD,QAAS,IACjCi8B,QAASxoD,SAAS2uE,EAAO05B,SAAU,IACnC5/C,QAASzoD,SAAS2uE,EAAO25B,SAAU,IACnC91B,SAAUxyE,SAAS2uE,EAAO45B,UAAW,IAAMjgD,EAC3CiqB,cAMRykB,EAAK/uC,KAAK8/C,UAAY/Q,EAAK/uC,KAAK8/C,SAASx1B,SAEzCykB,EAAK/uC,KAAK8/C,SAASx1B,QAAQn1E,QAEvB,SAAsBm1E,GAElBv6C,EAAKowB,MAAMmqB,EAAQi2B,SAASj2B,QAAQA,EAAQk2B,QAAUzoG,SAASuyE,EAAQm2B,QAAS,MAQrF/yG,KAAKsyG,mBAAmB5/D,EAAarQ,IAahDiwE,mBAAoB,SAAU5/D,EAAasgE,GAcvC,MAZAzrG,QAAOuE,KAAKknG,EAAevgD,OAAOhrD,QAE9B,SAAoB64C,GAEhB,GAAI04B,GAASg6B,EAAevgD,MAAMnS,EAElC04B,GAAO72C,QAAU,GAAIr8B,MAAK4oD,QAAQhc,EAAa,GAAIryC,GAAOkN,UAAUyrE,EAAO/yE,EAAG+yE,EAAOvsE,EAAGusE,EAAOjpE,MAAOipE,EAAOhpE,WAM9GgjG,IAqBf3yG,EAAOg2D,YAAc,SAAU77C,EAAMzO,GAMjC/L,KAAKwa,KAAOA,EAMZxa,KAAK+L,IAAMA,EAMX/L,KAAKirB,OAASjrB,KAAKwa,KAAKsF,MAAM4nF,QAAQ37F,EAAM,eAM5C/L,KAAKizG,YAAc,KAOnBjzG,KAAKyvG,UAAW,EAMhBzvG,KAAKkzG,SAEL,KAAK,GAAIv6D,KAAK34C,MAAKirB,OAAOkoF,UAC1B,CACI,GAAIl9C,GAASj2D,KAAKirB,OAAOkoF,UAAUx6D,GAC/B14B,EAAQjgB,KAAKwa,KAAK3I,IAAIoO,MAAMjgB,KAAK+L,IAErCkU,GAAMmzF,UAAUz6D,EAAGsd,EAAOvlD,MAAQulD,EAAOtlD,IAAMslD,EAAOvlD,MAAQ,KAAMulD,EAAOjP,MAE3EhnD,KAAKkzG,OAAOv6D,GAAK14B,EAGjBjgB,KAAKirB,OAAOwkF,WAEZzvG,KAAKizG,YAAcjzG,KAAKirB,OAAOwkF,SAC/BzvG,KAAK8mD,KAAK9mD,KAAKizG,aACfjzG,KAAKyvG,SAAWzvG,KAAKkzG,OAAOlzG,KAAKizG,eAKzC5yG,EAAOg2D,YAAYhwD,WAUfygD,KAAM,SAAUmP,EAAQj8C,GAIpB,MAFetQ,UAAXsQ,IAAwBA,EAAS,GAE9Bha,KAAKkzG,OAAOj9C,GAAQnP,KAAKmP,EAAQ,KAAMj8C,IAUlDiiB,KAAM,SAAUg6B,GAEZ,GAAKA,EASDj2D,KAAKkzG,OAAOj9C,GAAQh6B,WAPpB,KAAK,GAAIlwB,KAAO/L,MAAKkzG,OAEjBlzG,KAAKkzG,OAAOnnG,GAAKkwB,QAiB7BjwB,IAAK,SAASiqD,GAEV,MAAOj2D,MAAKkzG,OAAOj9C,KAM3B51D,EAAOg2D,YAAYhwD,UAAU8B,YAAc9H,EAAOg2D,YAkBlDh2D,EAAO+1D,MAAQ,SAAU57C,EAAMzO,EAAKiO,EAAQgtC,EAAMtP,GAE/BhuC,SAAXsQ,IAAwBA,EAAS,GACxBtQ,SAATs9C,IAAsBA,GAAO,GACjBt9C,SAAZguC,IAAyBA,EAAUl9B,EAAKyF,MAAMozF,iBAMlDrzG,KAAKwa,KAAOA,EAKZxa,KAAKoL,KAAOW,EAKZ/L,KAAK+L,IAAMA,EAKX/L,KAAKgnD,KAAOA,EAKZhnD,KAAKszG,WAKLtzG,KAAKqkB,QAAU,KAKfrkB,KAAKyvG,UAAW,EAKhBzvG,KAAKuzG,cAAgB,EAMrBvzG,KAAK84F,UAAY,EAKjB94F,KAAKwzG,YAAc,EAKnBxzG,KAAK6b,SAAW,EAKhB7b,KAAKyzG,WAAa,EAKlBzzG,KAAKuZ,SAAW,EAKhBvZ,KAAK0zG,SAAW,EAMhB1zG,KAAK6gB,QAAS,EAKd7gB,KAAK2zG,eAAiB,EAKtB3zG,KAAK4zG,WAAa,EAMlB5zG,KAAK+9F,WAAY,EAMjB/9F,KAAK6zG,cAAgB,GAKrB7zG,KAAK8zG,UAAY,KAMjB9zG,KAAK+zG,iBAAkB,EAMvB/zG,KAAKg0G,UAAW,EAMhBh0G,KAAKi0G,eAAgB,EAMrBj0G,KAAK6uG,cAAgB7uG,KAAKwa,KAAKyF,MAAM4uF,cAKrC7uG,KAAK8uG,cAAgB9uG,KAAKwa,KAAKyF,MAAM6uF,cAKrC9uG,KAAKk0G,aAAe,KAKpBl0G,KAAKm0G,eAAiB,KAKtBn0G,KAAKo0G,SAAW,KAMhBp0G,KAAKq0G,OAAS,KAEVr0G,KAAK6uG,eAEL7uG,KAAKqkB,QAAUrkB,KAAKwa,KAAKyF,MAAMoE,QAC/BrkB,KAAKm0G,eAAiBn0G,KAAKwa,KAAKyF,MAAMq0F,WAEN5qG,SAA5B1J,KAAKqkB,QAAQkwF,WAEbv0G,KAAKo0G,SAAWp0G,KAAKqkB,QAAQmwF,iBAI7Bx0G,KAAKo0G,SAAWp0G,KAAKqkB,QAAQkwF,aAGjCv0G,KAAKo0G,SAASK,KAAKlrG,MAAQyQ,EAASha,KAAKwa,KAAKyF,MAAMjG,OAEhD09B,GAEA13C,KAAKo0G,SAAS18D,QAAQ13C,KAAKm0G,iBAG1Bn0G,KAAK8uG,gBAEN9uG,KAAKwa,KAAKsF,MAAM2lF,SAAS15F,IAAQ/L,KAAKwa,KAAKsF,MAAMgmF,aAAa/5F,IAE9D/L,KAAKq0G,OAASr0G,KAAKwa,KAAKsF,MAAMmnF,aAAal7F,GAC3C/L,KAAKuzG,cAAgB,EAEjBvzG,KAAKq0G,OAAOx4F,WAEZ7b,KAAKuzG,cAAgBvzG,KAAKq0G,OAAOx4F,WAKrC7b,KAAKwa,KAAKsF,MAAM8iF,cAAc/wF,IAAI7R,KAAK00G,iBAAkB10G,OAOjEA,KAAK20G,UAAY,GAAIt0G,GAAO+a,OAK5Bpb,KAAK40G,OAAS,GAAIv0G,GAAO+a,OAKzBpb,KAAKuiB,QAAU,GAAIliB,GAAO+a,OAK1Bpb,KAAKyiB,SAAW,GAAIpiB,GAAO+a,OAK3Bpb,KAAKs3F,OAAS,GAAIj3F,GAAO+a,OAKzBpb,KAAK60G,OAAS,GAAIx0G,GAAO+a,OAKzBpb,KAAK80G,OAAS,GAAIz0G,GAAO+a,OAKzBpb,KAAK+0G,iBAAmB,GAAI10G,GAAO+a,OAKnCpb,KAAKsb,eAAiB,GAAIjb,GAAO+a,OAMjCpb,KAAKg1G,QAAUh7F,EAMfha,KAAKi1G,QAAU,KAMfj1G,KAAKk1G,QAAS,EAMdl1G,KAAKm1G,YAAc,EAMnBn1G,KAAKo1G,cAAgB,EAMrBp1G,KAAKq1G,YAAc,EAMnBr1G,KAAKs1G,WAAa,EAMlBt1G,KAAKu1G,YAAc,EAMnBv1G,KAAKw1G,UAAY,EAMjBx1G,KAAKm4B,SAAU,EAMfn4B,KAAKy1G,2BAA4B,GAIrCp1G,EAAO+1D,MAAM/vD,WAQTquG,iBAAkB,SAAU3oG,GAEpBA,IAAQ/L,KAAK+L,MAEb/L,KAAKq0G,OAASr0G,KAAKwa,KAAKsF,MAAMmnF,aAAajnG,KAAK+L,KAChD/L,KAAKuzG,cAAgBvzG,KAAKq0G,OAAOx4F,WAgBzCu3F,UAAW,SAAUhoG,EAAMsF,EAAOmL,EAAU7B,EAAQgtC,GAE/Bt9C,SAAbmS,GAAuC,OAAbA,IAAqBA,EAAW,GAC/CnS,SAAXsQ,GAAmC,OAAXA,IAAmBA,EAAS,GAC3CtQ,SAATs9C,IAAsBA,GAAO,GAEjChnD,KAAKszG,QAAQloG,IACTA,KAAMA,EACNsF,MAAOA,EACPurB,KAAMvrB,EAAQmL,EACd7B,OAAQA,EACR6B,SAAUA,EACV43F,WAAuB,IAAX53F,EACZmrC,KAAMA,IAUd0uD,aAAc,SAAUtqG,SAEbpL,MAAKszG,QAAQloG,IAWxBuqG,eAAgB,WAEZ31G,KAAKq0G,OAAOuB,QAAU,KACtB51G,KAAK+9F,WAAY,EACjB/9F,KAAKwzG,YAAcxzG,KAAKyzG,WACxBzzG,KAAKi8B,QAST1d,OAAQ,WAEJ,MAAKve,MAAKwa,KAAKsF,MAAMqmF,cAAcnmG,KAAK+L,MAMpC/L,KAAK61G,YAAc71G,KAAKy1G,4BAExBz1G,KAAK20G,UAAU91F,SAAS7e,MACxBA,KAAKy1G,2BAA4B,GAGjCz1G,KAAK+zG,iBAAmB/zG,KAAKwa,KAAKsF,MAAMgmF,aAAa9lG,KAAK+L,OAE1D/L,KAAK+zG,iBAAkB,EACvB/zG,KAAK8mD,KAAK9mD,KAAKm1G,YAAan1G,KAAKo1G,cAAep1G,KAAKq1G,YAAar1G,KAAKw1G,iBAGvEx1G,KAAK+9F,YAEL/9F,KAAKwzG,YAAcxzG,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK84F,UAE1C94F,KAAKwzG,aAAexzG,KAAKyzG,aAErBzzG,KAAK6uG,cAED7uG,KAAKgnD,MAGLhnD,KAAKs3F,OAAOz4E,SAAS7e,MAGrBA,KAAK+9F,WAAY,EAEU,KAAvB/9F,KAAK6zG,eAEL7zG,KAAKwzG,YAAc,EACnBxzG,KAAK84F,UAAY94F,KAAKwa,KAAKmE,KAAKA,KAChC3e,KAAK+9F,WAAY,IAIjB/9F,KAAK+0G,iBAAiBl2F,SAAS7e,KAAK6zG,cAAe7zG,MACnDA,KAAK8mD,KAAK9mD,KAAK6zG,cAAe,EAAG7zG,KAAKga,QAAQ,GAAM,KAM7B,KAAvBha,KAAK6zG,eAEL7zG,KAAKi8B,OAMTj8B,KAAKgnD,MAELhnD,KAAKs3F,OAAOz4E,SAAS7e,MAEM,KAAvBA,KAAK6zG,gBAEL7zG,KAAKwzG,YAAc,EACnBxzG,KAAK84F,UAAY94F,KAAKwa,KAAKmE,KAAKA,MAIpC3e,KAAK+9F,WAAY,EAEjB/9F,KAAK8mD,KAAK9mD,KAAK6zG,cAAe,EAAG7zG,KAAKga,QAAQ,GAAM,IAIpDha,KAAKi8B,eAxEjBj8B,MAAK8jB,WAsFbgyF,SAAU,SAAU97F,GAEhBha,KAAK8mD,KAAK,KAAM,EAAG9sC,GAAQ,IAe/B8sC,KAAM,SAAUmP,EAAQ18C,EAAUS,EAAQgtC,EAAM+uD,GAK5C,GAHersG,SAAXusD,GAAwBA,KAAW,GAAoB,OAAXA,IAAmBA,EAAS,IACvDvsD,SAAjBqsG,IAA8BA,GAAe,GAE7C/1G,KAAK+9F,YAAc/9F,KAAKi0G,gBAAkB8B,IAAiB/1G,KAAKg0G,SAGhE,MAAOh0G,KAGX,IAAIA,KAAKq0G,QAAUr0G,KAAK+9F,YAAc/9F,KAAKi0G,gBAAkBj0G,KAAKg0G,UAAY+B,GAE1E,GAAI/1G,KAAK6uG,cACT,CACI,GAAyBnlG,SAArB1J,KAAKq0G,OAAOp4E,KAEZj8B,KAAKq0G,OAAO2B,QAAQ,OAIpB,KACIh2G,KAAKq0G,OAAOp4E,KAAK,GAErB,MAAOhxB,IAIPjL,KAAKk0G,aAELl0G,KAAKq0G,OAAOz8D,WAAW53C,KAAKk0G,cAEvBl0G,KAAKo0G,UAEVp0G,KAAKq0G,OAAOz8D,WAAW53C,KAAKo0G,cAG3Bp0G,MAAK8uG,gBAEV9uG,KAAKq0G,OAAO7xF,QACZxiB,KAAKq0G,OAAOb,YAAc,EAIlC,IAAe,KAAXv9C,GAAiB1uD,OAAOuE,KAAK9L,KAAKszG,SAASzrG,OAAS,EAIpD,MAAO7H,KAGX,IAAe,KAAXi2D,EACJ,CAGI,GAFAj2D,KAAK6zG,cAAgB59C,GAEjBj2D,KAAKszG,QAAQr9C,GA2Bb,MAAOj2D,KAxBPA,MAAKuZ,SAAWvZ,KAAKszG,QAAQr9C,GAAQvlD,MACrC1Q,KAAKga,OAASha,KAAKszG,QAAQr9C,GAAQj8C,OACnCha,KAAKgnD,KAAOhnD,KAAKszG,QAAQr9C,GAAQjP,KACjChnD,KAAK6b,SAAW7b,KAAKszG,QAAQr9C,GAAQp6C,SACrC7b,KAAKyzG,WAAazzG,KAAKszG,QAAQr9C,GAAQw9C,WAEjB,mBAAXz5F,KAEPha,KAAKga,OAASA,GAGE,mBAATgtC,KAEPhnD,KAAKgnD,KAAOA,GAGhBhnD,KAAKm1G,YAAcl/C,EACnBj2D,KAAKo1G,cAAgBp1G,KAAKuZ,SAC1BvZ,KAAKq1G,YAAcr1G,KAAKga,OACxBha,KAAKw1G,UAAYx1G,KAAKgnD,SAU1BztC,GAAWA,GAAY,EAER7P,SAAXsQ,IAAwBA,EAASha,KAAKg1G,SAC7BtrG,SAATs9C,IAAsBA,EAAOhnD,KAAKgnD,MAEtChnD,KAAKuZ,SAAWxT,KAAKoM,IAAI,EAAGoH,GAC5BvZ,KAAKga,OAASA,EACdha,KAAKgnD,KAAOA,EACZhnD,KAAK6b,SAAW,EAChB7b,KAAKyzG,WAAa,EAElBzzG,KAAKm1G,YAAcl/C,EACnBj2D,KAAKo1G,cAAgB77F,EACrBvZ,KAAKq1G,YAAcr7F,EACnBha,KAAKw1G,UAAYxuD,CAwHrB,OArHIhnD,MAAK6uG,cAGD7uG,KAAKwa,KAAKsF,MAAM+lF,eAAe7lG,KAAK+L,MAEpC/L,KAAKq0G,OAASr0G,KAAKqkB,QAAQ4xF,qBAEvBj2G,KAAKk0G,aAELl0G,KAAKq0G,OAAO38D,QAAQ13C,KAAKk0G,cAIzBl0G,KAAKq0G,OAAO38D,QAAQ13C,KAAKo0G,UAG7Bp0G,KAAKi1G,QAAUj1G,KAAKwa,KAAKsF,MAAMmnF,aAAajnG,KAAK+L,KACjD/L,KAAKq0G,OAAOz8C,OAAS53D,KAAKi1G,QAEtBj1G,KAAKgnD,MAAmB,KAAXiP,IAEbj2D,KAAKq0G,OAAOrtD,MAAO,GAGlBhnD,KAAKgnD,MAAmB,KAAXiP,IAEdj2D,KAAKq0G,OAAOuB,QAAU51G,KAAK21G,eAAervG,KAAKtG,OAGnDA,KAAKuzG,cAAgBvzG,KAAKq0G,OAAOz8C,OAAO/7C,SAElB,IAAlB7b,KAAK6b,WAEL7b,KAAK6b,SAAW7b,KAAKuzG,cACrBvzG,KAAKyzG,WAAa1tG,KAAKG,KAA0B,IAArBlG,KAAKuzG,gBAIX7pG,SAAtB1J,KAAKq0G,OAAO3jG,MAEZ1Q,KAAKq0G,OAAO6B,YAAY,EAAGl2G,KAAKuZ,SAAUvZ,KAAK6b,UAI3C7b,KAAKgnD,MAAmB,KAAXiP,EAEbj2D,KAAKq0G,OAAO3jG,MAAM,EAAG,GAIrB1Q,KAAKq0G,OAAO3jG,MAAM,EAAG1Q,KAAKuZ,SAAUvZ,KAAK6b,UAIjD7b,KAAK+9F,WAAY,EACjB/9F,KAAK84F,UAAY94F,KAAKwa,KAAKmE,KAAKA,KAChC3e,KAAKwzG,YAAc,EACnBxzG,KAAK0zG,SAAW1zG,KAAK84F,UAAY94F,KAAKyzG,WACtCzzG,KAAK40G,OAAO/1F,SAAS7e,QAIrBA,KAAK+zG,iBAAkB,EAEnB/zG,KAAKwa,KAAKsF,MAAM2lF,SAASzlG,KAAK+L,MAAQ/L,KAAKwa,KAAKsF,MAAM2lF,SAASzlG,KAAK+L,KAAKi4F,cAAe,GAExFhkG,KAAKwa,KAAKyF,MAAMixF,OAAOlxG,KAAK+L,IAAK/L,OAMrCA,KAAKwa,KAAKsF,MAAM2lF,SAASzlG,KAAK+L,MAAQ/L,KAAKwa,KAAKsF,MAAM2lF,SAASzlG,KAAK+L,KAAKk3B,QAEzEjjC,KAAKwa,KAAKsF,MAAM0lF,YAAYxlG,KAAK+L,KACjC/L,KAAK+zG,iBAAkB,GAInB/zG,KAAKq0G,SAAWr0G,KAAKwa,KAAKkS,OAAOmO,UAAuC,IAA3B76B,KAAKq0G,OAAO9uB,aAEzDvlF,KAAKq0G,OAAOvtD,OAEZ9mD,KAAKuzG,cAAgBvzG,KAAKq0G,OAAOx4F,SAEX,IAAlB7b,KAAK6b,WAEL7b,KAAK6b,SAAW7b,KAAKuzG,cACrBvzG,KAAKyzG,WAAkC,IAArBzzG,KAAKuzG,eAG3BvzG,KAAKq0G,OAAOb,YAAcxzG,KAAKuZ,SAC/BvZ,KAAKq0G,OAAO8B,MAAQn2G,KAAKk1G,OAErBl1G,KAAKk1G,QAAUl1G,KAAKwa,KAAKyF,MAAMm2F,KAE/Bp2G,KAAKq0G,OAAOr6F,OAAS,EAIrBha,KAAKq0G,OAAOr6F,OAASha,KAAKg1G,QAG9Bh1G,KAAK+9F,WAAY,EACjB/9F,KAAK84F,UAAY94F,KAAKwa,KAAKmE,KAAKA,KAChC3e,KAAKwzG,YAAc,EACnBxzG,KAAK0zG,SAAW1zG,KAAK84F,UAAY94F,KAAKyzG,WAEtCzzG,KAAK40G,OAAO/1F,SAAS7e,OAIrBA,KAAK+zG,iBAAkB,EAK5B/zG,MAaXojB,QAAS,SAAU6yC,EAAQ18C,EAAUS,EAAQgtC,GAEzCiP,EAASA,GAAU,GACnB18C,EAAWA,GAAY,EACvBS,EAASA,GAAU,EACNtQ,SAATs9C,IAAsBA,GAAO,GAEjChnD,KAAK8mD,KAAKmP,EAAQ18C,EAAUS,EAAQgtC,GAAM,IAS9CxkC,MAAO,WAECxiB,KAAK+9F,WAAa/9F,KAAKq0G,SAEvBr0G,KAAK6gB,QAAS,EACd7gB,KAAK2zG,eAAiB3zG,KAAKwzG,YAC3BxzG,KAAK4zG,WAAa5zG,KAAKwa,KAAKmE,KAAKA,KACjC3e,KAAKs1G,WAAat1G,KAAKq0G,OAAOb,YAC9BxzG,KAAKuiB,QAAQ1D,SAAS7e,MACtBA,KAAKi8B,SAUbvZ,OAAQ,WAEJ,GAAI1iB,KAAK6gB,QAAU7gB,KAAKq0G,OACxB,CACI,GAAIr0G,KAAK6uG,cACT,CACI,GAAI5+F,GAAIlK,KAAKoM,IAAI,EAAGnS,KAAKuZ,SAAYvZ,KAAK2zG,eAAiB,IAE3D3zG,MAAKq0G,OAASr0G,KAAKqkB,QAAQ4xF,qBAC3Bj2G,KAAKq0G,OAAOz8C,OAAS53D,KAAKi1G,QAEtBj1G,KAAKk0G,aAELl0G,KAAKq0G,OAAO38D,QAAQ13C,KAAKk0G,cAIzBl0G,KAAKq0G,OAAO38D,QAAQ13C,KAAKo0G,UAGzBp0G,KAAKgnD,OAELhnD,KAAKq0G,OAAOrtD,MAAO,GAGlBhnD,KAAKgnD,MAA+B,KAAvBhnD,KAAK6zG,gBAEnB7zG,KAAKq0G,OAAOuB,QAAU51G,KAAK21G,eAAervG,KAAKtG,MAGnD,IAAI6b,GAAW7b,KAAK6b,SAAY7b,KAAK2zG,eAAiB,GAE5BjqG,UAAtB1J,KAAKq0G,OAAO3jG,MAEZ1Q,KAAKq0G,OAAO6B,YAAY,EAAGjmG,EAAG4L,GAK1B7b,KAAKgnD,MAAQhnD,KAAKwa,KAAKkS,OAAO6N,OAGS,KAAnCv6B,KAAKwa,KAAKkS,OAAO+1D,cAEjBziF,KAAKq0G,OAAO3jG,MAAM,GAIlB1Q,KAAKq0G,OAAO3jG,MAAM,EAAGT,GAKzBjQ,KAAKq0G,OAAO3jG,MAAM,EAAGT,EAAG4L,OAMhC7b,MAAKq0G,OAAOb,YAAcxzG,KAAKs1G,WAC/Bt1G,KAAKq0G,OAAOvtD,MAGhB9mD,MAAK+9F,WAAY,EACjB/9F,KAAK6gB,QAAS,EACd7gB,KAAK84F,WAAc94F,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK4zG,WAC9C5zG,KAAKyiB,SAAS5D,SAAS7e,QAU/Bi8B,KAAM,WAEF,GAAIj8B,KAAK+9F,WAAa/9F,KAAKq0G,OAEvB,GAAIr0G,KAAK6uG,cACT,CACI,GAAyBnlG,SAArB1J,KAAKq0G,OAAOp4E,KAEZj8B,KAAKq0G,OAAO2B,QAAQ,OAIpB,KACIh2G,KAAKq0G,OAAOp4E,KAAK,GAErB,MAAOhxB,IAMPjL,KAAKk0G,aAELl0G,KAAKq0G,OAAOz8D,WAAW53C,KAAKk0G,cAEvBl0G,KAAKo0G,UAEVp0G,KAAKq0G,OAAOz8D,WAAW53C,KAAKo0G,cAG3Bp0G,MAAK8uG,gBAEV9uG,KAAKq0G,OAAO7xF,QACZxiB,KAAKq0G,OAAOb,YAAc,EAOlC,IAHAxzG,KAAK+zG,iBAAkB,EACvB/zG,KAAK+9F,WAAY,GAEZ/9F,KAAK6gB,OACV,CACI,GAAIw1F,GAAar2G,KAAK6zG,aAEK,MAAvB7zG,KAAK6zG,eAEL7zG,KAAK+0G,iBAAiBl2F,SAAS7e,KAAK6zG,cAAe7zG,MAGvDA,KAAK6zG,cAAgB,GAEE,OAAnB7zG,KAAK8zG,WAEL9zG,KAAK8zG,UAAU73E,OAGnBj8B,KAAK60G,OAAOh2F,SAAS7e,KAAMq2G,KAiBnCC,OAAQ,SAAUz6F,EAAUmrC,EAAMiP,GAEjBvsD,SAATs9C,IAAsBA,GAAO,GAClBt9C,SAAXusD,IAAwBA,EAASj2D,KAAK6zG,eAEtC7zG,KAAK6gB,SAKT7gB,KAAK8mD,KAAKmP,EAAQ,EAAG,EAAGjP,GAExBhnD,KAAKu2G,OAAO16F,EAAU,KAY1B26F,QAAS,SAAU36F,GAEf7b,KAAKu2G,OAAO16F,EAAU,IAa1B06F,OAAQ,SAAU16F,EAAU7B,GAExB,GAAKha,KAAK+9F,YAAa/9F,KAAK6gB,QAAU7G,IAAWha,KAAKga,OAAtD,CAOA,GAFiBtQ,SAAbmS,IAA0BA,EAAW,KAE1BnS,SAAXsQ,EAGA,WADA5R,SAAQG,KAAK,4CAIjBvI,MAAK8zG,UAAY9zG,KAAKwa,KAAK3I,IAAIk/C,MAAM/wD,MAAMoM,IAAM4N,OAAQA,GAAU6B,EAAUxb,EAAOuyF,OAAOK,OAAOC,MAAM,GAExGlzF,KAAK8zG,UAAUrc,WAAW5lF,IAAI7R,KAAKy2G,aAAcz2G,QAUrDy2G,aAAc,WAEVz2G,KAAKsb,eAAeuD,SAAS7e,KAAMA,KAAKga,QAEpB,IAAhBha,KAAKga,QAELha,KAAKi8B,QAgBby6E,mBAAoB,SAAUC,GAItB32G,KAAK8uG,eAAiB9uG,KAAKq0G,SAE3Br0G,KAAKq0G,OAAOr6F,OAAS28F,EAAe32G,KAAKg1G,UAWjDlxF,QAAS,SAAUhB,GAEApZ,SAAXoZ,IAAwBA,GAAS,GAErC9iB,KAAKi8B,OAEDnZ,EAEA9iB,KAAKwa,KAAKyF,MAAM6C,OAAO9iB,OAIvBA,KAAKszG,WACLtzG,KAAKqkB,QAAU,KACfrkB,KAAKi1G,QAAU,KACfj1G,KAAKk0G,aAAe,KAEpBl0G,KAAK20G,UAAUnuF,UACfxmB,KAAK40G,OAAOpuF,UACZxmB,KAAKuiB,QAAQiE,UACbxmB,KAAKyiB,SAAS+D,UACdxmB,KAAKs3F,OAAO9wE,UACZxmB,KAAK60G,OAAOruF,UACZxmB,KAAK80G,OAAOtuF,UACZxmB,KAAK+0G,iBAAiBvuF,aAOlCnmB,EAAO+1D,MAAM/vD,UAAU8B,YAAc9H,EAAO+1D,MAO5C7uD,OAAO2E,eAAe7L,EAAO+1D,MAAM/vD,UAAW,cAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKsF,MAAM2lF,SAASzlG,KAAK+L,KAAKi4F,cAUlDz8F,OAAO2E,eAAe7L,EAAO+1D,MAAM/vD,UAAW,aAE1C2F,IAAK,WACD,MAAOhM,MAAKwa,KAAKsF,MAAM+lF,eAAe7lG,KAAK+L,QASnDxE,OAAO2E,eAAe7L,EAAO+1D,MAAM/vD,UAAW,QAE1C2F,IAAK,WAED,MAAQhM,MAAKk1G,QAAUl1G,KAAKwa,KAAKyF,MAAMm2F,MAI3CnqG,IAAK,SAAU1C,GAEXA,EAAQA,IAAS,EAEbA,IAAUvJ,KAAKk1G,SAKf3rG,GAEAvJ,KAAKk1G,QAAS,EACdl1G,KAAKu1G,YAAcv1G,KAAKq1G,YAEpBr1G,KAAK6uG,cAEL7uG,KAAKo0G,SAASK,KAAKlrG,MAAQ,EAEtBvJ,KAAK8uG,eAAiB9uG,KAAKq0G,SAEhCr0G,KAAKq0G,OAAOr6F,OAAS,KAKzBha,KAAKk1G,QAAS,EAEVl1G,KAAK6uG,cAEL7uG,KAAKo0G,SAASK,KAAKlrG,MAAQvJ,KAAKu1G,YAE3Bv1G,KAAK8uG,eAAiB9uG,KAAKq0G,SAEhCr0G,KAAKq0G,OAAOr6F,OAASha,KAAKu1G,cAIlCv1G,KAAK80G,OAAOj2F,SAAS7e,UAW7BuH,OAAO2E,eAAe7L,EAAO+1D,MAAM/vD,UAAW,UAE1C2F,IAAK,WACD,MAAOhM,MAAKg1G,SAGhB/oG,IAAK,SAAU1C,GAQX,MALIvJ,MAAKwa,KAAKkS,OAAOi2D,SAAW3iF,KAAK8uG,gBAEjCvlG,EAAQvJ,KAAKwa,KAAK0E,KAAK1J,MAAMjM,EAAO,EAAG,IAGvCvJ,KAAKk1G,YAELl1G,KAAKu1G,YAAchsG,IAIvBvJ,KAAKq1G,YAAc9rG,EACnBvJ,KAAKg1G,QAAUzrG,OAEXvJ,KAAK6uG,cAEL7uG,KAAKo0G,SAASK,KAAKlrG,MAAQA,EAEtBvJ,KAAK8uG,eAAiB9uG,KAAKq0G,SAEhCr0G,KAAKq0G,OAAOr6F,OAASzQ,QA+BjClJ,EAAOs5B,aAAe,SAAUnf,GAK5Bxa,KAAKwa,KAAOA,EAKZxa,KAAK42G,cAAgB,GAAIv2G,GAAO+a,OAMhCpb,KAAK62G,eAAiB,GAAIx2G,GAAO+a,OAMjCpb,KAAK80G,OAAS,GAAIz0G,GAAO+a,OAMzBpb,KAAK82G,SAAW,GAAIz2G,GAAO+a,OAM3Bpb,KAAKqkB,QAAU,KAMfrkB,KAAK6uG,eAAgB,EAMrB7uG,KAAK8uG,eAAgB,EAMrB9uG,KAAKusG,SAAU,EAMfvsG,KAAKqzG,iBAAkB,EAMvBrzG,KAAKikG,aAAc,EAMnBjkG,KAAK+2G,SAAW,GAShB/2G,KAAKo8B,aAAc,EAOnBp8B,KAAKg3G,YAAa,EAOlBh3G,KAAKk1G,QAAS,EAOdl1G,KAAKi3G,cAAgB,KAOrBj3G,KAAKg1G,QAAU,EAMfh1G,KAAKk3G,WAMLl3G,KAAKm3G,WAAa,GAAI92G,GAAO2zB,SAM7Bh0B,KAAKo3G,WAAY,EAMjBp3G,KAAKq3G,eAAiB,KAMtBr3G,KAAKs3G,cAAgB,MAIzBj3G,EAAOs5B,aAAatzB,WAOhBsW,KAAM,WAQF,GANI3c,KAAKwa,KAAKkS,OAAO6P,KAAOv8B,KAAKwa,KAAKkS,OAAO4N,YAAa,IAEtDt6B,KAAK+2G,SAAW,GAIhBhvG,OAAqB,aACzB,CAEI,GAAIA,OAAqB,aAAEwvG,gBAAiB,EAIxC,MAFAv3G,MAAKusG,SAAU,OACfvsG,KAAKikG,aAAc,EAKvB,IAAIl8F,OAAqB,aAAEyvG,mBAAoB,EAI3C,MAFAx3G,MAAK8uG,eAAgB,OACrB9uG,KAAKikG,aAAc,GAK3B,GAAIl8F,OAAqB,cAAKA,OAAqB,aAAE0vG,aAEjDz3G,KAAKqkB,QAAUtc,OAAqB,aAAE0vG,iBAItC,IAAM1vG,OAAqB,aAEvB,IACI/H,KAAKqkB,QAAU,GAAItc,QAAqB,aAC1C,MAAOm+E,GACLlmF,KAAKqkB,QAAU,KACfrkB,KAAK6uG,eAAgB,EACrB7uG,KAAKikG,aAAc,MAGtB,IAAMl8F,OAA2B,mBAElC,IACI/H,KAAKqkB,QAAU,GAAItc,QAA2B,mBAChD,MAAOm+E,GACLlmF,KAAKqkB,QAAU,KACfrkB,KAAK6uG,eAAgB,EACrB7uG,KAAKikG,aAAc,EAK/B,GAAqB,OAAjBjkG,KAAKqkB,QACT,CAEI,GAAwB3a,SAApB3B,OAAc,MAGd,YADA/H,KAAKusG,SAAU,EAKfvsG,MAAK8uG,eAAgB,MAKzB9uG,MAAK6uG,eAAgB,EAEWnlG,SAA5B1J,KAAKqkB,QAAQkwF,WAEbv0G,KAAKs0G,WAAat0G,KAAKqkB,QAAQmwF,iBAI/Bx0G,KAAKs0G,WAAat0G,KAAKqkB,QAAQkwF,aAGnCv0G,KAAKs0G,WAAWG,KAAKlrG,MAAQ,EAC7BvJ,KAAKs0G,WAAW58D,QAAQ13C,KAAKqkB,QAAQw5C,YAGpC79D,MAAKusG,WAGDvsG,KAAKwa,KAAKkS,OAAOmO,UAAY76B,KAAKwa,KAAKkS,OAAO6P,KAAQx0B,OAAqB,cAAKA,OAAqB,aAAE2vG,mBAExG13G,KAAK23G,gBAYjBA,aAAc,WAEN33G,KAAKusG,SAAYxkG,OAAqB,cAAKA,OAAqB,aAAEwvG,gBAAiB,IAKnFv3G,KAAKwa,KAAKkS,OAAOy0D,WAAa,EAE9BnhF,KAAKwa,KAAKuF,MAAM4e,MAAMwP,qBAAqBnuC,KAAK43G,OAAQ53G,MAAM,GAI9DA,KAAKwa,KAAKuF,MAAM4e,MAAMwP,qBAAqBnuC,KAAK43G,OAAQ53G,MAG5DA,KAAKikG,aAAc,IAUvB2T,OAAQ,WAEJ,GAAI53G,KAAKusG,UAAYvsG,KAAKikG,aAAsC,OAAvBjkG,KAAKi3G,cAE1C,OAAO,CAIX,IAAIj3G,KAAK8uG,cAEL9uG,KAAKikG,aAAc,EACnBjkG,KAAKi3G,cAAgB,SAEpB,IAAIj3G,KAAK6uG,cACd,CAII,GAAIj3C,GAAS53D,KAAKqkB,QAAQ0uD,aAAa,EAAG,EAAG,MAC7C/yE,MAAKi3G,cAAgBj3G,KAAKqkB,QAAQ4xF,qBAClCj2G,KAAKi3G,cAAcr/C,OAASA,EAC5B53D,KAAKi3G,cAAcv/D,QAAQ13C,KAAKqkB,QAAQw5C,aAEPn0D,SAA7B1J,KAAKi3G,cAAcvmG,MAEnB1Q,KAAKi3G,cAAcY,OAAO,GAI1B73G,KAAKi3G,cAAcvmG,MAAM,GAKjC,OAAO,GASXonG,QAAS,WAEL,IAAI93G,KAAKusG,QAKT,IAAK,GAAIzkG,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAEjC9H,KAAKk3G,QAAQpvG,IAEb9H,KAAKk3G,QAAQpvG,GAAGm0B,QAW5B86D,SAAU,WAEN,IAAI/2F,KAAKusG,QAKT,IAAK,GAAIzkG,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAEjC9H,KAAKk3G,QAAQpvG,IAEb9H,KAAKk3G,QAAQpvG,GAAG0a,SAW5Bw0E,UAAW,WAEP,IAAIh3F,KAAKusG,QAKT,IAAK,GAAIzkG,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAEjC9H,KAAKk3G,QAAQpvG,IAEb9H,KAAKk3G,QAAQpvG,GAAG4a,UAa5BwuF,OAAQ,SAAUnlG,EAAKkU,GAEnBA,EAAQA,GAAS,IAEjB,IAAI83F,GAAY/3G,KAAKwa,KAAKsF,MAAMmnF,aAAal7F,EAE7C,IAAIgsG,GAEI/3G,KAAKwa,KAAKsF,MAAM+lF,eAAe95F,MAAS,EAC5C,CACI/L,KAAKwa,KAAKsF,MAAM6lF,YAAY55F,EAAK,cAAc,EAE/C,IAAI0a,GAAQzmB,IAEZ,KACIA,KAAKqkB,QAAQ2zF,gBAAgBD,EAAW,SAAUngD,GAE1CA,IAEAnxC,EAAMjM,KAAKsF,MAAM8lF,aAAa75F,EAAK6rD,GACnCnxC,EAAMmwF,cAAc/3F,SAAS9S,EAAKkU,MAI9C,MAAOhV,OAiBnBgtG,mBAAoB,SAAUC,EAAO7kF,EAAUtQ,GAEtB,gBAAVm1F,KAEPA,GAAUA,IAGdl4G,KAAKm3G,WAAWz3F,OAEhB,KAAK,GAAI5X,GAAI,EAAGA,EAAIowG,EAAMrwG,OAAQC,IAE1BowG,EAAMpwG,YAAczH,GAAO+1D,MAEtBp2D,KAAKwa,KAAKsF,MAAM+lF,eAAeqS,EAAMpwG,GAAGiE,MAEzC/L,KAAKm3G,WAAWtlG,IAAIqmG,EAAMpwG,GAAGiE,KAG3B/L,KAAKwa,KAAKsF,MAAM+lF,eAAeqS,EAAMpwG,KAE3C9H,KAAKm3G,WAAWtlG,IAAIqmG,EAAMpwG,GAKJ,KAA1B9H,KAAKm3G,WAAWviF,OAEhB50B,KAAKo3G,WAAY,EACjB/jF,EAASvsB,KAAKic,KAId/iB,KAAKo3G,WAAY,EACjBp3G,KAAKq3G,eAAiBhkF,EACtBrzB,KAAKs3G,cAAgBv0F,IAW7BxE,OAAQ,WAEJ,IAAIve,KAAKusG,QAAT,EAKIvsG,KAAKikG,aAAsC,OAAvBjkG,KAAKi3G,eAA2Bj3G,KAAKi3G,cAAckB,gBAAkBn4G,KAAKi3G,cAAcmB,eAAiBp4G,KAAKi3G,cAAckB,gBAAkBn4G,KAAKi3G,cAAcoB,iBAErLr4G,KAAKikG,aAAc,EACnBjkG,KAAKi3G,cAAgB,KAGzB,KAAK,GAAInvG,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAErC9H,KAAKk3G,QAAQpvG,GAAGyW,QAGpB,IAAIve,KAAKo3G,UACT,CAGI,IAFA,GAAIrrG,GAAM/L,KAAKm3G,WAAWvrE,MAEnB7/B,GAEC/L,KAAKwa,KAAKsF,MAAM+lF,eAAe95F,IAE/B/L,KAAKm3G,WAAWr0F,OAAO/W,GAG3BA,EAAM/L,KAAKm3G,WAAW7lF,IAGI,KAA1BtxB,KAAKm3G,WAAWviF,QAEhB50B,KAAKo3G,WAAY,EACjBp3G,KAAKq3G,eAAevwG,KAAK9G,KAAKs3G,mBAgB1CzlG,IAAK,SAAU9F,EAAKiO,EAAQgtC,EAAMtP;AAEfhuC,SAAXsQ,IAAwBA,EAAS,GACxBtQ,SAATs9C,IAAsBA,GAAO,GACjBt9C,SAAZguC,IAAyBA,EAAU13C,KAAKqzG,gBAE5C,IAAIpzF,GAAQ,GAAI5f,GAAO+1D,MAAMp2D,KAAKwa,KAAMzO,EAAKiO,EAAQgtC,EAAMtP,EAI3D,OAFA13C,MAAKk3G,QAAQtkG,KAAKqN,GAEXA,GAWXoxC,UAAW,SAAStlD,GAEhB,GAAIqlD,GAAc,GAAI/wD,GAAOg2D,YAAYr2D,KAAKwa,KAAMzO,EAEpD,OAAOqlD,IAWXtuC,OAAQ,SAAU7C,GAId,IAFA,GAAInY,GAAI9H,KAAKk3G,QAAQrvG,OAEdC,KAEH,GAAI9H,KAAKk3G,QAAQpvG,KAAOmY,EAIpB,MAFAjgB,MAAKk3G,QAAQpvG,GAAGgc,SAAQ,GACxB9jB,KAAKk3G,QAAQ/zF,OAAOrb,EAAG,IAChB,CAIf,QAAO,GAYXwwG,YAAa,SAAUvsG,GAKnB,IAHA,GAAIjE,GAAI9H,KAAKk3G,QAAQrvG,OACjBouB,EAAU,EAEPnuB,KAEC9H,KAAKk3G,QAAQpvG,GAAGiE,MAAQA,IAExB/L,KAAKk3G,QAAQpvG,GAAGgc,SAAQ,GACxB9jB,KAAKk3G,QAAQ/zF,OAAOrb,EAAG,GACvBmuB,IAIR,OAAOA,IAaX6wB,KAAM,SAAU/6C,EAAKiO,EAAQgtC,GAEzB,IAAIhnD,KAAKusG,QAAT,CAKA,GAAItsF,GAAQjgB,KAAK6R,IAAI9F,EAAKiO,EAAQgtC,EAIlC,OAFA/mC,GAAM6mC,OAEC7mC,IAUXoc,QAAS,WAEL,IAAIr8B,KAAKk1G,OAAT,CAKAl1G,KAAKk1G,QAAS,EAEVl1G,KAAK6uG,gBAEL7uG,KAAKu1G,YAAcv1G,KAAKs0G,WAAWG,KAAKlrG,MACxCvJ,KAAKs0G,WAAWG,KAAKlrG,MAAQ,EAIjC,KAAK,GAAIzB,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAEjC9H,KAAKk3G,QAAQpvG,GAAGgnG,gBAEhB9uG,KAAKk3G,QAAQpvG,GAAGsuG,MAAO,EAI/Bp2G,MAAK80G,OAAOj2F,aAUhB2d,UAAW,WAEP,GAAKx8B,KAAKk1G,SAAUl1G,KAAKg3G,WAAzB,CAKAh3G,KAAKk1G,QAAS,EAEVl1G,KAAK6uG,gBAEL7uG,KAAKs0G,WAAWG,KAAKlrG,MAAQvJ,KAAKu1G,YAItC,KAAK,GAAIztG,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAEjC9H,KAAKk3G,QAAQpvG,GAAGgnG,gBAEhB9uG,KAAKk3G,QAAQpvG,GAAGsuG,MAAO,EAI/Bp2G,MAAK82G,SAASj4F,aASlBiF,QAAS,WAEL9jB,KAAK83G,SAEL,KAAK,GAAIhwG,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAEjC9H,KAAKk3G,QAAQpvG,IAEb9H,KAAKk3G,QAAQpvG,GAAGgc,SAIxB9jB,MAAKk3G,WAELl3G,KAAK42G,cAAcpwF,UAEfxmB,KAAKqkB,UAEDtc,OAAqB,aAGrBA,OAAqB,aAAE0vG,aAAez3G,KAAKqkB,QAIvCrkB,KAAKqkB,QAAQk0F,OAEbv4G,KAAKqkB,QAAQk0F,WASjCl4G,EAAOs5B,aAAatzB,UAAU8B,YAAc9H,EAAOs5B,aAMnDpyB,OAAO2E,eAAe7L,EAAOs5B,aAAatzB,UAAW,QAEjD2F,IAAK,WAED,MAAOhM,MAAKk1G,QAIhBjpG,IAAK,SAAU1C,GAIX,GAFAA,EAAQA,IAAS,EAGjB,CACI,GAAIvJ,KAAKk1G,OAEL,MAGJl1G,MAAKg3G,YAAa,EAClBh3G,KAAKq8B,cAGT,CACI,IAAKr8B,KAAKk1G,OAEN,MAGJl1G,MAAKg3G,YAAa,EAClBh3G,KAAKw8B,gBAUjBj1B,OAAO2E,eAAe7L,EAAOs5B,aAAatzB,UAAW,UAEjD2F,IAAK,WAED,MAAOhM,MAAKg1G,SAIhB/oG,IAAK,SAAU1C,GAWX,GATY,EAARA,EAEAA,EAAQ,EAEHA,EAAQ,IAEbA,EAAQ,GAGRvJ,KAAKg1G,UAAYzrG,EACrB,CAGI,GAFAvJ,KAAKg1G,QAAUzrG,EAEXvJ,KAAK6uG,cAEL7uG,KAAKs0G,WAAWG,KAAKlrG,MAAQA,MAK7B,KAAK,GAAIzB,GAAI,EAAGA,EAAI9H,KAAKk3G,QAAQrvG,OAAQC,IAEjC9H,KAAKk3G,QAAQpvG,GAAGgnG,eAEhB9uG,KAAKk3G,QAAQpvG,GAAG4uG,mBAAmBntG,EAK/CvJ,MAAK62G,eAAeh4F,SAAStV,OAoDzClJ,EAAO64B,aAAe,SAAU1e,EAAMzK,EAAOC,GAQzChQ,KAAKwa,KAAOA,EAQZxa,KAAKw4G,IAAMn4G,EAAO+qB,IAOlBprB,KAAK80C,KAAO,KAOZ90C,KAAK+P,MAAQ,EAOb/P,KAAKgQ,OAAS,EASdhQ,KAAKy4G,SAAW,KAUhBz4G,KAAKw8E,SAAW,KAShBx8E,KAAK04G,UAAY,KAUjB14G,KAAK24G,UAAY,KASjB34G,KAAKoO,OAAS,GAAI/N,GAAO2M,MAUzBhN,KAAK44G,gBAAiB,EAUtB54G,KAAK64G,eAAgB,EAWrB74G,KAAK84G,sBAAuB,EAO5B94G,KAAK+4G,wBAAyB,EAO9B/4G,KAAKg5G,sBAAuB,EA0B5Bh5G,KAAKi5G,oBAAsB,GAAI54G,GAAO+a,OAUtCpb,KAAKk5G,0BAA4B,GAAI74G,GAAO+a,OAU5Cpb,KAAKm5G,0BAA4B,GAAI94G,GAAO+a,OAe5Cpb,KAAKo5G,iBAAmB,KAQxBp5G,KAAKq5G,yBAA2B,KAuBhCr5G,KAAKs5G,iBAAmB,GAAIj5G,GAAO+a,OAWnCpb,KAAKu5G,mBAAqB,GAAIl5G,GAAO+a,OAWrCpb,KAAKw5G,kBAAoB,GAAIn5G,GAAO+a,OAUpCpb,KAAKy5G,kBAAoBz5G,KAAKw4G,IAAIkB,uBAOlC15G,KAAKF,YAAc,GAAIO,GAAO2M,MAAM,EAAG,GAQvChN,KAAK25G,oBAAsB,GAAIt5G,GAAO2M,MAAM,EAAG,GAS/ChN,KAAKghG,QAAUn2F,KAAM,EAAG6D,IAAK,EAAG9D,MAAO,EAAG+D,OAAQ,EAAG1I,EAAG,EAAGwG,EAAG,GAO9DzM,KAAK2a,OAAS,GAAIta,GAAOkN,UAOzBvN,KAAK45G,YAAc,EAOnB55G,KAAK65G,kBAAoB,EAQzB75G,KAAKmsB,MAAQ,KAebnsB,KAAK85G,mBACDlvG,MAAO,SACP+D,OAAQ,IA6BZ3O,KAAK+5G,eACDC,oBAAoB,EACpBC,oBAAqB,KACrBC,WAAW,EACXC,SAAU,KACVC,4BAA4B,EAC5BC,iBAAiB,EACjBC,gBAAiB,IAQrBt6G,KAAKu6G,WAAal6G,EAAO64B,aAAashF,SAOtCx6G,KAAKy6G,qBAAuBp6G,EAAO64B,aAAashF,SAUhDx6G,KAAK06G,gBAAiB,EAUtB16G,KAAKwqF,WAAa,KAOlBxqF,KAAK26G,kBAAoB,GAAIt6G,GAAO2M,MAAM,EAAG,GAW7ChN,KAAK46G,oBAAsB,IAiB3B56G,KAAK66G,aAAe,GAAIx6G,GAAO+a,OAO/Bpb,KAAK86G,SAAW,KAOhB96G,KAAK+6G,gBAAkB,KAMvB/6G,KAAKg7G,kBAAoB,KAOzBh7G,KAAKi7G,mBAAqB,KAO1Bj7G,KAAKk7G,UAAY,GAAI76G,GAAOkN,UAO5BvN,KAAKm7G,iBAAmB,GAAI96G,GAAO2M,MAAM,EAAG,GAO5ChN,KAAKo7G,eAAiB,GAAI/6G,GAAO2M,MAAM,EAAG,GAO1ChN,KAAKq7G,YAAc,EASnBr7G,KAAKs7G,gBAAkB,EAOvBt7G,KAAKu7G,qBAAuB,IAO5Bv7G,KAAKw7G,cAAgB,GAAIn7G,GAAOkN,UAOhCvN,KAAKy7G,YAAc,GAAIp7G,GAAOkN,UAO9BvN,KAAK07G,wBAA0B,GAAIr7G,GAAOkN,UAO1CvN,KAAK27G,sBAAwB,GAAIt7G,GAAOkN,UAMxCvN,KAAK47G,SAAU,EAEXphG,EAAKyQ,QAELjrB,KAAKkrB,YAAY1Q,EAAKyQ,QAG1BjrB,KAAK67G,WAAW9rG,EAAOC,IAU3B3P,EAAO64B,aAAa4iF,UAAY,EAQhCz7G,EAAO64B,aAAashF,SAAW,EAQ/Bn6G,EAAO64B,aAAa6iF,SAAW,EAQ/B17G,EAAO64B,aAAa8iF,OAAS,EAQ7B37G,EAAO64B,aAAa+iF,WAAa,EAEjC57G,EAAO64B,aAAa7yB,WAQhBsW,KAAM,WAIF,GAAIu/F,GAASl8G,KAAK+5G,aAElBmC,GAAOlC,mBAAqBh6G,KAAKwa,KAAKkS,OAAOm4D,aAAe7kF,KAAKwa,KAAKkS,OAAOmO,SAGxE76B,KAAKwa,KAAKkS,OAAO+3D,MAASzkF,KAAKwa,KAAKkS,OAAO62D,QAAWvjF,KAAKwa,KAAKkS,OAAOw0D,UAEpElhF,KAAKwa,KAAKkS,OAAOyX,UAAYnkC,KAAKwa,KAAKkS,OAAO6N,OAE9C2hF,EAAO/B,SAAW,GAAI95G,GAAO2M,MAAM,EAAG,GAItCkvG,EAAO/B,SAAW,GAAI95G,GAAO2M,MAAM,EAAG,IAI1ChN,KAAKwa,KAAKkS,OAAOw0D,SAEjBg7B,EAAOjC,oBAAsB,SAC7BiC,EAAO5B,gBAAkB,mBAIzB4B,EAAOjC,oBAAsB,GAC7BiC,EAAO5B,gBAAkB,GAK7B,IAAI7zF,GAAQzmB,IAEZA,MAAKm8G,mBAAqB,SAAShwF,GAC/B,MAAO1F,GAAM21F,kBAAkBjwF,IAGnCnsB,KAAKq8G,cAAgB,SAASlwF,GAC1B,MAAO1F,GAAM61F,aAAanwF,IAI9BpkB,OAAOskB,iBAAiB,oBAAqBrsB,KAAKm8G,oBAAoB,GACtEp0G,OAAOskB,iBAAiB,SAAUrsB,KAAKq8G,eAAe,GAElDr8G,KAAK+5G,cAAcC,qBAEnBh6G,KAAKu8G,kBAAoB,SAASpwF,GAC9B,MAAO1F,GAAM+1F,iBAAiBrwF,IAGlCnsB,KAAKy8G,iBAAmB,SAAStwF,GAC7B,MAAO1F,GAAMi2F,gBAAgBvwF,IAGjCL,SAASO,iBAAiB,yBAA0BrsB,KAAKu8G,mBAAmB,GAC5EzwF,SAASO,iBAAiB,sBAAuBrsB,KAAKu8G,mBAAmB,GACzEzwF,SAASO,iBAAiB,qBAAsBrsB,KAAKu8G,mBAAmB,GACxEzwF,SAASO,iBAAiB,mBAAoBrsB,KAAKu8G,mBAAmB,GAEtEzwF,SAASO,iBAAiB,wBAAyBrsB,KAAKy8G,kBAAkB,GAC1E3wF,SAASO,iBAAiB,qBAAsBrsB,KAAKy8G,kBAAkB,GACvE3wF,SAASO,iBAAiB,oBAAqBrsB,KAAKy8G,kBAAkB,GACtE3wF,SAASO,iBAAiB,kBAAmBrsB,KAAKy8G,kBAAkB,IAGxEz8G,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAK28G,aAAc38G,MAI1CA,KAAKw4G,IAAIntF,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,QAE1CpO,KAAK2a,OAAOnN,MAAMxN,KAAKoO,OAAOnI,EAAGjG,KAAKoO,OAAO3B,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAEjEhQ,KAAK48G,YAAY58G,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAG5ChQ,KAAKy5G,kBAAoBz5G,KAAKw4G,IAAIkB,qBAAqB15G,KAAK+5G,cAAcE,qBAEtE55G,EAAOw8G,WAEP78G,KAAK80C,KAAO,GAAIz0C,GAAOw8G,SAAS78G,KAAMA,KAAK+P,MAAO/P,KAAKgQ,SAG3DhQ,KAAK47G,SAAU,EAEgB,OAA3B57G,KAAKg7G,oBAELh7G,KAAK+tD,UAAY/tD,KAAKg7G,kBACtBh7G,KAAKg7G,kBAAoB,OAYjC9vF,YAAa,SAAUD,GAESvhB,SAAxBuhB,EAAkB,YAEdjrB,KAAK47G,QAEL57G,KAAK+tD,UAAY9iC,EAAkB,UAInCjrB,KAAKg7G,kBAAoB/vF,EAAkB,WAIbvhB,SAAlCuhB,EAA4B,sBAE5BjrB,KAAK88G,oBAAsB7xF,EAA4B,qBAGvDA,EAAyB,mBAEzBjrB,KAAKo5G,iBAAmBnuF,EAAyB,mBAezD4wF,WAAY,SAAU9rG,EAAOC,GAEzB,GAAIhJ,GACA0M,EAAO,GAAIrT,GAAOkN,SAEG,MAArBvN,KAAKwa,KAAKgP,SAEsB,gBAArBxpB,MAAKwa,KAAKgP,OAGjBxiB,EAAS8kB,SAASu+D,eAAerqF,KAAKwa,KAAKgP,QAEtCxpB,KAAKwa,KAAKgP,QAAwC,IAA9BxpB,KAAKwa,KAAKgP,OAAOze,WAG1C/D,EAAShH,KAAKwa,KAAKgP,SAKtBxiB,GAaDhH,KAAKwqF,WAAaxjF,EAClBhH,KAAK06G,gBAAiB,EAEtB16G,KAAK+8G,gBAAgB/8G,KAAKw7G,eAE1B9nG,EAAK3D,MAAQ/P,KAAKw7G,cAAczrG,MAChC2D,EAAK1D,OAAShQ,KAAKw7G,cAAcxrG,OAEjChQ,KAAKoO,OAAOnC,IAAIjM,KAAKw7G,cAAcv1G,EAAGjG,KAAKw7G,cAAc/uG,KAlBzDzM,KAAKwqF,WAAa,KAClBxqF,KAAK06G,gBAAiB,EAEtBhnG,EAAK3D,MAAQ/P,KAAKw4G,IAAIwE,aAAajtG,MACnC2D,EAAK1D,OAAShQ,KAAKw4G,IAAIwE,aAAahtG,OAEpChQ,KAAKoO,OAAOnC,IAAI,EAAG,GAevB,IAAI6vD,GAAW,EACXC,EAAY,CAEK,iBAAVhsD,GAEP+rD,EAAW/rD,GAKX/P,KAAK26G,kBAAkB10G,EAAIoE,SAAS0F,EAAO,IAAM,IACjD+rD,EAAWpoD,EAAK3D,MAAQ/P,KAAK26G,kBAAkB10G,GAG7B,gBAAX+J,GAEP+rD,EAAY/rD,GAKZhQ,KAAK26G,kBAAkBluG,EAAIpC,SAAS2F,EAAQ,IAAM,IAClD+rD,EAAYroD,EAAK1D,OAAShQ,KAAK26G,kBAAkBluG,GAGrDqvD,EAAW/1D,KAAKI,MAAM21D,GACtBC,EAAYh2D,KAAKI,MAAM41D,GAEvB/7D,KAAKk7G,UAAU1tG,MAAM,EAAG,EAAGsuD,EAAUC,GAErC/7D,KAAKi9G,iBAAiBnhD,EAAUC,GAAW,IAU/C4gD,aAAc,WAEV38G,KAAKk9G,aAAY,IAmBrBN,YAAa,SAAU7sG,EAAOC,GAE1BhQ,KAAKk7G,UAAU1tG,MAAM,EAAG,EAAGuC,EAAOC,GAE9BhQ,KAAKm9G,mBAAqB98G,EAAO64B,aAAa8iF,QAE9Ch8G,KAAKi9G,iBAAiBltG,EAAOC,GAAQ,GAGzChQ,KAAKk9G,aAAY,IAoBrBE,aAAc,SAAUC,EAAQC,EAAQC,EAAOC,GAE3Cx9G,KAAKm7G,iBAAiB3tG,MAAM6vG,EAAQC,GACpCt9G,KAAKo7G,eAAe5tG,MAAc,EAAR+vG,EAAmB,EAARC,GACrCx9G,KAAKk9G,aAAY,IAwBrBO,kBAAmB,SAAUpqF,EAAUhP,GAEnCrkB,KAAK86G,SAAWznF,EAChBrzB,KAAK+6G,gBAAkB12F,GAY3Bq5F,iBAAkB,WAEd,IAAKr9G,EAAOkN,UAAU0M,eAAeja,KAAMA,KAAK07G,2BAC3Cr7G,EAAOkN,UAAU0M,eAAeja,KAAKwa,KAAMxa,KAAK27G,uBACrD,CACI,GAAI5rG,GAAQ/P,KAAK+P,MACbC,EAAShQ,KAAKgQ,MAElBhQ,MAAK07G,wBAAwBluG,MAAM,EAAG,EAAGuC,EAAOC,GAChDhQ,KAAK27G,sBAAsBnuG,MAAM,EAAG,EAAGxN,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAE9DhQ,KAAK80C,MAEL90C,KAAK80C,KAAKgmE,SAAS/qG,EAAOC,GAG9BhQ,KAAK66G,aAAah8F,SAAS7e,KAAM+P,EAAOC,GAGpChQ,KAAKm9G,mBAAqB98G,EAAO64B,aAAa8iF,SAE9Ch8G,KAAKwa,KAAK0F,MAAMpH,OAAO/I,EAAOC,GAC9BhQ,KAAKwa,KAAKwF,KAAKlH,OAAO/I,EAAOC,MAqBzC2tG,UAAW,SAAUlF,EAAUC,EAAWl8B,EAAUm8B,GAEhD34G,KAAKy4G,SAAWA,EAChBz4G,KAAK04G,UAAYA,EAEO,mBAAbl8B,KAEPx8E,KAAKw8E,SAAWA,GAGK,mBAAdm8B,KAEP34G,KAAK24G,UAAYA,IAWzB37F,UAAW,WAEP,KAAIhd,KAAKwa,KAAKmE,KAAKA,KAAQ3e,KAAKq7G,YAAcr7G,KAAKs7G,iBAAnD,CAKA,GAAIsC,GAAe59G,KAAKs7G,eACxBt7G,MAAKu7G,qBAAuBqC,GAAgB,IAAM,EAAI,IAEtD59G,KAAKw4G,IAAIntF,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,OAE1C,IAAIyvG,GAAY79G,KAAKw7G,cAAczrG,MAC/B+tG,EAAa99G,KAAKw7G,cAAcxrG,OAChC2K,EAAS3a,KAAK+8G,gBAAgB/8G,KAAKw7G,eAEnCuC,EAAgBpjG,EAAO5K,QAAU8tG,GAAaljG,EAAO3K,SAAW8tG,EAGhEE,EAAqBh+G,KAAKi+G,0BAE1BF,GAAiBC,KAEbh+G,KAAK86G,UAEL96G,KAAK86G,SAASh0G,KAAK9G,KAAK+6G,gBAAiB/6G,KAAM2a,GAGnD3a,KAAKk+G,eAELl+G,KAAK09G,mBAIT,IAAIS,GAAkC,EAAvBn+G,KAAKs7G,eAGhBt7G,MAAKs7G,gBAAkBsC,IAEvBO,EAAWp4G,KAAKkM,IAAI2rG,EAAc59G,KAAKu7G,uBAG3Cv7G,KAAKs7G,gBAAkBj7G,EAAO0F,KAAKyP,MAAM2oG,EAAU,GAAIn+G,KAAK46G,qBAC5D56G,KAAKq7G,YAAcr7G,KAAKwa,KAAKmE,KAAKA,OAUtCoC,YAAa,WAET/gB,KAAKgd,YAGLhd,KAAKs7G,gBAAkBt7G,KAAK46G,qBAahCqC,iBAAkB,SAAUltG,EAAOC,EAAQ8I,GAEvC9Y,KAAK+P,MAAQA,EAAQ/P,KAAK26G,kBAAkB10G,EAC5CjG,KAAKgQ,OAASA,EAAShQ,KAAK26G,kBAAkBluG,EAE9CzM,KAAKwa,KAAKzK,MAAQ/P,KAAK+P,MACvB/P,KAAKwa,KAAKxK,OAAShQ,KAAKgQ,OAExBhQ,KAAK65G,kBAAoB75G,KAAK+P,MAAQ/P,KAAKgQ,OAC3ChQ,KAAKo+G,yBAEDtlG,IAGA9Y,KAAKwa,KAAK4c,SAASte,OAAO9Y,KAAK+P,MAAO/P,KAAKgQ,QAG3ChQ,KAAKwa,KAAKoC,OAAO6C,QAAQzf,KAAK+P,MAAO/P,KAAKgQ,QAG1ChQ,KAAKwa,KAAKC,MAAM3B,OAAO9Y,KAAK+P,MAAO/P,KAAKgQ,UAYhDouG,uBAAwB,WAEpBp+G,KAAKF,YAAYmG,EAAIjG,KAAKwa,KAAKzK,MAAQ/P,KAAK+P,MAC5C/P,KAAKF,YAAY2M,EAAIzM,KAAKwa,KAAKxK,OAAShQ,KAAKgQ,OAE7ChQ,KAAK25G,oBAAoB1zG,EAAIjG,KAAK+P,MAAQ/P,KAAKwa,KAAKzK,MACpD/P,KAAK25G,oBAAoBltG,EAAIzM,KAAKgQ,OAAShQ,KAAKwa,KAAKxK,OAErDhQ,KAAK45G,YAAc55G,KAAK+P,MAAQ/P,KAAKgQ,OAGjChQ,KAAKwa,KAAK8Q,QAEVtrB,KAAKw4G,IAAIntF,UAAUrrB,KAAKwa,KAAK8Q,OAAQtrB,KAAKoO,QAG9CpO,KAAK2a,OAAOnN,MAAMxN,KAAKoO,OAAOnI,EAAGjG,KAAKoO,OAAO3B,EAAGzM,KAAK+P,MAAO/P,KAAKgQ,QAG7DhQ,KAAKwa,KAAKuF,OAAS/f,KAAKwa,KAAKuF,MAAMlL,OAEnC7U,KAAKwa,KAAKuF,MAAMlL,MAAMrH,MAAMxN,KAAKF,YAAYmG,EAAGjG,KAAKF,YAAY2M,IAmBzE4xG,iBAAkB,SAAUzF,EAAgBC,GAElBnvG,SAAlBmvG,IAA+BA,GAAgB,GAEnD74G,KAAK44G,eAAiBA,EACtB54G,KAAK64G,cAAgBA,EAErB74G,KAAKk9G,aAAY,IAYrBoB,oBAAqB,SAAUC,GAE3B,MAAoB,qBAAhBA,GAAsD,uBAAhBA,EAE/B,WAEc,sBAAhBA,GAAuD,wBAAhBA,EAErC,YAIA,MAYfN,uBAAwB,WAEpB,GAAIO,GAAsBx+G,KAAKy5G,kBAC3BgF,EAAsBz+G,KAAK84G,oBAE/B94G,MAAKy5G,kBAAoBz5G,KAAKw4G,IAAIkB,qBAAqB15G,KAAK+5G,cAAcE,qBAE1Ej6G,KAAK84G,qBAAwB94G,KAAK44G,iBAAmB54G,KAAK0+G,aACrD1+G,KAAK64G,gBAAkB74G,KAAK2+G,UAEjC,IAAIC,GAAUJ,IAAwBx+G,KAAKy5G,kBACvCoF,EAAqBJ,IAAwBz+G,KAAK84G,oBAmBtD,OAjBI+F,KAEI7+G,KAAK84G,qBAEL94G,KAAKk5G,0BAA0Br6F,WAI/B7e,KAAKm5G,0BAA0Bt6F,aAInC+/F,GAAWC,IAEX7+G,KAAKi5G,oBAAoBp6F,SAAS7e,KAAMw+G,EAAqBC,GAG1DG,GAAWC,GAWtBzC,kBAAmB,SAAUjwF,GAEzBnsB,KAAKmsB,MAAQA,EAEbnsB,KAAKk9G,aAAY,IAWrBZ,aAAc,SAAUnwF,GAEpBnsB,KAAKmsB,MAAQA,EAEbnsB,KAAKk9G,aAAY,IAUrB4B,UAAW,WAEP,GAAI3E,GAAWn6G,KAAK+5G,cAAcI,QAE9BA,IAEApyG,OAAOoyG,SAASA,EAASl0G,EAAGk0G,EAAS1tG,IAyB7CmvB,QAAS,WAEL57B,KAAK8+G,YACL9+G,KAAKk9G,aAAY,IAUrBgB,aAAc,WAEV,GAAInwD,GAAY/tD,KAAKm9G,gBAErB,IAAIpvD,IAAc1tD,EAAO64B,aAAa8iF,OAGlC,WADAh8G,MAAK++G,YAoDT,IAhDA/+G,KAAK8+G,YAED9+G,KAAK+5G,cAAcK,6BAInBtuF,SAASg7D,gBAAgB5pE,MAAMw7F,UAAY3wG,OAAOwC,YAAc,MAGhEvK,KAAK84G,qBAEL94G,KAAKg/G,aAIDjxD,IAAc1tD,EAAO64B,aAAa4iF,UAElC97G,KAAKi/G,cAEAlxD,IAAc1tD,EAAO64B,aAAa6iF,UAElC/7G,KAAKk/G,cAAgBl/G,KAAKm/G,gBAC3Bn/G,KAAK+5G,cAAcM,iBAKnBr6G,KAAKo/G,YAAW,GAChBp/G,KAAKq/G,cACLr/G,KAAKo/G,cAILp/G,KAAKo/G,aAGJrxD,IAAc1tD,EAAO64B,aAAashF,UAEvCx6G,KAAK+P,MAAQ/P,KAAKwa,KAAKzK,MACvB/P,KAAKgQ,OAAShQ,KAAKwa,KAAKxK,QAEnB+9C,IAAc1tD,EAAO64B,aAAa+iF,aAEvCj8G,KAAK+P,MAAS/P,KAAKwa,KAAKzK,MAAQ/P,KAAKm7G,iBAAiBl1G,EAAKjG,KAAKo7G,eAAen1G,EAC/EjG,KAAKgQ,OAAUhQ,KAAKwa,KAAKxK,OAAShQ,KAAKm7G,iBAAiB1uG,EAAKzM,KAAKo7G,eAAe3uG,IAIpFzM,KAAK+5G,cAAcM,kBACnBtsD,IAAc1tD,EAAO64B,aAAa6iF,UAAYhuD,IAAc1tD,EAAO64B,aAAa+iF,YACrF,CACI,GAAIthG,GAAS3a,KAAK+8G,gBAAgB/8G,KAAKy7G,YACvCz7G,MAAK+P,MAAQhK,KAAKkM,IAAIjS,KAAK+P,MAAO4K,EAAO5K,OACzC/P,KAAKgQ,OAASjK,KAAKkM,IAAIjS,KAAKgQ,OAAQ2K,EAAO3K,QAI/ChQ,KAAK+P,MAAqB,EAAb/P,KAAK+P,MAClB/P,KAAKgQ,OAAuB,EAAdhQ,KAAKgQ,OAEnBhQ,KAAKs/G,gBAoBTvC,gBAAiB,SAAU/1G,GAEvB,GAAI2T,GAAS3T,GAAU,GAAI3G,GAAOkN,UAC9Bi9E,EAAaxqF,KAAKm/G,eAClBnC,EAAeh9G,KAAKw4G,IAAIwE,aACxBuC,EAAev/G,KAAKw4G,IAAI+G,YAE5B,IAAK/0B,EAKL,CAEI,GAAIg1B,GAAah1B,EAAWi1B,wBACxBC,EAAcl1B,EAAuB,aAAIA,EAAWm1B,aAAaF,wBAA0Bj1B,EAAWi1B,uBAE1G9kG,GAAOnN,MAAMgyG,EAAW30G,KAAO60G,EAAW70G,KAAM20G,EAAW9wG,IAAMgxG,EAAWhxG,IAAK8wG,EAAWzvG,MAAOyvG,EAAWxvG,OAE9G,IAAI4vG,GAAK5/G,KAAK85G,iBAEd,IAAI8F,EAAGh1G,MACP,CACI,GAAIi1G,GAA4B,WAAbD,EAAGh1G,MAAqB20G,EAAevC,CAC1DriG,GAAO/P,MAAQ7E,KAAKkM,IAAI0I,EAAO/P,MAAOi1G,EAAa9vG,OAGvD,GAAI6vG,EAAGjxG,OACP,CACI,GAAIkxG,GAA6B,WAAdD,EAAGjxG,OAAsB4wG,EAAevC,CAC3DriG,GAAOhM,OAAS5I,KAAKkM,IAAI0I,EAAOhM,OAAQkxG,EAAa7vG,aArBzD2K,GAAOnN,MAAM,EAAG,EAAGwvG,EAAajtG,MAAOitG,EAAahtG,OA6BxD,OAJA2K,GAAOnN,MACHzH,KAAK+H,MAAM6M,EAAO1U,GAAIF,KAAK+H,MAAM6M,EAAOlO,GACxC1G,KAAK+H,MAAM6M,EAAO5K,OAAQhK,KAAK+H,MAAM6M,EAAO3K,SAEzC2K,GAcXmlG,YAAa,SAAUhkG,EAAYC,GAE/B,GAAIgkG,GAAe//G,KAAK+8G,gBAAgB/8G,KAAKy7G,aACzCnwF,EAAStrB,KAAKwa,KAAK8Q,OACnB01E,EAAShhG,KAAKghG,MAElB,IAAIllF,EACJ,CACIklF,EAAOn2F,KAAOm2F,EAAOp2F,MAAQ,CAE7B,IAAIo1G,GAAe10F,EAAOm0F,uBAE1B,IAAIz/G,KAAK+P,MAAQgwG,EAAahwG,QAAU/P,KAAK84G,qBAC7C,CACI,GAAImH,GAAcD,EAAan1G,KAAOk1G,EAAa95G,EAC/Ci6G,EAAcH,EAAahwG,MAAQ,EAAM/P,KAAK+P,MAAQ,CAE1DmwG,GAAan6G,KAAKoM,IAAI+tG,EAAY,EAElC,IAAI9xG,GAAS8xG,EAAaD,CAE1Bjf,GAAOn2F,KAAO9E,KAAK+H,MAAMM,GAG7Bkd,EAAOpO,MAAMijG,WAAanf,EAAOn2F,KAAO,KAEpB,IAAhBm2F,EAAOn2F,OAEPm2F,EAAOp2F,QAAUm1G,EAAahwG,MAAQiwG,EAAajwG,MAAQixF,EAAOn2F,MAClEygB,EAAOpO,MAAMkjG,YAAcpf,EAAOp2F,MAAQ,MAIlD,GAAImR,EACJ,CACIilF,EAAOtyF,IAAMsyF,EAAOryF,OAAS,CAE7B,IAAIqxG,GAAe10F,EAAOm0F,uBAE1B,IAAIz/G,KAAKgQ,OAAS+vG,EAAa/vG,SAAWhQ,KAAK84G,qBAC/C,CACI,GAAImH,GAAcD,EAAatxG,IAAMqxG,EAAatzG,EAC9CyzG,EAAcH,EAAa/vG,OAAS,EAAMhQ,KAAKgQ,OAAS,CAE5DkwG,GAAan6G,KAAKoM,IAAI+tG,EAAY,EAElC,IAAI9xG,GAAS8xG,EAAaD,CAC1Bjf,GAAOtyF,IAAM3I,KAAK+H,MAAMM,GAG5Bkd,EAAOpO,MAAMmjG,UAAYrf,EAAOtyF,IAAM,KAEnB,IAAfsyF,EAAOtyF,MAEPsyF,EAAOryF,SAAWoxG,EAAa/vG,OAASgwG,EAAahwG,OAASgxF,EAAOtyF,KACrE4c,EAAOpO,MAAMojG,aAAetf,EAAOryF,OAAS,MAKpDqyF,EAAO/6F,EAAI+6F,EAAOn2F,KAClBm2F,EAAOv0F,EAAIu0F,EAAOtyF,KAYtBqwG,WAAY,WAER/+G,KAAKq/G,YAAY,GAAI,GAErB,IAAI1kG,GAAS3a,KAAK+8G,gBAAgB/8G,KAAKy7G,YACvCz7G,MAAKi9G,iBAAiBtiG,EAAO5K,MAAO4K,EAAO3K,QAAQ,IAYvDsvG,aAAc,WAELt/G,KAAK84G,uBAEN94G,KAAK+P,MAAQ1P,EAAO0F,KAAKyP,MAAMxV,KAAK+P,MAAO/P,KAAKy4G,UAAY,EAAGz4G,KAAKw8E,UAAYx8E,KAAK+P,OACrF/P,KAAKgQ,OAAS3P,EAAO0F,KAAKyP,MAAMxV,KAAKgQ,OAAQhQ,KAAK04G,WAAa,EAAG14G,KAAK24G,WAAa34G,KAAKgQ,SAG7FhQ,KAAKq/G,cAEAr/G,KAAK+5G,cAAcG,YAEhBl6G,KAAKk/G,cAAgBl/G,KAAKq5G,yBAE1Br5G,KAAK8/G,aAAY,GAAM,GAIvB9/G,KAAK8/G,YAAY9/G,KAAKugH,sBAAuBvgH,KAAKwgH,sBAI1DxgH,KAAKo+G,0BAYTiB,YAAa,SAAUoB,EAAUC,GAEZh3G,SAAb+2G,IAA0BA,EAAWzgH,KAAK+P,MAAQ,MACpCrG,SAAdg3G,IAA2BA,EAAY1gH,KAAKgQ,OAAS,KAEzD,IAAIsb,GAAStrB,KAAKwa,KAAK8Q,MAElBtrB,MAAK+5G,cAAcG,YAEpB5uF,EAAOpO,MAAMijG,WAAa,GAC1B70F,EAAOpO,MAAMmjG,UAAY,GACzB/0F,EAAOpO,MAAMkjG,YAAc,GAC3B90F,EAAOpO,MAAMojG,aAAe,IAGhCh1F,EAAOpO,MAAMnN,MAAQ0wG,EACrBn1F,EAAOpO,MAAMlN,OAAS0wG,GAW1BxD,YAAa,SAAUr/F,GAEfA,IAEA7d,KAAKw7G,cAAczrG,MAAQ,EAC3B/P,KAAKw7G,cAAcxrG,OAAS,GAGhChQ,KAAKs7G,gBAAkBt7G,KAAKu7G,sBAUhC77F,MAAO,SAAUsD,GAETA,GAAchjB,KAAK80C,MAEnB90C,KAAK80C,KAAKp1B,SAWlBs/F,WAAY,WAERh/G,KAAK+P,MAAQ/P,KAAKw4G,IAAIwE,aAAajtG,MACnC/P,KAAKgQ,OAAShQ,KAAKw4G,IAAIwE,aAAahtG,QAWxCovG,WAAY,SAAUuB,GAElB,GAIIC,GAJAjmG,EAAS3a,KAAK+8G,gBAAgB/8G,KAAKy7G,aACnC1rG,EAAQ4K,EAAO5K,MACfC,EAAS2K,EAAO3K,MAMhB4wG,GAFAD,EAEa56G,KAAKoM,IAAKnC,EAAShQ,KAAKwa,KAAKxK,OAAUD,EAAQ/P,KAAKwa,KAAKzK,OAIzDhK,KAAKkM,IAAKjC,EAAShQ,KAAKwa,KAAKxK,OAAUD,EAAQ/P,KAAKwa,KAAKzK,OAG1E/P,KAAK+P,MAAQhK,KAAK+H,MAAM9N,KAAKwa,KAAKzK,MAAQ6wG,GAC1C5gH,KAAKgQ,OAASjK,KAAK+H,MAAM9N,KAAKwa,KAAKxK,OAAS4wG,IAWhD3B,YAAa,WAET,GAAItkG,GAAS3a,KAAK+8G,gBAAgB/8G,KAAKy7G,YAEvCz7G,MAAK+P,MAAQ4K,EAAO5K,MACpB/P,KAAKgQ,OAAS2K,EAAO3K,OAEjBhQ,KAAKk/G,eAMLl/G,KAAKw8E,WAELx8E,KAAK+P,MAAQhK,KAAKkM,IAAIjS,KAAK+P,MAAO/P,KAAKw8E,WAGvCx8E,KAAK24G,YAEL34G,KAAKgQ,OAASjK,KAAKkM,IAAIjS,KAAKgQ,OAAQhQ,KAAK24G,cAcjDkI,uBAAwB,WAEpB,GAAIC,GAAWh1F,SAASyvD,cAAc,MAMtC,OAJAulC,GAAS5jG,MAAM8jF,OAAS,IACxB8f,EAAS5jG,MAAMwK,QAAU,IACzBo5F,EAAS5jG,MAAM6jG,WAAa,OAErBD,GAmBXE,gBAAiB,SAAU3pF,EAAW4pF,GAElC,GAAIjhH,KAAKk/G,aAEL,OAAO,CAGX,KAAKl/G,KAAK+5G,cAAcC,mBACxB,CAEI,GAAIvzF,GAAQzmB,IAIZ,YAHAwlF,YAAW,WACP/+D,EAAMi2F,mBACP,IAIP,GAA2C,mBAAvC18G,KAAK+5G,cAAcO,gBACvB,CACI,GAAIv6F,GAAQ/f,KAAKwa,KAAKuF,KAEtB,IAAIA,EAAMye,eACNze,EAAMye,gBAAkBze,EAAM0e,eAC7BwiF,GAAmBA,KAAoB,GAGxC,WADAlhG,GAAMye,cAAcgO,mBAAmB,kBAAmBxsC,KAAKghH,gBAAiBhhH,MAAOq3B,GAAW,IAKjF,mBAAdA,IAA6Br3B,KAAKwa,KAAK4J,aAAe/jB,EAAOI,SAEpET,KAAKwa,KAAKsC,MAAMie,SAAW1D,EAG/B,IAAIypF,GAAW9gH,KAAKo5G,gBAEf0H,KAED9gH,KAAKkhH,uBAELlhH,KAAKq5G,yBAA2Br5G,KAAK6gH,yBACrCC,EAAW9gH,KAAKq5G,yBAGpB,IAAI8H,IACAC,cAAeN,EAKnB,IAFA9gH,KAAKs5G,iBAAiBz6F,SAAS7e,KAAMmhH,GAEjCnhH,KAAKq5G,yBACT,CAGI,GAAI/tF,GAAStrB,KAAKwa,KAAK8Q,OACnB9B,EAAS8B,EAAOk/D,UACpBhhE,GAAOggE,aAAas3B,EAAUx1F,GAC9Bw1F,EAASv2B,YAAYj/D,GAYzB,MATItrB,MAAKwa,KAAKkS,OAAOs4D,mBAEjB87B,EAAS9gH,KAAKwa,KAAKkS,OAAOo4D,mBAAmBuC,QAAQg6B,sBAIrDP,EAAS9gH,KAAKwa,KAAKkS,OAAOo4D,sBAGvB,GAWXw8B,eAAgB,WAEZ,MAAKthH,MAAKk/G,cAAiBl/G,KAAK+5G,cAAcC,oBAK9CluF,SAAS9rB,KAAKwa,KAAKkS,OAAOq4D,qBAEnB,IALI,GAgBfm8B,qBAAsB,WAElB,GAAIJ,GAAW9gH,KAAKq5G,wBAEpB,IAAIyH,GAAYA,EAASt2B,WACzB,CAGI,GAAIhhE,GAASs3F,EAASt2B,UACtBhhE,GAAOggE,aAAaxpF,KAAKwa,KAAK8Q,OAAQw1F,GACtCt3F,EAAO6I,YAAYyuF,GAGvB9gH,KAAKq5G,yBAA2B,MAYpCkI,eAAgB,SAAUC,GAEtB,GAAIC,KAAkBzhH,KAAKq5G,yBACvByH,EAAW9gH,KAAKq5G,0BAA4Br5G,KAAKo5G,gBAEjDoI,IAEIC,GAAiBzhH,KAAK88G,sBAAwBz8G,EAAO64B,aAAa4iF,YAG9DgF,IAAa9gH,KAAKwa,KAAK8Q,SAEvBtrB,KAAKi7G,oBACDyG,YAAaZ,EAAS5jG,MAAMnN,MAC5B4xG,aAAcb,EAAS5jG,MAAMlN,QAGjC8wG,EAAS5jG,MAAMnN,MAAQ,OACvB+wG,EAAS5jG,MAAMlN,OAAS,SAO5BhQ,KAAKi7G,qBAEL6F,EAAS5jG,MAAMnN,MAAQ/P,KAAKi7G,mBAAmByG,YAC/CZ,EAAS5jG,MAAMlN,OAAShQ,KAAKi7G,mBAAmB0G,aAEhD3hH,KAAKi7G,mBAAqB,MAI9Bj7G,KAAKi9G,iBAAiBj9G,KAAKk7G,UAAUnrG,MAAO/P,KAAKk7G,UAAUlrG,QAAQ,GACnEhQ,KAAKq/G,gBAYb7C,iBAAkB,SAAUrwF,GAExBnsB,KAAKmsB,MAAQA,EAETnsB,KAAKk/G,cAELl/G,KAAKuhH,gBAAe,GAEpBvhH,KAAKk+G,eACLl+G,KAAKk9G,aAAY,KAIjBl9G,KAAKuhH,gBAAe,GAEpBvhH,KAAKkhH,uBAELlhH,KAAKk+G,eACLl+G,KAAKk9G,aAAY,IAGrBl9G,KAAKu5G,mBAAmB16F,SAAS7e,KAAMA,KAAK+P,MAAO/P,KAAKgQ,SAY5D0sG,gBAAiB,SAAUvwF,GAEvBnsB,KAAKmsB,MAAQA,EAEbnsB,KAAKkhH,uBAEL94G,QAAQG,KAAK,+FAEbvI,KAAKw5G,kBAAkB36F,SAAS7e,OAmBpC4hH,YAAa,SAAU7qF,EAAQhnB,EAAOC,EAAQ6xG,GAM1C,GAJcn4G,SAAVqG,IAAuBA,EAAQ/P,KAAK+P,OACzBrG,SAAXsG,IAAwBA,EAAShQ,KAAKgQ,QACxBtG,SAAdm4G,IAA2BA,GAAY,IAEtC9qF,IAAWA,EAAc,MAE1B,MAAOA,EAMX,IAHAA,EAAOliB,MAAM5O,EAAI,EACjB8wB,EAAOliB,MAAMpI,EAAI,EAEZsqB,EAAOhnB,OAAS,GAAOgnB,EAAO/mB,QAAU,GAAgB,GAATD,GAA0B,GAAVC,EAEhE,MAAO+mB,EAGX,IAAI+qF,GAAU/xG,EACVgyG,EAAWhrF,EAAO/mB,OAASD,EAASgnB,EAAOhnB,MAE3CiyG,EAAWjrF,EAAOhnB,MAAQC,EAAU+mB,EAAO/mB,OAC3CiyG,EAAUjyG,EAEVkyG,EAAgBF,EAAUjyG,CA0B9B,OAtBImyG,GAFAA,EAEeL,GAICA,EAGhBK,GAEAnrF,EAAOhnB,MAAQhK,KAAKI,MAAM27G,GAC1B/qF,EAAO/mB,OAASjK,KAAKI,MAAM47G,KAI3BhrF,EAAOhnB,MAAQhK,KAAKI,MAAM67G,GAC1BjrF,EAAO/mB,OAASjK,KAAKI,MAAM87G,IAOxBlrF,GAWXjT,QAAS,WAEL9jB,KAAKwa,KAAKiI,SAASK,OAAO9iB,KAAK28G,aAAc38G,MAE7C+H,OAAOwlB,oBAAoB,oBAAqBvtB,KAAKm8G,oBAAoB,GACzEp0G,OAAOwlB,oBAAoB,SAAUvtB,KAAKq8G,eAAe,GAErDr8G,KAAK+5G,cAAcC,qBAEnBluF,SAASyB,oBAAoB,yBAA0BvtB,KAAKu8G,mBAAmB,GAC/EzwF,SAASyB,oBAAoB,sBAAuBvtB,KAAKu8G,mBAAmB,GAC5EzwF,SAASyB,oBAAoB,qBAAsBvtB,KAAKu8G,mBAAmB,GAC3EzwF,SAASyB,oBAAoB,mBAAoBvtB,KAAKu8G,mBAAmB,GAEzEzwF,SAASyB,oBAAoB,wBAAyBvtB,KAAKy8G,kBAAkB,GAC7E3wF,SAASyB,oBAAoB,qBAAsBvtB,KAAKy8G,kBAAkB,GAC1E3wF,SAASyB,oBAAoB,oBAAqBvtB,KAAKy8G,kBAAkB,GACzE3wF,SAASyB,oBAAoB,kBAAmBvtB,KAAKy8G,kBAAkB,MAOnFp8G,EAAO64B,aAAa7yB,UAAU8B,YAAc9H,EAAO64B,aAYnD3xB,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,kBAEjD2F,IAAK,WACD,GAAIhM,KAAK06G,gBACJ16G,KAAKk/G,eAAiBl/G,KAAKq5G,yBAE5B,MAAO,KAGX,IAAI7uB,GAAaxqF,KAAKwa,KAAK8Q,QAAUtrB,KAAKwa,KAAK8Q,OAAOk/D,UACtD,OAAOA,IAAc,QA0C7BjjF,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,aAEjD2F,IAAK,WAED,MAAOhM,MAAKu6G,YAIhBtuG,IAAK,SAAU1C,GAaX,MAXIA,KAAUvJ,KAAKu6G,aAEVv6G,KAAKk/G,eAENl/G,KAAKi9G,iBAAiBj9G,KAAKk7G,UAAUnrG,MAAO/P,KAAKk7G,UAAUlrG,QAAQ,GACnEhQ,KAAKk9G,aAAY,IAGrBl9G,KAAKu6G,WAAahxG,GAGfvJ,KAAKu6G,cAcpBhzG,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,uBAEjD2F,IAAK,WAED,MAAOhM,MAAKy6G,sBAIhBxuG,IAAK,SAAU1C,GAmBX,MAjBIA,KAAUvJ,KAAKy6G,uBAGXz6G,KAAKk/G,cAELl/G,KAAKuhH,gBAAe,GACpBvhH,KAAKy6G,qBAAuBlxG,EAC5BvJ,KAAKuhH,gBAAe,GAEpBvhH,KAAKk9G,aAAY,IAIjBl9G,KAAKy6G,qBAAuBlxG,GAI7BvJ,KAAKy6G,wBAgBpBlzG,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,oBAEjD2F,IAAK,WAED,MAAOhM,MAAKk/G,aAAel/G,KAAKy6G,qBAAuBz6G,KAAKu6G,cAkBpEhzG,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,yBAEjD2F,IAAK,WAED,MAAOhM,MAAK+4G,wBAIhB9sG,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAK+4G,yBAEf/4G,KAAK+4G,uBAAyBxvG,EAC9BvJ,KAAKk9G,aAAY,OA0B7B31G,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,uBAEjD2F,IAAK,WAED,MAAOhM,MAAKg5G,sBAIhB/sG,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKg5G,uBAEfh5G,KAAKg5G,qBAAuBzvG,EAC5BvJ,KAAKk9G,aAAY,OAa7B31G,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,gBAEjD2F,IAAK,WACD,SAAU8f,SAA4B,mBAClCA,SAAkC,yBAClCA,SAA+B,sBAC/BA,SAA8B,wBAY1CvkB,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,cAEjD2F,IAAK,WACD,MAA4D,aAArDhM,KAAKs+G,oBAAoBt+G,KAAKy5G,sBAY7ClyG,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,eAEjD2F,IAAK,WACD,MAA4D,cAArDhM,KAAKs+G,oBAAoBt+G,KAAKy5G,sBAe7ClyG,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,kBAEjD2F,IAAK,WACD,MAAQhM,MAAKgQ,OAAShQ,KAAK+P,SAenCxI,OAAO2E,eAAe7L,EAAO64B,aAAa7yB,UAAW,mBAEjD2F,IAAK,WACD,MAAQhM,MAAK+P,MAAQ/P,KAAKgQ,UA2BlC3P,EAAOmI,MAAMuxB,MAAQ,SAAUvf,GAK3Bxa,KAAKwa,KAAOA,EAKZxa,KAAK+2B,OAAS,KAKd/2B,KAAKmiH,IAAM,KAKXniH,KAAKsrB,OAAS,KAKdtrB,KAAKqkB,QAAU,KAMfrkB,KAAKsyD,KAAO,eAKZtyD,KAAKoiH,YAAc,IAKnBpiH,KAAKg4E,WAAa,GAKlBh4E,KAAKqiH,cAAe,EAMpBriH,KAAK69E,SAAW,EAMhB79E,KAAK89E,SAAW,EAMhB99E,KAAKsiH,aAAe,EAKpBtiH,KAAKynB,OAAQ,GAIjBpnB,EAAOmI,MAAMuxB,MAAM1zB,WAQfsW,KAAM,WAEE3c,KAAKwa,KAAK4J,aAAe/jB,EAAOI,OAEhCT,KAAKqkB,QAAUrkB,KAAKwa,KAAK6J,SAIzBrkB,KAAKmiH,IAAM,GAAI9hH,GAAO6tD,WAAWluD,KAAKwa,KAAM,UAAWxa,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAAQ,GAC1FhQ,KAAK+2B,OAAS/2B,KAAKwa,KAAKqF,KAAKuJ,MAAM,EAAG,EAAGppB,KAAKmiH,KAC9CniH,KAAKwa,KAAKsC,MAAMC,SAAS/c,KAAK+2B,QAE9B/2B,KAAKwa,KAAK3F,MAAMgmG,aAAahpG,IAAI7R,KAAK8Y,OAAQ9Y,MAE9CA,KAAKsrB,OAASxlB,KAAKw6B,WAAW5f,OAAO1gB,KAAMA,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QACtEhQ,KAAKqkB,QAAUrkB,KAAKsrB,OAAOiV,WAAW,QAe9CznB,OAAQ,SAAUypG,EAAcxyG,EAAOC,GAEnChQ,KAAKmiH,IAAIrpG,OAAO/I,EAAOC,GAEvBhQ,KAAKsrB,OAAOvb,MAAQA,EACpB/P,KAAKsrB,OAAOtb,OAASA,GAUzBgN,UAAW,WAEHhd,KAAKynB,OAASznB,KAAK+2B,SAEnB/2B,KAAKmiH,IAAIlkG,QACTje,KAAKmiH,IAAI/oD,KAAKp5D,KAAKsrB,OAAQ,EAAG,GAE9BtrB,KAAKqkB,QAAQ0uB,UAAU,EAAG,EAAG/yC,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QACxDhQ,KAAKynB,OAAQ,IAUrB/H,MAAO,WAEC1f,KAAKqkB,SAELrkB,KAAKqkB,QAAQ0uB,UAAU,EAAG,EAAG/yC,KAAKwa,KAAKzK,MAAO/P,KAAKwa,KAAKxK,QAGxDhQ,KAAK+2B,QAEL/2B,KAAKmiH,IAAIlkG,SAejBvN,MAAO,SAAUzK,EAAGwG,EAAGuR,EAAOokG,GAET,gBAANn8G,KAAkBA,EAAI,GAChB,gBAANwG,KAAkBA,EAAI,GACjCuR,EAAQA,GAAS,mBACGtU,SAAhB04G,IAA6BA,EAAc,GAE/CpiH,KAAK69E,SAAW53E,EAChBjG,KAAK89E,SAAWrxE,EAChBzM,KAAKwiH,aAAexkG,EACpBhe,KAAKoiH,YAAcA,EAEnBpiH,KAAKynB,OAAQ,EAEbznB,KAAKqkB,QAAQC,OACbtkB,KAAKqkB,QAAQE,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACzCvkB,KAAKqkB,QAAQi6C,YAActgD,EAC3Bhe,KAAKqkB,QAAQg1C,UAAYr7C,EACzBhe,KAAKqkB,QAAQiuC,KAAOtyD,KAAKsyD,KACzBtyD,KAAKqkB,QAAQk4C,YAAcv8D,KAAKsiH,cAUpCrmF,KAAM,WAEFj8B,KAAKqkB,QAAQG,WAUjBpT,KAAM,WAIF,IAAK,GAFDnL,GAAIjG,KAAK69E,SAEJ/1E,EAAI,EAAGA,EAAIf,UAAUc,OAAQC,IAE9B9H,KAAKqiH,eAELriH,KAAKqkB,QAAQg1C,UAAY,aACzBr5D,KAAKqkB,QAAQ05C,SAASh3D,UAAUe,GAAI7B,EAAI,EAAGjG,KAAK89E,SAAW,GAC3D99E,KAAKqkB,QAAQg1C,UAAYr5D,KAAKwiH,cAGlCxiH,KAAKqkB,QAAQ05C,SAASh3D,UAAUe,GAAI7B,EAAGjG,KAAK89E,UAE5C73E,GAAKjG,KAAKoiH,WAGdpiH,MAAK89E,UAAY99E,KAAKg4E,YAa1ByqC,UAAW,SAAUxiG,EAAOha,EAAGwG,EAAGuR,GAE9Bhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,UAAY6O,EAAMlU,IAAM,YAAckU,EAAMzF,KAAKyF,MAAMgkF,aACjEjkG,KAAKoR,KAAK,cAAgBpR,KAAKwa,KAAKsF,MAAMgmF,aAAa7lF,EAAMlU,KAAO,sBAAwBkU,EAAM8zF,iBAClG/zG,KAAKoR,KAAK,YAAc6O,EAAM41F,UAAY,cAAgB51F,EAAM+jF,YAChEhkG,KAAKoR,KAAK,mBAAqB6O,EAAMszF,cAAgB,aAAetzF,EAAM89E,WAC1E/9F,KAAKoR,KAAK,SAAW6O,EAAMuzF,aAC3BxzG,KAAKoR,KAAK,WAAa6O,EAAMjG,OAAS,WAAaiG,EAAMm2F,MACzDp2G,KAAKoR,KAAK,aAAe6O,EAAM4uF,cAAgB,WAAa5uF,EAAM6uF,eAEtC,KAAxB7uF,EAAM4zF,gBAEN7zG,KAAKoR,KAAK,WAAa6O,EAAM4zF,cAAgB,cAAgB5zF,EAAMpE,SAAW,SAAWoE,EAAMwzF,WAAa,KAC5GzzG,KAAKoR,KAAK,UAAY6O,EAAMqzF,QAAQrzF,EAAM4zF,eAAenjG,MAAQ,UAAYuP,EAAMqzF,QAAQrzF,EAAM4zF,eAAe53E,MAChHj8B,KAAKoR,KAAK,aAAe6O,EAAM1G,WAGnCvZ,KAAKi8B,QAaTymF,WAAY,SAAU9lG,EAAQ3W,EAAGwG,EAAGuR,GAEhChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,WAAawL,EAAO7M,MAAQ,MAAQ6M,EAAO5M,OAAS,KAC9DhQ,KAAKoR,KAAK,MAAQwL,EAAO3W,EAAI,OAAS2W,EAAOnQ,GAEzCmQ,EAAOjC,QAEP3a,KAAKoR,KAAK,aAAewL,EAAOjC,OAAO1U,EAAI,OAAS2W,EAAOjC,OAAOlO,EAAI,OAASmQ,EAAOjC,OAAO5K,MAAQ,OAAS6M,EAAOjC,OAAO3K,QAGhIhQ,KAAKoR,KAAK,WAAawL,EAAOlC,KAAKzU,EAAI,OAAS2W,EAAOlC,KAAKjO,EAAI,OAASmQ,EAAOlC,KAAK3K,MAAQ,OAAS6M,EAAOlC,KAAK1K,QAElHhQ,KAAKoR,KAAK,kBAAoBwL,EAAO3B,aACrCjb,KAAKi8B,QAaTq/D,MAAO,SAAUA,EAAOr1F,EAAGwG,EAAGuR,GAE1Bhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,mBAAqBkqF,EAAMQ,QAAU,aAAeR,EAAMS,QAAU,KAC9E/7F,KAAKoR,KAAK,cAAgBkqF,EAAMhqE,KAAO,cAAgBgqE,EAAMz/E,UAC7D7b,KAAKoR,KAAK,WAAakqF,EAAMz6E,OAAS,YAAcy6E,EAAMzzF,QAC1D7H,KAAKi8B,QAcTnT,QAAS,SAAUA,EAAS65F,EAAUC,EAAWC,EAAS7kG,GAEvC,MAAX8K,IAKapf,SAAbi5G,IAA0BA,GAAW,GACzCC,EAAYA,GAAa,oBACzBC,EAAUA,GAAW,oBAEjBF,KAAa,GAAQ75F,EAAQ8e,QAAS,IAK1C5nC,KAAK0Q,MAAMoY,EAAQ7iB,EAAG6iB,EAAQrc,EAAI,IAAKuR,GACvChe,KAAKqkB,QAAQ25C,YACbh+D,KAAKqkB,QAAQ45C,IAAIn1C,EAAQ7iB,EAAG6iB,EAAQrc,EAAGqc,EAAQqU,OAAO9vB,OAAQ,EAAa,EAAVtH,KAAK+G,IAElEgc,EAAQjE,OAER7kB,KAAKqkB,QAAQg1C,UAAYupD,EAIzB5iH,KAAKqkB,QAAQg1C,UAAYwpD,EAG7B7iH,KAAKqkB,QAAQie,OACbtiC,KAAKqkB,QAAQ65C,YAGbl+D,KAAKqkB,QAAQ25C,YACbh+D,KAAKqkB,QAAQ85C,OAAOr1C,EAAQohB,aAAajkC,EAAG6iB,EAAQohB,aAAaz9B,GACjEzM,KAAKqkB,QAAQ+5C,OAAOt1C,EAAQvP,SAAStT,EAAG6iB,EAAQvP,SAAS9M,GACzDzM,KAAKqkB,QAAQg6C,UAAY,EACzBr+D,KAAKqkB,QAAQk6C,SACbv+D,KAAKqkB,QAAQ65C,YAGbl+D,KAAKoR,KAAK,OAAS0X,EAAQnU,GAAK,YAAcmU,EAAQjE,QACtD7kB,KAAKoR,KAAK,YAAc0X,EAAQg6F,OAAS,aAAeh6F,EAAQi6F,QAChE/iH,KAAKoR,KAAK,aAAe0X,EAAQ7iB,EAAI,cAAgB6iB,EAAQrc,EAAI,QAAUqc,EAAQkc,YACnFhlC,KAAKoR,KAAK,aAAe0X,EAAQjN,SAAW,OAC5C7b,KAAKoR,KAAK,YAAc0X,EAAQ6e,OAAS,WAAa7e,EAAQ8e,MAC9D5nC,KAAKi8B,UAaT+mF,gBAAiB,SAAUjsF,EAAQ9wB,EAAGwG,EAAGuR,GAErChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,kBAAoB2lB,EAAOhnB,MAAQ,MAAQgnB,EAAO/mB,OAAS,KACrEhQ,KAAKoR,KAAK,MAAQ2lB,EAAOhX,MAAM6xB,WAAW7oB,QAAQ,GAAK,OAASgO,EAAOhX,MAAM8xB,WAAW9oB,QAAQ,IAChG/oB,KAAKoR,KAAK,SAAW2lB,EAAOhX,MAAMmyB,cAAgB,cAAgBnb,EAAOhX,MAAMu0B,eAAevrB,QAAQ,IACtG/oB,KAAKoR,KAAK,SAAW2lB,EAAOhX,MAAM+xB,cAAgB,cAAgB/a,EAAOhX,MAAMkxB,eAAeloB,QAAQ,IACtG/oB,KAAKoR,KAAK,cAAgB2lB,EAAOhX,MAAMq0B,WAAa,cAAgBrd,EAAOhX,MAAMw0B,WACjFv0C,KAAKi8B,QAaTlwB,IAAK,SAAUA,EAAK9F,EAAGwG,EAAGuR,GAEtBhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,KAExBhe,KAAKoR,KAAK,OAAQrF,EAAI0yC,QAAS,UAAW1yC,EAAI47B,QAC9C3nC,KAAKoR,KAAK,YAAarF,EAAIk3G,SAAU,UAAWl3G,EAAIm3G,QACpDljH,KAAKoR,KAAK,aAAcrF,EAAI87B,SAAS9e,QAAQ,GAAI,YAAahd,EAAI8P,SAASkN,QAAQ,IAEnF/oB,KAAKi8B,QAYTknF,UAAW,SAAUl9G,EAAGwG,EAAGuR,GAEvBhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GACjBhe,KAAKoR,KAAK,SACVpR,KAAKoR,KAAK,MAAQpR,KAAKwa,KAAKuF,MAAM9Z,EAAI,OAASjG,KAAKwa,KAAKuF,MAAMtT,GAC/DzM,KAAKoR,KAAK,YAAcpR,KAAKwa,KAAKuF,MAAM+iG,OAAS,aAAe9iH,KAAKwa,KAAKuF,MAAMgjG,QAChF/iH,KAAKoR,KAAK,YAAcpR,KAAKwa,KAAKuF,MAAMlL,MAAM5O,EAAE8iB,QAAQ,GAAK,aAAe/oB,KAAKwa,KAAKuF,MAAMlL,MAAM5O,EAAE8iB,QAAQ,IAC5G/oB,KAAKoR,KAAK,aAAepR,KAAKwa,KAAKuF,MAAMye,cAAc8K,QAAU,cAAgBtpC,KAAKwa,KAAKuF,MAAMye,cAAc+K,SAC/GvpC,KAAKi8B,QAYTmnF,aAAc,SAAUrsF,EAAQ/Y,EAAOqlG,GAEnC,GAAI1oG,GAASoc,EAAOzpB,WAEpBqN,GAAO1U,GAAKjG,KAAKwa,KAAKoC,OAAO3W,EAC7B0U,EAAOlO,GAAKzM,KAAKwa,KAAKoC,OAAOnQ,EAE7BzM,KAAKsjH,UAAU3oG,EAAQqD,EAAOqlG,IAYlCE,aAAc,SAAUhyD,EAAMvzC,EAAOqlG,GAEjC,GAAI//C,GAAW/R,EAAK+R,SAEhBkgD,EAAOxjH,IAEXsjE,GAAS77D,QAAQ,SAASg8G,GACtBD,EAAKF,UAAUG,EAASzlG,EAAOqlG,IAChCrjH,OAaP0jH,WAAY,SAAU3sF,EAAQ9wB,EAAGwG,EAAGuR,GAEhChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,GAEjBhe,KAAKoR,KAAK,aAAoB2lB,EAAOhnB,MAAQ,MAAQgnB,EAAO/mB,OAAS,aAAe+mB,EAAO1N,OAAOpjB,EAAI,MAAQ8wB,EAAO1N,OAAO5c,GAC5HzM,KAAKoR,KAAK,MAAQ2lB,EAAO9wB,EAAE8iB,QAAQ,GAAK,OAASgO,EAAOtqB,EAAEsc,QAAQ,IAClE/oB,KAAKoR,KAAK,UAAY2lB,EAAO7oB,MAAM6a,QAAQ,GAAK,cAAgBgO,EAAOP,SAASzN,QAAQ,IACxF/oB,KAAKoR,KAAK,YAAc2lB,EAAOlc,QAAU,eAAiBkc,EAAOswB,UACjErnD,KAAKoR,KAAK,aAAe2lB,EAAOwwB,QAAQthD,EAAE8iB,QAAQ,GAAK,OAASgO,EAAOwwB,QAAQ96C,EAAEsc,QAAQ,GAAK,OAASgO,EAAOwwB,QAAQx3C,MAAMgZ,QAAQ,GAAK,OAASgO,EAAOwwB,QAAQv3C,OAAO+Y,QAAQ,IAEhL/oB,KAAKi8B,QAaT0nF,aAAc,SAAU5sF,EAAQ9wB,EAAGwG,EAAGuR,GAElChe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,KAEpB+Y,EAAO3rB,MAEPpL,KAAKoR,KAAK2lB,EAAO3rB,MAGrBpL,KAAKoR,KAAK,KAAM2lB,EAAO9wB,EAAE8iB,QAAQ,GAAI,KAAMgO,EAAOtqB,EAAEsc,QAAQ,IAC5D/oB,KAAKoR,KAAK,SAAU2lB,EAAOxd,SAAStT,EAAE8iB,QAAQ,GAAI,SAAUgO,EAAOxd,SAAS9M,EAAEsc,QAAQ,IACtF/oB,KAAKoR,KAAK,WAAY2lB,EAAOtc,MAAMxU,EAAE8iB,QAAQ,GAAI,WAAYgO,EAAOtc,MAAMhO,EAAEsc,QAAQ,IAEpF/oB,KAAKi8B,QAaT2nF,SAAU,SAAUxyG,EAAMnL,EAAGwG,EAAGuR,GAE5Bhe,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,IACxBhe,KAAKoR,KAAK,WAAYA,EAAKV,MAAMzK,EAAE8iB,QAAQ,GAAI,WAAY3X,EAAKV,MAAMjE,EAAEsc,QAAQ,IAChF/oB,KAAKoR,KAAK,SAAUA,EAAKT,IAAI1K,EAAE8iB,QAAQ,GAAI,SAAU3X,EAAKT,IAAIlE,EAAEsc,QAAQ,IACxE/oB,KAAKoR,KAAK,UAAWA,EAAKvJ,OAAOkhB,QAAQ,GAAI,SAAU3X,EAAKlD,OAC5DlO,KAAKi8B,QAaT09B,MAAO,SAAU1zD,EAAGwG,EAAGuR,EAAOhU,GAE1BA,EAAOA,GAAQ,EAEfhK,KAAK0Q,QACL1Q,KAAKqkB,QAAQg1C,UAAYr7C,EACzBhe,KAAKqkB,QAAQi1C,SAASrzD,EAAGwG,EAAGzC,EAAMA,GAClChK,KAAKi8B,QAaT4nF,KAAM,SAAUvuF,EAAQtX,EAAOqlG,EAAQS,GAEpBp6G,SAAX25G,IAAwBA,GAAS,GACnB35G,SAAdo6G,IAA2BA,EAAY,GAE3C9lG,EAAQA,GAAS,oBAEjBhe,KAAK0Q,QAEL1Q,KAAKqkB,QAAQg1C,UAAYr7C,EACzBhe,KAAKqkB,QAAQi6C,YAActgD,EAEvBsX,YAAkBj1B,GAAOkN,WAA2B,IAAdu2G,EAElCT,EAEArjH,KAAKqkB,QAAQi1C,SAAShkC,EAAOrvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGqvB,EAAO7oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG6oB,EAAOvlB,MAAOulB,EAAOtlB,QAIzGhQ,KAAKqkB,QAAQivD,WAAWh+C,EAAOrvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGqvB,EAAO7oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG6oB,EAAOvlB,MAAOulB,EAAOtlB,QAG1GslB,YAAkBj1B,GAAOmM,QAAwB,IAAds3G,GAExC9jH,KAAKqkB,QAAQ25C,YACbh+D,KAAKqkB,QAAQ45C,IAAI3oC,EAAOrvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGqvB,EAAO7oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG6oB,EAAOjoB,OAAQ,EAAa,EAAVtH,KAAK+G,IAAQ,GAC9G9M,KAAKqkB,QAAQ65C,YAETmlD,EAEArjH,KAAKqkB,QAAQie,OAIbtiC,KAAKqkB,QAAQk6C,UAGZjpC,YAAkBj1B,GAAO2M,OAAuB,IAAd82G,EAEvC9jH,KAAKqkB,QAAQi1C,SAAShkC,EAAOrvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGqvB,EAAO7oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG,EAAG,IAElF6oB,YAAkBj1B,GAAOgQ,MAAsB,IAAdyzG,KAEtC9jH,KAAKqkB,QAAQg6C,UAAY,EACzBr+D,KAAKqkB,QAAQ25C,YACbh+D,KAAKqkB,QAAQ85C,OAAQ7oC,EAAO5kB,MAAMzK,EAAI,GAAOjG,KAAKwa,KAAKoC,OAAO3W,EAAIqvB,EAAO5kB,MAAMjE,EAAI,GAAOzM,KAAKwa,KAAKoC,OAAOnQ,GAC3GzM,KAAKqkB,QAAQ+5C,OAAQ9oC,EAAO3kB,IAAI1K,EAAI,GAAOjG,KAAKwa,KAAKoC,OAAO3W,EAAIqvB,EAAO3kB,IAAIlE,EAAI,GAAOzM,KAAKwa,KAAKoC,OAAOnQ,GACvGzM,KAAKqkB,QAAQ65C,YACbl+D,KAAKqkB,QAAQk6C,UAGjBv+D,KAAKi8B,QAYTqnF,UAAW,SAAUhuF,EAAQtX,EAAOqlG,GAEjB35G,SAAX25G,IAAwBA,GAAS,GAErCrlG,EAAQA,GAAS,uBAEjBhe,KAAK0Q,QAED2yG,GAEArjH,KAAKqkB,QAAQg1C,UAAYr7C,EACzBhe,KAAKqkB,QAAQi1C,SAAShkC,EAAOrvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGqvB,EAAO7oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG6oB,EAAOvlB,MAAOulB,EAAOtlB,UAIzGhQ,KAAKqkB,QAAQi6C,YAActgD,EAC3Bhe,KAAKqkB,QAAQivD,WAAWh+C,EAAOrvB,EAAIjG,KAAKwa,KAAKoC,OAAO3W,EAAGqvB,EAAO7oB,EAAIzM,KAAKwa,KAAKoC,OAAOnQ,EAAG6oB,EAAOvlB,MAAOulB,EAAOtlB,SAG/GhQ,KAAKi8B,QAcTw1B,KAAM,SAAUA,EAAMxrD,EAAGwG,EAAGuR,EAAOs0C,GAE/Bt0C,EAAQA,GAAS,mBACjBs0C,EAAOA,GAAQ,eAEftyD,KAAK0Q,QACL1Q,KAAKqkB,QAAQiuC,KAAOA,EAEhBtyD,KAAKqiH,eAELriH,KAAKqkB,QAAQg1C,UAAY,aACzBr5D,KAAKqkB,QAAQ05C,SAAStM,EAAMxrD,EAAI,EAAGwG,EAAI,IAG3CzM,KAAKqkB,QAAQg1C,UAAYr7C,EACzBhe,KAAKqkB,QAAQ05C,SAAStM,EAAMxrD,EAAGwG,GAE/BzM,KAAKi8B,QAWT8nF,SAAU,SAAUC,EAAUhmG,GAE1BA,EAAQA,GAAS,oBAEjBhe,KAAK0Q,OAEL,IAAIiK,GAASqpG,EAASrpG,MAEtB,IAA8B,IAA1BqpG,EAASlzB,MAAMjpF,OACnB,CACI7H,KAAKqkB,QAAQi6C,YAActgD,EAC3Bhe,KAAKqkB,QAAQivD,WAAW34D,EAAO1U,EAAG0U,EAAOlO,EAAGkO,EAAO5K,MAAO4K,EAAO3K,QACjEhQ,KAAKyxD,KAAK,SAAWuyD,EAASnzB,QAAQhpF,OAAQ8S,EAAO1U,EAAI,EAAG0U,EAAOlO,EAAI,GAAI,eAAgB,gBAE3FzM,KAAKqkB,QAAQi6C,YAAc,cAE3B,KAAK,GAAIx2D,GAAI,EAAGA,EAAIk8G,EAASnzB,QAAQhpF,OAAQC,IAEzC9H,KAAKqkB,QAAQivD,WAAW0wC,EAASnzB,QAAQ/oF,GAAG7B,EAAG+9G,EAASnzB,QAAQ/oF,GAAG2E,EAAGu3G,EAASnzB,QAAQ/oF,GAAGiI,MAAOi0G,EAASnzB,QAAQ/oF,GAAGkI,YAKzH,KAAK,GAAIlI,GAAI,EAAGA,EAAIk8G,EAASlzB,MAAMjpF,OAAQC,IAEvC9H,KAAK+jH,SAASC,EAASlzB,MAAMhpF,GAIrC9H,MAAKi8B,QAcTtM,KAAM,SAAUoH,EAAQ/Y,EAAOqlG,GAEvBtsF,EAAOpH,OAEP3vB,KAAK0Q,QAEDqmB,EAAOpH,KAAKznB,OAAS7H,EAAOutB,QAAQC,OAEpCxtB,EAAOutB,QAAQukC,OAAO8xD,KAAKrjG,OAAO5gB,KAAKqkB,QAAS0S,EAAOpH,KAAM3R,EAAOqlG,GAE/DtsF,EAAOpH,KAAKznB,OAAS7H,EAAOutB,QAAQs2F,MAEzC7jH,EAAOutB,QAAQu2F,MAAMF,KAAKrjG,OAAO5gB,KAAKqkB,QAAS0S,EAAOpH,KAAM3R,EAAOqlG,GAE9DtsF,EAAOpH,KAAKznB,OAAS7H,EAAOutB,QAAQw2F,OAEzC/jH,EAAOutB,QAAQy2F,MAAMC,WAAWtkH,KAAKqkB,QAAS0S,EAAOpH,KAAM3R,GAG/Dhe,KAAKi8B,SAcbsoF,SAAU,SAAUxtF,EAAQ9wB,EAAGwG,EAAGuR,GAE1B+Y,EAAOpH,OAEP3vB,KAAK0Q,MAAMzK,EAAGwG,EAAGuR,EAAO,KAEpB+Y,EAAOpH,KAAKznB,OAAS7H,EAAOutB,QAAQC,OAEpCxtB,EAAOutB,QAAQukC,OAAO8xD,KAAKO,eAAexkH,KAAM+2B,EAAOpH,MAElDoH,EAAOpH,KAAKznB,OAAS7H,EAAOutB,QAAQw2F,OAEzCpkH,KAAKwa,KAAK6F,QAAQokG,MAAMD,eAAexkH,KAAM+2B,EAAOpH,MAGxD3vB,KAAKi8B,SAYbyoF,WAAY,WAER1kH,KAAK0Q,QAEL1Q,KAAKqkB,QAAQzP,WAAW5U,KAAKwa,KAAKoC,OAAOlC,KAAKzU,GAAIjG,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAG,GAC3EzM,KAAKwa,KAAK6F,QAAQokG,MAAME,gBAAgB3kH,KAAKqkB,SAE7CrkB,KAAKi8B,QAYT2oF,UAAW,SAAUj1F,EAAM3R,GAEvBhe,KAAK0Q,QACLrQ,EAAOutB,QAAQy2F,MAAMC,WAAWtkH,KAAKqkB,QAASsL,EAAM3R,GACpDhe,KAAKi8B,QAcT4oF,YAAa,SAAU7pG,GAanB,GAXsBtR,SAAlBsR,IAA+BA,EAAgBhb,KAAKwa,KAAKC,OAEzDO,EAAchQ,eAAe,iBAE7B5C,QAAQC,IAAI,IAAM2S,EAAc4Y,cAAgB,IAAK5Y,GAIrD5S,QAAQC,IAAI,KAAM2S,GAGlBA,EAAc2Q,UAAY3Q,EAAc2Q,SAAS9jB,OAAS,EAE1D,IAAK,GAAIC,GAAI,EAAGA,EAAIkT,EAAc2Q,SAAS9jB,OAAQC,IAE/C9H,KAAKwa,KAAKqJ,MAAMghG,YAAY7pG,EAAc2Q,SAAS7jB,KAW/Dgc,QAAS,WAELhe,KAAKw6B,WAAWxd,OAAO9iB,QAM/BK,EAAOmI,MAAMuxB,MAAM1zB,UAAU8B,YAAc9H,EAAOmI,MAAMuxB,MAmBxD15B,EAAO+qB,KAYHC,UAAW,SAAUia,EAAS92B,GAE1BA,EAAQA,GAAS,GAAInO,GAAO2M,KAE5B,IAAI83G,GAAMx/E,EAAQm6E,wBAEdX,EAAYz+G,EAAO+qB,IAAI25F,QACvBC,EAAa3kH,EAAO+qB,IAAI65F,QACxBC,EAAYp5F,SAASg7D,gBAAgBo+B,UACrCC,EAAar5F,SAASg7D,gBAAgBq+B,UAK1C,OAHA32G,GAAMvI,EAAI6+G,EAAIj6G,KAAOm6G,EAAaG,EAClC32G,EAAM/B,EAAIq4G,EAAIp2G,IAAMowG,EAAYoG,EAEzB12G,GAiBXlB,UAAW,SAAUg4B,EAAS8/E,GAM1B,MAJgB17G,UAAZ07G,IAAyBA,EAAU,GAEvC9/E,EAAUA,IAAYA,EAAQv6B,SAAWu6B,EAAQ,GAAKA,EAEjDA,GAAgC,IAArBA,EAAQv6B,SAMb/K,KAAKqlH,UAAU//E,EAAQm6E,wBAAyB2F,IAJhD,GAkBfC,UAAW,SAAUC,EAAQF,GAEzBA,GAAWA,GAAW,CAEtB,IAAIr3G,IAAWgC,MAAO,EAAGC,OAAQ,EAAGnF,KAAM,EAAGD,MAAO,EAAG8D,IAAK,EAAGC,OAAQ,EAKvE,OAHAZ,GAAOgC,OAAShC,EAAOnD,MAAQ06G,EAAO16G,MAAQw6G,IAAYr3G,EAAOlD,KAAOy6G,EAAOz6G,KAAOu6G,GACtFr3G,EAAOiC,QAAUjC,EAAOY,OAAS22G,EAAO32G,OAASy2G,IAAYr3G,EAAOW,IAAM42G,EAAO52G,IAAM02G,GAEhFr3G,GAWXw3G,eAAgB,SAAUjwF,GAEtBA,EAAS,MAAQA,EAASt1B,KAAKg9G,aAAe,IAAM1nF,EAAOvqB,SAAW/K,KAAKsN,UAAUgoB,GAAUA,CAE/F,IAAIhY,GAAIgY,EAAc,MAClB/X,EAAI+X,EAAe,MAYvB,OAViB,kBAANhY,KAEPA,EAAIA,EAAExW,KAAKwuB,IAGE,kBAAN/X,KAEPA,EAAIA,EAAEzW,KAAKwuB,IAGRhY,EAAIC,GAiBfioG,iBAAkB,SAAUlgF,EAAS8/E,GAEjC,GAAIl4G,GAAIlN,KAAKsN,UAAUg4B,EAAS8/E,EAEhC,SAASl4G,GAAKA,EAAEyB,QAAU,GAAKzB,EAAEtC,OAAS,GAAKsC,EAAEwB,KAAO1O,KAAKu/G,aAAaxvG,OAAS7C,EAAErC,MAAQ7K,KAAKu/G,aAAavvG,QA6BnH0pG,qBAAsB,SAAU+L,GAE5B,GAAIC,GAAS39G,OAAO29G,OAChBnH,EAAcmH,EAAOnH,aAAemH,EAAOC,gBAAkBD,EAAOE,aAExE,IAAIrH,GAA2C,gBAArBA,GAAYr2G,KAGlC,MAAOq2G,GAAYr2G,IAElB,IAA2B,gBAAhBq2G,GAGZ,MAAOA,EAGX,IAAIr7G,GAAW,mBACXD,EAAY;AAEhB,GAAwB,WAApBwiH,EAEA,MAAQC,GAAO11G,OAAS01G,EAAO31G,MAAS7M,EAAWD,CAElD,IAAwB,aAApBwiH,EAEL,MAAQzlH,MAAKg9G,aAAahtG,OAAShQ,KAAKg9G,aAAajtG,MAAS7M,EAAWD,CAExE,IAAwB,uBAApBwiH,GAA0E,gBAAvB19G,QAAOw2G,YAG/D,MAA+B,KAAvBx2G,OAAOw2G,aAA4C,MAAvBx2G,OAAOw2G,YAAuBr7G,EAAWD,CAE5E,IAAI8E,OAAO89G,WAChB,CACI,GAAI99G,OAAO89G,WAAW,2BAA2B57B,QAE7C,MAAO/mF,EAEN,IAAI6E,OAAO89G,WAAW,4BAA4B57B,QAEnD,MAAOhnF,GAIf,MAAQjD,MAAKg9G,aAAahtG,OAAShQ,KAAKg9G,aAAajtG,MAAS7M,EAAWD,GAqB7E+5G,aAAc,GAAI38G,GAAOkN,UAqBzBgyG,aAAc,GAAIl/G,GAAOkN,UAczBu4G,eAAgB,GAAIzlH,GAAOkN,WAI/BlN,EAAOu3B,OAAOoB,UAAU,SAAUtM,GAG9B,GAAIu4F,GAAUl9G,QAAW,eAAiBA,QACtC,WAAc,MAAOA,QAAOg+G,aAC5B,WAAc,MAAOj6F,UAASg7D,gBAAgBk+B,YAE9CD,EAAUh9G,QAAW,eAAiBA,QACtC,WAAc,MAAOA,QAAOi+G,aAC5B,WAAc,MAAOl6F,UAASg7D,gBAAgBg4B,UAUlDv3G,QAAO2E,eAAe7L,EAAO+qB,IAAK,WAC9Bpf,IAAKi5G,IAWT19G,OAAO2E,eAAe7L,EAAO+qB,IAAK,WAC9Bpf,IAAK+4G,IAGTx9G,OAAO2E,eAAe7L,EAAO+qB,IAAI4xF,aAAc,KAC3ChxG,IAAKi5G,IAGT19G,OAAO2E,eAAe7L,EAAO+qB,IAAI4xF,aAAc,KAC3ChxG,IAAK+4G,IAGTx9G,OAAO2E,eAAe7L,EAAO+qB,IAAIm0F,aAAc,KAC3Ch2G,MAAO,IAGXhC,OAAO2E,eAAe7L,EAAO+qB,IAAIm0F,aAAc,KAC3Ch2G,MAAO,GAGX,IAAI08G,GAAiBv5F,EAAOw0D,SACvBp1D,SAASg7D,gBAAgBo/B,aAAen+G,OAAOuC,YAC/CwhB,SAASg7D,gBAAgBq/B,cAAgBp+G,OAAOwC,WAKrD,IAAI07G,EACJ,CAII,GAAIC,GAAc,WACd,MAAOngH,MAAKoM,IAAIpK,OAAOuC,WAAYwhB,SAASg7D,gBAAgBo/B,cAE5DC,EAAe,WACf,MAAOpgH,MAAKoM,IAAIpK,OAAOwC,YAAauhB,SAASg7D,gBAAgBq/B,cAIjE5+G,QAAO2E,eAAe7L,EAAO+qB,IAAI4xF,aAAc,SAC3ChxG,IAAKk6G,IAGT3+G,OAAO2E,eAAe7L,EAAO+qB,IAAI4xF,aAAc,UAC3ChxG,IAAKm6G,IAGT5+G,OAAO2E,eAAe7L,EAAO+qB,IAAIm0F,aAAc,SAC3CvzG,IAAKk6G,IAGT3+G,OAAO2E,eAAe7L,EAAO+qB,IAAIm0F,aAAc,UAC3CvzG,IAAKm6G,QAKT5+G,QAAO2E,eAAe7L,EAAO+qB,IAAI4xF,aAAc,SAC3ChxG,IAAK,WACD,MAAOjE,QAAOuC,cAItB/C,OAAO2E,eAAe7L,EAAO+qB,IAAI4xF,aAAc,UAC3ChxG,IAAK,WACD,MAAOjE,QAAOwC,eAItBhD,OAAO2E,eAAe7L,EAAO+qB,IAAIm0F,aAAc,SAE3CvzG,IAAK,WACD,GAAIyC,GAAIqd,SAASg7D,gBAAgBo/B,YAC7Br3G,EAAI9G,OAAOuC,UAEf,OAAWuE,GAAJJ,EAAQI,EAAIJ,KAK3BlH,OAAO2E,eAAe7L,EAAO+qB,IAAIm0F,aAAc,UAE3CvzG,IAAK,WACD,GAAIyC,GAAIqd,SAASg7D,gBAAgBq/B,aAC7Bt3G,EAAI9G,OAAOwC,WAEf,OAAWsE,GAAJJ,EAAQI,EAAIJ,IAU/BlH,QAAO2E,eAAe7L,EAAO+qB,IAAI06F,eAAgB,KAC7Cv8G,MAAO,IAGXhC,OAAO2E,eAAe7L,EAAO+qB,IAAI06F,eAAgB,KAC7Cv8G,MAAO,IAGXhC,OAAO2E,eAAe7L,EAAO+qB,IAAI06F,eAAgB,SAE7C95G,IAAK,WACD,GAAIiI,GAAI6X,SAASg7D,eACjB,OAAO/gF,MAAKoM,IAAI8B,EAAEiyG,YAAajyG,EAAEmyG,YAAanyG,EAAEoyG,gBAKxD9+G,OAAO2E,eAAe7L,EAAO+qB,IAAI06F,eAAgB,UAE7C95G,IAAK,WACD,GAAIiI,GAAI6X,SAASg7D,eACjB,OAAO/gF,MAAKoM,IAAI8B,EAAEkyG,aAAclyG,EAAEqyG,aAAcryG,EAAEsyG,kBAK3D,MAAM,GAoBTlmH,EAAO2zB,SAAW,SAAU+3C,GAOxB/rE,KAAKuZ,SAAW,EAMhBvZ,KAAK+rE,KAAOA,OAIhB1rE,EAAO2zB,SAAS3tB,WAUZwL,IAAK,SAAU6zE,GAOX,MALK1lF,MAAKwqB,OAAOk7D,IAEb1lF,KAAK+rE,KAAKn5D,KAAK8yE,GAGZA,GAWX7zD,SAAU,SAAU6zD,GAEhB,MAAO1lF,MAAK+rE,KAAK17C,QAAQq1D,IAa7B8gC,SAAU,SAAUzzF,EAAUxpB,GAI1B,IAFA,GAAIzB,GAAI9H,KAAK+rE,KAAKlkE,OAEXC,KAEH,GAAI9H,KAAK+rE,KAAKjkE,GAAGirB,KAAcxpB,EAE3B,MAAOvJ,MAAK+rE,KAAKjkE,EAIzB,OAAO,OAWX0iB,OAAQ,SAAUk7D,GAEd,MAAQ1lF,MAAK+rE,KAAK17C,QAAQq1D,GAAQ,IAStChmE,MAAO,WAEH1f,KAAK+rE,KAAKlkE,OAAS,GAWvBib,OAAQ,SAAU4iE,GAEd,GAAIrK,GAAMr7E,KAAK+rE,KAAK17C,QAAQq1D,EAE5B,OAAIrK,GAAM,IAENr7E,KAAK+rE,KAAK5oD,OAAOk4D,EAAK,GACfqK,GAHX,QAeJ/yD,OAAQ,SAAU5mB,EAAKxC,GAInB,IAFA,GAAIzB,GAAI9H,KAAK+rE,KAAKlkE,OAEXC,KAEC9H,KAAK+rE,KAAKjkE,KAEV9H,KAAK+rE,KAAKjkE,GAAGiE,GAAOxC,IAgBhCiqB,QAAS,SAAUznB,GAMf,IAJA,GAAIpF,GAAOH,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAE7Ce,EAAI9H,KAAK+rE,KAAKlkE,OAEXC,KAEC9H,KAAK+rE,KAAKjkE,IAAM9H,KAAK+rE,KAAKjkE,GAAGiE,IAE7B/L,KAAK+rE,KAAKjkE,GAAGiE,GAAK9E,MAAMjH,KAAK+rE,KAAKjkE,GAAInB,IAYlDid,UAAW,SAAUE,GAEDpa,SAAZoa,IAAyBA,GAAU,EAIvC,KAFA,GAAIhc,GAAI9H,KAAK+rE,KAAKlkE,OAEXC,KAEH,GAAI9H,KAAK+rE,KAAKjkE,GACd,CACI,GAAI49E,GAAO1lF,KAAK8iB,OAAO9iB,KAAK+rE,KAAKjkE,GAE7Bgc,IAEA4hE,EAAK5hE,UAKjB9jB,KAAKuZ,SAAW,EAChBvZ,KAAK+rE,UAYbxkE,OAAO2E,eAAe7L,EAAO2zB,SAAS3tB,UAAW,SAE7C2F,IAAK,WACD,MAAOhM,MAAK+rE,KAAKlkE,UAWzBN,OAAO2E,eAAe7L,EAAO2zB,SAAS3tB,UAAW,SAE7C2F,IAAK,WAID,MAFAhM,MAAKuZ,SAAW,EAEZvZ,KAAK+rE,KAAKlkE,OAAS,EAEZ7H,KAAK+rE,KAAK,GAIV,QAanBxkE,OAAO2E,eAAe7L,EAAO2zB,SAAS3tB,UAAW,QAE7C2F,IAAK,WAED,MAAIhM,MAAKuZ,SAAWvZ,KAAK+rE,KAAKlkE,QAE1B7H,KAAKuZ,WAEEvZ,KAAK+rE,KAAK/rE,KAAKuZ,WAIf,QAOnBlZ,EAAO2zB,SAAS3tB,UAAU8B,YAAc9H,EAAO2zB,SAc/C3zB,EAAOw1B,YAcHC,cAAe,SAAU+6D,EAASj7D,EAAY/tB,GAE1C,GAAgB,OAAZgpF,EAAoB,MAAO,KACZnnF,UAAfksB,IAA4BA,EAAa,GAC9BlsB,SAAX7B,IAAwBA,EAASgpF,EAAQhpF,OAE7C,IAAI4+G,GAAc7wF,EAAa7vB,KAAKI,MAAMJ,KAAK4D,SAAW9B,EAE1D,OAAgC6B,UAAzBmnF,EAAQ41B,GAA6B,KAAO51B,EAAQ41B,IAgB/DC,iBAAkB,SAAU71B,EAASj7D,EAAY/tB,GAE7C,GAAe,MAAXgpF,EACA,MAAO,KAGQnnF,UAAfksB,IAA4BA,EAAa,GAC9BlsB,SAAX7B,IAAwBA,EAASgpF,EAAQhpF,OAE7C,IAAI4+G,GAAc7wF,EAAa7vB,KAAKI,MAAMJ,KAAK4D,SAAW9B,EAC1D,IAAI4+G,EAAc51B,EAAQhpF,OAC1B,CACI,GAAIouB,GAAU46D,EAAQ1tE,OAAOsjG,EAAa,EAC1C,OAAsB/8G,UAAfusB,EAAQ,GAAmB,KAAOA,EAAQ,GAIjD,MAAO,OAYf0wF,QAAS,SAAUxyG,GAEf,IAAK,GAAIrM,GAAIqM,EAAMtM,OAAS,EAAGC,EAAI,EAAGA,IACtC,CACI,GAAI+P,GAAI9R,KAAKI,MAAMJ,KAAK4D,UAAY7B,EAAI,IACpC8+G,EAAOzyG,EAAMrM,EACjBqM,GAAMrM,GAAKqM,EAAM0D,GACjB1D,EAAM0D,GAAK+uG,EAGf,MAAOzyG,IAWX0yG,gBAAiB,SAAU1yG,GAOvB,IAAK,GALD2yG,GAAiB3yG,EAAMtM,OACvBk/G,EAAiB5yG,EAAM,GAAGtM,OAE1ByJ,EAAS,GAAI9K,OAAMugH,GAEdj/G,EAAI,EAAOi/G,EAAJj/G,EAAoBA,IACpC,CACIwJ,EAAOxJ,GAAK,GAAItB,OAAMsgH,EAEtB,KAAK,GAAIjvG,GAAIivG,EAAiB,EAAGjvG,EAAI,GAAIA,IAErCvG,EAAOxJ,GAAG+P,GAAK1D,EAAM0D,GAAG/P,GAIhC,MAAOwJ,IAcX01G,aAAc,SAAU5yG,EAAQ0J,GAO5B,GALyB,gBAAdA,KAEPA,GAAcA,EAAY,IAAO,KAAO,KAG1B,KAAdA,GAAkC,OAAdA,GAAoC,eAAdA,EAE1C1J,EAAS/T,EAAOw1B,WAAWgxF,gBAAgBzyG,GAC3CA,EAASA,EAAOxL,cAEf,IAAkB,MAAdkV,GAAmC,MAAdA,GAAmC,gBAAdA,EAE/C1J,EAASA,EAAOxL,UAChBwL,EAAS/T,EAAOw1B,WAAWgxF,gBAAgBzyG,OAE1C,IAA4B,MAAxBrO,KAAKoJ,IAAI2O,IAAoC,cAAdA,EACxC,CACI,IAAK,GAAIhW,GAAI,EAAGA,EAAIsM,EAAOvM,OAAQC,IAE/BsM,EAAOtM,GAAGc,SAGdwL,GAASA,EAAOxL,UAGpB,MAAOwL,IAaX6yG,YAAa,SAAU19G,EAAO29G,GAE1B,IAAKA,EAAIr/G,OAEL,MAAOs/G,IAEN,IAAmB,IAAfD,EAAIr/G,QAAgB0B,EAAQ29G,EAAI,GAErC,MAAOA,GAAI,EAIf,KADA,GAAIp/G,GAAI,EACDo/G,EAAIp/G,GAAKyB,GACZzB,GAGJ,IAAIs/G,GAAMF,EAAIp/G,EAAI,GACdu/G,EAAQv/G,EAAIo/G,EAAIr/G,OAAUq/G,EAAIp/G,GAAKqQ,OAAOiC,iBAE9C,OAA2B7Q,GAAQ69G,GAA1BC,EAAO99G,EAA2B89G,EAAOD,GAiBtDE,YAAa,SAAUnzG,GAEnB,GAAIsC,GAAItC,EAAMhL,KAGd,OAFAgL,GAAM29D,QAAQr7D,GAEPA,GAiBX8wG,WAAY,SAAUpzG,GAElB,GAAIsC,GAAItC,EAAM62B,OAGd,OAFA72B,GAAMvB,KAAK6D,GAEJA,GAkBXvF,OAAQ,SAAUiD,GAEd,GAAIsC,GAAItC,EAAM62B,OAGd,OAFA72B,GAAMvB,KAAK6D,GAEJA,GAaX+wG,YAAa,SAAU92G,EAAOC,GAI1B,IAAK,GAFDW,MAEKxJ,EAAI4I,EAAYC,GAAL7I,EAAUA,IAE1BwJ,EAAOsB,KAAK9K,EAGhB,OAAOwJ,IAqCXm2G,gBAAiB,SAAU/2G,EAAOC,EAAKqrB,GAErBtyB,SAAVgH,GAAiC,OAAVA,IAAkBA,EAAQ,GAEzChH,SAARiH,GAA6B,OAARA,IAErBA,EAAMD,EACNA,EAAQ,GAGChH,SAATsyB,IAAsBA,EAAO,EAKjC,KAAK,GAHD1qB,MACAsjB,EAAQ7uB,KAAKoM,IAAI9R,EAAO0F,KAAK2oF,mBAAmB/9E,EAAMD,IAAUsrB,GAAQ,IAAK,GAExEl0B,EAAI,EAAO8sB,EAAJ9sB,EAAWA,IAEvBwJ,EAAOsB,KAAKlC,GACZA,GAASsrB,CAGb,OAAO1qB,KAuBfjR,EAAOqnH,WAAa,WAOhB1nH,KAAKsxB,KAAO,KAOZtxB,KAAK24D,KAAO,KAOZ34D,KAAK4rC,MAAQ,KAOb5rC,KAAKkJ,KAAO,KAOZlJ,KAAK40B,MAAQ,GAIjBv0B,EAAOqnH,WAAWrhH,WASdwL,IAAK,SAAU6zE,GAGX,MAAmB,KAAf1lF,KAAK40B,OAA8B,OAAf50B,KAAK4rC,OAAgC,OAAd5rC,KAAKkJ,MAEhDlJ,KAAK4rC,MAAQ85C,EACb1lF,KAAKkJ,KAAOw8E,EACZ1lF,KAAKsxB,KAAOo0D,EACZA,EAAK/sB,KAAO34D,KACZA,KAAK40B,QACE8wD,IAIX1lF,KAAKkJ,KAAKooB,KAAOo0D,EAEjBA,EAAK/sB,KAAO34D,KAAKkJ,KAEjBlJ,KAAKkJ,KAAOw8E,EAEZ1lF,KAAK40B,QAEE8wD,IASXhmE,MAAO,WAEH1f,KAAK4rC,MAAQ,KACb5rC,KAAKkJ,KAAO,KACZlJ,KAAKsxB,KAAO,KACZtxB,KAAK24D,KAAO,KACZ34D,KAAK40B,MAAQ,GAUjB9R,OAAQ,SAAU4iE,GAEd,MAAmB,KAAf1lF,KAAK40B,OAEL50B,KAAK0f,aACLgmE,EAAKp0D,KAAOo0D,EAAK/sB,KAAO,QAIxB+sB,IAAS1lF,KAAK4rC,MAGd5rC,KAAK4rC,MAAQ5rC,KAAK4rC,MAAMta,KAEnBo0D,IAAS1lF,KAAKkJ,OAGnBlJ,KAAKkJ,KAAOlJ,KAAKkJ,KAAKyvD,MAGtB+sB,EAAK/sB,OAGL+sB,EAAK/sB,KAAKrnC,KAAOo0D,EAAKp0D,MAGtBo0D,EAAKp0D,OAGLo0D,EAAKp0D,KAAKqnC,KAAO+sB,EAAK/sB,MAG1B+sB,EAAKp0D,KAAOo0D,EAAK/sB,KAAO,KAEL,OAAf34D,KAAK4rC,QAEL5rC,KAAKkJ,KAAO,UAGhBlJ,MAAK40B,UAWTpB,QAAS,SAAUH,GAEf,GAAKrzB,KAAK4rC,OAAU5rC,KAAKkJ,KAAzB,CAKA,GAAIy+G,GAAS3nH,KAAK4rC,KAElB,GAEQ+7E,IAAUA,EAAOt0F,IAEjBs0F,EAAOt0F,GAAUvsB,KAAK6gH,GAG1BA,EAASA,EAAOr2F,WAGdq2F,GAAU3nH,KAAKkJ,KAAKooB,SAMlCjxB,EAAOqnH,WAAWrhH,UAAU8B,YAAc9H,EAAOqnH,WAmBjDrnH,EAAOw5B,OAAS,SAAUrf,GAKtBxa,KAAKwa,KAAOA,EAKZxa,KAAKmiH,IAAM,KAKXniH,KAAKsrB,OAAS,KAKdtrB,KAAKs3D,IAAM,KAKXt3D,KAAK4nH,WACCC,EAAG,OAAQC,EAAG,UAAWC,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW/nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWz5C,EAAG,YAC/M0gH,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW/nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWz5C,EAAG,YAClN0gH,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW/nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWz5C,EAAG,SAClN0gH,EAAG,OAAQC,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW/nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWz5C,EAAG,YAC/M0gH,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAW/nE,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWz5C,EAAG,UAU5N9G,EAAOw5B,OAAO0uF,aAAe,EAO7BloH,EAAOw5B,OAAO2uF,YAAc,EAO5BnoH,EAAOw5B,OAAO4uF,YAAc,EAO5BpoH,EAAOw5B,OAAO6uF,YAAc,EAO5BroH,EAAOw5B,OAAO8uF,yBAA2B,EAEzCtoH,EAAOw5B,OAAOxzB,WAiCV87B,QAAS,SAAUp2B,EAAKs2B,EAAMumF,EAAYC,EAAaC,GAEhCp/G,SAAfk/G,IAA4BA,EAAa,GACzBl/G,SAAhBm/G,IAA6BA,EAAcD,GAC/Bl/G,SAAZo/G,IAAyBA,EAAU,EAEvC,IAAIxrG,GAAI+kB,EAAK,GAAGx6B,OAAS+gH,EACrBrrG,EAAI8kB,EAAKx6B,OAASghH,CAGL,QAAb7oH,KAAKmiH,MAELniH,KAAKmiH,IAAMniH,KAAKwa,KAAKqF,KAAK6zC,aAC1B1zD,KAAKsrB,OAAStrB,KAAKmiH,IAAI72F,OACvBtrB,KAAKs3D,IAAMt3D,KAAKmiH,IAAI99F,SAGxBrkB,KAAKmiH,IAAIrpG,OAAOwE,EAAGC,GACnBvd,KAAKmiH,IAAIlkG,OAGT,KAAK,GAAIxR,GAAI,EAAGA,EAAI41B,EAAKx6B,OAAQ4E,IAI7B,IAAK,GAFDy0F,GAAM7+D,EAAK51B,GAENxG,EAAI,EAAGA,EAAIi7F,EAAIr5F,OAAQ5B,IAChC,CACI,GAAIgO,GAAIitF,EAAIj7F,EAEF,OAANgO,GAAmB,MAANA,IAEbjU,KAAKs3D,IAAI+B,UAAYr5D,KAAK4nH,SAASkB,GAAS70G,GAC5CjU,KAAKs3D,IAAIgC,SAASrzD,EAAI2iH,EAAYn8G,EAAIo8G,EAAaD,EAAYC,IAK3E,MAAO7oH,MAAKmiH,IAAI5oD,gBAAgBxtD,IAgBpC+oC,KAAM,SAAU/oC,EAAKgE,EAAOC,EAAQkhB,EAAWC,EAAYnT,GAGtC,OAAbhe,KAAKmiH,MAELniH,KAAKmiH,IAAMniH,KAAKwa,KAAKqF,KAAK6zC,aAC1B1zD,KAAKsrB,OAAStrB,KAAKmiH,IAAI72F,OACvBtrB,KAAKs3D,IAAMt3D,KAAKmiH,IAAI99F,SAGxBrkB,KAAKmiH,IAAIrpG,OAAO/I,EAAOC,GAEvBhQ,KAAKs3D,IAAI+B,UAAYr7C,CAErB,KAAK,GAAIvR,GAAI,EAAOuD,EAAJvD,EAAYA,GAAK0kB,EAE7BnxB,KAAKs3D,IAAIgC,SAAS,EAAG7sD,EAAGsD,EAAO,EAGnC,KAAK,GAAI9J,GAAI,EAAO8J,EAAJ9J,EAAWA,GAAKirB,EAE5BlxB,KAAKs3D,IAAIgC,SAASrzD,EAAG,EAAG,EAAG+J,EAG/B,OAAOhQ,MAAKmiH,IAAI5oD,gBAAgBxtD,KAMxC1L,EAAOw5B,OAAOxzB,UAAU8B,YAAc9H,EAAOw5B,OAsB7Cx5B,EAAOw8G,SAAW,SAAU5lB,EAASlnF,EAAOC,GAKxChQ,KAAKwa,KAAOy8E,EAAQz8E,KAKpBxa,KAAKi3F,QAAUA,EAGfj3F,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAK+oH,aAAe,GAAI1oH,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GACtDhQ,KAAK+0C,YAAc,GAAI10C,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GACrDhQ,KAAKgpH,WAAa,GAAI3oH,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GACpDhQ,KAAKipH,WAAa,GAAI5oH,GAAOkN,UAAU,EAAG,EAAGwC,EAAOC,GAMpDhQ,KAAKkpH,eAAiB,GAAI7oH,GAAO2M,MAAM,EAAG,GAC1ChN,KAAKmpH,cAAgB,GAAI9oH,GAAO2M,MAAM,EAAG,GACzChN,KAAKopH,aAAe,GAAI/oH,GAAO2M,MAAM,EAAG,GACxChN,KAAKqpH,aAAe,GAAIhpH,GAAO2M,MAAM,EAAG,GAMxChN,KAAKspH,YAAc,GAAIjpH,GAAO2M,MAAM,EAAG,GACvChN,KAAKupH,WAAa,GAAIlpH,GAAO2M,MAAM,EAAG,GACtChN,KAAKg1C,mBAAqB,GAAI30C,GAAO2M,MAAM,EAAG,GAC9ChN,KAAKwpH,UAAY,GAAInpH,GAAO2M,MAAM,EAAG,GACrChN,KAAKypH,UAAY,GAAIppH,GAAO2M,MAAM,EAAG,GAErChN,KAAK0pH,YAAc,EACnB1pH,KAAK2pH,aAAe,EACpB3pH,KAAK4pH,cAAgB,EACrB5pH,KAAK6pH,cAAgB,EAErB7pH,KAAK8pH,OAAS/5G,EAAQC,EACtBhQ,KAAK+pH,OAAS/5G,EAASD,EAEvB/P,KAAK4gH,WAAa,EAElB5gH,KAAKgqH,WAIT3pH,EAAOw8G,SAASx2G,WASZoZ,QAAS,SAAU1P,EAAOC,GAGtBhQ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAK8pH,OAAS/5G,EAAQC,EACtBhQ,KAAK+pH,OAAS/5G,EAASD,EAEvB/P,KAAKypH,UAAY,GAAIppH,GAAO2M,MAAM,EAAG,GAErChN,KAAKipH,WAAWl5G,MAAQ/P,KAAK+P,MAC7B/P,KAAKipH,WAAWj5G,OAAShQ,KAAKgQ,OAE9BhQ,KAAK47B,WAeTquF,kBAAmB,SAAUl6G,EAAOC,EAAQ2b,EAAU1C,GAE/Bvf,SAAfuf,IAA4BA,GAAa,GAE7CjpB,KAAK0pH,YAAc35G,EACnB/P,KAAK2pH,aAAe35G,EAEpBhQ,KAAK+oH,aAAah5G,MAAQA,EAC1B/P,KAAK+oH,aAAa/4G,OAASA,CAE3B,IAAIk6G,GAAQ,GAAI7pH,GAAO8pH,UAAUnqH,KAAMA,KAAKkpH,eAAgBlpH,KAAK+oH,aAAc/oH,KAAKspH,YAcpF,OAZIrgG,IAEAjpB,KAAKwa,KAAKC,MAAM5I,IAAIq4G,GAGxBlqH,KAAKgqH,OAAOp3G,KAAKs3G,GAEO,mBAAbv+F,IAAgD,aAAbA,IAE1Cu+F,EAAM55F,YAAY3E,GAGfu+F,GAWXE,iBAAkB,SAAUz+F,EAAU1C,GAEfvf,SAAfuf,IAA4BA,GAAa,EAE7C,IAAIihG,GAAQ,GAAI7pH,GAAO8pH,UAAUnqH,KAAMA,KAAKmpH,cAAenpH,KAAK+0C,YAAa/0C,KAAKupH,WAclF,OAZItgG,IAEAjpB,KAAKwa,KAAKC,MAAM5I,IAAIq4G,GAGxBlqH,KAAKgqH,OAAOp3G,KAAKs3G,GAEO,mBAAbv+F,IAAgD,aAAbA,IAE1Cu+F,EAAM55F,YAAY3E,GAGfu+F,GAWXG,gBAAiB,SAAU1+F,GAEvB,GAAIu+F,GAAQ,GAAI7pH,GAAO8pH,UAAUnqH,KAAMA,KAAKopH,aAAcppH,KAAKgpH,WAAYhpH,KAAKupH,WAWhF,OATAvpH,MAAKwa,KAAKC,MAAM5I,IAAIq4G,GAEpBlqH,KAAKgqH,OAAOp3G,KAAKs3G,GAEO,mBAAbv+F,IAEPu+F,EAAM55F,YAAY3E,GAGfu+F,GAWXI,iBAAkB,SAAU3+F,GAExB,GAAIu+F,GAAQ,GAAI7pH,GAAO8pH,UAAUnqH,KAAMA,KAAKqpH,aAAcrpH,KAAKipH,WAAYjpH,KAAKypH,UAWhF,OATAzpH,MAAKwa,KAAKC,MAAM5I,IAAIq4G,GAEpBlqH,KAAKgqH,OAAOp3G,KAAKs3G,GAEO,mBAAbv+F,IAEPu+F,EAAM55F,YAAY3E,GAGfu+F,GASXxqG,MAAO,WAIH,IAFA,GAAI5X,GAAI9H,KAAKgqH,OAAOniH,OAEbC,KAEE9H,KAAKgqH,OAAOliH,GAAGyiH,UAGhBvqH,KAAKgqH,OAAOliH,GAAGyR,SAAW,KAC1BvZ,KAAKgqH,OAAOliH,GAAG+M,MAAQ,KACvB7U,KAAKgqH,OAAOzjH,MAAMuB,EAAG,KAajCgzG,SAAU,SAAU/qG,EAAOC,GAEvBhQ,KAAK8pH,OAAS/5G,EAAQC,EACtBhQ,KAAK+pH,OAAS/5G,EAASD,EAEvB/P,KAAK47B,QAAQ7rB,EAAOC,IASxB4rB,QAAS,WAEL57B,KAAK4gH,WAAa76G,KAAKkM,IAAKjS,KAAKi3F,QAAQjnF,OAAShQ,KAAKgQ,OAAUhQ,KAAKi3F,QAAQlnF,MAAQ/P,KAAK+P,OAE3F/P,KAAK+0C,YAAYhlC,MAAQhK,KAAK+H,MAAM9N,KAAK+P,MAAQ/P,KAAK4gH,YACtD5gH,KAAK+0C,YAAY/kC,OAASjK,KAAK+H,MAAM9N,KAAKgQ,OAAShQ,KAAK4gH,YAExD5gH,KAAKupH,WAAWt9G,IAAIjM,KAAK+0C,YAAYhlC,MAAQ/P,KAAK+P,MAAO/P,KAAK+0C,YAAY/kC,OAAShQ,KAAKgQ,QACxFhQ,KAAKg1C,mBAAmB/oC,IAAIjM,KAAK+P,MAAQ/P,KAAK+0C,YAAYhlC,MAAO/P,KAAKgQ,OAAShQ,KAAK+0C,YAAY/kC,QAEhGhQ,KAAKwpH,UAAUv9G,IAAIjM,KAAKgpH,WAAWj5G,MAAQ/P,KAAK+P,MAAO/P,KAAKgpH,WAAWh5G,OAAShQ,KAAKgQ,QAErFhQ,KAAKgpH,WAAWj5G,MAAQhK,KAAK+H,MAAM9N,KAAKi3F,QAAQlnF,MAAQ/P,KAAKg1C,mBAAmB/uC,GAChFjG,KAAKgpH,WAAWh5G,OAASjK,KAAK+H,MAAM9N,KAAKi3F,QAAQjnF,OAAShQ,KAAKg1C,mBAAmBvoC,GAElFzM,KAAK+0C,YAAYrjC,SAAS1R,KAAKi3F,QAAQt8E,OAAOlC,QAASzY,KAAKi3F,QAAQt8E,OAAOjC,SAC3E1Y,KAAKipH,WAAWv3G,SAAS1R,KAAKi3F,QAAQt8E,OAAOlC,QAASzY,KAAKi3F,QAAQt8E,OAAOjC,SAE1E1Y,KAAKmpH,cAAcl9G,IAAIjM,KAAK+0C,YAAY9uC,EAAGjG,KAAK+0C,YAAYtoC,GAC5DzM,KAAKqpH,aAAap9G,IAAIjM,KAAKipH,WAAWhjH,EAAGjG,KAAKipH,WAAWx8G,IAU7D+9G,UAAW,SAAUzzF,GAEjB/2B,KAAKi3F,QAAQ2qB,YAAY7qF,GAEzBA,EAAO9wB,EAAIjG,KAAKi3F,QAAQt8E,OAAOlC,QAC/Bse,EAAOtqB,EAAIzM,KAAKi3F,QAAQt8E,OAAOjC,SASnCmL,MAAO,WAUH7jB,KAAKwa,KAAKqJ,MAAM4tC,KAAKzxD,KAAK+0C,YAAYhlC,MAAQ,MAAQ/P,KAAK+0C,YAAY/kC,OAAQhQ,KAAK+0C,YAAY9uC,EAAI,EAAGjG,KAAK+0C,YAAYtoC,EAAI,IAC5HzM,KAAKwa,KAAKqJ,MAAMggG,KAAK7jH,KAAK+0C,YAAa,oBAAoB,KAYnE10C,EAAOw8G,SAASx2G,UAAU8B,YAAc9H,EAAOw8G,SAuB/Cx8G,EAAO8pH,UAAY,SAAUlzB,EAAS19E,EAAUoB,EAAQ9F,GAEpDxU,EAAOmtB,MAAM1mB,KAAK9G,KAAMi3F,EAAQz8E,KAAM,KAAM,cAAgBy8E,EAAQz8E,KAAKsE,IAAIw0C,QAAQ,GAKrFtzD,KAAKi3F,QAAUA,EAAQA,QAKvBj3F,KAAK80C,KAAOmiD,EAOZj3F,KAAKuqH,SAAU,EAKfvqH,KAAKuZ,SAAWA,EAKhBvZ,KAAK2a,OAASA,EAKd3a,KAAK6U,MAAQA,EAKb7U,KAAKyqH,QAAU9vG,EAAO8vG,QAKtBzqH,KAAK0qH,UAAY,GAAIrqH,GAAO2M,MAAM2N,EAAOvL,UAAW,GAKpDpP,KAAK2qH,SAAWhwG,EAAOgwG,SAKvB3qH,KAAK4qH,WAAajwG,EAAOiwG,WAKzB5qH,KAAK6qH,aAAe,GAAIxqH,GAAO2M,MAAM2N,EAAOvL,UAAWuL,EAAOhM,QAK9D3O,KAAK8qH,YAAcnwG,EAAOmwG,aAI9BzqH,EAAO8pH,UAAU9jH,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACxDhG,EAAO8pH,UAAU9jH,UAAU8B,YAAc9H,EAAO8pH,UAOhD9pH,EAAO8pH,UAAU9jH,UAAUyS,OAAS,aAQpCzY,EAAO8pH,UAAU9jH,UAAUwd,MAAQ,WAE/B7jB,KAAKwa,KAAKqJ,MAAM4tC,KAAKzxD,KAAK2a,OAAO5K,MAAQ,MAAQ/P,KAAK2a,OAAO3K,OAAQhQ,KAAK2a,OAAO1U,EAAI,EAAGjG,KAAK2a,OAAOlO,EAAI,IACxGzM,KAAKwa,KAAKqJ,MAAMggG,KAAK7jH,KAAK2a,OAAQ,oBAAoB,GAEtD3a,KAAKwa,KAAKqJ,MAAMggG,KAAK7jH,KAAKyqH,QAAS,wBACnCzqH,KAAKwa,KAAKqJ,MAAMggG,KAAK7jH,KAAK0qH,UAAW,wBACrC1qH,KAAKwa,KAAKqJ,MAAMggG,KAAK7jH,KAAK2qH,SAAU,yBAexCtqH,EAAO+sB,OAeHotC,UAAW,SAAUttD,EAAG4d,EAAGjc,EAAGJ,GAE1B,MAAIpO,GAAOu3B,OAAOujC,eAEJ1sD,GAAK,GAAOI,GAAK,GAAOic,GAAM,EAAK5d,KAAQ,GAI3CA,GAAK,GAAO4d,GAAK,GAAOjc,GAAM,EAAKJ,KAAQ,GAwB7DorD,YAAa,SAAU9uC,EAAMhe,EAAKwuD,EAAKC,GAkCnC,MAhCY9xD,UAARqD,GAA6B,OAARA,IAAgBA,EAAM1M,EAAO+sB,MAAMwsC,eAChDlwD,SAAR6xD,GAA6B,OAARA,IAAgBA,GAAM,GACnC7xD,SAAR8xD,GAA6B,OAARA,IAAgBA,GAAM,GAE3Cn7D,EAAOu3B,OAAOujC,eAEdpuD,EAAI0B,GAAa,WAAPsc,KAAuB,GACjChe,EAAI8B,GAAa,SAAPkc,KAAuB,GACjChe,EAAI+d,GAAa,MAAPC,KAAuB,EACjChe,EAAIG,EAAa,IAAP6d,IAIVhe,EAAIG,GAAa,WAAP6d,KAAuB,GACjChe,EAAI+d,GAAa,SAAPC,KAAuB,GACjChe,EAAI8B,GAAa,MAAPkc,KAAuB,EACjChe,EAAI0B,EAAa,IAAPsc,GAGdhe,EAAIiR,MAAQ+M,EACZhe,EAAIge,KAAO,QAAUhe,EAAIG,EAAI,IAAMH,EAAI+d,EAAI,IAAM/d,EAAI8B,EAAI,IAAO9B,EAAI0B,EAAI,IAAO,IAE3E8sD,GAEAl7D,EAAO+sB,MAAM29F,SAASh+G,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,EAAG9B,GAG3CyuD,GAEAn7D,EAAO+sB,MAAM49F,SAASj+G,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,EAAG9B,GAGxCA,GAeXk+G,SAAU,SAAUlgG,EAAMhe,GActB,MAZKA,KAEDA,EAAM1M,EAAO+sB,MAAMwsC,eAGvB7sD,EAAIG,GAAa,WAAP6d,KAAuB,GACjChe,EAAI+d,GAAa,SAAPC,KAAuB,GACjChe,EAAI8B,GAAa,MAAPkc,KAAuB,EACjChe,EAAI0B,EAAa,IAAPsc,EAEVhe,EAAIge,KAAO,QAAUhe,EAAIG,EAAI,IAAMH,EAAI+d,EAAI,IAAM/d,EAAI8B,EAAI,IAAM9B,EAAI0B,EAAI,IAEhE1B,GAgBXm+G,OAAQ,SAAUh+G,EAAG4d,EAAGjc,EAAGJ,GAEvB,MAAQvB,IAAK,GAAO4d,GAAK,GAAOjc,GAAM,EAAKJ,GAe/C08G,OAAQ,SAAUj+G,EAAG4d,EAAGjc,EAAGJ,GAEvB,OAASA,GAAK,GAAOI,GAAK,GAAOic,GAAK,EAAK5d,KAAO,GAkBtD69G,SAAU,SAAU79G,EAAG4d,EAAGjc,EAAG9B,GAEpBA,IAEDA,EAAM1M,EAAO+sB,MAAMwsC,YAAY1sD,EAAG4d,EAAGjc,EAAG,IAG5C3B,GAAK,IACL4d,GAAK,IACLjc,GAAK,GAEL,IAAIoD,GAAMlM,KAAKkM,IAAI/E,EAAG4d,EAAGjc,GACrBsD,EAAMpM,KAAKoM,IAAIjF,EAAG4d,EAAGjc,EAOzB,IAJA9B,EAAIwQ,EAAI,EACRxQ,EAAI0J,EAAI,EACR1J,EAAI3D,GAAK+I,EAAMF,GAAO,EAElBE,IAAQF,EACZ,CACI,GAAIgC,GAAI9B,EAAMF,CAEdlF,GAAI0J,EAAI1J,EAAI3D,EAAI,GAAM6K,GAAK,EAAI9B,EAAMF,GAAOgC,GAAK9B,EAAMF,GAEnDE,IAAQjF,EAERH,EAAIwQ,GAAKuN,EAAIjc,GAAKoF,GAASpF,EAAJic,EAAQ,EAAI,GAE9B3Y,IAAQ2Y,EAEb/d,EAAIwQ,GAAK1O,EAAI3B,GAAK+G,EAAI,EAEjB9B,IAAQtD,IAEb9B,EAAIwQ,GAAKrQ,EAAI4d,GAAK7W,EAAI,GAG1BlH,EAAIwQ,GAAK,EAGb,MAAOxQ,IAkBX8tD,SAAU,SAAUt9C,EAAG9G,EAAGrN,EAAG2D,GAczB,GAZKA,GAODA,EAAIG,EAAI9D,EACR2D,EAAI+d,EAAI1hB,EACR2D,EAAI8B,EAAIzF,GAPR2D,EAAM1M,EAAO+sB,MAAMwsC,YAAYxwD,EAAGA,EAAGA,GAU/B,IAANqN,EACJ,CACI,GAAIk2D,GAAQ,GAAJvjE,EAAUA,GAAK,EAAIqN,GAAKrN,EAAIqN,EAAIrN,EAAIqN,EACxCxG,EAAI,EAAI7G,EAAIujE,CAChB5/D,GAAIG,EAAI7M,EAAO+sB,MAAMg+F,WAAWn7G,EAAG08D,EAAGpvD,EAAI,EAAI,GAC9CxQ,EAAI+d,EAAIzqB,EAAO+sB,MAAMg+F,WAAWn7G,EAAG08D,EAAGpvD,GACtCxQ,EAAI8B,EAAIxO,EAAO+sB,MAAMg+F,WAAWn7G,EAAG08D,EAAGpvD,EAAI,EAAI,GAalD,MANAxQ,GAAIG,EAAInH,KAAKI,MAAe,IAAR4G,EAAIG,EAAU,GAClCH,EAAI+d,EAAI/kB,KAAKI,MAAe,IAAR4G,EAAI+d,EAAU,GAClC/d,EAAI8B,EAAI9I,KAAKI,MAAe,IAAR4G,EAAI8B,EAAU,GAElCxO,EAAO+sB,MAAME,YAAYvgB,GAElBA,GAkBXi+G,SAAU,SAAU99G,EAAG4d,EAAGjc,EAAG9B,GAEpBA,IAEDA,EAAM1M,EAAO+sB,MAAMwsC,YAAY1sD,EAAG4d,EAAGjc,EAAG,MAG5C3B,GAAK,IACL4d,GAAK,IACLjc,GAAK,GAEL,IAAIoD,GAAMlM,KAAKkM,IAAI/E,EAAG4d,EAAGjc,GACrBsD,EAAMpM,KAAKoM,IAAIjF,EAAG4d,EAAGjc,GACrBoF,EAAI9B,EAAMF,CAyBd,OAtBAlF,GAAIwQ,EAAI,EACRxQ,EAAI0J,EAAY,IAARtE,EAAY,EAAI8B,EAAI9B,EAC5BpF,EAAIstB,EAAIloB,EAEJA,IAAQF,IAEJE,IAAQjF,EAERH,EAAIwQ,GAAKuN,EAAIjc,GAAKoF,GAASpF,EAAJic,EAAQ,EAAI,GAE9B3Y,IAAQ2Y,EAEb/d,EAAIwQ,GAAK1O,EAAI3B,GAAK+G,EAAI,EAEjB9B,IAAQtD,IAEb9B,EAAIwQ,GAAKrQ,EAAI4d,GAAK7W,EAAI,GAG1BlH,EAAIwQ,GAAK,GAGNxQ,GAkBXs+G,SAAU,SAAU9tG,EAAG9G,EAAG4jB,EAAGttB,GAEbrD,SAARqD,IAAqBA,EAAM1M,EAAO+sB,MAAMwsC,YAAY,EAAG,EAAG,EAAG,EAAGr8C,EAAG9G,EAAG,EAAG4jB,GAE7E,IAAIntB,GAAG4d,EAAGjc,EACN/G,EAAI/B,KAAKI,MAAU,EAAJoX,GACfrT,EAAQ,EAAJqT,EAAQzV,EACZmI,EAAIoqB,GAAK,EAAI5jB,GACbk2D,EAAItyC,GAAK,EAAInwB,EAAIuM,GACjB9O,EAAI0yB,GAAK,GAAK,EAAInwB,GAAKuM,EAE3B,QAAQ3O,EAAI,GAER,IAAK,GACDoF,EAAImtB,EACJvP,EAAInjB,EACJkH,EAAIoB,CACJ,MACJ,KAAK,GACD/C,EAAIy/D,EACJ7hD,EAAIuP,EACJxrB,EAAIoB,CACJ,MACJ,KAAK,GACD/C,EAAI+C,EACJ6a,EAAIuP,EACJxrB,EAAIlH,CACJ,MACJ,KAAK,GACDuF,EAAI+C,EACJ6a,EAAI6hD,EACJ99D,EAAIwrB,CACJ,MACJ,KAAK,GACDntB,EAAIvF,EACJmjB,EAAI7a,EACJpB,EAAIwrB,CACJ,MACJ,KAAK,GACDntB,EAAImtB,EACJvP,EAAI7a,EACJpB,EAAI89D,EAUZ,MANA5/D,GAAIG,EAAInH,KAAKI,MAAU,IAAJ+G,GACnBH,EAAI+d,EAAI/kB,KAAKI,MAAU,IAAJ2kB,GACnB/d,EAAI8B,EAAI9I,KAAKI,MAAU,IAAJ0I,GAEnBxO,EAAO+sB,MAAME,YAAYvgB,GAElBA,GAeXq+G,WAAY,SAAUn7G,EAAG08D,EAAGhlE,GAYxB,MAVQ,GAAJA,IAEAA,GAAK,GAGLA,EAAI,IAEJA,GAAK,GAGD,EAAI,EAARA,EAEOsI,EAAc,GAAT08D,EAAI18D,GAAStI,EAGrB,GAAJA,EAEOglE,EAGH,EAAI,EAARhlE,EAEOsI,GAAK08D,EAAI18D,IAAM,EAAI,EAAItI,GAAK,EAGhCsI,GAuBX2pD,YAAa,SAAU1sD,EAAG4d,EAAGjc,EAAGJ,EAAG8O,EAAG9G,EAAGrN,EAAGixB,GAExC,GAAIttB,IAAQG,EAAGA,GAAK,EAAG4d,EAAGA,GAAK,EAAGjc,EAAGA,GAAK,EAAGJ,EAAGA,GAAK,EAAG8O,EAAGA,GAAK,EAAG9G,EAAGA,GAAK,EAAGrN,EAAGA,GAAK,EAAGixB,EAAGA,GAAK,EAAGrc,MAAO,EAAGstG,QAAS,EAAGvgG,KAAM,GAEhI,OAAO1qB,GAAO+sB,MAAME,YAAYvgB,IAYpCugB,YAAa,SAAUvgB,GAMnB,MAJAA,GAAIge,KAAO,QAAUhe,EAAIG,EAAE1F,WAAa,IAAMuF,EAAI+d,EAAEtjB,WAAa,IAAMuF,EAAI8B,EAAErH,WAAa,IAAMuF,EAAI0B,EAAEjH,WAAa,IACnHuF,EAAIiR,MAAQ3d,EAAO+sB,MAAMm+F,SAASx+G,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,GACpD9B,EAAIu+G,QAAUjrH,EAAO+sB,MAAMo+F,WAAmB,IAARz+G,EAAI0B,EAAS1B,EAAIG,EAAGH,EAAI+d,EAAG/d,EAAI8B,GAE9D9B,GAeXy+G,WAAY,SAAU/8G,EAAGvB,EAAG4d,EAAGjc,GAE3B,MAAOJ,IAAK,GAAKvB,GAAK,GAAK4d,GAAK,EAAIjc,GAcxC08G,SAAU,SAAUr+G,EAAG4d,EAAGjc,GAEtB,MAAO3B,IAAK,GAAK4d,GAAK,EAAIjc,GAiB9B48G,YAAa,SAAUv+G,EAAG4d,EAAGjc,EAAGJ,EAAGi8E,GAK/B,MAHUhhF,UAAN+E,IAAmBA,EAAI,KACZ/E,SAAXghF,IAAwBA,EAAS,KAEtB,MAAXA,EAEO,MAAQ,GAAK,KAAOx9E,GAAK,KAAO4d,GAAK,GAAKjc,GAAGrH,SAAS,IAAIjB,MAAM,GAIhE,KAAOlG,EAAO+sB,MAAMs+F,eAAej9G,GAAKpO,EAAO+sB,MAAMs+F,eAAex+G,GAAK7M,EAAO+sB,MAAMs+F,eAAe5gG,GAAKzqB,EAAO+sB,MAAMs+F,eAAe78G,IAarJ88G,SAAU,SAAUC,GAEhB,GAAI34E,GAAM5yC,EAAO+sB,MAAMy+F,WAAWD,EAElC,OAAI34E,GAEO5yC,EAAO+sB,MAAMo+F,WAAWv4E,EAAIxkC,EAAGwkC,EAAI/lC,EAAG+lC,EAAInoB,EAAGmoB,EAAIpkC,GAF5D,QAoBJg9G,WAAY,SAAUD,EAAK7+G,GAGvB6+G,EAAMA,EAAIhgH,QAAQ,0CAA2C,SAASqK,EAAG/I,EAAG4d,EAAGjc,GAC3E,MAAO3B,GAAIA,EAAI4d,EAAIA,EAAIjc,EAAIA,GAG/B,IAAIyC,GAAS,mDAAmDkpE,KAAKoxC,EAErE,IAAIt6G,EACJ,CACI,GAAIpE,GAAI7C,SAASiH,EAAO,GAAI,IACxBwZ,EAAIzgB,SAASiH,EAAO,GAAI,IACxBzC,EAAIxE,SAASiH,EAAO,GAAI,GAEvBvE,IAMDA,EAAIG,EAAIA,EACRH,EAAI+d,EAAIA,EACR/d,EAAI8B,EAAIA,GANR9B,EAAM1M,EAAO+sB,MAAMwsC,YAAY1sD,EAAG4d,EAAGjc,GAU7C,MAAO9B,IAeX++G,WAAY,SAAUC,EAAKh/G,GAElBA,IAEDA,EAAM1M,EAAO+sB,MAAMwsC,cAGvB,IAAItoD,GAAS,4EAA4EkpE,KAAKuxC,EAW9F,OATIz6G,KAEAvE,EAAIG,EAAI7C,SAASiH,EAAO,GAAI,IAC5BvE,EAAI+d,EAAIzgB,SAASiH,EAAO,GAAI,IAC5BvE,EAAI8B,EAAIxE,SAASiH,EAAO,GAAI,IAC5BvE,EAAI0B,EAAkB/E,SAAd4H,EAAO,GAAmBgqE,WAAWhqE,EAAO,IAAM,EAC1DjR,EAAO+sB,MAAME,YAAYvgB,IAGtBA,GAiBXsgB,aAAc,SAAU9jB,EAAOwD,GAS3B,GALKA,IAEDA,EAAM1M,EAAO+sB,MAAMwsC,eAGF,gBAAVrwD,GAEP,MAA6B,KAAzBA,EAAM8mB,QAAQ,OAEPhwB,EAAO+sB,MAAM0+F,WAAWviH,EAAOwD,IAKtCA,EAAI0B,EAAI,EACDpO,EAAO+sB,MAAMy+F,WAAWtiH,EAAOwD,GAGzC,IAAqB,gBAAVxD,GAChB,CAGI,GAAIyiH,GAAY3rH,EAAO+sB,MAAM6+F,OAAO1iH,EAKpC,OAJAwD,GAAIG,EAAI8+G,EAAU9+G,EAClBH,EAAI+d,EAAIkhG,EAAUlhG,EAClB/d,EAAI8B,EAAIm9G,EAAUn9G,EAClB9B,EAAI0B,EAAIu9G,EAAUv9G,EAAI,IACf1B,EAIP,MAAOA,IAaf2+G,eAAgB,SAAU1tG,GAEtB,GAAI4tG,GAAM5tG,EAAMxW,SAAS,GACzB,OAAqB,IAAdokH,EAAI/jH,OAAc,IAAM+jH,EAAMA,GAazCM,cAAe,SAAUz1G,EAAG4jB,GAEd3wB,SAAN+M,IAAmBA,EAAI,GACjB/M,SAAN2wB,IAAmBA,EAAI,EAI3B,KAAK,GAFDg7C,MAEKpmE,EAAI,EAAQ,KAALA,EAAUA,IAEtBomE,EAAOziE,KAAKvS,EAAO+sB,MAAMi+F,SAASp8G,EAAI,IAAKwH,EAAG4jB,GAGlD,OAAOg7C,IAaX82C,cAAe,SAAU11G,EAAGrN,GAEdM,SAAN+M,IAAmBA,EAAI,IACjB/M,SAANN,IAAmBA,EAAI,GAI3B,KAAK,GAFDisE,MAEKpmE,EAAI,EAAQ,KAALA,EAAUA,IAEtBomE,EAAOziE,KAAKvS,EAAO+sB,MAAMytC,SAAS5rD,EAAI,IAAKwH,EAAGrN,GAGlD,OAAOisE,IAgBX+2C,iBAAkB,SAAUC,EAAQC,EAAQC,EAAOC,EAAanuG,GAE9C3U,SAAV2U,IAAuBA,EAAQ,IAEnC,IAAIouG,GAAOpsH,EAAO+sB,MAAM6+F,OAAOI,GAC3BK,EAAOrsH,EAAO+sB,MAAM6+F,OAAOK,GAC3Bp/G,GAAOw/G,EAAK3xD,IAAM0xD,EAAK1xD,KAAOyxD,EAAeD,EAASE,EAAK1xD,IAC3DjwC,GAAO4hG,EAAK1xD,MAAQyxD,EAAKzxD,OAASwxD,EAAeD,EAASE,EAAKzxD,MAC/DnsD,GAAO69G,EAAKzxD,KAAOwxD,EAAKxxD,MAAQuxD,EAAeD,EAASE,EAAKxxD,IAEjE,OAAO56D,GAAO+sB,MAAMo+F,WAAWntG,EAAOnR,EAAG4d,EAAGjc,IAiBhD89G,wBAAyB,SAAU3uG,EAAO9Q,EAAG4d,EAAGjc,EAAG09G,EAAOC,GAEtD,GAAInhH,GAAMhL,EAAO+sB,MAAM6+F,OAAOjuG,GAC1B4uG,GAAQ1/G,EAAI7B,EAAI0vD,KAAOyxD,EAAeD,EAASlhH,EAAI0vD,IACnD8xD,GAAQ/hG,EAAIzf,EAAI2vD,OAASwxD,EAAeD,EAASlhH,EAAI2vD,MACrD8xD,GAAQj+G,EAAIxD,EAAI4vD,MAAQuxD,EAAeD,EAASlhH,EAAI4vD,IAExD,OAAO56D,GAAO+sB,MAAMm+F,SAASqB,EAAIC,EAAIC,IAkBzCC,eAAgB,SAAU5yD,EAAIC,EAAIlnD,EAAImnD,EAAIC,EAAInnD,EAAIo5G,EAAOC,GAErD,GAAIt/G,IAAOmtD,EAAKF,GAAMqyD,EAAeD,EAASpyD,EAC1CrvC,GAAOwvC,EAAKF,GAAMoyD,EAAeD,EAASnyD,EAC1CvrD,GAAOsE,EAAKD,GAAMs5G,EAAeD,EAASr5G,CAE9C,OAAO7S,GAAO+sB,MAAMm+F,SAASr+G,EAAG4d,EAAGjc,IAgBvCm+G,eAAgB,SAAU/6G,EAAKE,EAAKkM,GAOhC,GALY3U,SAARuI,IAAqBA,EAAM,GACnBvI,SAARyI,IAAqBA,EAAM,KACjBzI,SAAV2U,IAAuBA,EAAQ,KAG/BlM,EAAM,KAAOF,EAAME,EAEnB,MAAO9R,GAAO+sB,MAAMm+F,SAAS,IAAK,IAAK,IAG3C,IAAIxwD,GAAM9oD,EAAMlM,KAAK+H,MAAM/H,KAAK4D,UAAYwI,EAAMF,IAC9C+oD,EAAQ/oD,EAAMlM,KAAK+H,MAAM/H,KAAK4D,UAAYwI,EAAMF,IAChDgpD,EAAOhpD,EAAMlM,KAAK+H,MAAM/H,KAAK4D,UAAYwI,EAAMF,GAEnD,OAAO5R,GAAO+sB,MAAMo+F,WAAWntG,EAAO08C,EAAKC,EAAOC,IActDgxD,OAAQ,SAAUjuG,GAEd,MAAIA,GAAQ,UAIJK,MAAOL,IAAU,GACjB+8C,IAAK/8C,GAAS,GAAK,IACnBg9C,MAAOh9C,GAAS,EAAI,IACpBi9C,KAAc,IAARj9C,EACNvP,EAAGuP,IAAU,GACb9Q,EAAG8Q,GAAS,GAAK,IACjB8M,EAAG9M,GAAS,EAAI,IAChBnP,EAAW,IAARmP,IAMHK,MAAO,IACP08C,IAAK/8C,GAAS,GAAK,IACnBg9C,MAAOh9C,GAAS,EAAI,IACpBi9C,KAAc,IAARj9C,EACNvP,EAAG,IACHvB,EAAG8Q,GAAS,GAAK,IACjB8M,EAAG9M,GAAS,EAAI,IAChBnP,EAAW,IAARmP,IAcfivG,UAAW,SAAUjvG,GAEjB,GAAqB,gBAAVA,GAEP,MAAO,QAAUA,EAAM9Q,EAAE1F,WAAa,IAAMwW,EAAM8M,EAAEtjB,WAAa,IAAMwW,EAAMnP,EAAErH,WAAa,KAAOwW,EAAMvP,EAAI,KAAKjH,WAAa,GAI/H,IAAIyrC,GAAM5yC,EAAO+sB,MAAM6+F,OAAOjuG,EAC9B,OAAO,QAAUi1B,EAAI/lC,EAAE1F,WAAa,IAAMyrC,EAAInoB,EAAEtjB,WAAa,IAAMyrC,EAAIpkC,EAAErH,WAAa,KAAOyrC,EAAIxkC,EAAI,KAAKjH,WAAa,KAa/H0lH,SAAU,SAAUlvG,GAChB,MAAOA,KAAU,IAWrBmvG,cAAe,SAAUnvG,GACrB,OAAQA,IAAU,IAAM,KAW5BovG,OAAQ,SAAUpvG,GACd,MAAOA,IAAS,GAAK,KAWzBqvG,SAAU,SAAUrvG,GAChB,MAAOA,IAAS,EAAI,KAWxBsvG,QAAS,SAAUtvG,GACf,MAAe,KAARA,GAYXuvG,YAAa,SAAU9+G,GACnB,MAAOA,IAYX8wD,aAAc,SAAU9wD,EAAGI,GACvB,MAAQA,GAAIJ,EAAKI,EAAIJ,GAYzB6wD,YAAa,SAAU7wD,EAAGI,GACtB,MAAQA,GAAIJ,EAAKA,EAAII,GAezBswD,cAAe,SAAU1wD,EAAGI,GACxB,MAAQJ,GAAII,EAAK,KAYrB2+G,aAAc,SAAU/+G,EAAGI,GACvB,OAAQJ,EAAII,GAAK,GAYrBqwD,SAAU,SAAUzwD,EAAGI,GACnB,MAAO9I,MAAKkM,IAAI,IAAKxD,EAAII,IAY7B4+G,cAAe,SAAUh/G,EAAGI,GACxB,MAAO9I,MAAKoM,IAAI,EAAG1D,EAAII,EAAI,MAc/B+wD,gBAAiB,SAAUnxD,EAAGI,GAC1B,MAAO9I,MAAKoJ,IAAIV,EAAII,IAYxB6+G,cAAe,SAAUj/G,EAAGI,GACxB,MAAO,KAAM9I,KAAKoJ,IAAI,IAAMV,EAAII,IAcpCuwD,YAAa,SAAU3wD,EAAGI,GACtB,MAAO,OAAS,IAAMJ,IAAM,IAAMI,IAAO,IAa7CgxD,eAAgB,SAAUpxD,EAAGI,GACzB,MAAOJ,GAAII,EAAI,EAAIJ,EAAII,EAAI,KAc/BwwD,aAAc,SAAU5wD,EAAGI,GACvB,MAAW,KAAJA,EAAW,EAAIJ,EAAII,EAAI,IAAQ,IAAM,GAAK,IAAMJ,IAAM,IAAMI,GAAK,KAsB5E8wD,eAAgB,SAAUlxD,EAAGI,GACzB,MAAW,KAAJA,EAAW,IAAMJ,GAAK,GAAK,KAAQI,EAAI,KAAO,IAAO,GAAK,MAAQJ,GAAK,GAAK,MAAQ,IAAMI,GAAK,KAuB1G6wD,eAAgB,SAAUjxD,EAAGI,GACzB,MAAOxO,GAAO+sB,MAAMiyC,aAAaxwD,EAAGJ,IAaxC+wD,gBAAiB,SAAU/wD,EAAGI,GAC1B,MAAa,OAANA,EAAYA,EAAI9I,KAAKkM,IAAI,KAAOxD,GAAK,IAAM,IAAMI,KAa5D4wD,eAAgB,SAAUhxD,EAAGI,GACzB,MAAa,KAANA,EAAUA,EAAI9I,KAAKoM,IAAI,EAAI,KAAQ,IAAM1D,GAAM,GAAKI,IAY/D8+G,iBAAkB,SAAUl/G,EAAGI,GAC3B,MAAOxO,GAAO+sB,MAAM8xC,SAASzwD,EAAGI,IAYpC++G,gBAAiB,SAAUn/G,EAAGI,GAC1B,MAAOxO,GAAO+sB,MAAMqgG,cAAch/G,EAAGI,IAczCg/G,iBAAkB,SAAUp/G,EAAGI,GAC3B,MAAW,KAAJA,EAAUxO,EAAO+sB,MAAMwgG,gBAAgBn/G,EAAG,EAAII,GAAKxO,EAAO+sB,MAAMugG,iBAAiBl/G,EAAI,GAAKI,EAAI,OAezGi/G,gBAAiB,SAAUr/G,EAAGI,GAC1B,MAAW,KAAJA,EAAUxO,EAAO+sB,MAAMqyC,eAAehxD,EAAG,EAAII,GAAKxO,EAAO+sB,MAAMoyC,gBAAgB/wD,EAAI,GAAKI,EAAI,OAavGk/G,cAAe,SAAUt/G,EAAGI,GACxB,MAAW,KAAJA,EAAUxO,EAAO+sB,MAAMkyC,YAAY7wD,EAAG,EAAII,GAAKxO,EAAO+sB,MAAMmyC,aAAa9wD,EAAI,GAAKI,EAAI,OAejGm/G,aAAc,SAAUv/G,EAAGI,GACvB,MAAOxO,GAAO+sB,MAAM0gG,gBAAgBr/G,EAAGI,GAAK,IAAM,EAAI,KAY1Do/G,aAAc,SAAUx/G,EAAGI,GACvB,MAAa,OAANA,EAAYA,EAAI9I,KAAKkM,IAAI,IAAMxD,EAAIA,GAAK,IAAMI,KAYzDq/G,UAAW,SAAUz/G,EAAGI,GACpB,MAAOxO,GAAO+sB,MAAM6gG,aAAap/G,EAAGJ,IAYxC0/G,aAAc,SAAU1/G,EAAGI,GACvB,MAAO9I,MAAKkM,IAAIxD,EAAGI,GAAK9I,KAAKoM,IAAI1D,EAAGI,GAAK,MAyBjDxO,EAAOutB,QAAU,SAAUpT,EAAMyQ,GAE7BA,EAASA,MAKTjrB,KAAKwa,KAAOA,EAKZxa,KAAKirB,OAASA,EAKdjrB,KAAKouH,OAAS,KAKdpuH,KAAKuY,GAAK,KAKVvY,KAAKquH,MAAQ,KAKbruH,KAAKykH,MAAQ,KAKbzkH,KAAKsuH,SAAW,KAKhBtuH,KAAKuuH,OAAS,KAEdvuH,KAAKkrB,eAQT7qB,EAAOutB,QAAQC,OAAS,EAMxBxtB,EAAOutB,QAAQ46B,KAAO,EAMtBnoD,EAAOutB,QAAQs2F,MAAQ,EAMvB7jH,EAAOutB,QAAQw2F,MAAQ,EAMvB/jH,EAAOutB,QAAQ4gG,SAAW,EAM1BnuH,EAAOutB,QAAQ6gG,SAAW,EAE1BpuH,EAAOutB,QAAQvnB,WAOX6kB,YAAa,WAEHlrB,KAAKirB,OAAOjgB,eAAe,WAAahL,KAAKirB,OAAe,UAAM,IAAS5qB,EAAOutB,QAAQ5iB,eAAe,YAG3GhL,KAAKouH,OAAS,GAAI/tH,GAAOutB,QAAQukC,OAAOnyD,KAAKwa,OAG7Cxa,KAAKirB,OAAOjgB,eAAe,UAAYhL,KAAKirB,OAAc,SAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,WAEtGhL,KAAKquH,MAAQ,GAAIhuH,GAAOutB,QAAQu2F,MAAMnkH,KAAKwa,OAG3Cxa,KAAKirB,OAAOjgB,eAAe,OAAShL,KAAKirB,OAAW,MAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,QAEhGhL,KAAKuY,GAAK,GAAIlY,GAAOutB,QAAQ8gG,GAAG1uH,KAAKwa,KAAMxa,KAAKirB,SAGhDjrB,KAAKirB,OAAOjgB,eAAe,UAAYhL,KAAKirB,OAAc,SAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,WAEtGhL,KAAKykH,MAAQ,GAAIpkH,GAAOutB,QAAQw2F,MAAMpkH,KAAKwa,KAAMxa,KAAKirB,SAGtDjrB,KAAKirB,OAAOjgB,eAAe,WAAahL,KAAKirB,OAAe,UAAM,GAAQ5qB,EAAOutB,QAAQ5iB,eAAe,YAExGhL,KAAKuuH,OAAS,GAAIluH,GAAOutB,QAAQ+gG,OAAO3uH,KAAKwa,KAAMxa,KAAKirB,UAyBhE2jG,YAAa,SAAUC,GAEfA,IAAWxuH,EAAOutB,QAAQC,OAE1B7tB,KAAKouH,OAAS,GAAI/tH,GAAOutB,QAAQukC,OAAOnyD,KAAKwa,MAExCq0G,IAAWxuH,EAAOutB,QAAQ46B,KAEf,OAAZxoD,KAAKuY,GAELvY,KAAKuY,GAAK,GAAIlY,GAAOutB,QAAQ8gG,GAAG1uH,KAAKwa,KAAMxa,KAAKirB,QAIhDjrB,KAAKuY,GAAGmH,QAGPmvG,IAAWxuH,EAAOutB,QAAQs2F,MAE/BlkH,KAAKquH,MAAQ,GAAIhuH,GAAOutB,QAAQu2F,MAAMnkH,KAAKwa,MAEtCq0G,IAAWxuH,EAAOutB,QAAQw2F,MAEZ,OAAfpkH,KAAKykH,MAELzkH,KAAKykH,MAAQ,GAAIpkH,GAAOutB,QAAQy2F,MAAMrkH,KAAKwa,KAAMxa,KAAKirB,QAItDjrB,KAAKykH,MAAM/kG,QAGVmvG,IAAWxuH,EAAOutB,QAAQ6gG,WAEX,OAAhBzuH,KAAKuuH,OAELvuH,KAAKuuH,OAAS,GAAIluH,GAAOutB,QAAQ+gG,OAAO3uH,KAAKwa,KAAMxa,KAAKirB,QAIxDjrB,KAAKuuH,OAAO7uG,UA0BxBqQ,OAAQ,SAAUuF,EAAQu5F,EAAQhrG,GAEfna,SAAXmlH,IAAwBA,EAASxuH,EAAOutB,QAAQC,QACtCnkB,SAAVma,IAAuBA,GAAQ,GAE/BgrG,IAAWxuH,EAAOutB,QAAQC,OAE1B7tB,KAAKouH,OAAOr+F,OAAOuF,GAEdu5F,IAAWxuH,EAAOutB,QAAQ46B,MAAQxoD,KAAKuY,GAE5CvY,KAAKuY,GAAGwX,OAAOuF,EAAQzR,GAElBgrG,IAAWxuH,EAAOutB,QAAQs2F,OAASlkH,KAAKquH,MAE7CruH,KAAKquH,MAAMS,WAAWx5F,GAEjBu5F,IAAWxuH,EAAOutB,QAAQw2F,OAASpkH,KAAKykH,MAE7CzkH,KAAKykH,MAAM10F,OAAOuF,GAEbu5F,IAAWxuH,EAAOutB,QAAQ6gG,UAAYzuH,KAAKuuH,OAEhDvuH,KAAKuuH,OAAOx+F,OAAOuF,GAInBltB,QAAQG,KAAK+sB,EAAOvpB,IAAM,6EAWlCiR,UAAW,WAIHhd,KAAKuY,IAELvY,KAAKuY,GAAGyE,YAGRhd,KAAKykH,OAELzkH,KAAKykH,MAAMznG,YAGXhd,KAAKuuH,QAELvuH,KAAKuuH,OAAOvxG,aAWpBuB,OAAQ,WAIAve,KAAKuY,IAELvY,KAAKuY,GAAGgG,SAGRve,KAAKykH,OAELzkH,KAAKykH,MAAMlmG,SAGXve,KAAKuuH,QAELvuH,KAAKuuH,OAAOhwG,UAWpBa,iBAAkB,WAEVpf,KAAKouH,QAELpuH,KAAKouH,OAAOhvG,mBAGZpf,KAAKquH,OAELruH,KAAKquH,MAAMjvG,mBAGXpf,KAAKuY,IAELvY,KAAKuY,GAAG6G,mBAGRpf,KAAKykH,OAELzkH,KAAKykH,MAAMrlG,mBAGXpf,KAAKuuH,QAELvuH,KAAKuuH,OAAOnvG,oBAWpBnB,MAAO,WAECje,KAAKuY,IAELvY,KAAKuY,GAAG0F,QAGRje,KAAKykH,OAELzkH,KAAKykH,MAAMxmG,QAGXje,KAAKuuH,QAELvuH,KAAKuuH,OAAOtwG,SAWpByB,MAAO,WAEC1f,KAAKuY,IAELvY,KAAKuY,GAAGmH,QAGR1f,KAAKykH,OAELzkH,KAAKykH,MAAM/kG,QAGX1f,KAAKuuH,QAELvuH,KAAKuuH,OAAO7uG,SAUpBoE,QAAS,WAED9jB,KAAKuY,IAELvY,KAAKuY,GAAGuL,UAGR9jB,KAAKykH,OAELzkH,KAAKykH,MAAM3gG,UAGX9jB,KAAKuuH,QAELvuH,KAAKuuH,OAAOzqG,UAGhB9jB,KAAKouH,OAAS,KACdpuH,KAAKquH,MAAQ,KACbruH,KAAKuY,GAAK,KACVvY,KAAKykH,MAAQ,KACbzkH,KAAKuuH,OAAS,OAMtBluH,EAAOutB,QAAQvnB,UAAU8B,YAAc9H,EAAOutB,QAe9CvtB,EAAOutB,QAAQukC,OAAS,SAAU33C,GAK9Bxa,KAAKwa,KAAOA,EAKZxa,KAAK+uH,QAAU,GAAI1uH,GAAO2M,MAK1BhN,KAAK2a,OAAS,GAAIta,GAAOkN,UAAU,EAAG,EAAGiN,EAAKC,MAAM1K,MAAOyK,EAAKC,MAAMzK,QAOtEhQ,KAAKgvH,gBAAmBhvE,IAAI,EAAMrV,MAAM,EAAM9/B,MAAM,EAAMD,OAAO,GAKjE5K,KAAK0wF,WAAa,GAKlB1wF,KAAK2wF,UAAY,EAKjB3wF,KAAKivH,aAAe,EAKpBjvH,KAAKkvH,QAAS,EAMdlvH,KAAKmvH,cAAgB9uH,EAAOutB,QAAQukC,OAAOi9D,WAK3CpvH,KAAKqvH,cAAe,EAKpBrvH,KAAK23F,UAAW,EAKhB33F,KAAK+jH,SAAW,GAAI1jH,GAAOowF,SAASzwF,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQhQ,KAAK0wF,WAAY1wF,KAAK2wF,WAM3K3wF,KAAKsvH,OAAS,EAGdtvH,KAAKof,oBAIT/e,EAAOutB,QAAQukC,OAAO9rD,UAAU8B,YAAc9H,EAAOutB,QAAQukC,OAQ7D9xD,EAAOutB,QAAQukC,OAAOo9D,UAAY,EAQlClvH,EAAOutB,QAAQukC,OAAOi9D,WAAa,EAQnC/uH,EAAOutB,QAAQukC,OAAOq9D,WAAa,EAQnCnvH,EAAOutB,QAAQukC,OAAOs9D,WAAa,EAQnCpvH,EAAOutB,QAAQukC,OAAOu9D,WAAa,EAEnCrvH,EAAOutB,QAAQukC,OAAO9rD,WAWlBywB,UAAW,SAAU7wB,EAAGwG,EAAGsD,EAAOC,GAE9BhQ,KAAK2a,OAAOnN,MAAMvH,EAAGwG,EAAGsD,EAAOC,IASnCoP,iBAAkB,WAEdpf,KAAK2a,OAAOlN,SAASzN,KAAKwa,KAAKC,MAAME,SAYzCoV,OAAQ,SAAUuF,EAAQ3J,GAELjiB,SAAbiiB,IAA0BA,GAAW,EAEzC,IAAI7jB,GAAI,CAER,IAAItB,MAAMa,QAAQiuB,GAId,IAFAxtB,EAAIwtB,EAAOztB,OAEJC,KAECwtB,EAAOxtB,YAAczH,GAAOmtB,MAG5BxtB,KAAK+vB,OAAOuF,EAAOxtB,GAAG6jB,SAAUA,IAIhC3rB,KAAK0tB,WAAW4H,EAAOxtB,IAEnB6jB,GAAY2J,EAAOxtB,GAAGkD,eAAe,aAAesqB,EAAOxtB,GAAG6jB,SAAS9jB,OAAS,GAEhF7H,KAAK+vB,OAAOuF,EAAOxtB,IAAI,QAO/BwtB,aAAkBj1B,GAAOmtB,MAGzBxtB,KAAK+vB,OAAOuF,EAAO3J,SAAUA,IAI7B3rB,KAAK0tB,WAAW4H,GAEZ3J,GAAY2J,EAAOtqB,eAAe,aAAesqB,EAAO3J,SAAS9jB,OAAS,GAE1E7H,KAAK+vB,OAAOuF,EAAO3J,UAAU,KAiB7C+B,WAAY,SAAU4H,GAEdA,EAAOtqB,eAAe,SAA2B,OAAhBsqB,EAAO3F,OAExC2F,EAAO3F,KAAO,GAAItvB,GAAOutB,QAAQukC,OAAO8xD,KAAK3uF,GAEzCA,EAAO9L,QAAU8L,EAAO9L,iBAAkBnpB,GAAOmtB,OAEjD8H,EAAO9L,OAAOwG,UAAUsF,KAYpCq6F,aAAc,SAAUhgG,GAEpB,GAAIigG,GAAgB5vH,KAAK6vH,gBAAgB,EAAGlgG,EAAMA,EAAKmgG,gBAAiBngG,EAAKogG,oBAAqBpgG,EAAKqgG,YAAargG,EAAKsgG,YAActgG,EAAKmgG,eAC5IngG,GAAKmgG,iBAAmBF,EACxBjgG,EAAK6G,UAAa7G,EAAKmgG,gBAAkB9vH,KAAKwa,KAAKmE,KAAKkiE,eAExDlxD,EAAKugG,SAASjqH,EAAIjG,KAAK6vH,gBAAgB,EAAGlgG,EAAMA,EAAKugG,SAASjqH,EAAG0pB,EAAKwgG,aAAalqH,EAAG0pB,EAAKygG,KAAKnqH,EAAG0pB,EAAK0gG,YAAYpqH,GACpH0pB,EAAKugG,SAASzjH,EAAIzM,KAAK6vH,gBAAgB,EAAGlgG,EAAMA,EAAKugG,SAASzjH,EAAGkjB,EAAKwgG,aAAa1jH,EAAGkjB,EAAKygG,KAAK3jH,EAAGkjB,EAAK0gG,YAAY5jH,IAiBxHojH,gBAAiB,SAAU1xE,EAAMxuB,EAAMugG,EAAUC,EAAcC,EAAMj+G,GA4CjE,MA1CYzI,UAARyI,IAAqBA,EAAM,KAElB,IAATgsC,GAAcxuB,EAAK2gG,aAEnBJ,IAAalwH,KAAK+uH,QAAQ9oH,EAAI0pB,EAAKo/F,QAAQ9oH,GAAKjG,KAAKwa,KAAKmE,KAAKkiE,eAEjD,IAAT1iC,GAAcxuB,EAAK2gG,eAExBJ,IAAalwH,KAAK+uH,QAAQtiH,EAAIkjB,EAAKo/F,QAAQtiH,GAAKzM,KAAKwa,KAAKmE,KAAKkiE,gBAG/DsvC,EAEAD,GAAYC,EAAenwH,KAAKwa,KAAKmE,KAAKkiE,eAErCuvC,IAELA,GAAQpwH,KAAKwa,KAAKmE,KAAKkiE,eAEnBqvC,EAAWE,EAAO,EAElBF,GAAYE,EAEW,EAAlBF,EAAWE,EAEhBF,GAAYE,EAIZF,EAAW,GAIfA,EAAW/9G,EAEX+9G,EAAW/9G,GAEMA,EAAZ+9G,IAELA,GAAY/9G,GAGT+9G,GAoBXxgE,QAAS,SAAU6gE,EAASC,EAASC,EAAiBC,EAAiB3tG,GAQnE,GANA0tG,EAAkBA,GAAmB,KACrCC,EAAkBA,GAAmB,KACrC3tG,EAAkBA,GAAmB0tG,EAErCzwH,KAAKsvH,OAAS,GAET9oH,MAAMa,QAAQkpH,IAAY/pH,MAAMa,QAAQmpH,GAEzC,IAAK,GAAI1oH,GAAI,EAAGA,EAAI0oH,EAAQ3oH,OAAQC,IAEhC9H,KAAK2wH,eAAeJ,EAASC,EAAQ1oH,GAAI2oH,EAAiBC,EAAiB3tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQkpH,KAAa/pH,MAAMa,QAAQmpH,GAE9C,IAAK,GAAI1oH,GAAI,EAAGA,EAAIyoH,EAAQ1oH,OAAQC,IAEhC9H,KAAK2wH,eAAeJ,EAAQzoH,GAAI0oH,EAASC,EAAiBC,EAAiB3tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQkpH,IAAY/pH,MAAMa,QAAQmpH,GAE7C,IAAK,GAAI1oH,GAAI,EAAGA,EAAIyoH,EAAQ1oH,OAAQC,IAEhC,IAAK,GAAI+P,GAAI,EAAGA,EAAI24G,EAAQ3oH,OAAQgQ,IAEhC7X,KAAK2wH,eAAeJ,EAAQzoH,GAAI0oH,EAAQ34G,GAAI44G,EAAiBC,EAAiB3tG,GAAiB,OAMvG/iB,MAAK2wH,eAAeJ,EAASC,EAASC,EAAiBC,EAAiB3tG,GAAiB,EAG7F,OAAQ/iB,MAAKsvH,OAAS,GAsB1BsB,QAAS,SAAUL,EAASC,EAASK,EAAiBH,EAAiB3tG,GAQnE,GANA8tG,EAAkBA,GAAmB,KACrCH,EAAkBA,GAAmB,KACrC3tG,EAAkBA,GAAmB8tG,EAErC7wH,KAAKsvH,OAAS,GAET9oH,MAAMa,QAAQkpH,IAAY/pH,MAAMa,QAAQmpH,GAEzC,IAAK,GAAI1oH,GAAI,EAAGA,EAAI0oH,EAAQ3oH,OAAQC,IAEhC9H,KAAK2wH,eAAeJ,EAASC,EAAQ1oH,GAAI+oH,EAAiBH,EAAiB3tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQkpH,KAAa/pH,MAAMa,QAAQmpH,GAE9C,IAAK,GAAI1oH,GAAI,EAAGA,EAAIyoH,EAAQ1oH,OAAQC,IAEhC9H,KAAK2wH,eAAeJ,EAAQzoH,GAAI0oH,EAASK,EAAiBH,EAAiB3tG,GAAiB,OAG/F,IAAIvc,MAAMa,QAAQkpH,IAAY/pH,MAAMa,QAAQmpH,GAE7C,IAAK,GAAI1oH,GAAI,EAAGA,EAAIyoH,EAAQ1oH,OAAQC,IAEhC,IAAK,GAAI+P,GAAI,EAAGA,EAAI24G,EAAQ3oH,OAAQgQ,IAEhC7X,KAAK2wH,eAAeJ,EAAQzoH,GAAI0oH,EAAQ34G,GAAIg5G,EAAiBH,EAAiB3tG,GAAiB,OAMvG/iB,MAAK2wH,eAAeJ,EAASC,EAASK,EAAiBH,EAAiB3tG,GAAiB,EAG7F,OAAQ/iB,MAAKsvH,OAAS,GAc1BwB,cAAe,SAAUriH,EAAGI,GAExB,MAAKJ,GAAEkhB,MAAS9gB,EAAE8gB,KAKXlhB,EAAEkhB,KAAK1pB,EAAI4I,EAAE8gB,KAAK1pB,EAHd,GAiBf8qH,cAAe,SAAUtiH,EAAGI,GAExB,MAAKJ,GAAEkhB,MAAS9gB,EAAE8gB,KAKX9gB,EAAE8gB,KAAK1pB,EAAIwI,EAAEkhB,KAAK1pB,EAHd,GAiBf+qH,cAAe,SAAUviH,EAAGI,GAExB,MAAKJ,GAAEkhB,MAAS9gB,EAAE8gB,KAKXlhB,EAAEkhB,KAAKljB,EAAIoC,EAAE8gB,KAAKljB,EAHd,GAiBfwkH,cAAe,SAAUxiH,EAAGI,GAExB,MAAKJ,GAAEkhB,MAAS9gB,EAAE8gB,KAKX9gB,EAAE8gB,KAAKljB,EAAIgC,EAAEkhB,KAAKljB,EAHd,GAoBf4nB,KAAM,SAAU6B,EAAOi5F,GAEgB,OAA/Bj5F,EAAMtH,qBAENugG,EAAgBj5F,EAAMtH,qBAIAllB,SAAlBylH,IAA+BA,EAAgBnvH,KAAKmvH,eAGxDA,IAAkB9uH,EAAOutB,QAAQukC,OAAOi9D,WAGxCl5F,EAAMjH,KAAKoF,KAAKr0B,KAAK8wH,eAEhB3B,IAAkB9uH,EAAOutB,QAAQukC,OAAOq9D,WAG7Ct5F,EAAMjH,KAAKoF,KAAKr0B,KAAK+wH,eAEhB5B,IAAkB9uH,EAAOutB,QAAQukC,OAAOs9D,WAG7Cv5F,EAAMjH,KAAKoF,KAAKr0B,KAAKgxH,eAEhB7B,IAAkB9uH,EAAOutB,QAAQukC,OAAOu9D,YAG7Cx5F,EAAMjH,KAAKoF,KAAKr0B,KAAKixH,gBAiB7BN,eAAgB,SAAUJ,EAASC,EAASK,EAAiBH,EAAiB3tG,EAAiBmuG,GAG3F,MAAgBxnH,UAAZ8mH,GAAyBD,EAAQxiG,cAAgB1tB,EAAOmB,OAExDxB,KAAKq0B,KAAKk8F,OACVvwH,MAAKmxH,mBAAmBZ,EAASM,EAAiBH,EAAiB3tG,EAAiBmuG,SAKnFX,GAAYC,GAAYD,EAAQ/lG,QAAWgmG,EAAQhmG,SAMpDxqB,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOo9D,YAEzCgB,EAAQxiG,cAAgB1tB,EAAOmB,OAE/BxB,KAAKq0B,KAAKk8F,GAGVC,EAAQziG,cAAgB1tB,EAAOmB,OAE/BxB,KAAKq0B,KAAKm8F,IAKdD,EAAQxiG,cAAgB1tB,EAAOY,OAE3BuvH,EAAQziG,cAAgB1tB,EAAOY,OAE/BjB,KAAKoxH,sBAAsBb,EAASC,EAASK,EAAiBH,EAAiB3tG,EAAiBmuG,GAE3FV,EAAQziG,cAAgB1tB,EAAOmB,MAEpCxB,KAAKqxH,qBAAqBd,EAASC,EAASK,EAAiBH,EAAiB3tG,EAAiBmuG,GAE1FV,EAAQziG,cAAgB1tB,EAAOsB,cAEpC3B,KAAKsxH,4BAA4Bf,EAASC,EAASK,EAAiBH,EAAiB3tG,EAAiBmuG,GAIrGX,EAAQxiG,cAAgB1tB,EAAOmB,MAEhCgvH,EAAQziG,cAAgB1tB,EAAOY,OAE/BjB,KAAKqxH,qBAAqBb,EAASD,EAASM,EAAiBH,EAAiB3tG,EAAiBmuG,GAE1FV,EAAQziG,cAAgB1tB,EAAOmB,MAEpCxB,KAAKuxH,oBAAoBhB,EAASC,EAASK,EAAiBH,EAAiB3tG,EAAiBmuG,GAEzFV,EAAQziG,cAAgB1tB,EAAOsB,cAEpC3B,KAAKwxH,2BAA2BjB,EAASC,EAASK,EAAiBH,EAAiB3tG,EAAiBmuG,GAIpGX,EAAQxiG,cAAgB1tB,EAAOsB,eAEhC6uH,EAAQziG,cAAgB1tB,EAAOY,OAE/BjB,KAAKsxH,4BAA4Bd,EAASD,EAASM,EAAiBH,EAAiB3tG,EAAiBmuG,GAEjGV,EAAQziG,cAAgB1tB,EAAOmB,OAEpCxB,KAAKwxH,2BAA2BhB,EAASD,EAASM,EAAiBH,EAAiB3tG,EAAiBmuG,OAmBjHE,sBAAuB,SAAUK,EAASC,EAASb,EAAiBH,EAAiB3tG,EAAiBmuG,GAElG,MAAKO,GAAQ9hG,MAAS+hG,EAAQ/hG,MAK1B3vB,KAAK2xH,SAASF,EAAQ9hG,KAAM+hG,EAAQ/hG,KAAM+gG,EAAiB3tG,EAAiBmuG,KAExEL,GAEAA,EAAgB/pH,KAAKic,EAAiB0uG,EAASC,GAGnD1xH,KAAKsvH,WAGF,IAbI,GA6Bf+B,qBAAsB,SAAUt6F,EAAQb,EAAO26F,EAAiBH,EAAiB3tG,EAAiBmuG,GAE9F,GAAqB,IAAjBh7F,EAAMruB,QAAiBkvB,EAAOpH,KAKlC,GAAI3vB,KAAKqvH,cAAgBt4F,EAAOpH,KAAK0/F,aAIjC,IAAK,GAFD10G,MAEK7S,EAAI,EAAGA,EAAIouB,EAAMjH,KAAKpnB,OAAQC,IACvC,CACI,GAAIyoH,GAAUr6F,EAAMjH,KAAKnnB,EAGzB,IAAKyoH,GAAYA,EAAQ/lG,QAAW+lG,EAAQ5gG,KAA5C,CASA,GAHAhV,EAAS41G,EAAQ5gG,KAAKriB,UAAUqN,GAG5B3a,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOi9D,WACjD,CACI,GAAIr4F,EAAOpH,KAAK/kB,MAAQ+P,EAAO1U,EAE3B,KAEC,IAAI0U,EAAO/P,MAAQmsB,EAAOpH,KAAK1pB,EAEhC,aAGH,IAAIjG,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOq9D,WACtD,CACI,GAAIz4F,EAAOpH,KAAK1pB,EAAI0U,EAAO/P,MAEvB,KAEC,IAAI+P,EAAO1U,EAAI8wB,EAAOpH,KAAK/kB,MAE5B,aAGH,IAAI5K,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOs9D,WACtD,CACI,GAAI14F,EAAOpH,KAAKhhB,OAASgM,EAAOlO,EAE5B,KAEC,IAAIkO,EAAOhM,OAASooB,EAAOpH,KAAKljB,EAEjC,aAGH,IAAIzM,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOu9D,WACtD,CACI,GAAI34F,EAAOpH,KAAKljB,EAAIkO,EAAOhM,OAEvB,KAEC,IAAIgM,EAAOlO,EAAIsqB,EAAOpH,KAAKhhB,OAE5B,SAIR3O,KAAKoxH,sBAAsBr6F,EAAQw5F,EAASM,EAAiBH,EAAiB3tG,EAAiBmuG,QAIvG,CAEIlxH,KAAK+jH,SAAS9lG,QAEdje,KAAK+jH,SAASrkG,MAAM1f,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQhQ,KAAK0wF,WAAY1wF,KAAK2wF,WAE3J3wF,KAAK+jH,SAAS7yB,SAASh7D,EAIvB,KAAK,GAFD07F,GAAQ5xH,KAAK+jH,SAAS1yB,SAASt6D,GAE1BjvB,EAAI,EAAGA,EAAI8pH,EAAM/pH,OAAQC,IAG1B9H,KAAK2xH,SAAS56F,EAAOpH,KAAMiiG,EAAM9pH,GAAI4oH,EAAiB3tG,EAAiBmuG,KAEnEL,GAEAA,EAAgB/pH,KAAKic,EAAiBgU,EAAQ66F,EAAM9pH,GAAGivB,QAG3D/2B,KAAKsvH,YAmBrB6B,mBAAoB,SAAUj7F,EAAO26F,EAAiBH,EAAiB3tG,EAAiBmuG,GAEpF,GAAqB,IAAjBh7F,EAAMruB,OAKV,IAAK,GAAIC,GAAI,EAAGA,EAAIouB,EAAMjH,KAAKpnB,OAAQC,IACvC,CACI,GAAI+pH,MACAtB,EAAUr6F,EAAMjH,KAAKnnB,EAGzB,IAAKyoH,GAAYA,EAAQ/lG,QAAW+lG,EAAQ5gG,KAA5C,CAMAkiG,EAAUtB,EAAQ5gG,KAAKriB,UAAUukH,EAEjC,KAAK,GAAIh6G,GAAI/P,EAAI,EAAG+P,EAAIqe,EAAMjH,KAAKpnB,OAAQgQ,IAC3C,CACI,GAAIi6G,MACAtB,EAAUt6F,EAAMjH,KAAKpX,EAGzB,IAAK24G,GAAYA,EAAQhmG,QAAWgmG,EAAQ7gG,KAA5C,CASA,GAHAmiG,EAAUtB,EAAQ7gG,KAAKriB,UAAUwkH,GAG7B9xH,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOi9D,WACjD,CACI,GAAIyC,EAAQjnH,MAAQknH,EAAQ7rH,EAExB,KAEC,IAAI6rH,EAAQlnH,MAAQinH,EAAQ5rH,EAE7B,aAGH,IAAIjG,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOq9D,WACtD,CACI,GAAIqC,EAAQ5rH,EAAI6rH,EAAQlnH,MAEpB,QAEC,IAAIknH,EAAQ7rH,EAAI4rH,EAAQjnH,MAEzB,UAGH,IAAI5K,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOs9D,WACtD,CACI,GAAIoC,EAAQljH,OAASmjH,EAAQrlH,EAEzB,QAEC,IAAIqlH,EAAQnjH,OAASkjH,EAAQplH,EAE9B,UAGH,IAAIzM,KAAKmvH,gBAAkB9uH,EAAOutB,QAAQukC,OAAOu9D,WACtD,CACI,GAAImC,EAAQplH,EAAIqlH,EAAQnjH,OAEpB,QAEC,IAAImjH,EAAQrlH,EAAI8jH,EAAQ5gG,KAAKhhB,OAE9B,MAIR3O,KAAKoxH,sBAAsBb,EAASC,EAASK,EAAiBH,EAAiB3tG,EAAiBmuG,QAkB5GK,oBAAqB,SAAUQ,EAAQC,EAAQnB,EAAiBH,EAAiB3tG,EAAiBmuG,GAE9F,GAAsB,IAAlBa,EAAOlqH,QAAkC,IAAlBmqH,EAAOnqH,OAKlC,IAAK,GAAIC,GAAI,EAAGA,EAAIiqH,EAAOpmG,SAAS9jB,OAAQC,IAEpCiqH,EAAOpmG,SAAS7jB,GAAG0iB,SAEfunG,EAAOpmG,SAAS7jB,GAAGimB,cAAgB1tB,EAAOmB,MAE1CxB,KAAKuxH,oBAAoBQ,EAAOpmG,SAAS7jB,GAAIkqH,EAAQnB,EAAiBH,EAAiB3tG,EAAiBmuG,GAIxGlxH,KAAKqxH,qBAAqBU,EAAOpmG,SAAS7jB,GAAIkqH,EAAQnB,EAAiBH,EAAiB3tG,EAAiBmuG,KAmBzHS,SAAU,SAAUM,EAAOC,EAAOxB,EAAiB3tG,EAAiBmuG,GAEhE,IAAKe,EAAMliG,SAAWmiG,EAAMniG,SAAW/vB,KAAK8O,WAAWmjH,EAAOC,GAE1D,OAAO,CAIX,IAAIxB,GAAmBA,EAAgB5pH,KAAKic,EAAiBkvG,EAAMl7F,OAAQm7F,EAAMn7F,WAAY,EAEzF,OAAO,CAIX,IAAIk7F,EAAME,UAAYD,EAAMC,SAExB,MAAOnyH,MAAKoyH,eAAeH,EAAOC,EAAOhB,EAO7C,IAAIe,EAAME,WAAaD,EAAMC,SAC7B,CACI,GAAIE,GAAYJ,EAAc,SAAIC,EAAQD,EACtCK,EAAcL,EAAc,SAAIA,EAAQC,EAExCx+G,GACAzN,EAAGosH,EAASpsH,EACZwG,EAAG4lH,EAAS5lH,EACZ7B,MAAOynH,EAASznH,MAChB+D,OAAQ0jH,EAAS1jH,QAGjBwuB,GACAl3B,EAAGqsH,EAAWrsH,EAAIqsH,EAAWjlH,OAC7BZ,EAAG6lH,EAAW7lH,EAAI6lH,EAAWjlH,OAGjC,KAAI8vB,EAAO1wB,EAAIiH,EAAKjH,GAAK0wB,EAAO1wB,EAAIiH,EAAK/E,UAEjCwuB,EAAOl3B,EAAIyN,EAAKzN,GAAKk3B,EAAOl3B,EAAIyN,EAAK9I,OAErC,MAAO5K,MAAKoyH,eAAeH,EAAOC,EAAOhB,GAKrD,GAAIqB,IAAU,EACVC,GAAU,CAGVxyH,MAAKkvH,QAAUnpH,KAAKoJ,IAAInP,KAAK+uH,QAAQtiH,EAAIwlH,EAAMlD,QAAQtiH,GAAK1G,KAAKoJ,IAAInP,KAAK+uH,QAAQ9oH,EAAIgsH,EAAMlD,QAAQ9oH,IAEpGssH,EAAUvyH,KAAKyyH,UAAUR,EAAOC,EAAOhB,GAGnClxH,KAAK8O,WAAWmjH,EAAOC,KAEvBM,EAAUxyH,KAAK0yH,UAAUT,EAAOC,EAAOhB,MAK3CsB,EAAUxyH,KAAK0yH,UAAUT,EAAOC,EAAOhB,GAGnClxH,KAAK8O,WAAWmjH,EAAOC,KAEvBK,EAAUvyH,KAAKyyH,UAAUR,EAAOC,EAAOhB,IAI/C,IAAI5/G,GAAUihH,GAAWC,CA8BzB,OA5BIlhH,KAEI4/G,GAEIe,EAAMU,WAENV,EAAMU,UAAU9zG,SAASozG,EAAMl7F,OAAQm7F,EAAMn7F,QAG7Cm7F,EAAMS,WAENT,EAAMS,UAAU9zG,SAASqzG,EAAMn7F,OAAQk7F,EAAMl7F,UAK7Ck7F,EAAMW,WAENX,EAAMW,UAAU/zG,SAASozG,EAAMl7F,OAAQm7F,EAAMn7F,QAG7Cm7F,EAAMU,WAENV,EAAMU,UAAU/zG,SAASqzG,EAAMn7F,OAAQk7F,EAAMl7F,UAKlDzlB,GAYXxC,WAAY,SAAUmjH,EAAOC,GAEzB,MAAID,KAAUC,GAEH,EAGPD,EAAME,SAEFD,EAAMC,SAGC9xH,EAAO0F,KAAK8H,SAASokH,EAAMjhH,OAAO/K,EAAGgsH,EAAMjhH,OAAOvE,EAAGylH,EAAMlhH,OAAO/K,EAAGisH,EAAMlhH,OAAOvE,IAAOwlH,EAAM5kH,OAAS6kH,EAAM7kH,OAK9GrN,KAAK6yH,qBAAqBZ,EAAOC,GAKxCA,EAAMC,SAGCnyH,KAAK6yH,qBAAqBX,EAAOD,GAKpCA,EAAMrnH,OAASsnH,EAAM34G,SAAStT,GAEvB,EAGPgsH,EAAMtjH,QAAUujH,EAAM34G,SAAS9M,GAExB,EAGPwlH,EAAM14G,SAAStT,GAAKisH,EAAMtnH,OAEnB,IAGPqnH,EAAM14G,SAAS9M,GAAKylH,EAAMvjH,SAmB1CkkH,qBAAsB,SAAU11F,EAAQxN,GAEpC,GAAI1pB,GAAI5F,EAAO0F,KAAKyP,MAAM2nB,EAAOnsB,OAAO/K,EAAG0pB,EAAK9kB,KAAM8kB,EAAK/kB,OACvD6B,EAAIpM,EAAO0F,KAAKyP,MAAM2nB,EAAOnsB,OAAOvE,EAAGkjB,EAAKjhB,IAAKihB,EAAKhhB,QAEtDN,GAAM8uB,EAAOnsB,OAAO/K,EAAIA,IAAMk3B,EAAOnsB,OAAO/K,EAAIA,GAChDqI,GAAM6uB,EAAOnsB,OAAOvE,EAAIA,IAAM0wB,EAAOnsB,OAAOvE,EAAIA,EAEpD,OAAQ4B,GAAKC,GAAQ6uB,EAAO9vB,OAAS8vB,EAAO9vB,QAchD+kH,eAAgB,SAAUH,EAAOC,EAAOhB,GAGpClxH,KAAK8yH,YAAYb,EAAOC,GACxBlyH,KAAK+yH,YAAYd,EAAOC,EAExB,IAAIc,GAAiBhzH,KAAKizH,oBAAoBhB,EAAOC,GAEjDxiE,EAAU,CAEd,IAAIuiE,EAAME,WAAaD,EAAMC,SAC7B,CACI,GAAIz+G,IACAzN,EAAIisH,EAAc,SAAID,EAAM14G,SAAStT,EAAIisH,EAAM34G,SAAStT,EACxDwG,EAAIylH,EAAc,SAAID,EAAM14G,SAAS9M,EAAIylH,EAAM34G,SAAS9M,EACxD7B,MAAQsnH,EAAc,SAAID,EAAMrnH,MAAQsnH,EAAMtnH,MAC9C+D,OAASujH,EAAc,SAAID,EAAMtjH,OAASujH,EAAMvjH,QAGhDwuB,GACAl3B,EAAIgsH,EAAc,SAAKA,EAAM14G,SAAStT,EAAIgsH,EAAM5kH,OAAW6kH,EAAM34G,SAAStT,EAAIisH,EAAM7kH,OACpFZ,EAAIwlH,EAAc,SAAKA,EAAM14G,SAAS9M,EAAIwlH,EAAM5kH,OAAW6kH,EAAM34G,SAAS9M,EAAIylH,EAAM7kH;AACpFA,OAAS4kH,EAAc,SAAIA,EAAM5kH,OAAS6kH,EAAM7kH,OAGhD8vB,GAAO1wB,EAAIiH,EAAKjH,EAEZ0wB,EAAOl3B,EAAIyN,EAAKzN,EAEhBypD,EAAUrvD,EAAO0F,KAAK8H,SAASsvB,EAAOl3B,EAAGk3B,EAAO1wB,EAAGiH,EAAKzN,EAAGyN,EAAKjH,GAAK0wB,EAAO9vB,OAEvE8vB,EAAOl3B,EAAIyN,EAAK9I,QAErB8kD,EAAUrvD,EAAO0F,KAAK8H,SAASsvB,EAAOl3B,EAAGk3B,EAAO1wB,EAAGiH,EAAK9I,MAAO8I,EAAKjH,GAAK0wB,EAAO9vB,QAG/E8vB,EAAO1wB,EAAIiH,EAAK/E,SAEjBwuB,EAAOl3B,EAAIyN,EAAKzN,EAEhBypD,EAAUrvD,EAAO0F,KAAK8H,SAASsvB,EAAOl3B,EAAGk3B,EAAO1wB,EAAGiH,EAAKzN,EAAGyN,EAAK/E,QAAUwuB,EAAO9vB,OAE5E8vB,EAAOl3B,EAAIyN,EAAK9I,QAErB8kD,EAAUrvD,EAAO0F,KAAK8H,SAASsvB,EAAOl3B,EAAGk3B,EAAO1wB,EAAGiH,EAAK9I,MAAO8I,EAAK/E,QAAUwuB,EAAO9vB,SAI7FqiD,GAAW,OAIXA,GAAWuiE,EAAM5kH,OAAS6kH,EAAM7kH,OAAUhN,EAAO0F,KAAK8H,SAASokH,EAAMjhH,OAAO/K,EAAGgsH,EAAMjhH,OAAOvE,EAAGylH,EAAMlhH,OAAO/K,EAAGisH,EAAMlhH,OAAOvE,EAIhI,IAAIykH,GAA2B,IAAZxhE,GAAkBuiE,EAAMiB,WAAahB,EAAMgB,WAAcjB,EAAMkB,iBAAmBjB,EAAMiB,gBAgBvG,MAdgB,KAAZzjE,IAEIuiE,EAAMU,WAENV,EAAMU,UAAU9zG,SAASozG,EAAMl7F,OAAQm7F,EAAMn7F,QAG7Cm7F,EAAMS,WAENT,EAAMS,UAAU9zG,SAASqzG,EAAMn7F,OAAQk7F,EAAMl7F,SAKjC,IAAZ24B,CAKZ,IAAI++B,IACAxoF,EAAGgsH,EAAM/B,SAASjqH,EAAIF,KAAKoH,IAAI6lH,GAAkBf,EAAM/B,SAASzjH,EAAI1G,KAAKqH,IAAI4lH,GAC7EvmH,EAAGwlH,EAAM/B,SAASjqH,EAAIF,KAAKqH,IAAI4lH,GAAkBf,EAAM/B,SAASzjH,EAAI1G,KAAKoH,IAAI6lH,IAG7EI,GACAntH,EAAGisH,EAAMhC,SAASjqH,EAAIF,KAAKoH,IAAI6lH,GAAkBd,EAAMhC,SAASzjH,EAAI1G,KAAKqH,IAAI4lH,GAC7EvmH,EAAGylH,EAAMhC,SAASjqH,EAAIF,KAAKqH,IAAI4lH,GAAkBd,EAAMhC,SAASzjH,EAAI1G,KAAKoH,IAAI6lH,IAI7EK,IAAapB,EAAMqB,KAAOpB,EAAMoB,MAAQ7kC,EAAGxoF,EAAI,EAAIisH,EAAMoB,KAAOF,EAAGntH,IAAMgsH,EAAMqB,KAAOpB,EAAMoB,MAC5FC,GAAY,EAAItB,EAAMqB,KAAO7kC,EAAGxoF,GAAKisH,EAAMoB,KAAOrB,EAAMqB,MAAQF,EAAGntH,IAAMgsH,EAAMqB,KAAOpB,EAAMoB,KAgFhG,OA7EKrB,GAAMiB,YAEPjB,EAAM/B,SAASjqH,GAAKotH,EAAWttH,KAAKoH,IAAI6lH,GAAkBvkC,EAAGhiF,EAAI1G,KAAKqH,IAAI4lH,IAAmBf,EAAMuB,OAAOvtH,EAC1GgsH,EAAM/B,SAASzjH,GAAKgiF,EAAGhiF,EAAI1G,KAAKoH,IAAI6lH,GAAkBK,EAAWttH,KAAKqH,IAAI4lH,IAAmBf,EAAMuB,OAAO/mH,GAGzGylH,EAAMgB,YAEPhB,EAAMhC,SAASjqH,GAAKstH,EAAWxtH,KAAKoH,IAAI6lH,GAAkBI,EAAG3mH,EAAI1G,KAAKqH,IAAI4lH,IAAmBd,EAAMsB,OAAOvtH,EAC1GisH,EAAMhC,SAASzjH,GAAK2mH,EAAG3mH,EAAI1G,KAAKoH,IAAI6lH,GAAkBO,EAAWxtH,KAAKqH,IAAI4lH,IAAmBd,EAAMsB,OAAO/mH,GAO1G1G,KAAKoJ,IAAI6jH,GAAkBjtH,KAAK+G,GAAK,EAEhCmlH,EAAM/B,SAASjqH,EAAI,IAAOgsH,EAAMiB,WAAchB,EAAMhC,SAASjqH,EAAIgsH,EAAM/B,SAASjqH,EAEjFgsH,EAAM/B,SAASjqH,GAAK,GAEdisH,EAAMhC,SAASjqH,EAAI,IAAOisH,EAAMgB,WAAcjB,EAAM/B,SAASjqH,EAAIisH,EAAMhC,SAASjqH,EAEtFisH,EAAMhC,SAASjqH,GAAK,GAEdgsH,EAAM/B,SAASzjH,EAAI,IAAOwlH,EAAMiB,WAAchB,EAAMhC,SAASzjH,EAAIwlH,EAAM/B,SAASzjH,EAEtFwlH,EAAM/B,SAASzjH,GAAK,GAEdylH,EAAMhC,SAASzjH,EAAI,IAAOylH,EAAMgB,WAAcjB,EAAM/B,SAASzjH,EAAIylH,EAAMhC,SAASzjH,IAEtFylH,EAAMhC,SAASzjH,GAAK,IAGnB1G,KAAKoJ,IAAI6jH,GAAkBjtH,KAAK+G,GAAK,IAErCmlH,EAAM/B,SAASjqH,EAAI,IAAOgsH,EAAMiB,WAAchB,EAAMhC,SAASjqH,EAAIgsH,EAAM/B,SAASjqH,EAEjFgsH,EAAM/B,SAASjqH,GAAK,GAEdisH,EAAMhC,SAASjqH,EAAI,IAAOisH,EAAMgB,WAAcjB,EAAM/B,SAASjqH,EAAIisH,EAAMhC,SAASjqH,EAEtFisH,EAAMhC,SAASjqH,GAAK,GAEdgsH,EAAM/B,SAASzjH,EAAI,IAAOwlH,EAAMiB,WAAchB,EAAMhC,SAASzjH,EAAIwlH,EAAM/B,SAASzjH,EAEtFwlH,EAAM/B,SAASzjH,GAAK,GAEdylH,EAAMhC,SAASzjH,EAAI,IAAOylH,EAAMgB,WAAcjB,EAAM/B,SAASjqH,EAAIisH,EAAMhC,SAASzjH,IAEtFylH,EAAMhC,SAASzjH,GAAK,KAIvBwlH,EAAMiB,YAEPjB,EAAMhsH,GAAMgsH,EAAM/B,SAASjqH,EAAIjG,KAAKwa,KAAKmE,KAAKkiE,eAAkBnxB,EAAU3pD,KAAKoH,IAAI6lH,GACnFf,EAAMxlH,GAAMwlH,EAAM/B,SAASzjH,EAAIzM,KAAKwa,KAAKmE,KAAKkiE,eAAkBnxB,EAAU3pD,KAAKqH,IAAI4lH,IAGlFd,EAAMgB,YAEPhB,EAAMjsH,GAAMisH,EAAMhC,SAASjqH,EAAIjG,KAAKwa,KAAKmE,KAAKkiE,eAAkBnxB,EAAU3pD,KAAKoH,IAAI6lH,GACnFd,EAAMzlH,GAAMylH,EAAMhC,SAASzjH,EAAIzM,KAAKwa,KAAKmE,KAAKkiE,eAAkBnxB,EAAU3pD,KAAKqH,IAAI4lH,IAGnFf,EAAMW,WAENX,EAAMW,UAAU/zG,SAASozG,EAAMl7F,OAAQm7F,EAAMn7F,QAG7Cm7F,EAAMU,WAENV,EAAMU,UAAU/zG,SAASqzG,EAAMn7F,OAAQk7F,EAAMl7F,SAG1C,GAcX+7F,YAAa,SAAUb,EAAOC,EAAOhB,GAEjC,GAAIxhE,GAAU,EACV+jE,EAAaxB,EAAMyB,YAAcxB,EAAMwB,YAAc1zH,KAAKivH,YA+C9D,OA7CuB,KAAnBgD,EAAM3rF,UAAqC,IAAnB4rF,EAAM5rF,UAG9B2rF,EAAM0B,UAAW,EACjBzB,EAAMyB,UAAW,GAEZ1B,EAAM3rF,SAAW4rF,EAAM5rF,UAG5BopB,EAAUuiE,EAAMrnH,MAAQsnH,EAAMjsH,EAEzBypD,EAAU+jE,IAAevC,GAAgBe,EAAMjD,eAAepkH,SAAU,GAASsnH,EAAMlD,eAAenkH,QAAS,EAEhH6kD,EAAU,GAIVuiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAAShpH,OAAQ,EACvBsnH,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAAS/oH,MAAO,IAGrBonH,EAAM3rF,SAAW4rF,EAAM5rF,WAG5BopB,EAAUuiE,EAAMhsH,EAAIisH,EAAMniH,MAAQmiH,EAAMjsH,GAElCypD,EAAU+jE,IAAevC,GAAgBe,EAAMjD,eAAenkH,QAAS,GAASqnH,EAAMlD,eAAepkH,SAAU,EAEjH8kD,EAAU,GAIVuiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAAS/oH,MAAO,EACtBqnH,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAAShpH,OAAQ,IAK/BqnH,EAAM6B,SAAWpkE,EACjBwiE,EAAM4B,SAAWpkE,EAEVA,GAcXqjE,YAAa,SAAUd,EAAOC,EAAOhB,GAEjC,GAAIxhE,GAAU,EACV+jE,EAAaxB,EAAM8B,YAAc7B,EAAM6B,YAAc/zH,KAAKivH,YA+C9D,OA7CuB,KAAnBgD,EAAM7sF,UAAqC,IAAnB8sF,EAAM9sF,UAG9B6sF,EAAM0B,UAAW,EACjBzB,EAAMyB,UAAW,GAEZ1B,EAAM7sF,SAAW8sF,EAAM9sF,UAG5BsqB,EAAUuiE,EAAMtjH,OAASujH,EAAMzlH,EAE1BijD,EAAU+jE,IAAevC,GAAgBe,EAAMjD,eAAerkF,QAAS,GAASunF,EAAMlD,eAAehvE,MAAO,EAE7G0P,EAAU,GAIVuiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAASjpF,MAAO,EACtBunF,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAAS5zE,IAAK,IAGnBiyE,EAAM7sF,SAAW8sF,EAAM9sF,WAG5BsqB,EAAUuiE,EAAMxlH,EAAIylH,EAAMvjH,QAEpB+gD,EAAU+jE,IAAevC,GAAgBe,EAAMjD,eAAehvE,MAAO,GAASkyE,EAAMlD,eAAerkF,QAAS,EAE9G+kB,EAAU,GAIVuiE,EAAM2B,SAASC,MAAO,EACtB5B,EAAM2B,SAAS5zE,IAAK,EACpBkyE,EAAM0B,SAASC,MAAO,EACtB3B,EAAM0B,SAASjpF,MAAO,IAK9BsnF,EAAM+B,SAAWtkE,EACjBwiE,EAAM8B,SAAWtkE,EAEVA,GAcX+iE,UAAW,SAAUR,EAAOC,EAAOhB,GAE/B,GAAIxhE,GAAU1vD,KAAK8yH,YAAYb,EAAOC,EAAOhB,EAG7C,IAAIA,GAA2B,IAAZxhE,GAAkBuiE,EAAMiB,WAAahB,EAAMgB,WAAcjB,EAAMkB,iBAAmBjB,EAAMiB,gBAGvG,MAAoB,KAAZzjE,GAAmBuiE,EAAM0B,UAAYzB,EAAMyB,QAIvD,IAAIllC,GAAKwjC,EAAM/B,SAASjqH,EACpBmtH,EAAKlB,EAAMhC,SAASjqH,CAExB,IAAKgsH,EAAMiB,WAAchB,EAAMgB,UAiBrBjB,EAAMiB,WAaZhB,EAAMjsH,GAAKypD,EACXwiE,EAAMhC,SAASjqH,EAAIwoF,EAAK2kC,EAAKlB,EAAMsB,OAAOvtH,EAGtCgsH,EAAMgC,QAEN/B,EAAMzlH,IAAMwlH,EAAMxlH,EAAIwlH,EAAMt5D,KAAKlsD,GAAKwlH,EAAMiC,SAASznH,KAjBzDwlH,EAAMhsH,GAAKypD,EACXuiE,EAAM/B,SAASjqH,EAAImtH,EAAK3kC,EAAKwjC,EAAMuB,OAAOvtH,EAGtCisH,EAAM+B,QAENhC,EAAMxlH,IAAMylH,EAAMzlH,EAAIylH,EAAMv5D,KAAKlsD,GAAKylH,EAAMgC,SAASznH,QAxB7D,CACIijD,GAAW,GAEXuiE,EAAMhsH,GAAKypD,EACXwiE,EAAMjsH,GAAKypD,CAEX,IAAIykE,GAAMpuH,KAAKmK,KAAMkjH,EAAKA,EAAKlB,EAAMoB,KAAQrB,EAAMqB,OAAUF,EAAK,EAAK,EAAI,IACvEgB,EAAMruH,KAAKmK,KAAMu+E,EAAKA,EAAKwjC,EAAMqB,KAAQpB,EAAMoB,OAAU7kC,EAAK,EAAK,EAAI,IACvE4lC,EAAoB,IAAbF,EAAMC,EAEjBD,IAAOE,EACPD,GAAOC,EAEPpC,EAAM/B,SAASjqH,EAAIouH,EAAMF,EAAMlC,EAAMuB,OAAOvtH,EAC5CisH,EAAMhC,SAASjqH,EAAIouH,EAAMD,EAAMlC,EAAMsB,OAAOvtH,EA0BhD,OAAO,GAcXysH,UAAW,SAAUT,EAAOC,EAAOhB,GAE/B,GAAIxhE,GAAU1vD,KAAK+yH,YAAYd,EAAOC,EAAOhB,EAG7C,IAAIA,GAA2B,IAAZxhE,GAAkBuiE,EAAMiB,WAAahB,EAAMgB,WAAcjB,EAAMqC,iBAAmBpC,EAAMoC,gBAGvG,MAAoB,KAAZ5kE,GAAmBuiE,EAAM0B,UAAYzB,EAAMyB,QAIvD,IAAIllC,GAAKwjC,EAAM/B,SAASzjH,EACpB2mH,EAAKlB,EAAMhC,SAASzjH,CAExB,IAAKwlH,EAAMiB,WAAchB,EAAMgB,UAiBrBjB,EAAMiB,WAaZhB,EAAMzlH,GAAKijD,EACXwiE,EAAMhC,SAASzjH,EAAIgiF,EAAK2kC,EAAKlB,EAAMsB,OAAO/mH,EAGtCwlH,EAAMgC,QAEN/B,EAAMjsH,IAAMgsH,EAAMhsH,EAAIgsH,EAAMt5D,KAAK1yD,GAAKgsH,EAAMiC,SAASjuH,KAjBzDgsH,EAAMxlH,GAAKijD,EACXuiE,EAAM/B,SAASzjH,EAAI2mH,EAAK3kC,EAAKwjC,EAAMuB,OAAO/mH,EAGtCylH,EAAM+B,QAENhC,EAAMhsH,IAAMisH,EAAMjsH,EAAIisH,EAAMv5D,KAAK1yD,GAAKisH,EAAMgC,SAASjuH,QAxB7D,CACIypD,GAAW,GAEXuiE,EAAMxlH,GAAKijD,EACXwiE,EAAMzlH,GAAKijD,CAEX,IAAIykE,GAAMpuH,KAAKmK,KAAMkjH,EAAKA,EAAKlB,EAAMoB,KAAQrB,EAAMqB,OAAUF,EAAK,EAAK,EAAI,IACvEgB,EAAMruH,KAAKmK,KAAMu+E,EAAKA,EAAKwjC,EAAMqB,KAAQpB,EAAMoB,OAAU7kC,EAAK,EAAK,EAAI,IACvE4lC,EAAoB,IAAbF,EAAMC,EAEjBD,IAAOE,EACPD,GAAOC,EAEPpC,EAAM/B,SAASzjH,EAAI4nH,EAAMF,EAAMlC,EAAMuB,OAAO/mH,EAC5CylH,EAAMhC,SAASzjH,EAAI4nH,EAAMD,EAAMlC,EAAMsB,OAAO/mH,EA0BhD,OAAO,GAgBX8nH,uBAAwB,SAAUzrG,EAASoN,EAAO7C,EAAUtQ,GAExD,MAAqB,KAAjBmT,EAAMruB,QAAiBihB,EAAQ0B,OAK5BxqB,KAAKw0H,qBAAqB1rG,EAAQ7iB,EAAG6iB,EAAQrc,EAAGypB,EAAO7C,EAAUtQ,EAAiB+F,GALzF,QAuBJ0rG,qBAAsB,SAAUvuH,EAAGwG,EAAGypB,EAAO7C,EAAUtQ,EAAiB0xG,GAEpEz0H,KAAK+jH,SAAS9lG,QAEdje,KAAK+jH,SAASrkG,MAAM1f,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQhQ,KAAK0wF,WAAY1wF,KAAK2wF,WAE3J3wF,KAAK+jH,SAAS7yB,SAASh7D,EAOvB,KAAK,GALDxiB,GAAO,GAAIrT,GAAOkN,UAAUtH,EAAGwG,EAAG,EAAG,GACrCsB,KAEA6jH,EAAQ5xH,KAAK+jH,SAAS1yB,SAAS39E,GAE1B5L,EAAI,EAAGA,EAAI8pH,EAAM/pH,OAAQC,IAE1B8pH,EAAM9pH,GAAGg6B,QAAQ77B,EAAGwG,KAEhB4mB,GAEAA,EAASvsB,KAAKic,EAAiB0xG,EAAa7C,EAAM9pH,GAAGivB,QAGzDhpB,EAAO6E,KAAKg/G,EAAM9pH,GAAGivB,QAI7B,OAAOhpB,IAmBX2mH,aAAc,SAAU15G,EAAe6iD,EAAa3gC,EAAOy3F,GAEzCjrH,SAAVwzB,IAAuBA,EAAQ,IACnBxzB,SAAZirH,IAAyBA,EAAU,EAEvC,IAAIzmH,GAAQnI,KAAK+M,MAAM+qD,EAAYpxD,EAAIuO,EAAcvO,EAAGoxD,EAAY53D,EAAI+U,EAAc/U,EAWtF,OATI0uH,GAAU,IAGVz3F,EAAQl9B,KAAK40H,gBAAgB55G,EAAe6iD,IAAgB82D,EAAU,MAG1E35G,EAAc2U,KAAKugG,SAASjqH,EAAIF,KAAKoH,IAAIe,GAASgvB,EAClDliB,EAAc2U,KAAKugG,SAASzjH,EAAI1G,KAAKqH,IAAIc,GAASgvB,EAE3ChvB,GAkBX2mH,cAAe,SAAU75G,EAAekiB,EAAOpU,EAAS6rG,GAEtCjrH,SAAVwzB,IAAuBA,EAAQ,IACnCpU,EAAUA,GAAW9oB,KAAKwa,KAAKuF,MAAMye,cACrB90B,SAAZirH,IAAyBA,EAAU,EAEvC,IAAIzmH,GAAQlO,KAAK80H,eAAe95G,EAAe8N,EAW/C,OATI6rG,GAAU,IAGVz3F,EAAQl9B,KAAK+0H,kBAAkB/5G,EAAe8N,IAAY6rG,EAAU,MAGxE35G,EAAc2U,KAAKugG,SAASjqH,EAAIF,KAAKoH,IAAIe,GAASgvB,EAClDliB,EAAc2U,KAAKugG,SAASzjH,EAAI1G,KAAKqH,IAAIc,GAASgvB,EAE3ChvB,GAoBX8mH,SAAU,SAAUh6G,EAAe/U,EAAGwG,EAAGywB,EAAOy3F,GAE9BjrH,SAAVwzB,IAAuBA,EAAQ,IACnBxzB,SAAZirH,IAAyBA,EAAU,EAEvC,IAAIzmH,GAAQnI,KAAK+M,MAAMrG,EAAIuO,EAAcvO,EAAGxG,EAAI+U,EAAc/U,EAW9D,OATI0uH,GAAU,IAGVz3F,EAAQl9B,KAAKi1H,aAAaj6G,EAAe/U,EAAGwG,IAAMkoH,EAAU,MAGhE35G,EAAc2U,KAAKugG,SAASjqH,EAAIF,KAAKoH,IAAIe,GAASgvB,EAClDliB,EAAc2U,KAAKugG,SAASzjH,EAAI1G,KAAKqH,IAAIc,GAASgvB,EAE3ChvB,GAcXgnH,kBAAmB,SAAUhnH,EAAOgvB,EAAO1uB,GAKvC,MAHc9E,UAAVwzB,IAAuBA,EAAQ,IACnC1uB,EAAQA,GAAS,GAAInO,GAAO2M,MAErBwB,EAAMhB,MAAOzH,KAAKoH,IAAInN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUgvB,EAASn3B,KAAKqH,IAAIpN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUgvB,IAcvHi4F,qBAAsB,SAAU3+F,EAAU0G,EAAO1uB,GAK7C,MAHc9E,UAAVwzB,IAAuBA,EAAQ,IACnC1uB,EAAQA,GAAS,GAAInO,GAAO2M,MAErBwB,EAAMhB,MAAOzH,KAAKoH,IAAIqpB,GAAY0G,EAASn3B,KAAKqH,IAAIopB,GAAY0G,IAc3Ek4F,yBAA0B,SAAU5+F,EAAU0G,EAAO1uB,GAKjD,MAHc9E,UAAVwzB,IAAuBA,EAAQ,IACnC1uB,EAAQA,GAAS,GAAInO,GAAO2M,MAErBwB,EAAMhB,MAAOzH,KAAKoH,IAAIqpB,GAAY0G,EAASn3B,KAAKqH,IAAIopB,GAAY0G,IAkB3Em4F,mBAAoB,SAAUr6G,EAAe6iD,EAAa3gC,EAAOo4F,EAAWC,GAE1D7rH,SAAVwzB,IAAuBA,EAAQ,IACjBxzB,SAAd4rH,IAA2BA,EAAY,KACzB5rH,SAAd6rH,IAA2BA,EAAY,IAE3C,IAAIrnH,GAAQlO,KAAK+sF,aAAa/xE,EAAe6iD,EAK7C,OAHA7iD,GAAc2U,KAAKwgG,aAAa3iH,MAAMzH,KAAKoH,IAAIe,GAASgvB,EAAOn3B,KAAKqH,IAAIc,GAASgvB,GACjFliB,EAAc2U,KAAK0gG,YAAY7iH,MAAM8nH,EAAWC,GAEzCrnH,GAkBXsnH,oBAAqB,SAAUx6G,EAAe8N,EAASoU,EAAOo4F,EAAWC,GAEvD7rH,SAAVwzB,IAAuBA,EAAQ,IACnBxzB,SAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAMye,eACrC90B,SAAd4rH,IAA2BA,EAAY,KACzB5rH,SAAd6rH,IAA2BA,EAAY,IAE3C,IAAIrnH,GAAQlO,KAAK80H,eAAe95G,EAAe8N,EAK/C,OAHA9N,GAAc2U,KAAKwgG,aAAa3iH,MAAMzH,KAAKoH,IAAIe,GAASgvB,EAAOn3B,KAAKqH,IAAIc,GAASgvB,GACjFliB,EAAc2U,KAAK0gG,YAAY7iH,MAAM8nH,EAAWC,GAEzCrnH,GAmBXunH,eAAgB,SAAUz6G,EAAe/U,EAAGwG,EAAGywB,EAAOo4F,EAAWC,GAE/C7rH,SAAVwzB,IAAuBA,EAAQ,IACjBxzB,SAAd4rH,IAA2BA,EAAY,KACzB5rH,SAAd6rH,IAA2BA,EAAY,IAE3C,IAAIrnH,GAAQlO,KAAK01H,UAAU16G,EAAe/U,EAAGwG,EAK7C,OAHAuO,GAAc2U,KAAKwgG,aAAa3iH,MAAMzH,KAAKoH,IAAIe,GAASgvB,EAAOn3B,KAAKqH,IAAIc,GAASgvB,GACjFliB,EAAc2U,KAAK0gG,YAAY7iH,MAAM8nH,EAAWC,GAEzCrnH,GAiBX0mH,gBAAiB,SAAUlnH,EAAQ1G,EAAQyT,GAEzB/Q,SAAV+Q,IAAuBA,GAAQ,EAEnC,IAAIpM,GAAK,EAAUX,EAAO+M,MAAMxU,EAAIe,EAAOyT,MAAMxU,EAAIyH,EAAOzH,EAAIe,EAAOf,EACnEqI,EAAK,EAAUZ,EAAO+M,MAAMhO,EAAIzF,EAAOyT,MAAMhO,EAAIiB,EAAOjB,EAAIzF,EAAOyF,CAEvE,OAAO1G,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAoBpC2mH,aAAc,SAAUj6G,EAAe/U,EAAGwG,EAAGgO,GAE3B/Q,SAAV+Q,IAAuBA,GAAQ,EAEnC,IAAIpM,GAAK,EAAU2M,EAAcP,MAAMxU,EAAIA,EAAI+U,EAAc/U,EAAIA,EAC7DqI,EAAK,EAAU0M,EAAcP,MAAMhO,EAAIA,EAAIuO,EAAcvO,EAAIA,CAEjE,OAAO1G,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAmBpCymH,kBAAmB,SAAU/5G,EAAe8N,EAASrO,GAEjC/Q,SAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAMye,eACzC90B,SAAV+Q,IAAuBA,GAAQ,EAEnC,IAAIpM,GAAK,EAAU2M,EAAcP,MAAMxU,EAAI6iB,EAAQg6F,OAAS9nG,EAAc/U,EAAI6iB,EAAQg6F,OAClFx0G,EAAK,EAAU0M,EAAcP,MAAMhO,EAAIqc,EAAQi6F,OAAS/nG,EAAcvO,EAAIqc,EAAQi6F,MAEtF,OAAOh9G,MAAKmK,KAAK7B,EAAKA,EAAKC,EAAKA,IAiBpCy+E,aAAc,SAAUr/E,EAAQ1G,EAAQyT,GAIpC,MAFc/Q,UAAV+Q,IAAuBA,GAAQ,GAE/BA,EAEO1U,KAAK+M,MAAM9L,EAAOyT,MAAMhO,EAAIiB,EAAO+M,MAAMhO,EAAGzF,EAAOyT,MAAMxU,EAAIyH,EAAO+M,MAAMxU,GAI1EF,KAAK+M,MAAM9L,EAAOyF,EAAIiB,EAAOjB,EAAGzF,EAAOf,EAAIyH,EAAOzH,IAajEgtH,oBAAqB,SAAUvlH,EAAQ1G,GAEnC,GAAIqH,GAAKrH,EAAOgK,OAAO/K,EAAIyH,EAAOsD,OAAO/K,EACrCqI,EAAKtH,EAAOgK,OAAOvE,EAAIiB,EAAOsD,OAAOvE,CAEzC,OAAO1G,MAAK+M,MAAMxE,EAAID,IAkB1BqnH,UAAW,SAAU16G,EAAe/U,EAAGwG,EAAGgO,GAItC,MAFc/Q,UAAV+Q,IAAuBA,GAAQ,GAE/BA,EAEO1U,KAAK+M,MAAMrG,EAAIuO,EAAcP,MAAMhO,EAAGxG,EAAI+U,EAAcP,MAAMxU,GAI9DF,KAAK+M,MAAMrG,EAAIuO,EAAcvO,EAAGxG,EAAI+U,EAAc/U,IAkBjE6uH,eAAgB,SAAU95G,EAAe8N,EAASrO,GAK9C,MAHgB/Q,UAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAMye,eACzC90B,SAAV+Q,IAAuBA,GAAQ,GAE/BA,EAEO1U,KAAK+M,MAAMgW,EAAQi6F,OAAS/nG,EAAcP,MAAMhO,EAAGqc,EAAQg6F,OAAS9nG,EAAcP,MAAMxU,GAIxFF,KAAK+M,MAAMgW,EAAQi6F,OAAS/nG,EAAcvO,EAAGqc,EAAQg6F,OAAS9nG,EAAc/U,IAc3F0vH,oBAAqB,SAAU36G,EAAe8N,GAE1C,MAAO9oB,MAAK80H,eAAe95G,EAAe8N,GAAS,KAoB3DzoB,EAAOutB,QAAQukC,OAAO8xD,KAAO,SAAUltF,GAKnC/2B,KAAK+2B,OAASA,EAKd/2B,KAAKwa,KAAOuc,EAAOvc,KAKnBxa,KAAKkI,KAAO7H,EAAOutB,QAAQC,OAM3B7tB,KAAK+vB,QAAS,EASd/vB,KAAKmyH,UAAW,EAUhBnyH,KAAKqN,OAAS,EAKdrN,KAAKoO,OAAS,GAAI/N,GAAO2M,MAMzBhN,KAAKuZ,SAAW,GAAIlZ,GAAO2M,MAAM+pB,EAAO9wB,EAAG8wB,EAAOtqB,GAMlDzM,KAAK24D,KAAO,GAAIt4D,GAAO2M,MAAMhN,KAAKuZ,SAAStT,EAAGjG,KAAKuZ,SAAS9M,GAM5DzM,KAAK41H,eAAgB,EAOrB51H,KAAKw2B,SAAWO,EAAOP,SAMvBx2B,KAAK61H,YAAc9+F,EAAOP,SAM1Bx2B,KAAK+P,MAAQgnB,EAAOhnB,MAMpB/P,KAAKgQ,OAAS+mB,EAAO/mB,OAMrBhQ,KAAKk8E,YAAcnlD,EAAOhnB,MAM1B/P,KAAKm8E,aAAeplD,EAAO/mB,OAEvB+mB,EAAOoL,UAEPniC,KAAKk8E,YAAcnlD,EAAOoL,QAAQzR,MAAM3gB,MACxC/P,KAAKm8E,aAAeplD,EAAOoL,QAAQzR,MAAM1gB,QAO7ChQ,KAAKoP,UAAYrJ,KAAKoJ,IAAI4nB,EAAOhnB,MAAQ,GAMzC/P,KAAKuP,WAAaxJ,KAAKoJ,IAAI4nB,EAAO/mB,OAAS,GAM3ChQ,KAAKgR,OAAS,GAAI3Q,GAAO2M,MAAM+pB,EAAO9wB,EAAIjG,KAAKoP,UAAW2nB,EAAOtqB,EAAIzM,KAAKuP,YAK1EvP,KAAKkwH,SAAW,GAAI7vH,GAAO2M,MAM3BhN,KAAK81H,YAAc,GAAIz1H,GAAO2M,MAK9BhN,KAAK+1H,SAAW,GAAI11H,GAAO2M,MAK3BhN,KAAKmwH,aAAe,GAAI9vH,GAAO2M,MAK/BhN,KAAKowH,KAAO,GAAI/vH,GAAO2M,MAMvBhN,KAAKswH,cAAe,EAKpBtwH,KAAK+uH,QAAU,GAAI1uH,GAAO2M,MAK1BhN,KAAKwzH,OAAS,GAAInzH,GAAO2M,MAQzBhN,KAAKg2H,YAAc,KAYnBh2H,KAAKi2H,cAAgB,KAoBrBj2H,KAAK4yH,UAAY,KAoBjB5yH,KAAK2yH,UAAY,KAMjB3yH,KAAKqwH,YAAc,GAAIhwH,GAAO2M,MAAM,IAAO,KAK3ChN,KAAKk0H,SAAW,GAAI7zH,GAAO2M,MAAM,EAAG,GAMpChN,KAAK8vH,gBAAkB,EAMvB9vH,KAAK+vH,oBAAsB,EAM3B/vH,KAAKgwH,YAAc,EAMnBhwH,KAAKiwH,WAAa,IAMlBjwH,KAAKszH,KAAO,EAMZtzH,KAAKkO,MAAQ,EAMblO,KAAKk9B,MAAQ,EAMbl9B,KAAKk2H,OAAS71H,EAAOO,KAMrBZ,KAAKkzH,WAAY,EASjBlzH,KAAKi0H,OAAQ,EAQbj0H,KAAKmzH,iBAAkB,EAQvBnzH,KAAKs0H,iBAAkB,EAMvBt0H,KAAK8zH,SAAW,EAMhB9zH,KAAKg0H,SAAW,EAMhBh0H,KAAKm2H,SAAW,EAMhBn2H,KAAK2zH,UAAW,EAMhB3zH,KAAKo2H,oBAAqB,EAO1Bp2H,KAAKgvH,gBAAmB6E,MAAM,EAAOwC,KAAK,EAAMr2E,IAAI,EAAMrV,MAAM,EAAM9/B,MAAM,EAAMD,OAAO,GAOzF5K,KAAK4zH,UAAaC,MAAM,EAAM7zE,IAAI,EAAOrV,MAAM,EAAO9/B,MAAM,EAAOD,OAAO,GAM1E5K,KAAKs2H,aAAgBzC,MAAM,EAAM7zE,IAAI,EAAOrV,MAAM,EAAO9/B,MAAM,EAAOD,OAAO,GAO7E5K,KAAKu2H,SAAYv2E,IAAI,EAAOrV,MAAM,EAAO9/B,MAAM,EAAOD,OAAO,GAO7D5K,KAAKw2H,YAAc,GAAIn2H,GAAO2M,MAK9BhN,KAAKynB,OAAQ,EAKbznB,KAAKqvH,cAAe,EAUpBrvH,KAAKy2H,YAAa,EAKlBz2H,KAAK02H,UAAW,EAKhB12H,KAAK22H,uBAAwB,EAM7B32H,KAAK42H,UAAY,EAMjB52H,KAAK62H,aAAe,EAMpB72H,KAAK82H,aAAe,EAMpB92H,KAAK+2H,WAAa,KAMlB/2H,KAAKg3H,QAAU,KAKfh3H,KAAKi3H,eAAiB,GAAI52H,GAAO+a,OAKjCpb,KAAKk3H,iBAAmB,KAKxBl3H,KAAKm3H,wBAA0B,KAM/Bn3H,KAAK2vD,QAAS,EAMd3vD,KAAKo3H,IAAMrgG,EAAOliB,MAAM5O,EAMxBjG,KAAKq3H,IAAMtgG,EAAOliB,MAAMpI,EAMxBzM,KAAK6yC,IAAM,EAMX7yC,KAAK8yC,IAAM,GAIfzyC,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,WAQvBixH,aAAc,WAEV,GAAIt3H,KAAKy2H,WACT,CACI,GAAI5nH,GAAI7O,KAAK+2B,OAAOzpB,WACpBuB,GAAE+J,UAEE/J,EAAEkB,QAAU/P,KAAK+P,OAASlB,EAAEmB,SAAWhQ,KAAKgQ,SAE5ChQ,KAAK+P,MAAQlB,EAAEkB,MACf/P,KAAKgQ,OAASnB,EAAEmB,OAChBhQ,KAAK2vD,QAAS,OAItB,CACI,GAAI4nE,GAAMxxH,KAAKoJ,IAAInP,KAAK+2B,OAAOliB,MAAM5O,GACjCuxH,EAAMzxH,KAAKoJ,IAAInP,KAAK+2B,OAAOliB,MAAMpI,EAEjC8qH,KAAQv3H,KAAKo3H,KAAOI,IAAQx3H,KAAKq3H,MAEjCr3H,KAAK+P,MAAQ/P,KAAKk8E,YAAcq7C,EAChCv3H,KAAKgQ,OAAShQ,KAAKm8E,aAAeq7C,EAClCx3H,KAAKo3H,IAAMG,EACXv3H,KAAKq3H,IAAMG,EACXx3H,KAAK2vD,QAAS,GAIlB3vD,KAAK2vD,SAEL3vD,KAAKoP,UAAYrJ,KAAKI,MAAMnG,KAAK+P,MAAQ,GACzC/P,KAAKuP,WAAaxJ,KAAKI,MAAMnG,KAAKgQ,OAAS,GAC3ChQ,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,cAWnFyN,UAAW,WAEFhd,KAAK+vB,SAAU/vB,KAAKwa,KAAK6F,QAAQ+tG,OAAOz2B,WAK7C33F,KAAKynB,OAAQ,EAGbznB,KAAKs2H,YAAYzC,KAAO7zH,KAAK4zH,SAASC,KACtC7zH,KAAKs2H,YAAYt2E,GAAKhgD,KAAK4zH,SAAS5zE,GACpChgD,KAAKs2H,YAAY3rF,KAAO3qC,KAAK4zH,SAASjpF,KACtC3qC,KAAKs2H,YAAYzrH,KAAO7K,KAAK4zH,SAAS/oH,KACtC7K,KAAKs2H,YAAY1rH,MAAQ5K,KAAK4zH,SAAShpH,MAEvC5K,KAAK4zH,SAASC,MAAO,EACrB7zH,KAAK4zH,SAAS5zE,IAAK,EACnBhgD,KAAK4zH,SAASjpF,MAAO,EACrB3qC,KAAK4zH,SAAS/oH,MAAO,EACrB7K,KAAK4zH,SAAShpH,OAAQ,EAEtB5K,KAAKu2H,QAAQv2E,IAAK,EAClBhgD,KAAKu2H,QAAQ5rF,MAAO,EACpB3qC,KAAKu2H,QAAQ1rH,MAAO,EACpB7K,KAAKu2H,QAAQ3rH,OAAQ,EAErB5K,KAAK2zH,UAAW,EAEhB3zH,KAAKs3H,eAELt3H,KAAKuZ,SAAStT,EAAKjG,KAAK+2B,OAAOtc,MAAMxU,EAAKjG,KAAK+2B,OAAO1N,OAAOpjB,EAAIjG,KAAK+2B,OAAOhnB,MAAU/P,KAAK+2B,OAAOliB,MAAM5O,EAAIjG,KAAKoO,OAAOnI,EACzHjG,KAAKuZ,SAAStT,GAAKjG,KAAK+2B,OAAOliB,MAAM5O,EAAI,EAAIjG,KAAK+P,MAAQ,EAE1D/P,KAAKuZ,SAAS9M,EAAKzM,KAAK+2B,OAAOtc,MAAMhO,EAAKzM,KAAK+2B,OAAO1N,OAAO5c,EAAIzM,KAAK+2B,OAAO/mB,OAAWhQ,KAAK+2B,OAAOliB,MAAMpI,EAAIzM,KAAKoO,OAAO3B,EAC1HzM,KAAKuZ,SAAS9M,GAAKzM,KAAK+2B,OAAOliB,MAAMpI,EAAI,EAAIzM,KAAKgQ,OAAS,EAE3DhQ,KAAKw2B,SAAWx2B,KAAK+2B,OAAO7oB,MAE5BlO,KAAK61H,YAAc71H,KAAKw2B,UAEpBx2B,KAAK2vD,QAAU3vD,KAAK+2B,OAAOuxB,SAE3BtoD,KAAK24D,KAAK1yD,EAAIjG,KAAKuZ,SAAStT,EAC5BjG,KAAK24D,KAAKlsD,EAAIzM,KAAKuZ,SAAS9M,GAG5BzM,KAAKi0H,QAELj0H,KAAKwa,KAAK6F,QAAQ+tG,OAAOuB,aAAa3vH,MAEtCA,KAAK81H,YAAY7pH,IAAIjM,KAAKkwH,SAASjqH,EAAIjG,KAAKwa,KAAKmE,KAAKkiE,eAAgB7gF,KAAKkwH,SAASzjH,EAAIzM,KAAKwa,KAAKmE,KAAKkiE,gBAEvG7gF,KAAKuZ,SAAStT,GAAKjG,KAAK81H,YAAY7vH,EACpCjG,KAAKuZ,SAAS9M,GAAKzM,KAAK81H,YAAYrpH,EAEhCzM,KAAKuZ,SAAStT,IAAMjG,KAAK24D,KAAK1yD,GAAKjG,KAAKuZ,SAAS9M,IAAMzM,KAAK24D,KAAKlsD,IAEjEzM,KAAKkO,MAAQnI,KAAK+M,MAAM9S,KAAKkwH,SAASzjH,EAAGzM,KAAKkwH,SAASjqH,IAG3DjG,KAAKk9B,MAAQn3B,KAAKmK,KAAKlQ,KAAKkwH,SAASjqH,EAAIjG,KAAKkwH,SAASjqH,EAAIjG,KAAKkwH,SAASzjH,EAAIzM,KAAKkwH,SAASzjH,GAKvFzM,KAAKo2H,oBAEDp2H,KAAKsnD,oBAAsBtnD,KAAKi2H,eAEhCj2H,KAAKi2H,cAAcp3G,SAAS7e,KAAK+2B,OAAQ/2B,KAAKu2H,QAAQv2E,GAAIhgD,KAAKu2H,QAAQ5rF,KAAM3qC,KAAKu2H,QAAQ1rH,KAAM7K,KAAKu2H,QAAQ3rH,QAKzH5K,KAAK6yC,IAAM7yC,KAAKsmC,SAChBtmC,KAAK8yC,IAAM9yC,KAAKolC,SAEhBplC,KAAK2vD,QAAS,IAUlB8nE,eAAgB,WAEZ,GAAIhoC,GAAU,EACVioC,EAA8B,IAAlB13H,KAAK8zH,UAAoC,IAAlB9zH,KAAKg0H,QAiB5C,IAbIh0H,KAAK82H,aAAe,GAEpB92H,KAAK42H,WAAa52H,KAAKwa,KAAKmE,KAAKC,UAEjC6wE,EAAUzvF,KAAK42H,UAAY52H,KAAK82H,eAIhC92H,KAAK+2H,WAAWpmH,IAAI1E,IAAIjM,KAAKuZ,SAAStT,EAAGjG,KAAKuZ,SAAS9M,GAEvDgjF,EAAUzvF,KAAK+2H,WAAWlvH,OAAS7H,KAAK62H,cAGxC72H,KAAKk3H,iBAEL,GAAI5lH,GAAStR,KAAKk3H,iBAAiBpwH,KAAK9G,KAAKm3H,wBAAyBn3H,KAAMA,KAAKkwH,SAAUzgC,EAG/F,OAAIioC,IAAYjoC,GAAW,GAAiB/lF,SAAX4H,GAAwBA,KAAW,GAEhEtR,KAAK23H,aAAcloC,GAAW,GAAOzvF,KAAK22H,uBAAyBe,IAC5D,IAGJ,GAcXC,aAAc,SAAUC,GAEhB53H,KAAK02H,WAEL12H,KAAK02H,UAAW,EAEZkB,GAEA53H,KAAKkwH,SAASjkH,IAAI,GAKtBjM,KAAKi3H,eAAep4G,SAAS7e,KAAK+2B,OAA2B,IAAlB/2B,KAAK8zH,UAAoC,IAAlB9zH,KAAKg0H,YAW/E5pG,WAAY,WAGHpqB,KAAK+vB,QAAW/vB,KAAKynB,QAMtBznB,KAAK02H,UAEL12H,KAAKy3H,iBAGTz3H,KAAKynB,OAAQ,EAETznB,KAAKsmC,SAAW,EAEhBtmC,KAAKk2H,OAAS71H,EAAOQ,KAEhBb,KAAKsmC,SAAW,IAErBtmC,KAAKk2H,OAAS71H,EAAOS,OAGrBd,KAAKolC,SAAW,EAEhBplC,KAAKk2H,OAAS71H,EAAOU,GAEhBf,KAAKolC,SAAW,IAErBplC,KAAKk2H,OAAS71H,EAAOW,MAGrBhB,KAAKi0H,QAELj0H,KAAK6yC,IAAM7yC,KAAKsmC,SAChBtmC,KAAK8yC,IAAM9yC,KAAKolC,SAEQ,IAApBplC,KAAK+1H,SAAS9vH,GAAwB,IAAbjG,KAAK6yC,MAE1B7yC,KAAK6yC,IAAM,GAAK7yC,KAAK6yC,KAAO7yC,KAAK+1H,SAAS9vH,EAE1CjG,KAAK6yC,KAAO7yC,KAAK+1H,SAAS9vH,EAErBjG,KAAK6yC,IAAM,GAAK7yC,KAAK6yC,IAAM7yC,KAAK+1H,SAAS9vH,IAE9CjG,KAAK6yC,IAAM7yC,KAAK+1H,SAAS9vH,IAIT,IAApBjG,KAAK+1H,SAAStpH,GAAwB,IAAbzM,KAAK8yC,MAE1B9yC,KAAK8yC,IAAM,GAAK9yC,KAAK8yC,KAAO9yC,KAAK+1H,SAAStpH,EAE1CzM,KAAK8yC,KAAO9yC,KAAK+1H,SAAStpH,EAErBzM,KAAK8yC,IAAM,GAAK9yC,KAAK8yC,IAAM9yC,KAAK+1H,SAAStpH,IAE9CzM,KAAK8yC,IAAM9yC,KAAK+1H,SAAStpH,IAIjCzM,KAAK+2B,OAAOxd,SAAStT,GAAKjG,KAAK6yC,IAC/B7yC,KAAK+2B,OAAOxd,SAAS9M,GAAKzM,KAAK8yC,IAC/B9yC,KAAK2vD,QAAS,GAGlB3vD,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,YAEvEvP,KAAK41H,gBAEL51H,KAAK+2B,OAAO7oB,OAASlO,KAAKwmC,UAG9BxmC,KAAK24D,KAAK1yD,EAAIjG,KAAKuZ,SAAStT,EAC5BjG,KAAK24D,KAAKlsD,EAAIzM,KAAKuZ,SAAS9M,IAWhC66C,iBAAkB,WAEd,GAAI9yC,GAAMxU,KAAKuZ,SACXoB,EAAS3a,KAAKwa,KAAK6F,QAAQ+tG,OAAOzzG,OAClCk9G,EAAQ73H,KAAKwa,KAAK6F,QAAQ+tG,OAAOY,eAEjCxmD,EAAMxoE,KAAgB,aAAKA,KAAKg2H,YAAY/vH,GAAKjG,KAAKwzH,OAAOvtH,EAC7DwiE,EAAMzoE,KAAgB,aAAKA,KAAKg2H,YAAYvpH,GAAKzM,KAAKwzH,OAAO/mH,CAEjE,IAAIzM,KAAKmyH,SACT,CACI,GAAI2F,IACA7xH,EAAGjG,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OACxBZ,EAAGzM,KAAKgR,OAAOvE,EAAIzM,KAAKqN,OACxBzC,MAAO5K,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OAC5BsB,OAAQ3O,KAAKgR,OAAOvE,EAAIzM,KAAKqN,OAG7ByqH,GAAW7xH,EAAI0U,EAAO1U,GAAK4xH,EAAMhtH,MAEjC2J,EAAIvO,EAAI0U,EAAO1U,EAAIjG,KAAKoP,UAAYpP,KAAKqN,OACzCrN,KAAKkwH,SAASjqH,GAAKuiE,EACnBxoE,KAAKu2H,QAAQ1rH,MAAO,GAEfitH,EAAWltH,MAAQ+P,EAAO/P,OAASitH,EAAMjtH,QAE9C4J,EAAIvO,EAAI0U,EAAO/P,MAAQ5K,KAAKoP,UAAYpP,KAAKqN,OAC7CrN,KAAKkwH,SAASjqH,GAAKuiE,EACnBxoE,KAAKu2H,QAAQ3rH,OAAQ,GAGrBktH,EAAWrrH,EAAIkO,EAAOlO,GAAKorH,EAAM73E,IAEjCxrC,EAAI/H,EAAIkO,EAAOlO,EAAIzM,KAAKuP,WAAavP,KAAKqN,OAC1CrN,KAAKkwH,SAASzjH,GAAKg8D,EACnBzoE,KAAKu2H,QAAQv2E,IAAK,GAEb83E,EAAWnpH,OAASgM,EAAOhM,QAAUkpH,EAAMltF,OAEhDn2B,EAAI/H,EAAIkO,EAAOhM,OAAU3O,KAAKuP,WAAavP,KAAKqN,OAChDrN,KAAKkwH,SAASzjH,GAAKg8D,EACnBzoE,KAAKu2H,QAAQ5rF,MAAO,OAKpBn2B,GAAIvO,EAAI0U,EAAO1U,GAAK4xH,EAAMhtH,MAE1B2J,EAAIvO,EAAI0U,EAAO1U,EACfjG,KAAKkwH,SAASjqH,GAAKuiE,EACnBxoE,KAAKu2H,QAAQ1rH,MAAO,GAEf7K,KAAK4K,MAAQ+P,EAAO/P,OAASitH,EAAMjtH,QAExC4J,EAAIvO,EAAI0U,EAAO/P,MAAQ5K,KAAK+P,MAC5B/P,KAAKkwH,SAASjqH,GAAKuiE,EACnBxoE,KAAKu2H,QAAQ3rH,OAAQ,GAGrB4J,EAAI/H,EAAIkO,EAAOlO,GAAKorH,EAAM73E,IAE1BxrC,EAAI/H,EAAIkO,EAAOlO,EACfzM,KAAKkwH,SAASzjH,GAAKg8D,EACnBzoE,KAAKu2H,QAAQv2E,IAAK,GAEbhgD,KAAK2O,OAASgM,EAAOhM,QAAUkpH,EAAMltF,OAE1Cn2B,EAAI/H,EAAIkO,EAAOhM,OAAS3O,KAAKgQ,OAC7BhQ,KAAKkwH,SAASzjH,GAAKg8D,EACnBzoE,KAAKu2H,QAAQ5rF,MAAO,EAI5B,OAAQ3qC,MAAKu2H,QAAQv2E,IAAMhgD,KAAKu2H,QAAQ5rF,MAAQ3qC,KAAKu2H,QAAQ1rH,MAAQ7K,KAAKu2H,QAAQ3rH,OAkCtFmtH,SAAU,SAAUl8G,EAAUqhB,EAAOpf,GAIjC,GAFcpU,SAAVwzB,IAAuBA,EAAQl9B,KAAKk9B,OAE1B,IAAVA,EAEA,OAAO,CAGX,IAAIhvB,EA+BJ,OA7BkBxE,UAAdoU,GAEA5P,EAAQlO,KAAKkO,MACb4P,EAAY9d,KAAKwa,KAAK0E,KAAKxJ,SAASxH,IAIpCA,EAAQlO,KAAKwa,KAAK0E,KAAKnQ,SAAS+O,GAGpC9d,KAAK42H,UAAY,EACjB52H,KAAK82H,aAAej7G,EAGF,IAAdiC,GAAiC,MAAdA,EAEnB9d,KAAKkwH,SAASjkH,IAAIlG,KAAKoH,IAAIe,GAASgvB,EAAO,GAExB,KAAdpf,GAAkC,MAAdA,EAEzB9d,KAAKkwH,SAASjkH,IAAI,EAAGlG,KAAKqH,IAAIc,GAASgvB,GAIvCl9B,KAAKkwH,SAASjkH,IAAIlG,KAAKoH,IAAIe,GAASgvB,EAAOn3B,KAAKqH,IAAIc,GAASgvB,GAGjEl9B,KAAK02H,UAAW,GAET,GAiCXv4D,OAAQ,SAAUtiD,EAAUhO,EAAUiQ,GAElC,GAAIof,GAAQrvB,GAAYgO,EAAW,IAEnC,IAAc,IAAVqhB,EAEA,OAAO,CAGX,IAAIhvB,EA6CJ,OA3CkBxE,UAAdoU,GAEA5P,EAAQlO,KAAKkO,MACb4P,EAAY9d,KAAKwa,KAAK0E,KAAKxJ,SAASxH,IAIpCA,EAAQlO,KAAKwa,KAAK0E,KAAKnQ,SAAS+O,GAGpCjQ,EAAW9H,KAAKoJ,IAAItB,GAEpB7N,KAAK82H,aAAe,EACpB92H,KAAK62H,aAAehpH,EAEI,OAApB7N,KAAK+2H,aAEL/2H,KAAK+2H,WAAa,GAAI12H,GAAOgQ,KAC7BrQ,KAAKg3H,QAAU,GAAI32H,GAAO2M,OAG9BhN,KAAK+2H,WAAW9lH,UAAUjR,KAAKiG,EAAGjG,KAAKyM,EAAGyB,EAAOL,GAEjD7N,KAAKg3H,QAAQ/qH,IAAIjM,KAAK+2H,WAAWpmH,IAAI1K,EAAGjG,KAAK+2H,WAAWpmH,IAAIlE,GAE5DzM,KAAK+2H,WAAWvpH,MAAMxN,KAAKiG,EAAGjG,KAAKyM,EAAGzM,KAAKiG,EAAGjG,KAAKyM,GAGjC,IAAdqR,GAAiC,MAAdA,EAEnB9d,KAAKkwH,SAASjkH,IAAIlG,KAAKoH,IAAIe,GAASgvB,EAAO,GAExB,KAAdpf,GAAkC,MAAdA,EAEzB9d,KAAKkwH,SAASjkH,IAAI,EAAGlG,KAAKqH,IAAIc,GAASgvB,GAIvCl9B,KAAKkwH,SAASjkH,IAAIlG,KAAKoH,IAAIe,GAASgvB,EAAOn3B,KAAKqH,IAAIc,GAASgvB,GAGjEl9B,KAAK02H,UAAW,GAET,GA4BXj3G,QAAS,SAAU1P,EAAOC,EAAQylC,EAASC,GAEvBhsC,SAAZ+rC,IAAyBA,EAAUz1C,KAAKoO,OAAOnI,GACnCyD,SAAZgsC,IAAyBA,EAAU11C,KAAKoO,OAAO3B,GAEnDzM,KAAKk8E,YAAcnsE,EACnB/P,KAAKm8E,aAAensE,EACpBhQ,KAAK+P,MAAQ/P,KAAKk8E,YAAcl8E,KAAKo3H,IACrCp3H,KAAKgQ,OAAShQ,KAAKm8E,aAAen8E,KAAKq3H,IACvCr3H,KAAKoP,UAAYrJ,KAAKI,MAAMnG,KAAK+P,MAAQ,GACzC/P,KAAKuP,WAAaxJ,KAAKI,MAAMnG,KAAKgQ,OAAS,GAC3ChQ,KAAKoO,OAAOZ,MAAMioC,EAASC,GAE3B11C,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,YAE3EvP,KAAKmyH,UAAW,EAChBnyH,KAAKqN,OAAS,GAoBlB2qH,UAAW,SAAU3qH,EAAQooC,EAASC,GAElBhsC,SAAZ+rC,IAAyBA,EAAUz1C,KAAKoO,OAAOnI,GACnCyD,SAAZgsC,IAAyBA,EAAU11C,KAAKoO,OAAO3B,GAE/CY,EAAS,GAETrN,KAAKmyH,UAAW,EAChBnyH,KAAKqN,OAASA,EAEdrN,KAAKk8E,YAAuB,EAAT7uE,EACnBrN,KAAKm8E,aAAwB,EAAT9uE,EAEpBrN,KAAK+P,MAAQ/P,KAAKk8E,YAAcl8E,KAAKo3H,IACrCp3H,KAAKgQ,OAAShQ,KAAKm8E,aAAen8E,KAAKq3H,IAEvCr3H,KAAKoP,UAAYrJ,KAAKI,MAAMnG,KAAK+P,MAAQ,GACzC/P,KAAKuP,WAAaxJ,KAAKI,MAAMnG,KAAKgQ,OAAS,GAE3ChQ,KAAKoO,OAAOZ,MAAMioC,EAASC,GAE3B11C,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,aAI3EvP,KAAKmyH,UAAW,GAYxBzyG,MAAO,SAAUzZ,EAAGwG,GAEhBzM,KAAKkwH,SAASjkH,IAAI,GAClBjM,KAAKmwH,aAAalkH,IAAI,GAEtBjM,KAAKk9B,MAAQ,EACbl9B,KAAK8vH,gBAAkB,EACvB9vH,KAAK+vH,oBAAsB,EAE3B/vH,KAAKuZ,SAAStT,EAAKA,EAAKjG,KAAK+2B,OAAO1N,OAAOpjB,EAAIjG,KAAK+2B,OAAOhnB,MAAU/P,KAAK+2B,OAAOliB,MAAM5O,EAAIjG,KAAKoO,OAAOnI,EACvGjG,KAAKuZ,SAAStT,GAAKjG,KAAK+2B,OAAOliB,MAAM5O,EAAI,EAAIjG,KAAK+P,MAAQ,EAE1D/P,KAAKuZ,SAAS9M,EAAKA,EAAKzM,KAAK+2B,OAAO1N,OAAO5c,EAAIzM,KAAK+2B,OAAO/mB,OAAWhQ,KAAK+2B,OAAOliB,MAAMpI,EAAIzM,KAAKoO,OAAO3B,EACxGzM,KAAKuZ,SAAS9M,GAAKzM,KAAK+2B,OAAOliB,MAAMpI,EAAI,EAAIzM,KAAKgQ,OAAS,EAE3DhQ,KAAK24D,KAAK1yD,EAAIjG,KAAKuZ,SAAStT,EAC5BjG,KAAK24D,KAAKlsD,EAAIzM,KAAKuZ,SAAS9M,EAE5BzM,KAAKw2B,SAAWx2B,KAAK+2B,OAAO7oB,MAC5BlO,KAAK61H,YAAc71H,KAAKw2B,SAExBx2B,KAAKo3H,IAAMp3H,KAAK+2B,OAAOliB,MAAM5O,EAC7BjG,KAAKq3H,IAAMr3H,KAAK+2B,OAAOliB,MAAMpI,EAE7BzM,KAAKgR,OAAOxD,MAAMxN,KAAKuZ,SAAStT,EAAIjG,KAAKoP,UAAWpP,KAAKuZ,SAAS9M,EAAIzM,KAAKuP,aAa/EjC,UAAW,SAAUvE,GAiBjB,MAfI/I,MAAKmyH,UAELppH,EAAI9C,EAAIjG,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OAC7BtE,EAAI0D,EAAIzM,KAAKgR,OAAOvE,EAAIzM,KAAKqN,OAC7BtE,EAAI6B,MAAQ5K,KAAKgR,OAAO/K,EAAIjG,KAAKqN,OACjCtE,EAAI4F,OAAS3O,KAAKgR,OAAOvE,EAAIzM,KAAKqN,SAIlCtE,EAAI9C,EAAIjG,KAAKiG,EACb8C,EAAI0D,EAAIzM,KAAKyM,EACb1D,EAAI6B,MAAQ5K,KAAK4K,MACjB7B,EAAI4F,OAAS3O,KAAK2O,QAGf5F,GAYX+4B,QAAS,SAAU77B,EAAGwG,GAElB,MAAQzM,MAAa,SAAIK,EAAOmM,OAAOwB,SAAShO,KAAMiG,EAAGwG,GAAKpM,EAAOkN,UAAUS,SAAShO,KAAMiG,EAAGwG,IAUrGwrH,QAAS,WAEL,MAAOj4H,MAAKu2H,QAAQ5rF,MAUxButF,UAAW,WAEP,MAAOl4H,MAAKu2H,QAAQv2E,IAUxBm4E,OAAQ,WAEJ,MAAQn4H,MAAKu2H,QAAQ1rH,MAAQ7K,KAAKu2H,QAAQ3rH,OAU9C8oH,UAAW,WAEP,MAAQ1zH,MAAKsmC,SAAW,EAAItmC,KAAKsmC,UAAYtmC,KAAKsmC,UAUtDytF,UAAW,WAEP,MAAQ/zH,MAAKolC,SAAW,EAAIplC,KAAKolC,UAAYplC,KAAKolC,UAUtDkB,OAAQ,WAEJ,MAAOtmC,MAAKuZ,SAAStT,EAAIjG,KAAK24D,KAAK1yD,GAUvCm/B,OAAQ,WAEJ,MAAOplC,MAAKuZ,SAAS9M,EAAIzM,KAAK24D,KAAKlsD,GAUvC+5B,OAAQ,WAEJ,MAAOxmC,MAAKw2B,SAAWx2B,KAAK61H,aAYhC/xG,QAAS,WAED9jB,KAAK+2B,OAAOvN,QAAUxpB,KAAK+2B,OAAOvN,iBAAkBnpB,GAAOmtB,OAE3DxtB,KAAK+2B,OAAOvN,OAAOoG,eAAe5vB,KAAK+2B,QAG3C/2B,KAAK+2B,OAAOpH,KAAO,KACnB3vB,KAAK+2B,OAAS,OAUtBxvB,OAAO2E,eAAe7L,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,UAAW,QAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,KAW7BsB,OAAO2E,eAAe7L,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,UAAW,SAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,EAAIjG,KAAK+P,SAUtCxI,OAAO2E,eAAe7L,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,UAAW,OAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,KAW7BlF,OAAO2E,eAAe7L,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,UAAW,UAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,EAAIzM,KAAKgQ,UAUtCzI,OAAO2E,eAAe7L,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,UAAW,KAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAStT,GAIzBgG,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAStT,EAAIsD,KAS1BhC,OAAO2E,eAAe7L,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,UAAW,KAExD2F,IAAK,WAED,MAAOhM,MAAKuZ,SAAS9M,GAIzBR,IAAK,SAAU1C,GAEXvJ,KAAKuZ,SAAS9M,EAAIlD,KAe1BlJ,EAAOutB,QAAQukC,OAAO8xD,KAAKrjG,OAAS,SAAUyD,EAASsL,EAAM3R,EAAOqlG,GAEjD35G,SAAX25G,IAAwBA,GAAS,GAErCrlG,EAAQA,GAAS,oBAEjBqG,EAAQg1C,UAAYr7C,EACpBqG,EAAQi6C,YAActgD,EAElB2R,EAAKwiG,UAEL9tG,EAAQ25C,YACR35C,EAAQ45C,IAAItuC,EAAK3e,OAAO/K,EAAI0pB,EAAKnV,KAAKoC,OAAO3W,EAAG0pB,EAAK3e,OAAOvE,EAAIkjB,EAAKnV,KAAKoC,OAAOnQ,EAAGkjB,EAAKtiB,OAAQ,EAAG,EAAItH,KAAK+G,IAEzGu2G,EAEAh/F,EAAQie,OAIRje,EAAQk6C,UAKR8kD,EAEAh/F,EAAQi1C,SAAS3pC,EAAKpW,SAAStT,EAAI0pB,EAAKnV,KAAKoC,OAAO3W,EAAG0pB,EAAKpW,SAAS9M,EAAIkjB,EAAKnV,KAAKoC,OAAOnQ,EAAGkjB,EAAK5f,MAAO4f,EAAK3f,QAI9GqU,EAAQivD,WAAW3jD,EAAKpW,SAAStT,EAAI0pB,EAAKnV,KAAKoC,OAAO3W,EAAG0pB,EAAKpW,SAAS9M,EAAIkjB,EAAKnV,KAAKoC,OAAOnQ,EAAGkjB,EAAK5f,MAAO4f,EAAK3f,SAe5H3P,EAAOutB,QAAQukC,OAAO8xD,KAAKO,eAAiB,SAAU3gG,EAAO8L,GAEzD9L,EAAMzS,KAAK,MAAQue,EAAK1pB,EAAE8iB,QAAQ,GAAI,MAAQ4G,EAAKljB,EAAEsc,QAAQ,GAAI,UAAY4G,EAAK5f,MAAO,WAAa4f,EAAK3f,QAC3G6T,EAAMzS,KAAK,eAAiBue,EAAKugG,SAASjqH,EAAE8iB,QAAQ,GAAI,MAAQ4G,EAAKugG,SAASzjH,EAAEsc,QAAQ,GAAI,WAAa4G,EAAKkjB,IAAI9pB,QAAQ,GAAI,WAAa4G,EAAKmjB,IAAI/pB,QAAQ,IAC5JlF,EAAMzS,KAAK,mBAAqBue,EAAKwgG,aAAalqH,EAAE8iB,QAAQ,GAAI,MAAQ4G,EAAKwgG,aAAa1jH,EAAEsc,QAAQ,GAAI,UAAY4G,EAAKuN,MAAMnU,QAAQ,GAAI,UAAY4G,EAAKzhB,MAAM6a,QAAQ,IAC1KlF,EAAMzS,KAAK,cAAgBue,EAAKo/F,QAAQ9oH,EAAG,MAAQ0pB,EAAKo/F,QAAQtiH,EAAG,aAAekjB,EAAK6jG,OAAOvtH,EAAE8iB,QAAQ,GAAI,MAAQ4G,EAAK6jG,OAAO/mH,EAAEsc,QAAQ,IAC1IlF,EAAMzS,KAAK,kBAAoBue,EAAKikG,SAAS/oH,KAAM,UAAY8kB,EAAKikG,SAAShpH,MAAO,OAAS+kB,EAAKikG,SAAS5zE,GAAI,SAAWrwB,EAAKikG,SAASjpF,MACxI9mB,EAAMzS,KAAK,iBAAmBue,EAAK4mG,QAAQ1rH,KAAM,UAAY8kB,EAAK4mG,QAAQ3rH,MAAO,OAAS+kB,EAAK4mG,QAAQv2E,GAAI,SAAWrwB,EAAK4mG,QAAQ5rF,OAIvItqC,EAAOutB,QAAQukC,OAAO8xD,KAAK59G,UAAU8B,YAAc9H,EAAOutB,QAAQukC,OAAO8xD,KAczE5jH,EAAOutB,QAAQukC,OAAOimE,iBAAmB,aAEzC/3H,EAAOutB,QAAQukC,OAAOimE,iBAAiB/xH,WAKnCgyH,UAAW,GAcX/G,4BAA6B,SAAUv6F,EAAQuhG,EAAczH,EAAiBH,EAAiB3tG,EAAiBmuG,GAE5G,GAAKn6F,EAAOpH,KAAZ,CAKA,GAAI20E,GAAUg0B,EAAaC,SACvBxhG,EAAOpH,KAAKpW,SAAStT,EAAI8wB,EAAOpH,KAAK6mG,YAAYvwH,EACjD8wB,EAAOpH,KAAKpW,SAAS9M,EAAIsqB,EAAOpH,KAAK6mG,YAAY/pH,EACjDsqB,EAAOpH,KAAK5f,MAAQgnB,EAAOpH,KAAK6mG,YAAYvwH,EAC5C8wB,EAAOpH,KAAK3f,OAAS+mB,EAAOpH,KAAK6mG,YAAY/pH,GAC7C,GAAO,EAEX,IAAuB,IAAnB63F,EAAQz8F,OAKZ,IAAK,GAAIC,GAAI,EAAGA,EAAIw8F,EAAQz8F,OAAQC,IAE5B4oH,EAEIA,EAAgB5pH,KAAKic,EAAiBgU,EAAQutE,EAAQx8F,KAElD9H,KAAKw4H,aAAa1wH,EAAGivB,EAAOpH,KAAM20E,EAAQx8F,GAAIwwH,EAAcpH,KAE5DlxH,KAAKsvH,SAEDuB,GAEAA,EAAgB/pH,KAAKic,EAAiBgU,EAAQutE,EAAQx8F,KAO9D9H,KAAKw4H,aAAa1wH,EAAGivB,EAAOpH,KAAM20E,EAAQx8F,GAAIwwH,EAAcpH,KAE5DlxH,KAAKsvH,SAEDuB,GAEAA,EAAgB/pH,KAAKic,EAAiBgU,EAAQutE,EAAQx8F,OAoB1E0pH,2BAA4B,SAAUt7F,EAAOoiG,EAAczH,EAAiBH,EAAiB3tG,EAAiBmuG,GAE1G,GAAqB,IAAjBh7F,EAAMruB,OAKV,IAAK,GAAIC,GAAI,EAAGA,EAAIouB,EAAMvK,SAAS9jB,OAAQC,IAEnCouB,EAAMvK,SAAS7jB,GAAG0iB,QAElBxqB,KAAKsxH,4BAA4Bp7F,EAAMvK,SAAS7jB,GAAIwwH,EAAczH,EAAiBH,EAAiB3tG,EAAiBmuG,IAgBjIsH,aAAc,SAAU1wH,EAAG6nB,EAAM8oG,EAAMH,EAAcpH,GAEjD,IAAKvhG,EAAKI,OAEN,OAAO,CAGX,IAAI2oG,GAAwBJ,EAAavpG,cAA2C,EAA1BupG,EAAa/+G,SAAStT,EAC5E0yH,EAAwBL,EAAavpG,cAA2C,EAA1BupG,EAAa/+G,SAAS9M,CAGhF,KAAKgsH,EAAK3pH,WAAY6gB,EAAKpW,SAAStT,EAAIyyH,EAAuB/oG,EAAKpW,SAAS9M,EAAIksH,EAAuBhpG,EAAK/kB,MAAQ8tH,EAAuB/oG,EAAKhhB,OAASgqH,GAGtJ,OAAO,CAEN,IAAIzH,EAGL,OAAO,CAMX,IAAIuH,EAAKG,oBAAsBH,EAAKG,kBAAkB9xH,KAAK2xH,EAAKI,yBAA0BlpG,EAAKoH,OAAQ0hG,GAGnG,OAAO,CAEN,IAAoC,mBAAzBA,GAAKvO,MAAMjzE,WAA6BwhF,EAAKvO,MAAMjzE,UAAUwhF,EAAK/oG,SAAW+oG,EAAKvO,MAAMjzE,UAAUwhF,EAAK/oG,OAAO2D,SAASvsB,KAAK2xH,EAAKvO,MAAMjzE,UAAUwhF,EAAK/oG,OAAO3M,gBAAiB4M,EAAKoH,OAAQ0hG,GAGvM,OAAO,CAIX,MAAKA,EAAKK,UAAaL,EAAKM,WAAcN,EAAKO,SAAYP,EAAKQ,YAG5D,OAAO,CAGX,IAAIzlD,GAAK,EACLC,EAAK,EACLvjB,EAAO,EACPC,EAAO,CAoBX,IAlBIxgC,EAAK+jG,YAAc/jG,EAAKokG,YAGxB7jE,EAAO,GAEFvgC,EAAK+jG,YAAc/jG,EAAKokG,cAG7B5jE,EAAO,IAGW,IAAlBxgC,EAAK2W,UAAoC,IAAlB3W,EAAKyV,WAAmBqzF,EAAKK,UAAYL,EAAKM,aAAeN,EAAKO,SAAWP,EAAKQ,cAGzG/oE,EAAOnqD,KAAKkM,IAAIlM,KAAKoJ,IAAKwgB,EAAKpW,SAAStT,EAAIyyH,EAAuBD,EAAK7tH,OAAQ7E,KAAKoJ,IAAKwgB,EAAK/kB,MAAQ8tH,EAAuBD,EAAK5tH,OACnIslD,EAAOpqD,KAAKkM,IAAIlM,KAAKoJ,IAAKwgB,EAAKpW,SAAS9M,EAAIksH,EAAuBF,EAAK9pH,QAAS5I,KAAKoJ,IAAKwgB,EAAKhhB,OAASgqH,EAAuBF,EAAK/pH,OAG9HyhD,EAAPD,EACJ,CACI,IAAIuoE,EAAKK,UAAYL,EAAKM,aAEtBvlD,EAAKxzE,KAAKk5H,WAAWvpG,EAAM8oG,EAAMH,GAGtB,IAAP9kD,IAAailD,EAAK3pH,WAAY6gB,EAAKpW,SAAStT,EAAIyyH,EAAuB/oG,EAAKpW,SAAS9M,EAAIksH,EAAuBhpG,EAAK/kB,MAAQ8tH,EAAuB/oG,EAAKhhB,OAASgqH,IAElK,OAAO,GAIXF,EAAKO,SAAWP,EAAKQ,cAErBxlD,EAAKzzE,KAAKm5H,WAAWxpG,EAAM8oG,EAAMH,QAIzC,CACI,IAAIG,EAAKO,SAAWP,EAAKQ,cAErBxlD,EAAKzzE,KAAKm5H,WAAWxpG,EAAM8oG,EAAMH,GAGtB,IAAP7kD,IAAaglD,EAAK3pH,WAAY6gB,EAAKpW,SAAStT,EAAIyyH,EAAuB/oG,EAAKpW,SAAS9M,EAAIksH,EAAuBhpG,EAAK/kB,MAAQ8tH,EAAuB/oG,EAAKhhB,OAASgqH,IAElK,OAAO,GAIXF,EAAKK,UAAYL,EAAKM,aAEtBvlD,EAAKxzE,KAAKk5H,WAAWvpG,EAAM8oG,EAAMH,IAIzC,MAAe,KAAP9kD,GAAmB,IAAPC,GAcxBylD,WAAY,SAAUvpG,EAAM8oG,EAAMH,GAE9B,GAAI9kD,GAAK,EACLklD,EAAwBJ,EAAavpG,cAA2C,EAA1BupG,EAAa/+G,SAAStT,CAyChF,OAvCI0pB,GAAK2W,SAAW,IAAM3W,EAAK4mG,QAAQ1rH,MAAQ4tH,EAAKW,cAAgBzpG,EAAKq/F,eAAenkH,KAGhF4tH,EAAKM,WAAcppG,EAAK1pB,EAAIyyH,EAAuBD,EAAK7tH,QAExD4oE,EAAM7jD,EAAK1pB,EAAIyyH,EAAuBD,EAAK7tH,MAEvC4oE,GAAMxzE,KAAKq4H,YAEX7kD,EAAK,IAIR7jD,EAAK2W,SAAW,IAAM3W,EAAK4mG,QAAQ3rH,OAAS6tH,EAAKY,aAAe1pG,EAAKq/F,eAAepkH,OAGrF6tH,EAAKK,UAAanpG,EAAK/kB,MAAQ8tH,EAAuBD,EAAK5tH,OAE3D2oE,EAAM7jD,EAAK/kB,MAAQ8tH,EAAuBD,EAAK5tH,KAE3C2oE,EAAKxzE,KAAKq4H,YAEV7kD,EAAK,IAKN,IAAPA,IAEI7jD,EAAKwjG,gBAELxjG,EAAKmkG,SAAWtgD,EAIhBxzE,KAAKs5H,uBAAuB3pG,EAAM6jD,IAInCA,GAcX2lD,WAAY,SAAUxpG,EAAM8oG,EAAMH,GAE9B,GAAI7kD,GAAK,EACLklD,EAAwBL,EAAavpG,cAA2C,EAA1BupG,EAAa/+G,SAAS9M,CAyChF,OAvCIkjB,GAAKyV,SAAW,IAAMzV,EAAK4mG,QAAQv2E,IAAMy4E,EAAKc,aAAe5pG,EAAKq/F,eAAehvE,GAG7Ey4E,EAAKQ,YAAetpG,EAAKljB,EAAIksH,EAAuBF,EAAK9pH,SAEzD8kE,EAAM9jD,EAAKljB,EAAIksH,EAAuBF,EAAK9pH,OAEvC8kE,GAAMzzE,KAAKq4H,YAEX5kD,EAAK,IAIR9jD,EAAKyV,SAAW,IAAMzV,EAAK4mG,QAAQ5rF,MAAQ8tF,EAAKe,WAAa7pG,EAAKq/F,eAAerkF,MAGlF8tF,EAAKO,SAAYrpG,EAAKhhB,OAASgqH,EAAuBF,EAAK/pH,MAE3D+kE,EAAM9jD,EAAKhhB,OAASgqH,EAAuBF,EAAK/pH,IAE5C+kE,EAAKzzE,KAAKq4H,YAEV5kD,EAAK,IAKN,IAAPA,IAEI9jD,EAAK2kG,gBAEL3kG,EAAKqkG,SAAWvgD,EAIhBzzE,KAAKy5H,uBAAuB9pG,EAAM8jD,IAInCA,GAYX6lD,uBAAwB,SAAU3pG,EAAM1pB,GAE5B,EAAJA,EAEA0pB,EAAK4mG,QAAQ1rH,MAAO,EAEf5E,EAAI,IAET0pB,EAAK4mG,QAAQ3rH,OAAQ,GAGzB+kB,EAAKpW,SAAStT,GAAKA,EAEG,IAAlB0pB,EAAK6jG,OAAOvtH,EAEZ0pB,EAAKugG,SAASjqH,EAAI,EAIlB0pB,EAAKugG,SAASjqH,GAAK0pB,EAAKugG,SAASjqH,EAAI0pB,EAAK6jG,OAAOvtH,GAazDwzH,uBAAwB,SAAU9pG,EAAMljB,GAE5B,EAAJA,EAEAkjB,EAAK4mG,QAAQv2E,IAAK,EAEbvzC,EAAI,IAETkjB,EAAK4mG,QAAQ5rF,MAAO,GAGxBhb,EAAKpW,SAAS9M,GAAKA,EAEG,IAAlBkjB,EAAK6jG,OAAO/mH,EAEZkjB,EAAKugG,SAASzjH,EAAI,EAIlBkjB,EAAKugG,SAASzjH,GAAKkjB,EAAKugG,SAASzjH,EAAIkjB,EAAK6jG,OAAO/mH,IAQ7DpM,EAAOmI,MAAMkD,eAAerL,EAAOutB,QAAQukC,OAAO9rD,UAAWhG,EAAOutB,QAAQukC,OAAOimE,iBAAiB/xH,WASpGkS,GAAG0rG,KAAK59G,UAAUmjB,OAAS,KAC3BjR,GAAGmhH,OAAOrzH,UAAUmjB,OAAS,KAW7BnpB,EAAOutB,QAAQ8gG,GAAK,SAAUl0G,EAAMyQ,GAKhCjrB,KAAKwa,KAAOA,EAEG9Q,SAAXuhB,EAEAA,GAAW8jG,SAAU,EAAG,GAAI4K,WAAY,GAAIphH,IAAGqhH,gBAI1C3uG,EAAOjgB,eAAe,aAEvBigB,EAAO8jG,SAAW,EAAG,IAGpB9jG,EAAOjgB,eAAe,gBAEvBigB,EAAO0uG,WAAa,GAAIphH,IAAGqhH,gBAQnC55H,KAAKirB,OAASA,EAMdjrB,KAAKya,MAAQ,GAAIlC,IAAGke,MAAMz2B,KAAKirB,QAM/BjrB,KAAK+mD,UAAY,EAAI,GAMrB/mD,KAAK65H,gBAAiB,EAMtB75H,KAAK6gB,QAAS,EAMd7gB,KAAK85H,aAKL95H,KAAK+uH,QAAU,GAAI1uH,GAAOutB,QAAQ8gG,GAAGqL,kBAAkB/5H,KAAMA,KAAKya,MAAMs0G,SAKxE/uH,KAAKg6H,OAAUnvH,KAAM,KAAMD,MAAO,KAAM8D,IAAK,KAAMC,OAAQ,MAS3D3O,KAAKi6H,YAAc,GAAI55H,GAAO+a,OAS9Bpb,KAAKk6H,cAAgB,GAAI75H,GAAO+a,OAShCpb,KAAKm6H,cAAgB,GAAI95H,GAAO+a,OAShCpb,KAAKo6H,gBAAkB,GAAI/5H,GAAO+a,OASlCpb,KAAKq6H,kBAAoB,GAAIh6H,GAAO+a,OASpCpb,KAAKs6H,oBAAsB,GAAIj6H,GAAO+a,OAStCpb,KAAKu6H,uBAAyB,GAAIl6H,GAAO+a,OASzCpb,KAAKw6H,yBAA2B,GAAIn6H,GAAO+a,OAK3Cpb,KAAKy6H,uBAAyB,KAK9Bz6H,KAAK+iB,gBAAkB,KAYvB/iB,KAAK06H,eAAiB,GAAIr6H,GAAO+a,OAYjCpb,KAAK26H,aAAe,GAAIt6H,GAAO+a,OAG3B6P,EAAOjgB,eAAe,QAAUigB,EAAOjgB,eAAe,QAAUigB,EAAOjgB,eAAe,SAAWigB,EAAOjgB,eAAe,UAEvHhL,KAAK46H,IAAM3vG,EAAO2vG,IAClB56H,KAAK66H,KAAO5vG,EAAO4vG,KACnB76H,KAAK86H,IAAM7vG,EAAO6vG,IAClB96H,KAAK+6H,KAAO9vG,EAAO8vG,MAIvB/6H,KAAKya,MAAMugH,GAAG,eAAgBh7H,KAAKi7H,oBAAqBj7H,MACxDA,KAAKya,MAAMugH,GAAG,aAAch7H,KAAKk7H,kBAAmBl7H,MAKpDA,KAAKm7H,mBAKLn7H,KAAKo7H,sBAAwB,GAAI/6H,GAAOutB,QAAQ8gG,GAAG2M,eAAe,GAKlEr7H,KAAKs7H,qBAAuB,GAAIj7H,GAAOutB,QAAQ8gG,GAAG2M,eAAe,GAKjEr7H,KAAKu7H,yBAA2B,GAAIl7H,GAAOutB,QAAQ8gG,GAAG2M,eAAe,YAKrEr7H,KAAKw7H,sBAMLx7H,KAAKy7H,aAMLz7H,KAAK07H,kBAAoB,EAMzB17H,KAAK27H,aAAc,EAMnB37H,KAAK47H,cAAe,EAMpB57H,KAAK67H,YAAa,EAMlB77H,KAAK87H,eAAgB,EAMrB97H,KAAK+7H,iBAAkB,EAGvB/7H,KAAKof,kBAAiB,GAAM,GAAM,GAAM,GAAM,IAIlD/e,EAAOutB,QAAQ8gG,GAAGroH,WAQd21H,mBAAoB,SAAUrsG,GAE1B3vB,KAAKy7H,UAAU7oH,KAAK+c,IASxB3S,UAAW,WAIP,IAFA,GAAIlV,GAAI9H,KAAKy7H,UAAU5zH,OAEhBC,KAEH9H,KAAKi8H,WAAWj8H,KAAKy7H,UAAU3zH,GAGnC9H,MAAKy7H,UAAU5zH,OAAS,GAc5BkoB,OAAQ,SAAUuF,EAAQzR,EAAO8H,GAEfjiB,SAAVma,IAAuBA,GAAQ,GAClBna,SAAbiiB,IAA0BA,GAAW,EAEzC,IAAI7jB,GAAI,CAER,IAAItB,MAAMa,QAAQiuB,GAId,IAFAxtB,EAAIwtB,EAAOztB,OAEJC,KAECwtB,EAAOxtB,YAAczH,GAAOmtB,MAG5BxtB,KAAK+vB,OAAOuF,EAAOxtB,GAAG6jB,SAAU9H,EAAO8H,IAIvC3rB,KAAK0tB,WAAW4H,EAAOxtB,GAAI+b,GAEvB8H,GAAY2J,EAAOxtB,GAAGkD,eAAe,aAAesqB,EAAOxtB,GAAG6jB,SAAS9jB,OAAS,GAEhF7H,KAAK+vB,OAAOuF,EAAOxtB,GAAI+b,GAAO,QAOtCyR,aAAkBj1B,GAAOmtB,MAGzBxtB,KAAK+vB,OAAOuF,EAAO3J,SAAU9H,EAAO8H,IAIpC3rB,KAAK0tB,WAAW4H,EAAQzR,GAEpB8H,GAAY2J,EAAOtqB,eAAe,aAAesqB,EAAO3J,SAAS9jB,OAAS,GAE1E7H,KAAK+vB,OAAOuF,EAAO3J,SAAU9H,GAAO,KAepD6J,WAAY,SAAU4H,EAAQzR,GAEtByR,EAAOtqB,eAAe,SAA2B,OAAhBsqB,EAAO3F,OAExC2F,EAAO3F,KAAO,GAAItvB,GAAOutB,QAAQ8gG,GAAGzK,KAAKjkH,KAAKwa,KAAM8a,EAAQA,EAAOrvB,EAAGqvB,EAAO7oB,EAAG,GAChF6oB,EAAO3F,KAAK9L,MAAQA,EACA,mBAAlByR,GAAOjM,QACjBiM,EAAOjM,OAAOpd,IAAI,MAalBiwH,gBAAiB,SAAUh8G,GAEnBA,EAEAlgB,KAAKya,MAAMugH,GAAG,SAAUh7H,KAAKm8H,cAAen8H,MAI5CA,KAAKya,MAAM2hH,IAAI,SAAUp8H,KAAKm8H,cAAen8H,OAerDq8H,0BAA2B,SAAUhpG,EAAUhP,GAE3CrkB,KAAKy6H,uBAAyBpnG,EAC9BrzB,KAAK+iB,gBAAkBsB,EAEN,OAAbgP,EAEArzB,KAAKya,MAAMugH,GAAG,iBAAkBh7H,KAAKs8H,sBAAuBt8H,MAI5DA,KAAKya,MAAM2hH,IAAI,iBAAkBp8H,KAAKs8H,sBAAuBt8H,OAYrEs8H,sBAAuB,SAAUnwG,GAE7B,GAAKnsB,KAAKy6H,wBAAiD,IAAvBtuG,EAAMowG,MAAM10H,OAKhD,IAAK,GAAIC,GAAIqkB,EAAMowG,MAAM10H,OAAS,EAAGC,GAAK,EAAGA,GAAK,EAE1CqkB,EAAMowG,MAAMz0H,GAAG0hB,QAAU2C,EAAMowG,MAAMz0H,EAAE,GAAG0hB,SAAWxpB,KAAKy6H,uBAAuB3zH,KAAK9G,KAAK+iB,gBAAiBoJ,EAAMowG,MAAMz0H,GAAG0hB,OAAQ2C,EAAMowG,MAAMz0H,EAAE,GAAG0hB,SAEpJ2C,EAAMowG,MAAMp5G,OAAOrb,EAAG,IAalCq0H,cAAe,SAAUhwG,GAErB,GAAIA,EAAMqwG,MAAMhzG,QAAU2C,EAAMswG,MAAMjzG,OACtC,CAEI,GAAI/a,GAAI0d,EAAMqwG,MAAMhzG,OAChB3a,EAAIsd,EAAMswG,MAAMjzG,MAEhB/a,GAAEiuH,eAAevwG,EAAMswG,MAAM9nH,KAE7BlG,EAAEiuH,eAAevwG,EAAMswG,MAAM9nH,IAAI7N,KAAK2H,EAAEkuH,qBAAqBxwG,EAAMswG,MAAM9nH,IAAKlG,EAAGI,EAAGsd,EAAMywG,OAAQzwG,EAAM0wG,QAGxGhuH,EAAE6tH,eAAevwG,EAAMqwG,MAAM7nH,KAE7B9F,EAAE6tH,eAAevwG,EAAMqwG,MAAM7nH,IAAI7N,KAAK+H,EAAE8tH,qBAAqBxwG,EAAMqwG,MAAM7nH,IAAK9F,EAAGJ,EAAG0d,EAAM0wG,OAAQ1wG,EAAMywG,QAIxGnuH,EAAEquH,gBAAgB3wG,EAAM0wG,OAAOE,iBAE/BtuH,EAAEquH,gBAAgB3wG,EAAM0wG,OAAOE,gBAAgBj2H,KAAK2H,EAAEuuH,sBAAsB7wG,EAAM0wG,OAAOE,gBAAiBtuH,EAAGI,EAAGsd,EAAMywG,OAAQzwG,EAAM0wG,QAGpIhuH,EAAEiuH,gBAAgB3wG,EAAMywG,OAAOG,iBAE/BluH,EAAEiuH,gBAAgB3wG,EAAMywG,OAAOG,gBAAgBj2H,KAAK+H,EAAEmuH,sBAAsB7wG,EAAMywG,OAAOG,gBAAiBluH,EAAGJ,EAAG0d,EAAM0wG,OAAQ1wG,EAAMywG,UAYhJ3B,oBAAqB,SAAU9uG,GAEvBA,EAAMqwG,OAASrwG,EAAMswG,QAErBz8H,KAAK06H,eAAe77G,SAASsN,EAAMqwG,MAAOrwG,EAAMswG,MAAOtwG,EAAMywG,OAAQzwG,EAAM0wG,OAAQ1wG,EAAM8wG,kBAErF9wG,EAAMqwG,MAAMhzG,QAEZ2C,EAAMqwG,MAAMhzG,OAAOkxG,eAAe77G,SAASsN,EAAMswG,MAAMjzG,OAAQ2C,EAAMswG,MAAOtwG,EAAMywG,OAAQzwG,EAAM0wG,OAAQ1wG,EAAM8wG,kBAG9G9wG,EAAMswG,MAAMjzG,QAEZ2C,EAAMswG,MAAMjzG,OAAOkxG,eAAe77G,SAASsN,EAAMqwG,MAAMhzG,OAAQ2C,EAAMqwG,MAAOrwG,EAAM0wG,OAAQ1wG,EAAMywG,OAAQzwG,EAAM8wG,oBAY1H/B,kBAAmB,SAAU/uG,GAErBA,EAAMqwG,OAASrwG,EAAMswG,QAErBz8H,KAAK26H,aAAa97G,SAASsN,EAAMqwG,MAAOrwG,EAAMswG,MAAOtwG,EAAMywG,OAAQzwG,EAAM0wG,QAErE1wG,EAAMqwG,MAAMhzG,QAEZ2C,EAAMqwG,MAAMhzG,OAAOmxG,aAAa97G,SAASsN,EAAMswG,MAAMjzG,OAAQ2C,EAAMswG,MAAOtwG,EAAMywG,OAAQzwG,EAAM0wG,QAG9F1wG,EAAMswG,MAAMjzG,QAEZ2C,EAAMswG,MAAMjzG,OAAOmxG,aAAa97G,SAASsN,EAAMqwG,MAAMhzG,OAAQ2C,EAAMqwG,MAAOrwG,EAAM0wG,OAAQ1wG,EAAMywG,UAiB1Gx9G,iBAAkB,SAAUvU,EAAMD,EAAO8D,EAAKC,EAAQuuH,GAElDl9H,KAAK82B,UAAU92B,KAAKwa,KAAKC,MAAME,OAAO1U,EAAGjG,KAAKwa,KAAKC,MAAME,OAAOlO,EAAGzM,KAAKwa,KAAKC,MAAME,OAAO5K,MAAO/P,KAAKwa,KAAKC,MAAME,OAAO3K,OAAQnF,EAAMD,EAAO8D,EAAKC,EAAQuuH,IAc9JC,iBAAkB,SAAUC,EAAUvyH,EAAMD,EAAO8D,EAAKC,GAEvCjF,SAATmB,IAAsBA,GAAO,GACnBnB,SAAVkB,IAAuBA,GAAQ,GACvBlB,SAARgF,IAAqBA,GAAM,GAChBhF,SAAXiF,IAAwBA,GAAS,GAEjC9D,GAAQ7K,KAAKg6H,MAAMnvH,OAEnB7K,KAAKg6H,MAAMnvH,KAAKwyH,OAAO,GAAGD,SAAWA,GAGrCxyH,GAAS5K,KAAKg6H,MAAMpvH,QAEpB5K,KAAKg6H,MAAMpvH,MAAMyyH,OAAO,GAAGD,SAAWA,GAGtC1uH,GAAO1O,KAAKg6H,MAAMtrH,MAElB1O,KAAKg6H,MAAMtrH,IAAI2uH,OAAO,GAAGD,SAAWA,GAGpCzuH,GAAU3O,KAAKg6H,MAAMrrH,SAErB3O,KAAKg6H,MAAMrrH,OAAO0uH,OAAO,GAAGD,SAAWA,IAa/CE,2BAA4B,SAAUJ,GAERxzH,SAAtBwzH,IAAmCA,GAAoB,EAE3D,IAAIrzE,GAAO,EAAsB7pD,KAAKs7H,qBAAqBzxE,KAAO7pD,KAAKu7H,yBAAyB1xE,IAE5F7pD,MAAKg6H,MAAMnvH,OAEX7K,KAAKg6H,MAAMnvH,KAAKwyH,OAAO,GAAGN,eAAiBlzE,GAG3C7pD,KAAKg6H,MAAMpvH,QAEX5K,KAAKg6H,MAAMpvH,MAAMyyH,OAAO,GAAGN,eAAiBlzE,GAG5C7pD,KAAKg6H,MAAMtrH,MAEX1O,KAAKg6H,MAAMtrH,IAAI2uH,OAAO,GAAGN,eAAiBlzE,GAG1C7pD,KAAKg6H,MAAMrrH,SAEX3O,KAAKg6H,MAAMrrH,OAAO0uH,OAAO,GAAGN,eAAiBlzE,GAGjD7pD,KAAK+7H,gBAAkBmB,GAuB3BpmG,UAAW,SAAU7wB,EAAGwG,EAAGsD,EAAOC,EAAQnF,EAAMD,EAAO8D,EAAKC,EAAQuuH,GAEnDxzH,SAATmB,IAAsBA,EAAO7K,KAAK27H,aACxBjyH,SAAVkB,IAAuBA,EAAQ5K,KAAK47H,cAC5BlyH,SAARgF,IAAqBA,EAAM1O,KAAK67H,YACrBnyH,SAAXiF,IAAwBA,EAAS3O,KAAK87H,eAChBpyH,SAAtBwzH,IAAmCA,EAAoBl9H,KAAK+7H,iBAEhE/7H,KAAKu9H,UAAU1yH,EAAM,OAAQ5E,EAAGwG,EAAG,mBAAoBywH,GACvDl9H,KAAKu9H,UAAU3yH,EAAO,QAAS3E,EAAI8J,EAAOtD,EAAG,oBAAqBywH,GAClEl9H,KAAKu9H,UAAU7uH,EAAK,MAAOzI,EAAGwG,EAAG,mBAAoBywH,GACrDl9H,KAAKu9H,UAAU5uH,EAAQ,SAAU1I,EAAGwG,EAAIuD,EAAQ,EAAGktH,GAGnDl9H,KAAK27H,YAAc9wH,EACnB7K,KAAK47H,aAAehxH,EACpB5K,KAAK67H,WAAantH,EAClB1O,KAAK87H,cAAgBntH,EACrB3O,KAAK+7H,gBAAkBmB,GAiB3BK,UAAW,SAAU78G,EAAQ88G,EAAMv3H,EAAGwG,EAAGyB,EAAOgvH,GAExCx8G,GAGI1gB,KAAKg6H,MAAMwD,GAEXx9H,KAAKg6H,MAAMwD,GAAMjkH,UAAavZ,KAAK+6H,KAAK90H,GAAIjG,KAAK+6H,KAAKtuH,KAItDzM,KAAKg6H,MAAMwD,GAAQ,GAAIjlH,IAAG0rG,MAAOqP,KAAM,EAAG/5G,UAAYvZ,KAAK+6H,KAAK90H,GAAIjG,KAAK+6H,KAAKtuH,IAAMyB,MAAOA,IAC3FlO,KAAKg6H,MAAMwD,GAAMC,SAAS,GAAIllH,IAAGmlH,OAEjC19H,KAAKya,MAAMkjH,QAAQ39H,KAAKg6H,MAAMwD,KAG9BN,IAEAl9H,KAAKg6H,MAAMwD,GAAMH,OAAO,GAAGN,eAAiB/8H,KAAKs7H,qBAAqBzxE,OAKtE7pD,KAAKg6H,MAAMwD,KAEXx9H,KAAKya,MAAMwhH,WAAWj8H,KAAKg6H,MAAMwD,IACjCx9H,KAAKg6H,MAAMwD,GAAQ,OAW/Bh7G,MAAO,WAEHxiB,KAAK6gB,QAAS,GASlB6B,OAAQ,WAEJ1iB,KAAK6gB,QAAS,GASlBtC,OAAQ,WAGAve,KAAK6gB,SAKL7gB,KAAK65H,eAEL75H,KAAKya,MAAMuhB,KAAKh8B,KAAKwa,KAAKmE,KAAKkiE,gBAI/B7gF,KAAKya,MAAMuhB,KAAKh8B,KAAK+mD,aAW7BrnC,MAAO,WAEH1f,KAAKya,MAAMugH,GAAG,eAAgBh7H,KAAKi7H,oBAAqBj7H,MACxDA,KAAKya,MAAMugH,GAAG,aAAch7H,KAAKk7H,kBAAmBl7H,MAEpDA,KAAKo7H,sBAAwB,GAAI/6H,GAAOutB,QAAQ8gG,GAAG2M,eAAe,GAClEr7H,KAAKs7H,qBAAuB,GAAIj7H,GAAOutB,QAAQ8gG,GAAG2M,eAAe,GACjEr7H,KAAKu7H,yBAA2B,GAAIl7H,GAAOutB,QAAQ8gG,GAAG2M,eAAe,YAErEr7H,KAAK07H,kBAAoB,EAEzB17H,KAAKof,kBAAiB,GAAM,GAAM,GAAM,GAAM,IAmBlDnB,MAAO,WAEHje,KAAKya,MAAMkE,KAAO,EAClB3e,KAAKya,MAAMmjH,cAAgB,EAGvB59H,KAAKya,MAAMojH,QAAU79H,KAAKya,MAAMojH,OAAOC,UAAUj2H,QAEjD7H,KAAKya,MAAMojH,OAAOE,oBAMtB,KAAK,GAFDC,GAAKh+H,KAAKya,MAAMwjH,YAEXn2H,EAAIk2H,EAAGn2H,OAAS,EAAGC,GAAK,EAAGA,IAEhC9H,KAAKya,MAAMyjH,iBAAiBF,EAAGl2H,GAMnC,KAAK,GAFDq2H,GAASn+H,KAAKya,MAAM0jH,OAEfr2H,EAAIq2H,EAAOt2H,OAAS,EAAGC,GAAK,EAAGA,IAEpC9H,KAAKya,MAAMwhH,WAAWkC,EAAOr2H,GAMjC,KAAK,GAFDs2H,GAAUp+H,KAAKya,MAAM2jH,QAEhBt2H,EAAIs2H,EAAQv2H,OAAS,EAAGC,GAAK,EAAGA,IAErC9H,KAAKya,MAAM4jH,aAAaD,EAAQt2H,GAMpC,KAAK,GAFDw2H,GAAMt+H,KAAKya,MAAM8jH,iBAEZz2H,EAAIw2H,EAAIz2H,OAAS,EAAGC,GAAK,EAAGA,IAEjC9H,KAAKya,MAAM+jH,sBAAsBF,EAAIx2H,GAGzC9H,MAAKya,MAAM2hH,IAAI,eAAgBp8H,KAAKi7H,oBAAqBj7H,MACzDA,KAAKya,MAAM2hH,IAAI,aAAcp8H,KAAKk7H,kBAAmBl7H,MAErDA,KAAKy6H,uBAAyB,KAC9Bz6H,KAAK+iB,gBAAkB,KACvB/iB,KAAKy+H,eAAiB,KAEtBz+H,KAAKm7H,mBACLn7H,KAAKy7H,aACLz7H,KAAKw7H,sBAGLx7H,KAAKg6H,OAAUnvH,KAAM,KAAMD,MAAO,KAAM8D,IAAK,KAAMC,OAAQ,OAS/DmV,QAAS,WAEL9jB,KAAKie,QAELje,KAAKwa,KAAO,MAWhBmjH,QAAS,SAAUhuG,GAEf,MAAIA,GAAK0S,KAAK5nB,OAEH,GAIPza,KAAKya,MAAMkjH,QAAQhuG,EAAK0S,MAExBriC,KAAKi6H,YAAYp7G,SAAS8Q,IAEnB,IAYfssG,WAAY,SAAUtsG,GASlB,MAPIA,GAAK0S,KAAK5nB,OAASza,KAAKya,QAExBza,KAAKya,MAAMwhH,WAAWtsG,EAAK0S,MAE3BriC,KAAKk6H,cAAcr7G,SAAS8Q,IAGzBA,GAWX+uG,UAAW,SAAUC,GAajB,MAXIA,aAAkBt+H,GAAOutB,QAAQ8gG,GAAGgL,QAAUiF,YAAkBt+H,GAAOutB,QAAQ8gG,GAAGkQ,iBAElF5+H,KAAKya,MAAMikH,UAAUC,EAAOt8F,MAI5BriC,KAAKya,MAAMikH,UAAUC,GAGzB3+H,KAAKm6H,cAAct7G,SAAS8/G,GAErBA,GAWXN,aAAc,SAAUM,GAapB,MAXIA,aAAkBt+H,GAAOutB,QAAQ8gG,GAAGgL,QAAUiF,YAAkBt+H,GAAOutB,QAAQ8gG,GAAGkQ,iBAElF5+H,KAAKya,MAAM4jH,aAAaM,EAAOt8F,MAI/BriC,KAAKya,MAAM4jH,aAAaM;AAG5B3+H,KAAKo6H,gBAAgBv7G,SAAS8/G,GAEvBA,GAgBXE,yBAA0B,SAAUrC,EAAOC,EAAO5uH,EAAUixH,EAAcC,EAAcC,GAKpF,MAHAxC,GAAQx8H,KAAKi/H,QAAQzC,GACrBC,EAAQz8H,KAAKi/H,QAAQxC,GAEhBD,GAAUC,EAMJz8H,KAAKk/H,cAAc,GAAI7+H,GAAOutB,QAAQ8gG,GAAGyQ,mBAAmBn/H,KAAMw8H,EAAOC,EAAO5uH,EAAUixH,EAAcC,EAAcC,QAJ7H52H,SAAQG,KAAK,yDAmBrB62H,qBAAsB,SAAU5C,EAAOC,EAAOvuH,EAAOmxH,GAKjD,MAHA7C,GAAQx8H,KAAKi/H,QAAQzC,GACrBC,EAAQz8H,KAAKi/H,QAAQxC,GAEhBD,GAAUC,EAMJz8H,KAAKk/H,cAAc,GAAI7+H,GAAOutB,QAAQ8gG,GAAG4Q,eAAet/H,KAAMw8H,EAAOC,EAAOvuH,EAAOmxH,QAJ1Fj3H,SAAQG,KAAK,yDAsBrBg3H,yBAA0B,SAAU/C,EAAOgD,EAAQ/C,EAAOgD,EAAQT,EAAUU,GAKxE,MAHAlD,GAAQx8H,KAAKi/H,QAAQzC,GACrBC,EAAQz8H,KAAKi/H,QAAQxC,GAEhBD,GAAUC,EAMJz8H,KAAKk/H,cAAc,GAAI7+H,GAAOutB,QAAQ8gG,GAAGiR,mBAAmB3/H,KAAMw8H,EAAOgD,EAAQ/C,EAAOgD,EAAQT,EAAUU,QAJjHt3H,SAAQG,KAAK,yDAoBrBq3H,qBAAsB,SAAUpD,EAAOC,EAAOruH,EAAQF,EAAO8wH,GAKzD,MAHAxC,GAAQx8H,KAAKi/H,QAAQzC,GACrBC,EAAQz8H,KAAKi/H,QAAQxC,GAEhBD,GAAUC,EAMJz8H,KAAKk/H,cAAc,GAAI7+H,GAAOutB,QAAQ8gG,GAAGmR,eAAe7/H,KAAMw8H,EAAOC,EAAOruH,EAAQF,EAAO8wH,QAJlG52H,SAAQG,KAAK,yDAuBrBu3H,0BAA2B,SAAUtD,EAAOC,EAAOsD,EAAcC,EAASC,EAAS9hF,EAAM6gF,GAKrF,MAHAxC,GAAQx8H,KAAKi/H,QAAQzC,GACrBC,EAAQz8H,KAAKi/H,QAAQxC,GAEhBD,GAAUC,EAMJz8H,KAAKk/H,cAAc,GAAI7+H,GAAOutB,QAAQ8gG,GAAGwR,oBAAoBlgI,KAAMw8H,EAAOC,EAAOsD,EAAcC,EAASC,EAAS9hF,EAAM6gF,QAJ9H52H,SAAQG,KAAK,yDAgBrB22H,cAAe,SAAUiB,GAMrB,MAJAngI,MAAKya,MAAMykH,cAAciB,GAEzBngI,KAAKq6H,kBAAkBx7G,SAASshH,GAEzBA,GAWXjC,iBAAkB,SAAUiC,GAMxB,MAJAngI,MAAKya,MAAMyjH,iBAAiBiC,GAE5BngI,KAAKs6H,oBAAoBz7G,SAASshH,GAE3BA,GAWXC,mBAAoB,SAAUhD,GAM1B,MAJAp9H,MAAKya,MAAM2lH,mBAAmBhD,GAE9Bp9H,KAAKu6H,uBAAuB17G,SAASu+G,GAE9BA,GAWXoB,sBAAuB,SAAUpB,GAM7B,MAJAp9H,MAAKya,MAAM+jH,sBAAsBpB,GAEjCp9H,KAAKw6H,yBAAyB37G,SAASu+G,GAEhCA,GAYXiD,mBAAoB,SAAUC,EAAWC,GAErC,MAAOvgI,MAAKya,MAAM4lH,mBAAmBC,EAAWC,IAWpDC,YAAa,SAAUpD,EAAUe,GAI7B,IAFA,GAAIr2H,GAAIq2H,EAAOt2H,OAERC,KAEHq2H,EAAOr2H,GAAG04H,YAAYpD,IAe9BqD,eAAgB,SAAUr1H,EAAMukB,GAE5BvkB,EAAOA,GAAQ,EAEf,IAAIgyH,GAAW,GAAI/8H,GAAOutB,QAAQ8gG,GAAGgS,SAASt1H,EAS9C,OAPApL,MAAK85H,UAAUlnH,KAAKwqH,GAEA,mBAATztG,IAEPA,EAAK6wG,YAAYpD,GAGdA,GAaXuD,sBAAuB,SAAUL,EAAWC,EAAWp1H,GAEjCzB,SAAd42H,IAA2BA,EAAYtgI,KAAKygI,kBAC9B/2H,SAAd62H,IAA2BA,EAAYvgI,KAAKygI,iBAEhD,IAAIG,GAAU,GAAIvgI,GAAOutB,QAAQ8gG,GAAGmS,gBAAgBP,EAAWC,EAAWp1H,EAE1E,OAAOnL,MAAKogI,mBAAmBQ,IAUnCE,UAAW,WAKP,IAHA,GAAI/yH,MACAjG,EAAI9H,KAAKya,MAAM0jH,OAAOt2H,OAEnBC,KAEHiG,EAAO6E,KAAK5S,KAAKya,MAAM0jH,OAAOr2H,GAAG0hB,OAGrC,OAAOzb,IAWXkxH,QAAS,SAAU3pG,GAEf,MAAIA,aAAkB/c,IAAG0rG,KAGd3uF,EAEFA,YAAkBj1B,GAAOutB,QAAQ8gG,GAAGzK,KAGlC3uF,EAAO+M,KAET/M,EAAa,MAAKA,EAAa,KAAEptB,OAAS7H,EAAOutB,QAAQ46B,KAGvDlzB,EAAO3F,KAAK0S,KAGhB,MAUX0+F,WAAY,WAKR,IAHA,GAAIhzH,MACAjG,EAAI9H,KAAKya,MAAM2jH,QAAQv2H,OAEpBC,KAEHiG,EAAO6E,KAAK5S,KAAKya,MAAM2jH,QAAQt2H,GAAG0hB,OAGtC,OAAOzb,IAYXizH,eAAgB,WAKZ,IAHA,GAAIjzH,MACAjG,EAAI9H,KAAKya,MAAMwjH,YAAYp2H,OAExBC,KAEHiG,EAAO6E,KAAK5S,KAAKya,MAAMwjH,YAAYn2H,GAGvC,OAAOiG,IAeX+zB,QAAS,SAAUm/F,EAAY9C,EAAQ+C,EAAWC,GAE/Bz3H,SAAXy0H,IAAwBA,EAASn+H,KAAKya,MAAM0jH,QAC9Bz0H,SAAdw3H,IAA2BA,EAAY,GACtBx3H,SAAjBy3H,IAA8BA,GAAe,EAOjD,KALA,GAAIC,IAAoBphI,KAAK+6H,KAAKkG,EAAWh7H,GAAIjG,KAAK+6H,KAAKkG,EAAWx0H,IAElE40H,KACAv5H,EAAIq2H,EAAOt2H,OAERC,KAECq2H,EAAOr2H,YAAczH,GAAOutB,QAAQ8gG,GAAGzK,QAAUkd,GAAgBhD,EAAOr2H,GAAGu6B,KAAKn6B,OAASqQ,GAAG0rG,KAAKqd,QAEjGD,EAAMzuH,KAAKurH,EAAOr2H,GAAGu6B,MAEhB87F,EAAOr2H,YAAcyQ,IAAG0rG,MAAQka,EAAOr2H,GAAG0hB,UAAY23G,GAAgBhD,EAAOr2H,GAAGI,OAASqQ,GAAG0rG,KAAKqd,QAEtGD,EAAMzuH,KAAKurH,EAAOr2H,IAEbq2H,EAAOr2H,YAAczH,GAAO+tB,QAAU+vG,EAAOr2H,GAAGkD,eAAe,WAAam2H,GAAgBhD,EAAOr2H,GAAG6nB,KAAK0S,KAAKn6B,OAASqQ,GAAG0rG,KAAKqd,SAEtID,EAAMzuH,KAAKurH,EAAOr2H,GAAG6nB,KAAK0S,KAIlC,OAAOriC,MAAKya,MAAMqnB,QAAQs/F,EAAiBC,EAAOH,IAUtDK,OAAQ,WAEJ,MAAOvhI,MAAKya,MAAM8mH,UAWtBC,qBAAsB,SAAUlsG,GAE5B,GAAImsG,GAAU17H,KAAK6mF,IAAI,EAAG5sF,KAAK07H,kBAE3B17H,MAAKg6H,MAAMnvH,OAEX7K,KAAKg6H,MAAMnvH,KAAKwyH,OAAO,GAAGqE,cAAgB1hI,KAAKg6H,MAAMnvH,KAAKwyH,OAAO,GAAGqE,cAAgBD,GAGpFzhI,KAAKg6H,MAAMpvH,QAEX5K,KAAKg6H,MAAMpvH,MAAMyyH,OAAO,GAAGqE,cAAgB1hI,KAAKg6H,MAAMpvH,MAAMyyH,OAAO,GAAGqE,cAAgBD,GAGtFzhI,KAAKg6H,MAAMtrH,MAEX1O,KAAKg6H,MAAMtrH,IAAI2uH,OAAO,GAAGqE,cAAgB1hI,KAAKg6H,MAAMtrH,IAAI2uH,OAAO,GAAGqE,cAAgBD,GAGlFzhI,KAAKg6H,MAAMrrH,SAEX3O,KAAKg6H,MAAMrrH,OAAO0uH,OAAO,GAAGqE,cAAgB1hI,KAAKg6H,MAAMrrH,OAAO0uH,OAAO,GAAGqE,cAAgBD,GAG5FzhI,KAAK07H,mBAEL,IAAIxlG,GAAQ,GAAI71B,GAAOutB,QAAQ8gG,GAAG2M,eAAeoG,EASjD,OAPAzhI,MAAKm7H,gBAAgBvoH,KAAKsjB,GAEtBZ,GAEAt1B,KAAKk9H,kBAAkB5nG,EAAQY,GAG5BA,GAYXgnG,kBAAmB,SAAU5nG,EAAQY,GAEjC,GAAIZ,YAAkBj1B,GAAOmtB,MAEzB,IAAK,GAAI1lB,GAAI,EAAGA,EAAIwtB,EAAOV,MAAO9sB,IAE1BwtB,EAAO3J,SAAS7jB,GAAS,MAAKwtB,EAAO3J,SAAS7jB,GAAS,KAAEI,OAAS7H,EAAOutB,QAAQ46B,MAEjFlzB,EAAO3J,SAAS7jB,GAAG6nB,KAAKutG,kBAAkBhnG,OAMlDZ,GAAO3F,KAAKutG,kBAAkBhnG,IAoBtCyrG,aAAc,SAAUnF,EAAOC,EAAOmF,EAAYC,EAAWC,EAASC,EAAQC,EAAQC,EAAQC,GAK1F,MAHA1F,GAAQx8H,KAAKi/H,QAAQzC,GACrBC,EAAQz8H,KAAKi/H,QAAQxC,GAEhBD,GAAUC,EAMJz8H,KAAK0+H,UAAU,GAAIr+H,GAAOutB,QAAQ8gG,GAAGgL,OAAO15H,KAAMw8H,EAAOC,EAAOmF,EAAYC,EAAWC,EAASC,EAAQC,EAAQC,EAAQC,QAJ/H95H,SAAQG,KAAK,qDAoBrB45H,uBAAwB,SAAU3F,EAAOC,EAAO2F,EAAWP,EAAWC,GAKlE,MAHAtF,GAAQx8H,KAAKi/H,QAAQzC,GACrBC,EAAQz8H,KAAKi/H,QAAQxC,GAEhBD,GAAUC,EAMJz8H,KAAK0+H,UAAU,GAAIr+H,GAAOutB,QAAQ8gG,GAAGkQ,iBAAiB5+H,KAAMw8H,EAAOC,EAAO2F,EAAWP,EAAWC,QAJvG15H,SAAQG,KAAK,gEA0BrB85H,WAAY,SAAUp8H,EAAGwG,EAAG6mH,EAAMrqG,EAAY9d,EAASk3B,GAEhC34B,SAAfuf,IAA4BA,GAAa,EAE7C,IAAI0G,GAAO,GAAItvB,GAAOutB,QAAQ8gG,GAAGzK,KAAKjkH,KAAKwa,KAAM,KAAMvU,EAAGwG,EAAG6mH,EAE7D,IAAIjxF,EACJ,CACI,GAAI/wB,GAASqe,EAAK2yG,WAAWn3H,EAASk3B,EAEtC,KAAK/wB,EAED,OAAO,EASf,MALI2X,IAEAjpB,KAAKya,MAAMkjH,QAAQhuG,EAAK0S,MAGrB1S,GAoBX4yG,eAAgB,SAAUt8H,EAAGwG,EAAG6mH,EAAMrqG,EAAY9d,EAASk3B,GAEpC34B,SAAfuf,IAA4BA,GAAa,EAE7C,IAAI0G,GAAO,GAAItvB,GAAOutB,QAAQ8gG,GAAGzK,KAAKjkH,KAAKwa,KAAM,KAAMvU,EAAGwG,EAAG6mH,EAE7D,IAAIjxF,EACJ,CACI,GAAI/wB,GAASqe,EAAK2yG,WAAWn3H,EAASk3B,EAEtC,KAAK/wB,EAED,OAAO,EASf,MALI2X,IAEAjpB,KAAKya,MAAMkjH,QAAQhuG,EAAK0S,MAGrB1S,GAcX6yG,wBAAyB,SAAUC,EAAKvY,EAAOjhG,GAExBvf,SAAfuf,IAA4BA,GAAa,EAI7C,KAAK,GAFDlb,MAEKjG,EAAI,EAAGF,EAAM66H,EAAIC,UAAUxY,GAAOriH,OAAYD,EAAJE,EAASA,IAC5D,CAUI,GAAIwtB,GAASmtG,EAAIC,UAAUxY,GAAOpiH,GAE9B6nB,EAAO3vB,KAAKqiI,WAAW/sG,EAAOrvB,EAAGqvB,EAAO7oB,EAAG,EAAGwc,KAAgBqM,EAAOqtG,SAErEhzG,IAEA5hB,EAAO6E,KAAK+c,GAIpB,MAAO5hB,IAWX60H,wBAAyB,SAAUH,EAAKvY,GAEpCA,EAAQuY,EAAII,SAAS3Y,EAIrB,KAFA,GAAIpiH,GAAI26H,EAAIzY,OAAOE,GAAOiU,OAAOt2H,OAE1BC,KAEH26H,EAAIzY,OAAOE,GAAOiU,OAAOr2H,GAAGgc,SAGhC2+G,GAAIzY,OAAOE,GAAOiU,OAAOt2H,OAAS,GAiBtCi7H,eAAgB,SAAUL,EAAKvY,EAAOjhG,EAAY85G,GAE9C7Y,EAAQuY,EAAII,SAAS3Y,GAEFxgH,SAAfuf,IAA4BA,GAAa,GAC5Bvf,SAAbq5H,IAA0BA,GAAW,GAGzC/iI,KAAK4iI,wBAAwBH,EAAKvY,EAMlC,KAAK,GAJDn6G,GAAQ,EACR0C,EAAK,EACLC,EAAK,EAEAjG,EAAI,EAAG8Q,EAAIklH,EAAIzY,OAAOE,GAAOl6G,OAAYuN,EAAJ9Q,EAAOA,IACrD,CACIsD,EAAQ,CAER,KAAK,GAAI9J,GAAI,EAAGqX,EAAImlH,EAAIzY,OAAOE,GAAOn6G,MAAWuN,EAAJrX,EAAOA,IACpD,CACI,GAAIwyH,GAAOgK,EAAIzY,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAErC,IAAIwyH,GAAQA,EAAK/oG,MAAQ,IAAM+oG,EAAKuK,SAEhC,GAAID,EACJ,CACI,GAAIn4H,GAAQ63H,EAAIQ,aAAa/Y,EAAOjkH,EAAGwG,EASvC,IAPc,IAAVsD,IAEA0C,EAAKgmH,EAAKxyH,EAAIwyH,EAAK1oH,MACnB2C,EAAK+lH,EAAKhsH,EAAIgsH,EAAKzoH,OACnBD,EAAQ0oH,EAAK1oH,OAGbnF,GAASA,EAAMo4H,SAEfjzH,GAAS0oH,EAAK1oH,UAGlB,CACI,GAAI4f,GAAO3vB,KAAKqiI,WAAW5vH,EAAIC,EAAI,GAAG,EAEtCid,GAAKuzG,aAAanzH,EAAO0oH,EAAKzoH,OAAQD,EAAQ,EAAG0oH,EAAKzoH,OAAS,EAAG,GAE9DiZ,GAEAjpB,KAAK29H,QAAQhuG,GAGjB8yG,EAAIzY,OAAOE,GAAOiU,OAAOvrH,KAAK+c,GAE9B5f,EAAQ,OAIhB,CACI,GAAI4f,GAAO3vB,KAAKqiI,WAAW5J,EAAKxyH,EAAIwyH,EAAK1oH,MAAO0oH,EAAKhsH,EAAIgsH,EAAKzoH,OAAQ,GAAG,EAEzE2f,GAAKuzG,aAAazK,EAAK1oH,MAAO0oH,EAAKzoH,OAAQyoH,EAAK1oH,MAAQ,EAAG0oH,EAAKzoH,OAAS,EAAG,GAExEiZ,GAEAjpB,KAAK29H,QAAQhuG,GAGjB8yG,EAAIzY,OAAOE,GAAOiU,OAAOvrH,KAAK+c,KAM9C,MAAO8yG,GAAIzY,OAAOE,GAAOiU,QAa7BvD,IAAK,SAAUvgG,GAEX,MAAOA,IAAK,IAahBygG,IAAK,SAAUzgG,GAEX,MAAW,IAAJA,GAaXwgG,KAAM,SAAUxgG,GAEZ,MAAOA,IAAK,KAahB0gG,KAAM,SAAU1gG,GAEZ,MAAOA,IAAK,MAUpB9yB,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,YAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM0oH,uBAAuBjP,UAI7CjoH,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM0oH,uBAAuBjP,SAAW3qH,KAUrDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,eAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM0oH,uBAAuBC,aAI7Cn3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM0oH,uBAAuBC,YAAc75H,KAUxDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,mBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM0oH,wBAItBl3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM0oH,uBAAyB55H,KAU5ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,qBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM4oH,mBAItBp3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM4oH,kBAAoB95H,KAUvChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,gBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM6oH,cAItBr3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM6oH,aAAe/5H,KAUlChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,gBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM8oH,cAItBt3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM8oH,aAAeh6H,KAUlChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,oBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM+oH,kBAItBv3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAM+oH,iBAAmBj6H,KAWtChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,QAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAMkE,QAU1BpX,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,mBAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAMgpH,iBAItBx3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAMgpH,gBAAkBl6H,KAYrChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,aAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAMipH,WAItBz3H,IAAK,SAAU1C,GAEXvJ,KAAKya,MAAMipH,UAAYn6H,KAW/BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGroH,UAAW,SAE/C2F,IAAK,WAED,MAAOhM,MAAKya,MAAM0jH,OAAOt2H,UA4BjCxH,EAAOutB,QAAQ8gG,GAAGiV,YAAc,SAAU53D,GAEjCvlE,MAAMa,QAAQ0kE,KAEfA,GAAQA,IAGZ/rE,KAAK4jI,QAAU73D,EACf/rE,KAAKsgB,OACLtgB,KAAKkX,MAAMlX,KAAK4jI,UAIpBvjI,EAAOutB,QAAQ8gG,GAAGiV,YAAYt9H,WAK1Bia,KAAM,WAMFtgB,KAAK6jI,iBAML7jI,KAAK8jI,mBAML9jI,KAAK+jI,gBASTC,YAAa,SAAUC,EAAK78B,GAExB,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQy1B,eAAiBkH,EAG7BjkI,MAAKmkI,YAAY/8B,GAAY3/F,QAAQy8H,IASzCE,QAAS,SAAUH,EAAK78B,GAEpB,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQo6B,cAAgBuC,EAG5BjkI,MAAKmkI,YAAY/8B,GAAY3/F,QAAQy8H,IASzCG,UAAW,SAAU96H,EAAO69F,GAExB,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQg9B,OAAS/6H,EAGrBvJ,MAAKmkI,YAAY/8B,GAAY3/F,QAAQy8H,IASzC1D,YAAa,SAAUpD,EAAUh2B,GAE7B,GAAI88B,GAAS,SAAS58B,GAClBA,EAAQ81B,SAAWA,EAGvBp9H,MAAKmkI,YAAY/8B,GAAY3/F,QAAQy8H,IAUzCC,YAAa,SAAUr4H,GAEnB,GAAIu7F,KAEJ,IAAIv7F,EACJ,CACUA,YAAgBtF,SAElBsF,GAAQA,GAGZ,IAAI03G,GAAOxjH,IAQX,OAPA8L,GAAKrE,QAAQ,SAASsE,GACdy3G,EAAKqgB,cAAc93H,IAEnBs7F,EAASz0F,KAAK4wG,EAAKqgB,cAAc93H,MAIlC/L,KAAK2X,QAAQ0vF,GAKpB,MAAOrnG,MAAK+jI,aAWpBQ,gBAAiB,SAAUx4H,GAEvB,MAAO/L,MAAK6jI,cAAc93H,IAU9By4H,SAAU,SAAUC,GAEhB,MAAOzkI,MAAK8jI,gBAAgBW,IAShCvtH,MAAO,WAEH,GAAInL,GAAKxC,EAAOm7H,EAAMC,CACtBD,GAAO1kI,KAAK4jI,QACZe,IAEA,KAAK54H,IAAO24H,GAERn7H,EAAQm7H,EAAK34H,GAER4xC,MAAM5xC,EAAM,GAOb/L,KAAK6jI,cAAc93H,GAAO/L,KAAK2X,QAAQpO,IALvCvJ,KAAK8jI,gBAAgB/3H,GAAO/L,KAAK8jI,gBAAgB/3H,OACjD/L,KAAK8jI,gBAAgB/3H,GAAO/L,KAAK8jI,gBAAgB/3H,GAAKlF,OAAO0C,IAOjEo7H,EAAS/xH,KAAK5S,KAAK+jI,YAAc/jI,KAAK2X,QAAQ3X,KAAK8jI,mBAW3DnsH,QAAS,SAAUxD,GAEf,GAAI7C,GAAQkyG,CAQZ,OAPAlyG,MACAkyG,EAAOz8G,UAAU69H,OAEjBzwH,EAAM1M,QAAQ,SAASi+E,GACnB,MAAOl/E,OAAMH,UAAUuM,KAAK3L,MAAMqK,EAAS9K,MAAMa,QAAQq+E,GAAQ89B,EAAK99B,IAASA,MAG5Ep0E,IAmBfjR,EAAOutB,QAAQ8gG,GAAGmW,WAAa,SAAUpqH,EAAOojD,GAE5C79D,KAAKya,MAAQA,EAChBza,KAAK69D,YAAcA,GAIpBx9D,EAAOutB,QAAQ8gG,GAAGmW,WAAWx+H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGmW,WAMvEt9H,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGmW,WAAWx+H,UAAW,KAE1D2F,IAAK,WAED,MAAOhM,MAAKya,MAAMmgH,IAAI56H,KAAK69D,YAAY,KAI3C5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,GAAK79D,KAAKya,MAAMqgH,IAAIvxH,MAU7ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGmW,WAAWx+H,UAAW,KAE1D2F,IAAK,WAED,MAAOhM,MAAKya,MAAMmgH,IAAI56H,KAAK69D,YAAY,KAI3C5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,GAAK79D,KAAKya,MAAMqgH,IAAIvxH,MAU7ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGmW,WAAWx+H,UAAW,MAE1D2F,IAAK,WAED,MAAOhM,MAAK69D,YAAY,IAI5B5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,GAAKt0D,KAU9BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGmW,WAAWx+H,UAAW,MAE1D2F,IAAK,WAED,MAAOhM,MAAK69D,YAAY,IAI5B5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,GAAKt0D,KAoB9BlJ,EAAOutB,QAAQ8gG,GAAGqL,kBAAoB,SAAUt/G,EAAOojD,GAEnD79D,KAAKya,MAAQA,EAChBza,KAAK69D,YAAcA,GAIpBx9D,EAAOutB,QAAQ8gG,GAAGqL,kBAAkB1zH,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGqL,kBAM9ExyH,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGqL,kBAAkB1zH,UAAW,KAEjE2F,IAAK,WAED,MAAOhM,MAAKya,MAAMogH,KAAK76H,KAAK69D,YAAY,KAI5C5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,GAAK79D,KAAKya,MAAMsgH,KAAKxxH,MAU9ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGqL,kBAAkB1zH,UAAW,KAEjE2F,IAAK,WAED,MAAOhM,MAAKya,MAAMogH,KAAK76H,KAAK69D,YAAY,KAI5C5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,GAAK79D,KAAKya,MAAMsgH,KAAKxxH,MAU9ChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGqL,kBAAkB1zH,UAAW,MAEjE2F,IAAK,WAED,MAAOhM,MAAK69D,YAAY,IAI5B5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,IAAMt0D,KAU/BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGqL,kBAAkB1zH,UAAW,MAEjE2F,IAAK,WAED,MAAOhM,MAAK69D,YAAY,IAI5B5xD,IAAK,SAAU1C,GAEXvJ,KAAK69D,YAAY,IAAMt0D,KA4B/BlJ,EAAOutB,QAAQ8gG,GAAGzK,KAAO,SAAUzpG,EAAMuc,EAAQ9wB,EAAGwG,EAAG6mH,GAEnDv8F,EAASA,GAAU,KACnB9wB,EAAIA,GAAK,EACTwG,EAAIA,GAAK,EACI/C,SAAT4pH,IAAsBA,EAAO,GAKjCtzH,KAAKwa,KAAOA,EAKZxa,KAAKya,MAAQD,EAAK6F,QAAQ9H,GAK1BvY,KAAK+2B,OAASA,EAKd/2B,KAAKkI,KAAO7H,EAAOutB,QAAQ46B,KAK3BxoD,KAAKoO,OAAS,GAAI/N,GAAO2M,MAMzBhN,KAAKqiC,KAAO,GAAI9pB,IAAG0rG,MAAO1qG,UAAYvZ,KAAKya,MAAMsgH,KAAK90H,GAAIjG,KAAKya,MAAMsgH,KAAKtuH,IAAM6mH,KAAMA,IAEtFtzH,KAAKqiC,KAAK7Y,OAASxpB,KAKnBA,KAAKkwH,SAAW,GAAI7vH,GAAOutB,QAAQ8gG,GAAGqL,kBAAkB/5H,KAAKya,MAAOza,KAAKqiC,KAAK6tF,UAK9ElwH,KAAK6d,MAAQ,GAAIxd,GAAOutB,QAAQ8gG,GAAGqL,kBAAkB/5H,KAAKya,MAAOza,KAAKqiC,KAAKxkB,OAK3E7d,KAAK+uH,QAAU,GAAI1uH,GAAO2M,MAgB1BhN,KAAK06H,eAAiB,GAAIr6H,GAAO+a,OAejCpb,KAAK26H,aAAe,GAAIt6H,GAAO+a,OAK/Bpb,KAAK8kI,gBAKL9kI,KAAK+kI,gBAAiB,EAKtB/kI,KAAKglI,UAAY,KAKjBhlI,KAAKynB,OAAQ,EAMbznB,KAAKilI,qBAAsB,EAM3BjlI,KAAK08H,kBAML18H,KAAK28H,wBAML38H,KAAK88H,mBAML98H,KAAKg9H,yBAMLh9H,KAAK2vD,QAAS,EAGV54B,IAEA/2B,KAAKklI,uBAAuBnuG,GAExBA,EAAOvM,QAEPxqB,KAAKwa,KAAK6F,QAAQ9H,GAAGolH,QAAQ39H,QAMzCK,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,WAanB8+H,mBAAoB,SAAU7vG,EAAQjC,EAAUtQ,GAE5C,GAAIpO,GAAK,EAEL2gB,GAAW,GAEX3gB,EAAK2gB,EAAO3gB,GAEP2gB,EAAa,OAElB3gB,EAAK2gB,EAAO3F,KAAKhb,IAGjBA,EAAK,KAEY,OAAb0e,SAEQrzB,MAAK08H,eAAe/nH,SACpB3U,MAAK28H,qBAAqBhoH,KAIlC3U,KAAK08H,eAAe/nH,GAAM0e,EAC1BrzB,KAAK28H,qBAAqBhoH,GAAMoO,KAkB5CqiH,oBAAqB,SAAUlvG,EAAO7C,EAAUtQ,GAE3B,OAAbsQ,SAEQrzB,MAAK88H,gBAAgB5mG,EAAM2zB,YAC3B7pD,MAAKg9H,sBAAsB9mG,EAAM2zB,QAIzC7pD,KAAK88H,gBAAgB5mG,EAAM2zB,MAAQx2B,EACnCrzB,KAAKg9H,sBAAsB9mG,EAAM2zB,MAAQ9mC,IAWjDsiH,iBAAkB,WAEd,GAAIx7E,GAAO,CAEP7pD,MAAKilI,sBAELp7E,EAAO7pD,KAAKwa,KAAK6F,QAAQ9H,GAAG+iH,qBAAqBzxE,KAGrD,KAAK,GAAI/hD,GAAI,EAAGA,EAAI9H,KAAK8kI,aAAaj9H,OAAQC,IAE1C+hD,GAAc7pD,KAAK8kI,aAAah9H,GAAG+hD,IAGvC,OAAOA,IAUXy7E,oBAAqB,SAAU/iG,GAE3B,GAAIsnB,GAAO7pD,KAAKqlI,kBAEhB,IAAc37H,SAAV64B,EAEA,IAAK,GAAIz6B,GAAI9H,KAAKqiC,KAAKg7F,OAAOx1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAKqiC,KAAKg7F,OAAOv1H,GAAG45H,cAAgB73E,MAKxCtnB,GAAMm/F,cAAgB73E,GAa9BqzE,kBAAmB,SAAUhnG,EAAOqM,GAEhC,GAAIsnB,GAAO7pD,KAAKqlI,kBAEhB,IAAc37H,SAAV64B,EAEA,IAAK,GAAIz6B,GAAI9H,KAAKqiC,KAAKg7F,OAAOx1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAKqiC,KAAKg7F,OAAOv1H,GAAGi1H,eAAiB7mG,EAAM2zB,KAC3C7pD,KAAKqiC,KAAKg7F,OAAOv1H,GAAG45H,cAAgB73E,MAKxCtnB,GAAMw6F,eAAiB7mG,EAAM2zB,KAC7BtnB,EAAMm/F,cAAgB73E,GAa9B07E,eAAgB,SAAUC,EAAYC,EAAWljG,GAK7C,GAHmB74B,SAAf87H,IAA4BA,GAAa,GAC3B97H,SAAd+7H,IAA2BA,GAAY,GAE7B/7H,SAAV64B,EAEA,IAAK,GAAIz6B,GAAI9H,KAAKqiC,KAAKg7F,OAAOx1H,OAAS,EAAGC,GAAK,EAAGA,IAE1C09H,IAEAxlI,KAAKqiC,KAAKg7F,OAAOv1H,GAAGi1H,eAAiB,MAGrC0I,IAEAzlI,KAAKqiC,KAAKg7F,OAAOv1H,GAAG45H,cAAgB,UAMxC8D,KAEAjjG,EAAMw6F,eAAiB,MAGvB0I,IAEAljG,EAAMm/F,cAAgB,KAI1B8D,KAEAxlI,KAAK8kI,aAAaj9H,OAAS,IAanC69H,qBAAsB,SAAUxvG,EAAOyvG,EAAepjG,GAE5B74B,SAAlBi8H,IAA+BA,GAAgB,EAEnD,IAAIj2G,EAEJ,IAAIlpB,MAAMa,QAAQ6uB,GAEd,IAAK,GAAIpuB,GAAI,EAAGA,EAAIouB,EAAMruB,OAAQC,IAE9B4nB,EAAQ1vB,KAAK8kI,aAAaz0G,QAAQ6F,EAAMpuB,IAEpC4nB,EAAQ,KAER1vB,KAAK8kI,aAAa3hH,OAAOuM,EAAO,GAE5Bi2G,UAEQ3lI,MAAK88H,gBAAgB5mG,EAAM2zB,YAC3B7pD,MAAKg9H,sBAAsB9mG,EAAM2zB,YAOrDn6B,GAAQ1vB,KAAK8kI,aAAaz0G,QAAQ6F,GAE9BxG,EAAQ,KAER1vB,KAAK8kI,aAAa3hH,OAAOuM,EAAO,GAE5Bi2G,UAEQ3lI,MAAK88H,gBAAgB5mG,EAAM2zB,YAC3B7pD,MAAKg9H,sBAAsB9mG,EAAM2zB,OAKrD,IAAIA,GAAO7pD,KAAKqlI,kBAEhB,IAAc37H,SAAV64B,EAEA,IAAK,GAAIz6B,GAAI9H,KAAKqiC,KAAKg7F,OAAOx1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAKqiC,KAAKg7F,OAAOv1H,GAAG45H,cAAgB73E,MAKxCtnB,GAAMm/F,cAAgB73E,GAc9Bm5E,SAAU,SAAU9sG,EAAO7C,EAAUtQ,EAAiBwf,GAElD,GAAI/7B,MAAMa,QAAQ6uB,GAEd,IAAK,GAAIpuB,GAAI,EAAGA,EAAIouB,EAAMruB,OAAQC,IAEc,KAAxC9H,KAAK8kI,aAAaz0G,QAAQ6F,EAAMpuB,MAEhC9H,KAAK8kI,aAAalyH,KAAKsjB,EAAMpuB,IAEzBurB,GAEArzB,KAAKolI,oBAAoBlvG,EAAMpuB,GAAIurB,EAAUtQ,QAOhB,KAArC/iB,KAAK8kI,aAAaz0G,QAAQ6F,KAE1Bl2B,KAAK8kI,aAAalyH,KAAKsjB,GAEnB7C,GAEArzB,KAAKolI,oBAAoBlvG,EAAO7C,EAAUtQ,GAKtD,IAAI8mC,GAAO7pD,KAAKqlI,kBAEhB,IAAc37H,SAAV64B,EAEA,IAAK,GAAIz6B,GAAI9H,KAAKqiC,KAAKg7F,OAAOx1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAKqiC,KAAKg7F,OAAOv1H,GAAG45H,cAAgB73E,MAKxCtnB,GAAMm/F,cAAgB73E,GAU9B+7E,mBAAoB,WAEhB5lI,KAAKqiC,KAAKujG,qBACV5lI,KAAK6lI,gBAYTC,mBAAoB,SAAUx0H,EAAQy0H,GAElC,MAAO/lI,MAAKqiC,KAAKyjG,mBAAmBx0H,EAAQy0H,IAUhDzC,aAAc,SAAUnhE,GAEpBniE,KAAKqiC,KAAKihG,aAAanhE,IAc3B6jE,aAAc,SAAUC,EAASnjB,EAAQC,GAErC/iH,KAAKqiC,KAAK2jG,aAAaC,GAAUjmI,KAAKya,MAAMsgH,KAAKjY,GAAS9iH,KAAKya,MAAMsgH,KAAKhY,MAe9EmjB,kBAAmB,SAAUD,EAASE,EAAQC,GAE1CpmI,KAAKqiC,KAAK6jG,kBAAkBD,GAAUjmI,KAAKya,MAAMsgH,KAAKoL,GAASnmI,KAAKya,MAAMsgH,KAAKqL,MAenFC,WAAY,SAAUxoH,EAAOilG,EAAQC,GAEjC/iH,KAAKqiC,KAAKgkG,WAAWxoH,GAAQ7d,KAAKya,MAAMsgH,KAAKjY,GAAS9iH,KAAKya,MAAMsgH,KAAKhY,MAS1EujB,aAAc,WAEVtmI,KAAKqiC,KAAKikG,gBASdC,gBAAiB,WAEbvmI,KAAKqiC,KAAKytF,gBAAkB,GAShC0W,gBAAiB,WAEbxmI,KAAKqiC,KAAK6tF,SAAS,GAAK,EACxBlwH,KAAKqiC,KAAK6tF,SAAS,GAAK,GAS5BuW,eAAgB,WAEZzmI,KAAKqiC,KAAKy/F,QAAU,EACpB9hI,KAAKqiC,KAAKqkG,eAAiB,GAW/BC,aAAc,SAAU55H,EAAKk0H,GAEzB,MAAOjhI,MAAKqiC,KAAKskG,aAAa55H,EAAKk0H,IAWvC2F,aAAc,SAAU75H,EAAKg1B,GAEzB,MAAO/hC,MAAKqiC,KAAKukG,aAAa75H,EAAKg1B,IAUvCwlF,WAAY,SAAUrqF,GAElBl9B,KAAKqiC,KAAKytF,gBAAkB9vH,KAAKya,MAAMqgH,KAAK59F,IAUhDoqF,YAAa,SAAUpqF,GAEnBl9B,KAAKqiC,KAAKytF,gBAAkB9vH,KAAKya,MAAMqgH,IAAI59F,IAW/C2pG,YAAa,SAAU3pG,GAEnB,GAAIpnB,GAAY9V,KAAKya,MAAMsgH,MAAM79F,GAC7BhvB,EAAQlO,KAAKqiC,KAAKn0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAKqiC,KAAK6tF,SAAS,GAAKp6G,EAAY/P,KAAKoH,IAAIe,GAC7ClO,KAAKqiC,KAAK6tF,SAAS,GAAKp6G,EAAY/P,KAAKqH,IAAIc,IAWjD44H,aAAc,SAAU5pG,GAEpB,GAAIpnB,GAAY9V,KAAKya,MAAMsgH,MAAM79F,GAC7BhvB,EAAQlO,KAAKqiC,KAAKn0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAKqiC,KAAK6tF,SAAS,KAAOp6G,EAAY/P,KAAKoH,IAAIe,IAC/ClO,KAAKqiC,KAAK6tF,SAAS,KAAOp6G,EAAY/P,KAAKqH,IAAIc,KAWnD64H,OAAQ,SAAU7pG,GAEd,GAAIpnB,GAAY9V,KAAKya,MAAMsgH,MAAM79F,GAC7BhvB,EAAQlO,KAAKqiC,KAAKn0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/C84H,WAAY,SAAU9pG,GAElB,GAAIpnB,GAAY9V,KAAKya,MAAMsgH,MAAM79F,GAC7BhvB,EAAQlO,KAAKqiC,KAAKn0B,KAEtBlO,MAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/C+4H,YAAa,SAAU/pG,GAEnB,GAAIpnB,GAAY9V,KAAKya,MAAMsgH,MAAM79F,GAC7BhvB,EAAQlO,KAAKqiC,KAAKn0B,KAEtBlO,MAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/CtF,QAAS,SAAUs0B,GAEf,GAAIpnB,GAAY9V,KAAKya,MAAMsgH,MAAM79F,GAC7BhvB,EAAQlO,KAAKqiC,KAAKn0B,MAAQnI,KAAK+G,GAAK,CAExC9M,MAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKoH,IAAIe,GAC3ClO,KAAKqiC,KAAKxkB,MAAM,IAAM/H,EAAY/P,KAAKqH,IAAIc,IAW/Cg5H,SAAU,SAAUhqG,GAEhBl9B,KAAKqiC,KAAK6tF,SAAS,GAAKlwH,KAAKya,MAAMsgH,MAAM79F,IAW7CiqG,UAAW,SAAUjqG,GAEjBl9B,KAAKqiC,KAAK6tF,SAAS,GAAKlwH,KAAKya,MAAMsgH,KAAK79F,IAW5CnL,OAAQ,SAAUmL,GAEdl9B,KAAKqiC,KAAK6tF,SAAS,GAAKlwH,KAAKya,MAAMsgH,MAAM79F,IAW7ClL,SAAU,SAAUkL,GAEhBl9B,KAAKqiC,KAAK6tF,SAAS,GAAKlwH,KAAKya,MAAMsgH,KAAK79F,IAU5ClgB,UAAW,WAEPhd,KAAKynB,OAAQ,EAETznB,KAAK+kI,iBAEL/kI,KAAKyoD,kBACLzoD,KAAK+kI,gBAAiB,IAW9B36G,WAAY,WAERpqB,KAAK+2B,OAAO9wB,EAAIjG,KAAKya,MAAMogH,KAAK76H,KAAKqiC,KAAK9oB,SAAS,IAAMvZ,KAAKoO,OAAOnI,EACrEjG,KAAK+2B,OAAOtqB,EAAIzM,KAAKya,MAAMogH,KAAK76H,KAAKqiC,KAAK9oB,SAAS,IAAMvZ,KAAKoO,OAAO3B,EAEhEzM,KAAKonI,gBAENpnI,KAAK+2B,OAAOP,SAAWx2B,KAAKqiC,KAAKn0B,OAGjClO,KAAKglI,WAELhlI,KAAKglI,UAAUqC,wBAGnBrnI,KAAKynB,OAAQ,GAajB/H,MAAO,SAAUzZ,EAAGwG,EAAG66H,EAAcC,GAEZ79H,SAAjB49H,IAA8BA,GAAe,GAC/B59H,SAAd69H,IAA2BA,GAAY,GAE3CvnI,KAAKsmI,eACLtmI,KAAKwmI,kBACLxmI,KAAKumI,kBAEDe,GAEAtnI,KAAKymI,iBAGLc,IAEAvnI,KAAKszH,KAAO,GAGhBtzH,KAAKiG,EAAIA,EACTjG,KAAKyM,EAAIA,GASbwc,WAAY,WAER,GAAIjpB,KAAKwa,KAAK6F,QAAQ9H,GAAGkjH,UAErB,IAAK,GAAI3zH,GAAI,EAAGA,EAAI9H,KAAKwa,KAAK6F,QAAQ9H,GAAGkjH,UAAU5zH,OAAQC,IAEnD9H,KAAKwa,KAAK6F,QAAQ9H,GAAGkjH,UAAU3zH,KAAO9H,MAEtCA,KAAKwa,KAAK6F,QAAQ9H,GAAGkjH,UAAUt4G,OAAOrb,EAAG,EAKjD9H,MAAKqiC,KAAK5nB,QAAUza,KAAKwa,KAAK6F,QAAQ9H,GAAGkC,OAEzCza,KAAKwa,KAAK6F,QAAQ9H,GAAGolH,QAAQ39H,OAUrCyoD,gBAAiB,WAETzoD,KAAKqiC,KAAK5nB,QAAUza,KAAKwa,KAAK6F,QAAQ9H,GAAGkC,OAEzCza,KAAKwa,KAAK6F,QAAQ9H,GAAGyjH,mBAAmBh8H,OAUhD8jB,QAAS,WAEL9jB,KAAKyoD,kBAELzoD,KAAKwnI,cAELxnI,KAAK08H,kBACL18H,KAAK28H,wBACL38H,KAAK88H,mBACL98H,KAAKg9H,yBAEDh9H,KAAKglI,WAELhlI,KAAKglI,UAAUlhH,SAAQ,GAAM,GAGjC9jB,KAAKglI,UAAY,KAEbhlI,KAAK+2B,SAEL/2B,KAAK+2B,OAAOpH,KAAO,KACnB3vB,KAAK+2B,OAAS,OAUtBywG,YAAa,WAIT,IAFA,GAAI1/H,GAAI9H,KAAKqiC,KAAKg7F,OAAOx1H,OAElBC,KAEH9H,KAAKqiC,KAAKolG,YAAYznI,KAAKqiC,KAAKg7F,OAAOv1H,GAG3C9H,MAAK6lI,gBAgBTpI,SAAU,SAAUl7F,EAAOkT,EAASC,EAASlf,GASzC,MAPgB9sB,UAAZ+rC,IAAyBA,EAAU,GACvB/rC,SAAZgsC,IAAyBA,EAAU,GACtBhsC,SAAb8sB,IAA0BA,EAAW,GAEzCx2B,KAAKqiC,KAAKo7F,SAASl7F,GAAQviC,KAAKya,MAAMsgH,KAAKtlF,GAAUz1C,KAAKya,MAAMsgH,KAAKrlF,IAAWlf,GAChFx2B,KAAK6lI,eAEEtjG,GAcXmlG,UAAW,SAAUr6H,EAAQooC,EAASC,EAASlf,GAE3C,GAAI+L,GAAQ,GAAIhqB,IAAG/L,QAASa,OAAQrN,KAAKya,MAAMqgH,IAAIztH,IAEnD,OAAOrN,MAAKy9H,SAASl7F,EAAOkT,EAASC,EAASlf,IAelD0sG,aAAc,SAAUnzH,EAAOC,EAAQylC,EAASC,EAASlf,GAErD,GAAI+L,GAAQ,GAAIhqB,IAAGovH,KAAM53H,MAAO/P,KAAKya,MAAMqgH,IAAI/qH,GAAQC,OAAQhQ,KAAKya,MAAMqgH,IAAI9qH,IAE9E,OAAOhQ,MAAKy9H,SAASl7F,EAAOkT,EAASC,EAASlf,IAalDoxG,SAAU,SAAUnyF,EAASC,EAASlf,GAElC,GAAI+L,GAAQ,GAAIhqB,IAAGmlH,KAEnB,OAAO19H,MAAKy9H,SAASl7F,EAAOkT,EAASC,EAASlf,IAalDqxG,YAAa,SAAUpyF,EAASC,EAASlf,GAErC,GAAI+L,GAAQ,GAAIhqB,IAAGuvH,QAEnB,OAAO9nI,MAAKy9H,SAASl7F,EAAOkT,EAASC,EAASlf,IAgBlDuxG,QAAS,SAAUlgI,EAAQ4tC,EAASC,EAASlf,GAEzC,GAAI+L,GAAQ,GAAIhqB,IAAGlI,MAAOxI,OAAQ7H,KAAKya,MAAMqgH,IAAIjzH,IAEjD,OAAO7H,MAAKy9H,SAASl7F,EAAOkT,EAASC,EAASlf,IAgBlDwxG,WAAY,SAAUngI,EAAQwF,EAAQooC,EAASC,EAASlf,GAEpD,GAAI+L,GAAQ,GAAIhqB,IAAG0vH,SAAUpgI,OAAQ7H,KAAKya,MAAMqgH,IAAIjzH,GAASwF,OAAQrN,KAAKya,MAAMqgH,IAAIztH,IAEpF,OAAOrN,MAAKy9H,SAASl7F,EAAOkT,EAASC,EAASlf,IAkBlD8rG,WAAY,SAAUn3H,EAAS4L,GAE3B5L,EAAUA,MAEL3E,MAAMa,QAAQ0P,KAEfA,EAASvQ,MAAMH,UAAUE,MAAMO,KAAKC,UAAW,GAGnD,IAAIy9D,KAGJ,IAAsB,IAAlBztD,EAAOlP,QAAgBrB,MAAMa,QAAQ0P,EAAO,IAE5CytD,EAAOztD,EAAO,GAAGxQ,MAAM,OAEtB,IAAIC,MAAMa,QAAQ0P,EAAO,IAE1BytD,EAAOztD,EAAOxQ,YAEb,IAAyB,gBAAdwQ,GAAO,GAGnB,IAAK,GAAIjP,GAAI,EAAGF,EAAMmP,EAAOlP,OAAYD,EAAJE,EAASA,GAAK,EAE/C08D,EAAK5xD,MAAMmE,EAAOjP,GAAIiP,EAAOjP,EAAI,IAKzC,IAAIuzE,GAAM7W,EAAK38D,OAAS,CAEpB28D,GAAK6W,GAAK,KAAO7W,EAAK,GAAG,IAAMA,EAAK6W,GAAK,KAAO7W,EAAK,GAAG,IAExDA,EAAKr7D,KAIT,KAAK,GAAI8G,GAAI,EAAGA,EAAIu0D,EAAK38D,OAAQoI,IAE7Bu0D,EAAKv0D,GAAG,GAAKjQ,KAAKya,MAAMsgH,KAAKv2D,EAAKv0D,GAAG,IACrCu0D,EAAKv0D,GAAG,GAAKjQ,KAAKya,MAAMsgH,KAAKv2D,EAAKv0D,GAAG,GAGzC,IAAIqB,GAAStR,KAAKqiC,KAAK6lG,YAAY1jE,EAAMr5D,EAIzC,OAFAnL,MAAK6lI,eAEEv0H,GAWXm2H,YAAa,SAAUllG,GAEzB,GAAIjxB,GAAStR,KAAKqiC,KAAKolG,YAAYllG,EAI7B,OAFNviC,MAAK6lI,eAEQv0H,GAaX0mH,UAAW,SAAU3qH,EAAQooC,EAASC,EAASlf,GAI3C,MAFAx2B,MAAKwnI,cAEExnI,KAAK0nI,UAAUr6H,EAAQooC,EAASC,EAASlf,IAiBpD2xG,aAAc,SAAUp4H,EAAOC,EAAQylC,EAASC,EAASlf,GAOrD,MALc9sB,UAAVqG,IAAuBA,EAAQ,IACpBrG,SAAXsG,IAAwBA,EAAS,IAErChQ,KAAKwnI,cAEExnI,KAAKkjI,aAAanzH,EAAOC,EAAQylC,EAASC,EAASlf,IAc9D0uG,uBAAwB,SAAUnuG,GAM9B,MAJertB,UAAXqtB,IAAwBA,EAAS/2B,KAAK+2B,QAE1C/2B,KAAKwnI,cAEExnI,KAAKkjI,aAAansG,EAAOhnB,MAAOgnB,EAAO/mB,OAAQ,EAAG,EAAG+mB,EAAOP,WAYvEgqG,YAAa,SAAUpD,EAAU76F,GAE7B,GAAc74B,SAAV64B,EAEA,IAAK,GAAIz6B,GAAI9H,KAAKqiC,KAAKg7F,OAAOx1H,OAAS,EAAGC,GAAK,EAAGA,IAE9C9H,KAAKqiC,KAAKg7F,OAAOv1H,GAAGs1H,SAAWA,MAKnC76F,GAAM66F,SAAWA,GAUzByI,aAAc,WAEN7lI,KAAKglI,WAELhlI,KAAKglI,UAAU5rE,QAgBvBgvE,iBAAkB,SAAUr8H,EAAKupB,GAM7B,IAAK,GAJD+M,GAAOriC,KAAKwa,KAAKsF,MAAMqnF,eAAep7F,EAAKupB,GAC3C+yG,KAGKvgI,EAAI,EAAGA,EAAIu6B,EAAKx6B,OAAQC,IACjC,CACI,GAAIwgI,GAAcjmG,EAAKv6B,GACnBygI,EAAkBvoI,KAAKwoI,WAAWF,EAGtCD,GAAgBC,EAAYz0G,OAAOqC,OAASmyG,EAAgBC,EAAYz0G,OAAOqC,WAC/EmyG,EAAgBC,EAAYz0G,OAAOqC,OAASmyG,EAAgBC,EAAYz0G,OAAOqC,OAAOrvB,OAAO0hI,GAGzFD,EAAYlhC,aAEZihC,EAAgBC,EAAYlhC,YAAcmhC,GAOlD,MAHAvoI,MAAKqiC,KAAKomG,iBAAkB,EAC5BzoI,KAAK6lI,eAEEwC,GAWXG,WAAY,SAAUF,GAElB,GAAII,KAEJ,IAAIJ,EAAYnrG,OAChB,CACI,GAAIoF,GAAQ,GAAIhqB,IAAG/L,QAASa,OAAQrN,KAAKya,MAAMqgH,IAAIwN,EAAYnrG,OAAO9vB,SACtEk1B,GAAMw6F,eAAiBuL,EAAYz0G,OAAO80G,aAC1CpmG,EAAMm/F,cAAgB4G,EAAYz0G,OAAO+0G,SACzCrmG,EAAM+hG,OAASgE,EAAYO,QAE3B,IAAIz6H,GAASmK,GAAGuwH,KAAKpoH,QACrBtS,GAAO,GAAKpO,KAAKya,MAAMsgH,KAAKuN,EAAYnrG,OAAO5jB,SAAS,GAAKvZ,KAAK+2B,OAAOhnB,MAAM,GAC/E3B,EAAO,GAAKpO,KAAKya,MAAMsgH,KAAKuN,EAAYnrG,OAAO5jB,SAAS,GAAKvZ,KAAK+2B,OAAO/mB,OAAO,GAEhFhQ,KAAKqiC,KAAKo7F,SAASl7F,EAAOn0B,GAC1Bs6H,EAAgB91H,KAAK2vB,OAOrB,KAAK,GAHDwmG,GAAWT,EAAYS,SACvBC,EAAKzwH,GAAGuwH,KAAKpoH,SAER5Y,EAAI,EAAGA,EAAIihI,EAASlhI,OAAQC,IACrC,CAII,IAAK,GAHDu1H,GAAS0L,EAASjhI,GAClB4sE,KAEKj+D,EAAI,EAAGA,EAAI4mH,EAAOx1H,OAAQ4O,GAAK,EAEpCi+D,EAAS9hE,MAAO5S,KAAKya,MAAMsgH,KAAKsC,EAAO5mH,IAAKzW,KAAKya,MAAMsgH,KAAKsC,EAAO5mH,EAAI,KAM3E,KAAK,GAHD8rB,GAAQ,GAAIhqB,IAAG0wH,QAASv0D,SAAUA,IAG7B78D,EAAI,EAAGA,IAAM0qB,EAAMmyC,SAAS7sE,OAAQgQ,IAC7C,CACI,GAAIwiB,GAAIkI,EAAMmyC,SAAS78D,EACvBU,IAAGuwH,KAAKI,IAAI7uG,EAAGA,EAAGkI,EAAM4mG,cAG5B5wH,GAAGuwH,KAAKj0H,MAAMm0H,EAAIzmG,EAAM4mG,aAAc,GAEtCH,EAAG,IAAMhpI,KAAKya,MAAMsgH,KAAK/6H,KAAK+2B,OAAOhnB,MAAQ,GAC7Ci5H,EAAG,IAAMhpI,KAAKya,MAAMsgH,KAAK/6H,KAAK+2B,OAAO/mB,OAAS,GAE9CuyB,EAAM6mG,kBACN7mG,EAAM8mG,qBACN9mG,EAAM+mG,uBAEN/mG,EAAMw6F,eAAiBuL,EAAYz0G,OAAO80G,aAC1CpmG,EAAMm/F,cAAgB4G,EAAYz0G,OAAO+0G,SACzCrmG,EAAM+hG,OAASgE,EAAYO,SAE3B7oI,KAAKqiC,KAAKo7F,SAASl7F,EAAOymG,GAE1BN,EAAgB91H,KAAK2vB,GAI7B,MAAOmmG,IAmBXa,YAAa,SAAUx9H,EAAKupB,GAExB,GAAY,OAARvpB,EAEA,GAAIs2B,GAAO/M,MAIX,IAAI+M,GAAOriC,KAAKwa,KAAKsF,MAAMqnF,eAAep7F,EAAKupB,EAMnD,KAAK,GAFD0zG,GAAKzwH,GAAGuwH,KAAKpoH,SAER5Y,EAAI,EAAGA,EAAIu6B,EAAKx6B,OAAQC,IACjC,CAGI,IAAK,GAFD4sE,MAEKj+D,EAAI,EAAGA,EAAI4rB,EAAKv6B,GAAGy6B,MAAM16B,OAAQ4O,GAAK,EAE3Ci+D,EAAS9hE,MAAO5S,KAAKya,MAAMsgH,KAAK14F,EAAKv6B,GAAGy6B,MAAM9rB,IAAKzW,KAAKya,MAAMsgH,KAAK14F,EAAKv6B,GAAGy6B,MAAM9rB,EAAI,KAMzF,KAAK,GAHDxH,GAAI,GAAIsJ,IAAG0wH,QAASv0D,SAAUA,IAGzB78D,EAAI,EAAGA,IAAM5I,EAAEylE,SAAS7sE,OAAQgQ,IACzC,CACI,GAAIwiB,GAAIprB,EAAEylE,SAAS78D,EACnBU,IAAGuwH,KAAKI,IAAI7uG,EAAGA,EAAGprB,EAAEk6H,cAGxB5wH,GAAGuwH,KAAKj0H,MAAMm0H,EAAI/5H,EAAEk6H,aAAc,GAElCH,EAAG,IAAMhpI,KAAKya,MAAMsgH,KAAK/6H,KAAK+2B,OAAOhnB,MAAQ,GAC7Ci5H,EAAG,IAAMhpI,KAAKya,MAAMsgH,KAAK/6H,KAAK+2B,OAAO/mB,OAAS,GAE9Cf,EAAEm6H,kBACFn6H,EAAEo6H,qBACFp6H,EAAEq6H,uBAEFtpI,KAAKqiC,KAAKo7F,SAASxuH,EAAG+5H,GAM1B,MAHAhpI,MAAKqiC,KAAKomG,iBAAkB,EAC5BzoI,KAAK6lI,gBAEE,IAMfxlI,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGzK,KAQjE5jH,EAAOutB,QAAQ8gG,GAAGzK,KAAKulB,QAAU,EAQjCnpI,EAAOutB,QAAQ8gG,GAAGzK,KAAKqd,OAAS,EAQhCjhI,EAAOutB,QAAQ8gG,GAAGzK,KAAKwlB,UAAY,EAMnCliI,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,UAEpD2F,IAAK,WAED,MAAQhM,MAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKqd,QAItDr1H,IAAK,SAAU1C,GAEPA,GAASvJ,KAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKqd,QAEnDthI,KAAKqiC,KAAKn6B,KAAO7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKqd,OACxCthI,KAAKszH,KAAO,GAEN/pH,GAASvJ,KAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKqd,SAEzDthI,KAAKqiC,KAAKn6B,KAAO7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKulB,QACxCxpI,KAAKszH,KAAO,MAWxB/rH,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,WAEpD2F,IAAK,WAED,MAAQhM,MAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKulB,SAItDv9H,IAAK,SAAU1C,GAEPA,GAASvJ,KAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKulB,SAEnDxpI,KAAKqiC,KAAKn6B,KAAO7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKulB,QACxCxpI,KAAKszH,KAAO,GAEN/pH,GAASvJ,KAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKulB,UAEzDxpI,KAAKqiC,KAAKn6B,KAAO7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKqd,OACxCthI,KAAKszH,KAAO,MAWxB/rH,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,aAEpD2F,IAAK,WAED,MAAQhM,MAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKwlB,WAItDx9H,IAAK,SAAU1C,GAEPA,GAASvJ,KAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKwlB,WAEnDzpI,KAAKqiC,KAAKn6B,KAAO7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKwlB,UACxCzpI,KAAKszH,KAAO,GAEN/pH,GAASvJ,KAAKqiC,KAAKn6B,OAAS7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKwlB,YAEzDzpI,KAAKqiC,KAAKn6B,KAAO7H,EAAOutB,QAAQ8gG,GAAGzK,KAAKqd,OACxCthI,KAAKszH,KAAO,MAWxB/rH,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,cAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKqnG,YAIrBz9H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKqiC,KAAKqnG,aAEpB1pI,KAAKqiC,KAAKqnG,WAAangI,MAenChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,SAEpD2F,IAAK,WAED,MAAO3L,GAAO0F,KAAK6gD,UAAUvmD,EAAO0F,KAAK2P,SAAS1V,KAAKqiC,KAAKn0B,SAIhEjC,IAAK,SAAS1C,GAEVvJ,KAAKqiC,KAAKn0B,MAAQ7N,EAAO0F,KAAKgJ,SAAS1O,EAAO0F,KAAK6gD,UAAUr9C,OAWrEhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,kBAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKqkG,gBAIrBz6H,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAKqkG,eAAiBn9H,KAUnChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,gBAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKsnG,cAIrB19H,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAKsnG,aAAepgI,KAUjChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,mBAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKytF,iBAIrB7jH,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAKytF,gBAAkBvmH,KAWpChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,WAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKy/F,SAIrB71H,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAKy/F,QAAUv4H,KAU5BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,iBAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAK+kG,eAIrBn7H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKqiC,KAAK+kG,gBAEpBpnI,KAAKqiC,KAAK+kG,cAAgB79H,MAWtChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,WAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKunG,SAIrB39H,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAKunG,QAAUrgI,KAU5BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,QAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKixF,MAIrBrnH,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKqiC,KAAKixF,OAEpBtzH,KAAKqiC,KAAKixF,KAAO/pH,EACjBvJ,KAAKqiC,KAAKwnG,2BAWtBtiI,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,eAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKn6B,MAIrB+D,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKqiC,KAAKn6B,OAEpBlI,KAAKqiC,KAAKn6B,KAAOqB,MAc7BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,YAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKn0B,OAIrBjC,IAAK,SAAS1C,GAEVvJ,KAAKqiC,KAAKn0B,MAAQ3E,KAU1BhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,mBAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAKynG,iBAIrB79H,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAKynG,gBAAkBvgI,KAUpChC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,KAEpD2F,IAAK,WAED,MAAOhM,MAAKya,MAAMogH,KAAK76H,KAAKqiC,KAAK9oB,SAAS,KAI9CtN,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAK9oB,SAAS,GAAKvZ,KAAKya,MAAMsgH,KAAKxxH,MAUhDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,KAEpD2F,IAAK,WAED,MAAOhM,MAAKya,MAAMogH,KAAK76H,KAAKqiC,KAAK9oB,SAAS,KAI9CtN,IAAK,SAAU1C,GAEXvJ,KAAKqiC,KAAK9oB,SAAS,GAAKvZ,KAAKya,MAAMsgH,KAAKxxH,MAWhDhC,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,MAEpD2F,IAAK,WAED,MAAOhM,MAAKqiC,KAAK1tB,MAUzBpN,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,SAEpD2F,IAAK,WAED,MAA2B,QAAnBhM,KAAKglI,WAIjB/4H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKglI,UAGfhlI,KAAKglI,UAAY,GAAI3kI,GAAOutB,QAAQ8gG,GAAGqb,UAAU/pI,KAAKwa,KAAMxa,KAAKqiC,OAE3D94B,GAASvJ,KAAKglI,YAEpBhlI,KAAKglI,UAAUlhH,UACf9jB,KAAKglI,UAAY,SAgB7Bz9H,OAAO2E,eAAe7L,EAAOutB,QAAQ8gG,GAAGzK,KAAK59G,UAAW,sBAEpD2F,IAAK,WAED,MAAOhM,MAAKilI,qBAIhBh5H,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAKilI,qBAEfjlI,KAAKilI,qBAAsB,EAC3BjlI,KAAKslI,wBAEC/7H,GAASvJ,KAAKilI,sBAEpBjlI,KAAKilI,qBAAsB,EAC3BjlI,KAAKslI,0BA8BjBjlI,EAAOutB,QAAQ8gG,GAAGqb,UAAY,SAASvvH,EAAMmV,EAAMq6G,GAE/C3pI,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,EAMxB,IAAIyvH,IACAC,oBAAqB1vH,EAAK6F,QAAQ9H,GAAGqiH,IAAI,GACzCuP,eAAe,EACf9rE,UAAW,EACXhgD,MAAO,GAGXre,MAAKgqI,SAAW3pI,EAAOmI,MAAM0C,OAAO++H,EAAiBD,GAKrDhqI,KAAKoqI,IAAMpqI,KAAKgqI,SAASE,oBACzBlqI,KAAKoqI,IAAM,GAAKpqI,KAAKoqI,IAKrBpqI,KAAK2vB,KAAOA,EAKZ3vB,KAAKsrB,OAAS,GAAIjrB,GAAOwc,SAASrC,GAElCxa,KAAKsrB,OAAOjN,MAAQre,KAAKgqI,SAAS3rH,MAElCre,KAAK6R,IAAI7R,KAAKsrB,QAEdtrB,KAAKo5D,OAELp5D,KAAKqnI,yBAIThnI,EAAOutB,QAAQ8gG,GAAGqb,UAAU1jI,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACnEhG,EAAOutB,QAAQ8gG,GAAGqb,UAAU1jI,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGqb,UAEtE1pI,EAAOmI,MAAM0C,OAAO7K,EAAOutB,QAAQ8gG,GAAGqb,UAAU1jI,WAO5CghI,sBAAuB,WAEnBrnI,KAAKuZ,SAAStT,EAAIjG,KAAK2vB,KAAKpW,SAAS,GAAKvZ,KAAKoqI,IAC/CpqI,KAAKuZ,SAAS9M,EAAIzM,KAAK2vB,KAAKpW,SAAS,GAAKvZ,KAAKoqI,IAC/CpqI,KAAKw2B,SAAWx2B,KAAK2vB,KAAKzhB,OAS9BkrD,KAAM,WAEF,GAAIlrD,GAAOshB,EAAOxR,EAAOlW,EAAG+P,EAAG8oD,EAAW0pE,EAAIthI,EAAKqF,EAAQ2oB,EAAQsD,EAAGo2C,EAAO65D,EAAMC,EAAIC,CASvF,IAPAzhI,EAAM/I,KAAK2vB,KACXoH,EAAS/2B,KAAKsrB,OACdyL,EAAO9Y,QACPD,EAAQ3T,SAASrK,KAAKyqI,kBAAmB,IACzC9pE,EAAY,SACZ0pE,EAAKrqI,KAAKq+D,UAENt1D,YAAewP,IAAG0rG,MAAQl7G,EAAIs0H,OAAOx1H,OACzC,CACI,GAAIuB,GAAIL,EAAIs0H,OAAOx1H,MAInB,KAFAC,EAAI,EAEGA,IAAMsB,GACb,CAKI,GAJAomB,EAAQzmB,EAAIs0H,OAAOv1H,GACnBsG,EAASohB,EAAMjW,UAAY,EAC3BrL,EAAQshB,EAAMthB,OAAS,EAEnBshB,YAAiBjX,IAAG/L,OAEpBxM,KAAKqkE,WAAWttC,EAAQ3oB,EAAO,GAAKpO,KAAKoqI,IAAKh8H,EAAO,GAAKpO,KAAKoqI,IAAKl8H,EAAOshB,EAAMniB,OAASrN,KAAKoqI,IAAKpsH,EAAOqsH,OAE1G,IAAI76G,YAAiBjX,IAAG0vH,QAEzBjoI,KAAK0qI,YAAY3zG,EAAQ3oB,EAAO,GAAKpO,KAAKoqI,IAAKh8H,EAAO,GAAKpO,KAAKoqI,IAAKl8H,EAAOshB,EAAM3nB,OAAS7H,KAAKoqI,IAAK56G,EAAMniB,OAASrN,KAAKoqI,IAAKzpE,EAAW3iD,EAAOqsH,OAE/I,IAAI76G,YAAiBjX,IAAGmlH,MAEzB19H,KAAK2qI,UAAU5zG,EAAQ3oB,EAAO,GAAKpO,KAAKoqI,KAAMh8H,EAAO,GAAKpO,KAAKoqI,IAAKpsH,EAAO2iD,EAAgB,EAAL0pE,EAAa,GAALA,EAAc,GAALA,EAAoB,IAAXrqI,KAAKoqI,IAAWl8H,OAE/H,IAAIshB,YAAiBjX,IAAGlI,KAEzBrQ,KAAK4qI,SAAS7zG,EAAQvH,EAAM3nB,OAAS7H,KAAKoqI,IAAKzpE,EAAW0pE,OAEzD,IAAI76G,YAAiBjX,IAAGovH,IAEzB3nI,KAAK6qI,cAAc9zG,EAAQ3oB,EAAO,GAAKpO,KAAKoqI,IAAKh8H,EAAO,GAAKpO,KAAKoqI,IAAKl8H,EAAOshB,EAAMzf,MAAQ/P,KAAKoqI,IAAK56G,EAAMxf,OAAShQ,KAAKoqI,IAAKzpE,EAAW3iD,EAAOqsH,OAEhJ,IAAI76G,YAAiBjX,IAAG0wH,OAC7B,CAII,IAHAx4D,KACA65D,EAAO/xH,GAAGuwH,KAAKpoH,SAEV7I,EAAI0yH,EAAK,EAAGC,EAAQh7G,EAAMklD,SAAS7sE,OAAa2iI,GAAL,EAAkBA,EAALD,EAAaA,EAAKC,EAAO3yH,EAAS2yH,GAAL,IAAeD,IAAOA,EAE5GlwG,EAAI7K,EAAMklD,SAAS78D,GACnBU,GAAGuwH,KAAK53H,OAAOo5H,EAAMjwG,EAAGnsB,GACxBuiE,EAAM79D,OAAO03H,EAAK,GAAKl8H,EAAO,IAAMpO,KAAKoqI,MAAOE,EAAK,GAAKl8H,EAAO,IAAMpO,KAAKoqI,KAGhFpqI,MAAK8qI,WAAW/zG,EAAQ05C,EAAOjhD,EAAMy6C,UAAWtJ,EAAW3iD,EAAOqsH,EAAIrqI,KAAKgqI,SAASG,eAAgB/7H,EAAO,GAAKpO,KAAKoqI,KAAMh8H,EAAO,GAAKpO,KAAKoqI,MAGhJtiI,OAYZ+iI,cAAe,SAAS//G,EAAG7kB,EAAGwG,EAAGyB,EAAOoP,EAAGC,EAAGS,EAAOmmD,EAAW9F,GAE1C30D,SAAd20D,IAA2BA,EAAY,GAC7B30D,SAAVsU,IAAuBA,EAAQ,GAEnC8M,EAAEq2C,UAAU9C,EAAWrgD,EAAO,GAC9B8M,EAAE5M,UAAUimD,GACZr5C,EAAE3M,SAASlY,EAAIqX,EAAI,EAAG7Q,EAAI8Q,EAAI,EAAGD,EAAGC,IAUxC8mD,WAAY,SAASv5C,EAAG7kB,EAAGwG,EAAGyB,EAAOb,EAAQ2Q,EAAOqgD,GAE9B30D,SAAd20D,IAA2BA,EAAY,GAC7B30D,SAAVsU,IAAuBA,EAAQ,UACnC8M,EAAEq2C,UAAU9C,EAAW,EAAU,GACjCvzC,EAAE5M,UAAUF,EAAO,GACnB8M,EAAEu5C,WAAWp+D,EAAGwG,EAAW,GAAPY,GACpByd,EAAE1M,UACF0M,EAAEqzC,OAAOl4D,EAAGwG,GACZqe,EAAEszC,OAAOn4D,EAAIoH,EAAStH,KAAKoH,KAAKe,GAAQzB,EAAIY,EAAStH,KAAKqH,KAAKc,KAUnE08H,SAAU,SAAS9/G,EAAGljB,EAAKoW,EAAOqgD,GAEZ30D,SAAd20D,IAA2BA,EAAY,GAC7B30D,SAAVsU,IAAuBA,EAAQ,GAEnC8M,EAAEq2C,UAAsB,EAAZ9C,EAAergD,EAAO,GAClC8M,EAAEqzC,QAAQv2D,EAAM,EAAG,GACnBkjB,EAAEszC,OAAOx2D,EAAM,EAAG,IAUtBkjI,WAAY,SAAShgH,EAAG2lD,EAAOxG,EAAWjsD,EAAOmmD,EAAW9F,EAAWx6C,EAAOzV,GAE1E,GAAIinE,GAAQvtE,EAAGuyB,EAAGm0D,EAAIC,EAAIxoF,EAAG8kI,EAAIz6H,EAAI7D,EAAGyL,EAAI3H,CAK5C,IAHkB7G,SAAd20D,IAA2BA,EAAY,GAC7B30D,SAAVsU,IAAuBA,EAAQ,GAE9B6F,EAiCL,CAII,IAHAwxD,GAAU,SAAU,MAAU,KAC9BvtE,EAAI,EAEGA,IAAM2oE,EAAM5oE,OAAS,GAExB2mF,EAAK/d,EAAM3oE,EAAI2oE,EAAM5oE,QACrB4mF,EAAKhe,GAAO3oE,EAAI,GAAK2oE,EAAM5oE,QAC3BkjI,EAAKv8C,EAAG,GACRt2E,EAAKs2E,EAAG,GACRl+E,EAAKm+E,EAAG,GACRl+E,EAAKk+E,EAAG,GACR3jE,EAAEq2C,UAAU9C,EAAWgX,EAAOvtE,EAAIutE,EAAOxtE,QAAS,GAClDijB,EAAEqzC,OAAO4sE,GAAK7yH,GACd4S,EAAEszC,OAAO9tD,GAAKC,GACdua,EAAEu5C,WAAW0mE,GAAK7yH,EAAgB,EAAZmmD,GACtBv2D,GAIJ,OADAgjB,GAAEq2C,UAAU9C,EAAW,EAAU,GAC1BvzC,EAAEu5C,WAAWj2D,EAAO,GAAIA,EAAO,GAAgB,EAAZiwD,GA/C1C,IAJAvzC,EAAEq2C,UAAU9C,EAAWrgD,EAAO,GAC9B8M,EAAE5M,UAAUimD,GACZr8D,EAAI,EAEGA,IAAM2oE,EAAM5oE,QAEfwyB,EAAIo2C,EAAM3oE,GACV7B,EAAIo0B,EAAE,GACN5tB,EAAI4tB,EAAE,GAEI,IAANvyB,EAEAgjB,EAAEqzC,OAAOl4D,GAAIwG,GAIbqe,EAAEszC,OAAOn4D,GAAIwG,GAGjB3E,GAKJ,OAFAgjB,GAAE1M,UAEEqyD,EAAM5oE,OAAS,GAEfijB,EAAEqzC,OAAOsS,EAAMA,EAAM5oE,OAAS,GAAG,IAAK4oE,EAAMA,EAAM5oE,OAAS,GAAG,IACvDijB,EAAEszC,OAAOqS,EAAM,GAAG,IAAKA,EAAM,GAAG,KAH3C,QAsCRu6D,SAAU,SAASlgH,EAAG05C,EAAMxmD,EAAOmmD,EAAW9F,GAE1C,GAAI/mD,GAAMxP,EAAGmjI,EAAOC,EAAOn5D,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAK/3C,EAAGp0B,EAAGwG,CAe/D,KAdkB/C,SAAd20D,IAA2BA,EAAY,GAC7B30D,SAAVsU,IAAuBA,EAAQ,GAEnC8M,EAAEq2C,UAAU9C,EAAWrgD,EAAO,GAEL,gBAAdmmD,IAEPr5C,EAAE5M,UAAUimD,GAGhB8mE,EAAQ,KACRC,EAAQ,KACRpjI,EAAI,EAEGA,EAAI08D,EAAK38D,QAEZwyB,EAAImqC,EAAK18D,GACT7B,EAAIo0B,EAAE,GACN5tB,EAAI4tB,EAAE,GAEFp0B,IAAMglI,GAASx+H,IAAMy+H,IAEX,IAANpjI,EAEAgjB,EAAEqzC,OAAOl4D,EAAGwG,IAIZslE,EAAMk5D,EACNj5D,EAAMk5D,EACNj5D,EAAMhsE,EACNisE,EAAMzlE,EACN0lE,EAAM3N,GAAM18D,EAAI,GAAK08D,EAAK38D,QAAQ,GAClCuqE,EAAM5N,GAAM18D,EAAI,GAAK08D,EAAK38D,QAAQ,GAClCyP,GAAS26D,EAAMF,IAAQK,EAAMJ,IAAUG,EAAMJ,IAAQG,EAAMF,GAE9C,IAAT16D,GAEAwT,EAAEszC,OAAOn4D,EAAGwG,IAGpBw+H,EAAQhlI,EACRilI,EAAQz+H,GAGZ3E,GAIqB,iBAAdq8D,IAEPr5C,EAAE1M,UAGFomD,EAAK38D,OAAS,GAA0B,gBAAds8D,KAE1Br5C,EAAEqzC,OAAOqG,EAAKA,EAAK38D,OAAS,GAAG,GAAI28D,EAAKA,EAAK38D,OAAS,GAAG,IACzDijB,EAAEszC,OAAOoG,EAAK,GAAG,GAAIA,EAAK,GAAG,MAWrCmmE,UAAW,SAAS7/G,EAAGigH,EAAIz6H,EAAI0N,EAAO2iD,EAAWtC,EAAW8sE,EAAYC,EAAUC,EAAWn9H,GAEzF,GAAIiE,GAAKm5H,EAAIC,CACK7hI,UAAd20D,IAA2BA,EAAY,GAC7B30D,SAAVsU,IAAuBA,EAAQ,UAEnC8M,EAAEq2C,UAAU9C,EAAWsC,EAAW,IAClC71C,EAAE5M,UAAUF,GACZ7L,EAAMk5H,EAENvgH,EAAEqzC,OAAO4sE,GAAKz6H,GACdg7H,EAAKP,EAAKhlI,KAAKoH,IAAIe,GAASlO,KAAKwa,KAAKzK,MACtCw7H,EAAKj7H,EAAKvK,KAAKqH,IAAIc,GAASlO,KAAKwa,KAAKxK,OACtC8a,EAAEszC,OAAOktE,GAAKC,GAEdzgH,EAAEqzC,OAAO4sE,GAAKz6H,GACdg7H,EAAKP,EAAKhlI,KAAKoH,IAAIe,IAAUlO,KAAKwa,KAAKzK,MACvCw7H,EAAKj7H,EAAKvK,KAAKqH,IAAIc,IAAUlO,KAAKwa,KAAKxK,OACvC8a,EAAEszC,OAAOktE,GAAKC,IAUlBb,YAAa,SAAS5/G,EAAG7kB,EAAGwG,EAAGyB,EAAOtG,EAAKyF,EAAQ2Q,EAAOmmD,EAAW9F,GAE/C30D,SAAd20D,IAA2BA,EAAY,GAC7B30D,SAAVsU,IAAuBA,EAAS,GAEpC8M,EAAEq2C,UAAU9C,EAAWrgD,EAAO,EAG9B,IAAI/O,GAAIlJ,KAAKoH,IAAIe,GACbuI,EAAI1Q,KAAKqH,IAAIc,EAEjB4c,GAAE5M,UAAUimD,EAAW,GACvBr5C,EAAEu5C,YAAYz8D,EAAI,EAAEqH,EAAIhJ,GAAI2B,EAAI,EAAE6O,EAAIhK,EAAa,GAATY,GAC1Cyd,EAAEu5C,WAAYz8D,EAAI,EAAEqH,EAAIhJ,EAAI2B,EAAI,EAAE6O,EAAIhK,EAAa,GAATY,GAC1Cyd,EAAE1M,UAGF0M,EAAEq2C,UAAU9C,EAAWrgD,EAAO,GAC9B8M,EAAE5M,UAAUimD,EAAW,GACvBr5C,EAAEqzC,QAAQv2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAEszC,OAAQx2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAEszC,OAAQx2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAEszC,QAAQx2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAE1M,UAGF0M,EAAEq2C,UAAU9C,EAAWrgD,EAAO,GAC9B8M,EAAEqzC,QAAQv2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAEszC,OAAQx2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAEqzC,QAAQv2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,GAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,GACxDqe,EAAEszC,OAAQx2D,EAAI,EAAEqH,EAAI5B,EAAOoJ,EAAIxQ,EAAI2B,EAAI,EAAE6O,EAAIpJ,EAAO4B,EAAIxC,IAU5Dg+H,gBAAiB,WAEb,GAAIxvE,GAAMD,EAAOwwE,EAAKzwE,CAWtB,OAVAywE,IAAO,IAAK,IAAK,KAEjBzwE,EAAMh1D,KAAKI,MAAsB,IAAhBJ,KAAK4D,UACtBqxD,EAAQj1D,KAAKI,MAAsB,IAAhBJ,KAAK4D,UACxBsxD,EAAOl1D,KAAKI,MAAsB,IAAhBJ,KAAK4D,UAEvBoxD,EAAMh1D,KAAKI,OAAO40D,EAAM,EAAIywE,EAAI,IAAM,GACtCxwE,EAAQj1D,KAAKI,OAAO60D,EAAQ,EAAIwwE,EAAI,IAAM,GAC1CvwE,EAAOl1D,KAAKI,OAAO80D,EAAO,EAAIuwE,EAAI,IAAM,GAEjCxrI,KAAKyrI,SAAS1wE,EAAKC,EAAOC,IAUrCwwE,SAAU,SAASv+H,EAAG4d,EAAGjc,GACrB,MAAO7O,MAAK0rH,eAAex+G,GAAKlN,KAAK0rH,eAAe5gG,GAAK9qB,KAAK0rH,eAAe78G,IASjF68G,eAAgB,SAASz8G,GAErB,GAAI28G,EAGJ,OAFAA,GAAM38G,EAAEzH,SAAS,IAEE,IAAfokH,EAAI/jH,OAEG+jH,EAIAA,EAAM,OA6BzBvrH,EAAOutB,QAAQ8gG,GAAGgL,OAAS,SAAUj/G,EAAO+hH,EAAOC,EAAOmF,EAAYC,EAAWC,EAASC,EAAQC,EAAQC,EAAQC,GAK9GliI,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEM/Q,SAAfk4H,IAA4BA,EAAa,GAC3Bl4H,SAAdm4H,IAA2BA,EAAY,KAC3Bn4H,SAAZo4H,IAAyBA,EAAU,GAEvCF,EAAannH,EAAMqgH,IAAI8G,EAEvB,IAAIz2H,IACAy2H,WAAYA,EACZC,UAAWA,EACXC,QAASA,EAGS,oBAAXC,IAAqC,OAAXA,IAEjC52H,EAAQugI,cAAiBjxH,EAAMqgH,IAAIiH,EAAO,IAAKtnH,EAAMqgH,IAAIiH,EAAO,MAG9C,mBAAXC,IAAqC,OAAXA,IAEjC72H,EAAQwgI,cAAiBlxH,EAAMqgH,IAAIkH,EAAO,IAAKvnH,EAAMqgH,IAAIkH,EAAO,MAG9C,mBAAXC,IAAqC,OAAXA,IAEjC92H,EAAQ2zH,cAAiBrkH,EAAMqgH,IAAImH,EAAO,IAAKxnH,EAAMqgH,IAAImH,EAAO,MAG9C,mBAAXC,IAAqC,OAAXA,IAEjC/2H,EAAQ4zH,cAAiBtkH,EAAMqgH,IAAIoH,EAAO,IAAKznH,EAAMqgH,IAAIoH,EAAO,MAMpEliI,KAAKqiC,KAAO,GAAI9pB,IAAGqzH,aAAapP,EAAOC,EAAOtxH,GAE9CnL,KAAKqiC,KAAK7Y,OAASxpB,MAIvBK,EAAOutB,QAAQ8gG,GAAGgL,OAAOrzH,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGgL,OAoBnEr5H,EAAOutB,QAAQ8gG,GAAGkQ,iBAAmB,SAAUnkH,EAAO+hH,EAAOC,EAAO2F,EAAWP,EAAWC,GAKtF9hI,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEK/Q,SAAd04H,IAA2BA,EAAY,MACzB14H,SAAdm4H,IAA2BA,EAAY,KAC3Bn4H,SAAZo4H,IAAyBA,EAAU,GAEnCM,IAEAA,EAAY3nH,EAAMqgH,IAAIsH,GAG1B,IAAIj3H,IACAi3H,UAAWA,EACXP,UAAWA,EACXC,QAASA,EAMb9hI,MAAKqiC,KAAO,GAAI9pB,IAAGqmH,iBAAiBpC,EAAOC,EAAOtxH,GAElDnL,KAAKqiC,KAAK7Y,OAASxpB,MAIvBK,EAAOutB,QAAQ8gG,GAAGgL,OAAOrzH,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGgL,OAiBnEr5H,EAAOutB,QAAQ8gG,GAAGgS,SAAW,SAAUt1H,GAMnCpL,KAAKoL,KAAOA,EAEZmN,GAAGmoH,SAAS55H,KAAK9G,OAIrBK,EAAOutB,QAAQ8gG,GAAGgS,SAASr6H,UAAYkB,OAAOmZ,OAAOnI,GAAGmoH,SAASr6H,WACjEhG,EAAOutB,QAAQ8gG,GAAGgS,SAASr6H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGgS,SAiBrErgI,EAAOutB,QAAQ8gG,GAAGmS,gBAAkB,SAAUP,EAAWC,EAAWp1H,GA0ChEoN,GAAGsoH,gBAAgB/5H,KAAK9G,KAAMsgI,EAAWC,EAAWp1H,IAIxD9K,EAAOutB,QAAQ8gG,GAAGmS,gBAAgBx6H,UAAYkB,OAAOmZ,OAAOnI,GAAGsoH,gBAAgBx6H,WAC/EhG,EAAOutB,QAAQ8gG,GAAGmS,gBAAgBx6H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGmS,gBAe5ExgI,EAAOutB,QAAQ8gG,GAAG2M,eAAiB,SAAUoG,GAKzCzhI,KAAK6pD,KAAO43E,GAuBhBphI,EAAOutB,QAAQ8gG,GAAGyQ,mBAAqB,SAAU1kH,EAAO+hH,EAAOC,EAAO5uH,EAAUixH,EAAcC,EAAcC,GAEvFt1H,SAAbmE,IAA0BA,EAAW,KACpBnE,SAAjBo1H,IAA8BA,GAAgB,EAAG,IAChCp1H,SAAjBq1H,IAA8BA,GAAgB,EAAG,IACpCr1H,SAAbs1H,IAA0BA,EAAW7mH,OAAOC,WAKhDpY,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEb5M,EAAW4M,EAAMqgH,IAAIjtH,GAErBixH,GAAiBrkH,EAAMsgH,KAAK+D,EAAa,IAAKrkH,EAAMsgH,KAAK+D,EAAa,KACtEC,GAAiBtkH,EAAMsgH,KAAKgE,EAAa,IAAKtkH,EAAMsgH,KAAKgE,EAAa;AAEtE,GAAI5zH,IAAY0C,SAAUA,EAAUixH,aAAcA,EAAcC,aAAcA,EAAcC,SAAUA,EAEtGzmH,IAAG4mH,mBAAmBr4H,KAAK9G,KAAMw8H,EAAOC,EAAOtxH,IAInD9K,EAAOutB,QAAQ8gG,GAAGyQ,mBAAmB94H,UAAYkB,OAAOmZ,OAAOnI,GAAG4mH,mBAAmB94H,WACrFhG,EAAOutB,QAAQ8gG,GAAGyQ,mBAAmB94H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGyQ,mBAmB/E9+H,EAAOutB,QAAQ8gG,GAAG4Q,eAAiB,SAAU7kH,EAAO+hH,EAAOC,EAAOvuH,EAAOmxH,GAEvD31H,SAAVwE,IAAuBA,EAAQ,GACrBxE,SAAV21H,IAAuBA,EAAQ,GAKnCr/H,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,CAEb,IAAItP,IAAY+C,MAAOA,EAAOmxH,MAAOA,EAErC9mH,IAAG+mH,eAAex4H,KAAK9G,KAAMw8H,EAAOC,EAAOtxH,IAI/C9K,EAAOutB,QAAQ8gG,GAAG4Q,eAAej5H,UAAYkB,OAAOmZ,OAAOnI,GAAG+mH,eAAej5H,WAC7EhG,EAAOutB,QAAQ8gG,GAAG4Q,eAAej5H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAG4Q,eAoB3Ej/H,EAAOutB,QAAQ8gG,GAAGmR,eAAiB,SAAUplH,EAAO+hH,EAAOC,EAAOruH,EAAQF,EAAO8wH,GAE9Dt1H,SAAX0E,IAAwBA,GAAU,EAAG,IAC3B1E,SAAVwE,IAAuBA,EAAQ,GAClBxE,SAAbs1H,IAA0BA,EAAW7mH,OAAOC,WAKhDpY,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEbrM,GAAWqM,EAAMqgH,IAAI1sH,EAAO,IAAKqM,EAAMqgH,IAAI1sH,EAAO,IAElD,IAAIjD,IAAY0gI,aAAcz9H,EAAQ09H,YAAa59H,EAAO8wH,SAAUA,EAEpEzmH,IAAGsnH,eAAe/4H,KAAK9G,KAAMw8H,EAAOC,EAAOtxH,IAI/C9K,EAAOutB,QAAQ8gG,GAAGmR,eAAex5H,UAAYkB,OAAOmZ,OAAOnI,GAAGsnH,eAAex5H,WAC7EhG,EAAOutB,QAAQ8gG,GAAGmR,eAAex5H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGmR,eAsB3Ex/H,EAAOutB,QAAQ8gG,GAAGwR,oBAAsB,SAAUzlH,EAAO+hH,EAAOC,EAAOsD,EAAcC,EAASC,EAAS9hF,EAAM6gF,GAEpFt1H,SAAjBq2H,IAA8BA,GAAe,GACjCr2H,SAAZs2H,IAAyBA,GAAW,EAAG,IAC3Bt2H,SAAZu2H,IAAyBA,GAAW,EAAG,IAC9Bv2H,SAATy0C,IAAsBA,GAAQ,EAAG,IACpBz0C,SAAbs1H,IAA0BA,EAAW7mH,OAAOC,WAKhDpY,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEbulH,GAAYvlH,EAAMsgH,KAAKiF,EAAQ,IAAKvlH,EAAMsgH,KAAKiF,EAAQ,KACvDC,GAAYxlH,EAAMsgH,KAAKkF,EAAQ,IAAKxlH,EAAMsgH,KAAKkF,EAAQ,IAEvD,IAAI90H,IAAY2zH,aAAckB,EAASjB,aAAckB,EAAS8L,WAAY5tF,EAAM6gF,SAAUA,EAAUgN,uBAAwBjM,EAE5HxnH,IAAG2nH,oBAAoBp5H,KAAK9G,KAAMw8H,EAAOC,EAAOtxH,IAIpD9K,EAAOutB,QAAQ8gG,GAAGwR,oBAAoB75H,UAAYkB,OAAOmZ,OAAOnI,GAAG2nH,oBAAoB75H,WACvFhG,EAAOutB,QAAQ8gG,GAAGwR,oBAAoB75H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGwR,oBAsBhF7/H,EAAOutB,QAAQ8gG,GAAGiR,mBAAqB,SAAUllH,EAAO+hH,EAAOgD,EAAQ/C,EAAOgD,EAAQT,EAAUU,GAE3Eh2H,SAAbs1H,IAA0BA,EAAW7mH,OAAOC,WAC7B1O,SAAfg2H,IAA4BA,EAAa,MAK7C1/H,KAAKwa,KAAOC,EAAMD,KAKlBxa,KAAKya,MAAQA,EAEb+kH,GAAW/kH,EAAMsgH,KAAKyE,EAAO,IAAK/kH,EAAMsgH,KAAKyE,EAAO,KACpDC,GAAWhlH,EAAMsgH,KAAK0E,EAAO,IAAKhlH,EAAMsgH,KAAK0E,EAAO,KAEhDC,IAEAA,GAAejlH,EAAMsgH,KAAK2E,EAAW,IAAKjlH,EAAMsgH,KAAK2E,EAAW,KAGpE,IAAIv0H,IAAYu0H,WAAYA,EAAYuM,YAAazM,EAAQ0M,YAAazM,EAAQT,SAAUA,EAE5FzmH,IAAGonH,mBAAmB74H,KAAK9G,KAAMw8H,EAAOC,EAAOtxH,IAInD9K,EAAOutB,QAAQ8gG,GAAGiR,mBAAmBt5H,UAAYkB,OAAOmZ,OAAOnI,GAAGonH,mBAAmBt5H,WACrFhG,EAAOutB,QAAQ8gG,GAAGiR,mBAAmBt5H,UAAU8B,YAAc9H,EAAOutB,QAAQ8gG,GAAGiR,mBAuB/Et/H,EAAO8rI,gBAAkB,SAAU/gI,EAAMghI,EAAUr8H,EAAOC,EAAQgxF,EAAQC,EAASnmB,IAEjEpxE,SAAVqG,GAAgC,GAATA,KAAcA,EAAQ,KAClCrG,SAAXsG,GAAkC,GAAVA,KAAeA,EAAS,IACrCtG,SAAXs3F,IAAwBA,EAAS,GACrBt3F,SAAZu3F,IAAyBA,EAAU,GAMvCjhG,KAAKoL,KAAOA,EAOZpL,KAAKosI,SAAsB,EAAXA,EAOhBpsI,KAAKqsI,WAAqB,EAARt8H,EAOlB/P,KAAKssI,YAAuB,EAATt8H,EASnBhQ,KAAKusI,YAAuB,EAATvrC,EAQnBhhG,KAAKwsI,aAAyB,EAAVvrC,EAMpBjhG,KAAK86E,WAAaA,MAQlB96E,KAAKksG,UAQLlsG,KAAK40B,MAAQ,GAGjBv0B,EAAO8rI,gBAAgB9lI,WASnBomI,mBAAoB,SAAUC,GAE1B,MACIA,IAAc1sI,KAAKosI,UACnBM,EAAc1sI,KAAKosI,SAAWpsI,KAAK40B,OAY3C6kC,SAAU,SAAUkzE,EAAKvjH,GAErBppB,KAAKksG,OAAOt5F,MAAO+5H,IAAKA,EAAKvjH,MAAOA,IACpCppB,KAAK40B,UAMbv0B,EAAO8rI,gBAAgB9lI,UAAU8B,YAAc9H,EAAO8rI,gBAoBtD9rI,EAAOusI,KAAO,SAAU1iB,EAAOx6F,EAAOzpB,EAAGwG,EAAGsD,EAAOC,GAK/ChQ,KAAKkqH,MAAQA,EAKblqH,KAAK0vB,MAAQA,EAKb1vB,KAAKiG,EAAIA,EAKTjG,KAAKyM,EAAIA,EAKTzM,KAAKw2B,SAAW,EAKhBx2B,KAAK6sI,SAAU,EAKf7sI,KAAK8iH,OAAS78G,EAAI8J,EAKlB/P,KAAK+iH,OAASt2G,EAAIuD,EAKlBhQ,KAAK+P,MAAQA,EAKb/P,KAAKgQ,OAASA,EAKdhQ,KAAKyY,QAAU1S,KAAKoJ,IAAIY,EAAQ,GAKhC/P,KAAK0Y,QAAU3S,KAAKoJ,IAAIa,EAAS,GAKjChQ,KAAKqe,MAAQ,EAKbre,KAAK86E,cAKL96E,KAAK8sI,SAAU,EAKf9sI,KAAKg5H,SAAU,EAKfh5H,KAAKi5H,YAAa,EAKlBj5H,KAAK84H,UAAW,EAKhB94H,KAAK+4H,WAAY,EAMjB/4H,KAAKq5H,aAAc,EAMnBr5H,KAAKo5H,cAAe,EAMpBp5H,KAAKw5H,WAAY,EAMjBx5H,KAAKu5H,aAAc,EAMnBv5H,KAAK44H,kBAAoB,KAMzB54H,KAAK64H,yBAA2B74H,MAIpCK,EAAOusI,KAAKvmI,WAUR0T,cAAe,SAAU9T,EAAGwG,GAExB,QAASxG,EAAIjG,KAAK8iH,QAAUr2G,EAAIzM,KAAK+iH,QAAU98G,EAAIjG,KAAK4K,OAAS6B,EAAIzM,KAAK2O,SAa9EG,WAAY,SAAU7I,EAAGwG,EAAG7B,EAAO+D,GAE/B,MAAI/D,IAAS5K,KAAK8iH,QAEP,EAGPn0G,GAAU3O,KAAK+iH,QAER,EAGP98G,GAAKjG,KAAK8iH,OAAS9iH,KAAK+P,OAEjB,IAGPtD,GAAKzM,KAAK+iH,OAAS/iH,KAAKgQ,SAiBhC+8H,qBAAsB,SAAU15G,EAAUhP,GAEtCrkB,KAAK44H,kBAAoBvlG,EACzBrzB,KAAK64H,yBAA2Bx0G,GASpCP,QAAS,WAEL9jB,KAAK44H,kBAAoB,KACzB54H,KAAK64H,yBAA2B,KAChC74H,KAAK86E,WAAa,MAatBkyD,aAAc,SAAUniI,EAAMD,EAAOo1C,EAAIrV,GAErC3qC,KAAKq5H,YAAcxuH,EACnB7K,KAAKo5H,aAAexuH,EACpB5K,KAAKw5H,UAAYx5E,EACjBhgD,KAAKu5H,YAAc5uF,EAEnB3qC,KAAK84H,SAAWjuH,EAChB7K,KAAK+4H,UAAYnuH,EACjB5K,KAAKg5H,QAAUh5E,EACfhgD,KAAKi5H,WAAatuF,GAStBsiG,eAAgB,WAEZjtI,KAAKq5H,aAAc,EACnBr5H,KAAKo5H,cAAe,EACpBp5H,KAAKw5H,WAAY,EACjBx5H,KAAKu5H,aAAc,EAEnBv5H,KAAKg5H,SAAU,EACfh5H,KAAKi5H,YAAa,EAClBj5H,KAAK84H,UAAW,EAChB94H,KAAK+4H,WAAY,GAYrBmU,cAAe,SAAUlK,EAAUmK,GAE/B,MAAInK,IAAYmK,EAGJntI,KAAKq5H,aAAer5H,KAAKo5H,cAAgBp5H,KAAKw5H,WAAax5H,KAAKu5H,aAAev5H,KAAKg5H,SAAWh5H,KAAKi5H,YAAcj5H,KAAK84H,UAAY94H,KAAK+4H,WAAa/4H,KAAK44H,kBAE7JoK,EAGGhjI,KAAKq5H,aAAer5H,KAAKo5H,cAAgBp5H,KAAKw5H,WAAax5H,KAAKu5H,YAEnE4T,EAGGntI,KAAKg5H,SAAWh5H,KAAKi5H,YAAcj5H,KAAK84H,UAAY94H,KAAK+4H,WAG9D,GAUXztH,KAAM,SAAUmtH,GAEZz4H,KAAK0vB,MAAQ+oG,EAAK/oG,MAClB1vB,KAAKqe,MAAQo6G,EAAKp6G,MAClBre,KAAK86E,WAAa29C,EAAK39C,WAEvB96E,KAAKw5H,UAAYf,EAAKe,UACtBx5H,KAAKu5H,YAAcd,EAAKc,YACxBv5H,KAAKq5H,YAAcZ,EAAKY,YACxBr5H,KAAKo5H,aAAeX,EAAKW,aAEzBp5H,KAAK44H,kBAAoBH,EAAKG,kBAC9B54H,KAAK64H,yBAA2BJ,EAAKI,2BAM7Cx4H,EAAOusI,KAAKvmI,UAAU8B,YAAc9H,EAAOusI,KAO3CrlI,OAAO2E,eAAe7L,EAAOusI,KAAKvmI,UAAW,YAEzC2F,IAAK,WACD,MAAQhM,MAAKq5H,aAAer5H,KAAKo5H,cAAgBp5H,KAAKw5H,WAAax5H,KAAKu5H,eAUhFhyH,OAAO2E,eAAe7L,EAAOusI,KAAKvmI,UAAW,cAEzC2F,IAAK,WACD,MAAQhM,MAAKq5H,aAAer5H,KAAKo5H,cAAgBp5H,KAAKw5H,WAAax5H,KAAKu5H,aAAev5H,KAAK44H,qBAUpGrxH,OAAO2E,eAAe7L,EAAOusI,KAAKvmI,UAAW,QAEzC2F,IAAK,WACD,MAAOhM,MAAK8iH,UAUpBv7G,OAAO2E,eAAe7L,EAAOusI,KAAKvmI,UAAW,SAEzC2F,IAAK,WACD,MAAOhM,MAAK8iH,OAAS9iH,KAAK+P,SAUlCxI,OAAO2E,eAAe7L,EAAOusI,KAAKvmI,UAAW,OAEzC2F,IAAK,WACD,MAAOhM,MAAK+iH,UAUpBx7G,OAAO2E,eAAe7L,EAAOusI,KAAKvmI,UAAW,UAEzC2F,IAAK,WACD,MAAOhM,MAAK+iH,OAAS/iH,KAAKgQ,UA6BlC3P,EAAOmuD,QAAU,SAAUh0C,EAAMzO,EAAKmnD,EAAWC,EAAYpjD,EAAOC,GAKhEhQ,KAAKwa,KAAOA,EAKZxa,KAAK+L,IAAMA,CAEX,IAAIs2B,GAAOhiC,EAAO+sI,cAAcl2H,MAAMlX,KAAKwa,KAAMzO,EAAKmnD,EAAWC,EAAYpjD,EAAOC,EAEvE,QAATqyB,IAQJriC,KAAK+P,MAAQsyB,EAAKtyB,MAKlB/P,KAAKgQ,OAASqyB,EAAKryB,OAKnBhQ,KAAKkzD,UAAY7wB,EAAK6wB,UAKtBlzD,KAAKmzD,WAAa9wB,EAAK8wB,WAKvBnzD,KAAKu+G,YAAcl8E,EAAKk8E,YAKxBv+G,KAAKokG,OAAS/hE,EAAK+hE,OAKnBpkG,KAAKqtI,QAAUhrG,EAAKgrG,QAKpBrtI,KAAK86E,WAAaz4C,EAAKy4C,WAKvB96E,KAAKstI,cAAgBjrG,EAAKirG,cAK1BttI,KAAKutI,eAAiBlrG,EAAKkrG,eAK3BvtI,KAAKgqH,OAAS3nF,EAAK2nF,OAKnBhqH,KAAKwtI,SAAWnrG,EAAKmrG,SAKrBxtI,KAAKytI,iBAAmBprG,EAAKorG,iBAK7BztI,KAAK0tI,MAAQrrG,EAAKqrG,MAKlB1tI,KAAK6wF,QAAUxuD,EAAKwuD,QAKpB7wF,KAAK2tI,kBAKL3tI,KAAK0iI,UAAYrgG,EAAKqgG,UAKtB1iI,KAAKksG,OAAS7pE,EAAK6pE,OAKnBlsG,KAAK4tI,aAAe,EAKpB5tI,KAAK6tI,YAML7tI,KAAK2kI,YAML3kI,KAAK8tI,OAAS,EAMd9tI,KAAK+4D,OAAS,IAQlB14D,EAAOmuD,QAAQq+C,IAAM,EAMrBxsG,EAAOmuD,QAAQs+C,WAAa,EAM5BzsG,EAAOmuD,QAAQu/E,MAAQ,EAMvB1tI,EAAOmuD,QAAQw/E,KAAO,EAMtB3tI,EAAOmuD,QAAQy/E,MAAQ,EAMvB5tI,EAAOmuD,QAAQ0/E,KAAO,EAEtB7tI,EAAOmuD,QAAQnoD,WAcXqa,OAAQ,SAAUtV,EAAM2E,EAAOC,EAAQkjD,EAAWC,EAAYj9B,GAW1D,MATcxsB,UAAVwsB,IAAuBA,EAAQl2B,KAAKwa,KAAKC,OAE7Cza,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEdhQ,KAAKmuI,YAAYj7E,EAAWC,GAE5BnzD,KAAKgqH,OAAOniH,OAAS,EAEd7H,KAAKouI,iBAAiBhjI,EAAM2E,EAAOC,EAAQkjD,EAAWC,EAAYj9B,IAW7Ei4G,YAAa,SAAUj7E,EAAWC,GAE9BnzD,KAAKkzD,UAAYA,EACjBlzD,KAAKmzD,WAAaA,EAClBnzD,KAAKstI,cAAgBttI,KAAK+P,MAAQmjD,EAClClzD,KAAKutI,eAAiBvtI,KAAKgQ,OAASmjD,GAoBxCk7E,gBAAiB,SAAUC,EAASviI,EAAKmnD,EAAWC,EAAYo7E,EAAYC,EAAa7B,GAErF,GAAgBjjI,SAAZ4kI,EAAyB,MAAO,KAClB5kI,UAAdwpD,IAA2BA,EAAYlzD,KAAKkzD,WAC7BxpD,SAAfypD,IAA4BA,EAAanzD,KAAKmzD,YAC/BzpD,SAAf6kI,IAA4BA,EAAa,GACzB7kI,SAAhB8kI,IAA6BA,EAAc,GACnC9kI,SAARijI,IAAqBA,EAAM,GAGb,IAAdz5E,IAEAA,EAAY,IAGG,IAAfC,IAEAA,EAAa,GAGjB,IAAIvE,GAAM,IAOV,IALYllD,SAARqC,GAA6B,OAARA,IAErBA,EAAMuiI,GAGNviI,YAAe1L,GAAO6tD,WAEtBU,EAAM7iD,EAAIuf,WAGd,CACI,IAAKtrB,KAAKwa,KAAKsF,MAAMo9D,cAAcnxE,GAG/B,MADA3D,SAAQG,KAAK,6DAA+DwD,EAAM,KAC3E,IAGX6iD,GAAM5uD,KAAKwa,KAAKsF,MAAM+uC,SAAS9iD,GAGnC,GAAIsvE,GAAMr7E,KAAKyuI,gBAAgBH,EAE/B,IAAY,OAARjzD,GAAgBr7E,KAAKokG,SAAW/jG,EAAOmuD,QAAQs+C,WAG/C,MADA1kG,SAAQG,KAAK,yFAA2F+lI,EAAU,KAC3G,IAGX,IAAItuI,KAAKwtI,SAASnyD,GAGd,MADAr7E,MAAKwtI,SAASnyD,GAAKqzD,SAAS9/E,GACrB5uD,KAAKwtI,SAASnyD,EAIrB,IAAIszD,GAAS,GAAItuI,GAAOuuI,QAAQN,EAAS3B,EAAKz5E,EAAWC,EAAYo7E,EAAYC,KAEjFG,GAAOD,SAAS9/E,GAEhB5uD,KAAKwtI,SAAS56H,KAAK+7H,EAUnB,KAAK,GARD7mI,GAAI9H,KAAKwtI,SAAS3lI,OAAS,EAC3B5B,EAAIsoI,EACJ9hI,EAAI8hI,EAEJ5yG,EAAQ,EACRkzG,EAAS,EACTC,EAAS,EAEJnnI,EAAIglI,EAAKhlI,EAAIglI,EAAMgC,EAAO/5G,QAE/B50B,KAAK0tI,MAAM/lI,IAAM1B,EAAGwG,EAAG3E,GAEvB7B,GAAKitD,EAAYs7E,EAEjB7yG,IAEIA,IAAUgzG,EAAO/5G,SAKrBi6G,IAEIA,IAAWF,EAAO19G,UAElBhrB,EAAIsoI,EACJ9hI,GAAK0mD,EAAaq7E,EAElBK,EAAS,EACTC,IAEIA,IAAWH,EAAO39G,OAvBYrpB,KA8B1C,MAAOgnI,IAyBfI,kBAAmB,SAAU3jI,EAAMuhI,EAAK5gI,EAAK2kB,EAAOlG,EAAQ48B,EAAUlxB,EAAO84G,EAAaC,GAQtF,GANevlI,SAAX8gB,IAAwBA,GAAS,GACpB9gB,SAAb09C,IAA0BA,GAAW,GAC3B19C,SAAVwsB,IAAuBA,EAAQl2B,KAAKwa,KAAKC,OACzB/Q,SAAhBslI,IAA6BA,EAAc3uI,EAAO+tB,QACtC1kB,SAAZulI,IAAyBA,GAAU,IAElCjvI,KAAK6wF,QAAQzlF,GAGd,WADAhD,SAAQG,KAAK,8DAAgE6C,EAIjF,KAAK,GAAItD,GAAI,EAAGA,EAAI9H,KAAK6wF,QAAQzlF,GAAMvD,OAAQC,IAC/C,CACI,GAAIonI,IAAQ,EACRnmI,EAAM/I,KAAK6wF,QAAQzlF,GAAMtD,EAe7B,IAbgB4B,SAAZX,EAAI4jI,KAAoC,gBAARA,IAAoB5jI,EAAI4jI,MAAQA,EAEhEuC,GAAQ,EAEQxlI,SAAXX,EAAI4L,IAAmC,gBAARg4H,IAAoB5jI,EAAI4L,KAAOg4H,EAEnEuC,GAAQ,EAEUxlI,SAAbX,EAAIqC,MAAqC,gBAARuhI,IAAoB5jI,EAAIqC,OAASuhI,IAEvEuC,GAAQ,GAGRA,EACJ,CACI,GAAIn4G,GAAS,GAAIi4G,GAAYhvI,KAAKwa,KAAM8gE,WAAWvyE,EAAI9C,EAAG,IAAKq1E,WAAWvyE,EAAI0D,EAAG,IAAKV,EAAK2kB,EAE3FqG,GAAO3rB,KAAOrC,EAAIqC,KAClB2rB,EAAOlc,QAAU9R,EAAI8R,QACrBkc,EAAOqwB,SAAWA,EAClBrwB,EAAOvM,OAASA,EAEZzhB,EAAIgH,QAEJgnB,EAAOhnB,MAAQhH,EAAIgH,OAGnBhH,EAAIiH,SAEJ+mB,EAAO/mB,OAASjH,EAAIiH,QAGpBjH,EAAIytB,WAEJO,EAAO7oB,MAAQnF,EAAIytB,UAGnBy4G,IAEAl4G,EAAOtqB,GAAKsqB,EAAO/mB,QAGvBkmB,EAAMrkB,IAAIklB,EAEV,KAAK,GAAIhE,KAAYhqB,GAAI+xE,WAErB5kD,EAAMjqB,IAAI8qB,EAAQhE,EAAUhqB,EAAI+xE,WAAW/nD,IAAW,GAAO,EAAO,GAAG,MAsBvFo8G,gBAAiB,SAAUzB,EAAO0B,EAAcrjI,EAAKm+G,EAAOh0F,EAAO4kD,GAE1C,gBAAV4yD,KAAsBA,GAASA,IAErBhkI,SAAjB0lI,GAA+C,OAAjBA,EAE9BA,KAE6B,gBAAjBA,KAEZA,GAAgBA,IAGpBllB,EAAQlqH,KAAK6iI,SAAS3Y,GAERxgH,SAAVwsB,IAAuBA,EAAQl2B,KAAKwa,KAAKC,OAC1B/Q,SAAfoxE,IAA4BA,MAEDpxE,SAA3BoxE,EAAWu0D,cAEXv0D,EAAWu0D,YAAchvI,EAAO+tB,QAGT1kB,SAAvBoxE,EAAWm0D,UAEXn0D,EAAWm0D,SAAU,EAGzB,IAAI5E,GAAKrqI,KAAKgqH,OAAOE,GAAOn6G,MACxBu/H,EAAKtvI,KAAKgqH,OAAOE,GAAOl6G,MAI5B,IAFAhQ,KAAKsL,KAAK,EAAG,EAAG++H,EAAIiF,EAAIplB,GAEpBlqH,KAAK2kI,SAAS98H,OAAS,EAEvB,MAAO,EAMX,KAAK,GAFDkvB,GADAnC,EAAQ,EAGH9sB,EAAI,EAAGF,EAAM5H,KAAK2kI,SAAS98H,OAAYD,EAAJE,EAASA,IAEjD,GAA8C,KAA1C4lI,EAAMr9G,QAAQrwB,KAAK2kI,SAAS78H,GAAG4nB,OACnC,CACIqH,EAAS,GAAI+jD,GAAWu0D,YAAYrvI,KAAKwa,KAAMxa,KAAK2kI,SAAS78H,GAAGg7G,OAAQ9iH,KAAK2kI,SAAS78H,GAAGi7G,OAAQh3G,EAEjG,KAAK,GAAIgnB,KAAY+nD,GAEjB/jD,EAAOhE,GAAY+nD,EAAW/nD,EAGlCmD,GAAMrkB,IAAIklB,GACVnC,IAKR,GAA4B,IAAxBw6G,EAAavnI,OAGb,IAAKC,EAAI,EAAGA,EAAI4lI,EAAM7lI,OAAQC,IAE1B9H,KAAK4L,QAAQ8hI,EAAM5lI,GAAIsnI,EAAa,GAAI,EAAG,EAAG/E,EAAIiF,EAAIplB,OAGzD,IAAIklB,EAAavnI,OAAS,EAG3B,IAAKC,EAAI,EAAGA,EAAI4lI,EAAM7lI,OAAQC,IAE1B9H,KAAK4L,QAAQ8hI,EAAM5lI,GAAIsnI,EAAatnI,GAAI,EAAG,EAAGuiI,EAAIiF,EAAIplB,EAI9D,OAAOt1F,IAkBX26G,YAAa,SAAUrlB,EAAOn6G,EAAOC,EAAQkmB,EAAOs5G,GAIlC9lI,SAAVqG,IAAuBA,EAAQ/P,KAAKwa,KAAKzK,OAC9BrG,SAAXsG,IAAwBA,EAAShQ,KAAKwa,KAAKxK,QACjCtG,SAAVwsB,IAAuBA,EAAQl2B,KAAKwa,KAAKC,MAE7C,IAAIiV,GAAQw6F,CAOZ,OALqB,gBAAVA,KAEPx6F,EAAQ1vB,KAAKyvI,cAAcvlB,IAGjB,OAAVx6F,GAAkBA,EAAQ1vB,KAAKgqH,OAAOniH,WAEtCO,SAAQG,KAAK,gDAAkDmnB,GAI9D8/G,EAEMt5G,EAAMrkB,IAAI,GAAIxR,GAAOqvI,eAAe1vI,KAAKwa,KAAMxa,KAAM0vB,EAAO3f,EAAOC,IAGvEkmB,EAAMrkB,IAAI,GAAIxR,GAAOouD,aAAazuD,KAAKwa,KAAMxa,KAAM0vB,EAAO3f,EAAOC,KAgB5Eo+H,iBAAkB,SAAUhjI,EAAM2E,EAAOC,EAAQkjD,EAAWC,EAAYj9B,GAIpE,GAFcxsB,SAAVwsB,IAAuBA,EAAQl2B,KAAKwa,KAAKC,OAEZ,OAA7Bza,KAAKyvI,cAAcrkI,GAGnB,WADAhD,SAAQG,KAAK,oEA0BjB,KAAK,GAHD24F,GAnBAgpB,GAEA9+G,KAAMA,EACNnF,EAAG,EACHwG,EAAG,EACHsD,MAAOA,EACPC,OAAQA,EACRs9H,cAAev9H,EAAQmjD,EACvBq6E,eAAgBv9H,EAASmjD,EACzB90C,MAAO,EACPxD,SAAS,EACTigE,cACA60D,WACA14F,aACAknF,UACA97F,KAAM,MAKNt0B,KAEKtB,EAAI,EAAOuD,EAAJvD,EAAYA,IAC5B,CACIy0F,IAEA,KAAK,GAAIj7F,GAAI,EAAO8J,EAAJ9J,EAAWA,IAGvBi7F,EAAItuF,KAAK,GAAIvS,GAAOusI,KAAK1iB,EAAO,GAAIjkH,EAAGwG,EAAGymD,EAAWC,GAGzDplD,GAAO6E,KAAKsuF,GAGhBgpB,EAAM7nF,KAAOt0B,EAEb/N,KAAKgqH,OAAOp3G,KAAKs3G,GAEjBlqH,KAAK4tI,aAAe5tI,KAAKgqH,OAAOniH,OAAS,CAEzC,IAAIyV,GAAI4sG,EAAMojB,cACV/vH,EAAI2sG,EAAMqjB,cAEVjwH,GAAItd,KAAKwa,KAAKzK,QAEduN,EAAItd,KAAKwa,KAAKzK,OAGdwN,EAAIvd,KAAKwa,KAAKxK,SAEduN,EAAIvd,KAAKwa,KAAKxK,OAGlB,IAAIjC,GAAS,GAAI1N,GAAOouD,aAAazuD,KAAKwa,KAAMxa,KAAMA,KAAKgqH,OAAOniH,OAAS,EAAGyV,EAAGC,EAGjF,OAFAxP,GAAO3C,KAAOA,EAEP8qB,EAAMrkB,IAAI9D,IAarB8jB,SAAU,SAAU2/D,EAAUpmF,GAE1B,IAAK,GAAItD,GAAI,EAAGA,EAAI0pF,EAAS3pF,OAAQC,IAEjC,GAAI0pF,EAAS1pF,GAAGsD,OAASA,EAErB,MAAOtD,EAIf,OAAO,OAWX2nI,cAAe,SAAUrkI,GAErB,MAAOpL,MAAK6xB,SAAS7xB,KAAKgqH,OAAQ5+G,IAWtCqjI,gBAAiB,SAAUrjI,GAEvB,MAAOpL,MAAK6xB,SAAS7xB,KAAKwtI,SAAUpiI,IAWxCwkI,cAAe,SAAUxkI,GAErB,MAAOpL,MAAK6xB,SAAS7xB,KAAKksG,OAAQ9gG,IAetCykI,qBAAsB,SAAUF,EAASt8G,EAAUtQ,EAAiBmnG,GAIhE,GAFAA,EAAQlqH,KAAK6iI,SAAS3Y,GAEC,gBAAZylB,GAIP3vI,KAAKgqH,OAAOE,GAAOjzE,UAAU04F,IAAat8G,SAAUA,EAAUtQ,gBAAiBA,OAI/E,KAAK,GAAIjb,GAAI,EAAGF,EAAM+nI,EAAQ9nI,OAAYD,EAAJE,EAASA,IAE3C9H,KAAKgqH,OAAOE,GAAOjzE,UAAU04F,EAAQ7nI,KAAQurB,SAAUA,EAAUtQ,gBAAiBA,IAoB9F+sH,wBAAyB,SAAU7pI,EAAGwG,EAAGsD,EAAOC,EAAQqjB,EAAUtQ,EAAiBmnG,GAM/E,GAJAA,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBlqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,KAE3BlqH,KAAK2kI,SAAS98H,OAAS,GAK3B,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK2kI,SAAS98H,OAAQC,IAEtC9H,KAAK2kI,SAAS78H,GAAGilI,qBAAqB15G,EAAUtQ,IAexDiqH,aAAc,SAAU2C,EAAS3M,EAAU9Y,EAAO6lB,GAO9C,GALiBrmI,SAAbs5H,IAA0BA,GAAW,GACrBt5H,SAAhBqmI,IAA6BA,GAAc,GAE/C7lB,EAAQlqH,KAAK6iI,SAAS3Y,GAEC,gBAAZylB,GAEP,MAAO3vI,MAAKgwI,oBAAoBL,EAAS3M,EAAU9Y,GAAO,EAEzD,IAAI1jH,MAAMa,QAAQsoI,GACvB,CAEI,IAAK,GAAI7nI,GAAI,EAAGA,EAAI6nI,EAAQ9nI,OAAQC,IAEhC9H,KAAKgwI,oBAAoBL,EAAQ7nI,GAAIk7H,EAAU9Y,GAAO,EAGtD6lB,IAGA/vI,KAAKiwI,eAAe/lB,KAkBhCgmB,oBAAqB,SAAUx/H,EAAOurB,EAAM+mG,EAAU9Y,EAAO6lB,GAOzD,GALiBrmI,SAAbs5H,IAA0BA,GAAW,GACrBt5H,SAAhBqmI,IAA6BA,GAAc,GAE/C7lB,EAAQlqH,KAAK6iI,SAAS3Y,KAElBx5G,EAAQurB,GAAZ,CAKA,IAAK,GAAIvM,GAAQhf,EAAgBurB,GAATvM,EAAeA,IAEnC1vB,KAAKgwI,oBAAoBtgH,EAAOszG,EAAU9Y,GAAO,EAGjD6lB,IAGA/vI,KAAKiwI,eAAe/lB,KAe5BimB,wBAAyB,SAAUR,EAAS3M,EAAU9Y,EAAO6lB,GAExCrmI,SAAbs5H,IAA0BA,GAAW,GACrBt5H,SAAhBqmI,IAA6BA,GAAc,GAE/C7lB,EAAQlqH,KAAK6iI,SAAS3Y,EAGtB,KAAK,GAAIpiH,GAAI,EAAGF,EAAM5H,KAAK0tI,MAAM7lI,OAAYD,EAAJE,EAASA,IAEnB,KAAvB6nI,EAAQt/G,QAAQvoB,IAEhB9H,KAAKgwI,oBAAoBloI,EAAGk7H,EAAU9Y,GAAO,EAIjD6lB,IAGA/vI,KAAKiwI,eAAe/lB,IAgB5B8lB,oBAAqB,SAAUtgH,EAAOszG,EAAU9Y,EAAO6lB,GAMnD,GAJiBrmI,SAAbs5H,IAA0BA,GAAW,GAC3Bt5H,SAAVwgH,IAAuBA,EAAQlqH,KAAK4tI,cACpBlkI,SAAhBqmI,IAA6BA,GAAc,GAE3C/M,EAEAhjI,KAAK2tI,eAAe/6H,KAAK8c,OAG7B,CACI,GAAI5nB,GAAI9H,KAAK2tI,eAAet9G,QAAQX,EAEhC5nB,GAAI,IAEJ9H,KAAK2tI,eAAexqH,OAAOrb,EAAG,GAItC,IAAK,GAAI2E,GAAI,EAAGA,EAAIzM,KAAKgqH,OAAOE,GAAOl6G,OAAQvD,IAE3C,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKgqH,OAAOE,GAAOn6G,MAAO9J,IAC9C,CACI,GAAIwyH,GAAOz4H,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAElCwyH,IAAQA,EAAK/oG,QAAUA,IAEnBszG,EAEAvK,EAAKuU,cAAa,GAAM,GAAM,GAAM,GAIpCvU,EAAKwU,iBAGTxU,EAAKO,QAAUgK,EACfvK,EAAKQ,WAAa+J,EAClBvK,EAAKK,SAAWkK,EAChBvK,EAAKM,UAAYiK,GAW7B,MANI+M,IAGA/vI,KAAKiwI,eAAe/lB,GAGjBA,GAYX2Y,SAAU,SAAU3Y,GAehB,MAbcxgH,UAAVwgH,EAEAA,EAAQlqH,KAAK4tI,aAES,gBAAV1jB,GAEZA,EAAQlqH,KAAKyvI,cAAcvlB,GAEtBA,YAAiB7pH,GAAOouD,eAE7By7D,EAAQA,EAAMx6F,OAGXw6F,GAWXkmB,sBAAuB,SAAU7mI,GAQ7B,GANIA,KAAU,GAAQvJ,KAAKqwI,yBAA0B,IAEjDrwI,KAAKqwI,uBAAwB,EAC7BrwI,KAAKswI,sBAGL/mI,KAAU,GAASvJ,KAAKqwI,yBAA0B,EACtD,CACIrwI,KAAKqwI,uBAAwB,CAE7B,KAAK,GAAIvoI,KAAK9H,MAAKswI,kBAEftwI,KAAKiwI,eAAenoI,EAGxB9H,MAAKswI,mBAAoB,IAYjCL,eAAgB,SAAU/lB,GAEtB,GAAIlqH,KAAKqwI,sBAGL,YADArwI,KAAKswI,kBAAkBpmB,IAAS,EASpC,KAAK,GALDqmB,GAAQ,KACRC,EAAQ,KACR3lI,EAAO,KACPD,EAAQ,KAEH6B,EAAI,EAAG8Q,EAAIvd,KAAKgqH,OAAOE,GAAOl6G,OAAYuN,EAAJ9Q,EAAOA,IAElD,IAAK,GAAIxG,GAAI,EAAGqX,EAAItd,KAAKgqH,OAAOE,GAAOn6G,MAAWuN,EAAJrX,EAAOA,IACrD,CACI,GAAIwyH,GAAOz4H,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAElCwyH,KAEA8X,EAAQvwI,KAAKywI,aAAavmB,EAAOjkH,EAAGwG,GACpC+jI,EAAQxwI,KAAK0wI,aAAaxmB,EAAOjkH,EAAGwG,GACpC5B,EAAO7K,KAAK2wI,YAAYzmB,EAAOjkH,EAAGwG,GAClC7B,EAAQ5K,KAAKijI,aAAa/Y,EAAOjkH,EAAGwG,GAEhCgsH,EAAKuK,WAELvK,EAAKO,SAAU,EACfP,EAAKQ,YAAa,EAClBR,EAAKK,UAAW,EAChBL,EAAKM,WAAY,GAGjBwX,GAASA,EAAMvN,WAGfvK,EAAKO,SAAU,GAGfwX,GAASA,EAAMxN,WAGfvK,EAAKQ,YAAa,GAGlBpuH,GAAQA,EAAKm4H,WAGbvK,EAAKK,UAAW,GAGhBluH,GAASA,EAAMo4H,WAGfvK,EAAKM,WAAY,MAiBrC0X,aAAc,SAAUvmB,EAAOjkH,EAAGwG,GAE9B,MAAIA,GAAI,EAEGzM,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,EAAI,GAAGxG,GAGnC,MAaXyqI,aAAc,SAAUxmB,EAAOjkH,EAAGwG,GAE9B,MAAIA,GAAIzM,KAAKgqH,OAAOE,GAAOl6G,OAAS,EAEzBhQ,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,EAAI,GAAGxG,GAGnC,MAaX0qI,YAAa,SAAUzmB,EAAOjkH,EAAGwG,GAE7B,MAAIxG,GAAI,EAEGjG,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAAI,GAGnC,MAaXg9H,aAAc,SAAU/Y,EAAOjkH,EAAGwG,GAE9B,MAAIxG,GAAIjG,KAAKgqH,OAAOE,GAAOn6G,MAAQ,EAExB/P,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAAI,GAGnC,MAUX2qI,SAAU,SAAU1mB,GAEhBA,EAAQlqH,KAAK6iI,SAAS3Y,GAElBlqH,KAAKgqH,OAAOE,KAEZlqH,KAAK4tI,aAAe1jB,IAc5B2mB,QAAS,SAAU5qI,EAAGwG,EAAGy9G,GAGrB,MADAA,GAAQlqH,KAAK6iI,SAAS3Y,GACaxgH,SAA/B1J,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,IAAsD/C,SAAlC1J,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,IAChE,EAEHjG,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAGypB,MAAQ,IAYlDohH,WAAY,SAAU7qI,EAAGwG,EAAGy9G,GAIxB,GAFAA,EAAQlqH,KAAK6iI,SAAS3Y,GAElBjkH,GAAK,GAAKA,EAAIjG,KAAKgqH,OAAOE,GAAOn6G,OAAStD,GAAK,GAAKA,EAAIzM,KAAKgqH,OAAOE,GAAOl6G,QAEvEhQ,KAAK6wI,QAAQ5qI,EAAGwG,EAAGy9G,GACvB,CACI,GAAIuO,GAAOz4H,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAQtC,OANAjG,MAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAK,GAAI5F,GAAOusI,KAAK5sI,KAAKgqH,OAAOE,GAAQ,GAAIjkH,EAAGwG,EAAGzM,KAAKkzD,UAAWlzD,KAAKmzD,YAEnGnzD,KAAKgqH,OAAOE,GAAOziG,OAAQ,EAE3BznB,KAAKiwI,eAAe/lB,GAEbuO,IAiBnBsY,kBAAmB,SAAU9qI,EAAGwG,EAAGymD,EAAWC,EAAY+2D,GAOtD,MALAA,GAAQlqH,KAAK6iI,SAAS3Y,GAEtBjkH,EAAIjG,KAAKwa,KAAK0E,KAAKutE,YAAYxmF,EAAGitD,GAAaA,EAC/CzmD,EAAIzM,KAAKwa,KAAK0E,KAAKutE,YAAYhgF,EAAG0mD,GAAcA,EAEzCnzD,KAAK8wI,WAAW7qI,EAAGwG,EAAGy9G,IAejC8mB,QAAS,SAAUvY,EAAMxyH,EAAGwG,EAAGy9G,GAE3B,GAAa,OAATuO,EAEA,MAAOz4H,MAAK8wI,WAAW7qI,EAAGwG,EAAGy9G,EAKjC,IAFAA,EAAQlqH,KAAK6iI,SAAS3Y,GAElBjkH,GAAK,GAAKA,EAAIjG,KAAKgqH,OAAOE,GAAOn6G,OAAStD,GAAK,GAAKA,EAAIzM,KAAKgqH,OAAOE,GAAOl6G,OAC/E,CACI,GAAI0f,EA0CJ,OAxCI+oG,aAAgBp4H,GAAOusI,MAEvBl9G,EAAQ+oG,EAAK/oG,MAET1vB,KAAK6wI,QAAQ5qI,EAAGwG,EAAGy9G,GAEnBlqH,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAGqF,KAAKmtH,GAInCz4H,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAK,GAAI5F,GAAOusI,KAAK1iB,EAAOx6F,EAAOzpB,EAAGwG,EAAGgsH,EAAK1oH,MAAO0oH,EAAKzoH,UAKzF0f,EAAQ+oG,EAEJz4H,KAAK6wI,QAAQ5qI,EAAGwG,EAAGy9G,GAEnBlqH,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAGypB,MAAQA,EAItC1vB,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAK,GAAI5F,GAAOusI,KAAK5sI,KAAKgqH,OAAOE,GAAQx6F,EAAOzpB,EAAGwG,EAAGzM,KAAKkzD,UAAWlzD,KAAKmzD,aAI1GnzD,KAAK2tI,eAAet9G,QAAQX,GAAS,GAErC1vB,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAG+mI,cAAa,GAAM,GAAM,GAAM,GAI7DhtI,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAGgnI,iBAGlCjtI,KAAKgqH,OAAOE,GAAOziG,OAAQ,EAE3BznB,KAAKiwI,eAAe/lB,GAEblqH,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAGtC,MAAO,OAgBXgrI,eAAgB,SAAUxY,EAAMxyH,EAAGwG,EAAGymD,EAAWC,EAAY+2D,GAOzD,MALAA,GAAQlqH,KAAK6iI,SAAS3Y,GAEtBjkH,EAAIjG,KAAKwa,KAAK0E,KAAKutE,YAAYxmF,EAAGitD,GAAaA,EAC/CzmD,EAAIzM,KAAKwa,KAAK0E,KAAKutE,YAAYhgF,EAAG0mD,GAAcA,EAEzCnzD,KAAKgxI,QAAQvY,EAAMxyH,EAAGwG,EAAGy9G,IAiBpCgnB,gBAAiB,SAAUxhH,EAAOyhH,EAAMvoI,EAASshH,GAEhCxgH,SAATynI,IAAsBA,EAAO,GACjBznI,SAAZd,IAAyBA,GAAU,GAEvCshH,EAAQlqH,KAAK6iI,SAAS3Y,EAEtB,IAAIj7G,GAAI,CAER,IAAIrG,GAEA,IAAK,GAAI6D,GAAIzM,KAAKgqH,OAAOE,GAAOl6G,OAAS,EAAGvD,GAAK,EAAGA,IAEhD,IAAK,GAAIxG,GAAIjG,KAAKgqH,OAAOE,GAAOn6G,MAAQ,EAAG9J,GAAK,EAAGA,IAE/C,GAAIjG,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAGypB,QAAUA,EAC5C,CACI,GAAIzgB,IAAMkiI,EAEN,MAAOnxI,MAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAIlCgJ,UAQhB,KAAK,GAAIxC,GAAI,EAAGA,EAAIzM,KAAKgqH,OAAOE,GAAOl6G,OAAQvD,IAE3C,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKgqH,OAAOE,GAAOn6G,MAAO9J,IAE1C,GAAIjG,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAGypB,QAAUA,EAC5C,CACI,GAAIzgB,IAAMkiI,EAEN,MAAOnxI,MAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,EAIlCgJ,KAOpB,MAAO,OAcXmiI,QAAS,SAAUnrI,EAAGwG,EAAGy9G,EAAOmnB,GAM5B,MAJgB3nI,UAAZ2nI,IAAyBA,GAAU,GAEvCnnB,EAAQlqH,KAAK6iI,SAAS3Y,GAElBjkH,GAAK,GAAKA,EAAIjG,KAAKgqH,OAAOE,GAAOn6G,OAAStD,GAAK,GAAKA,EAAIzM,KAAKgqH,OAAOE,GAAOl6G,OAE/B,KAAxChQ,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAAGypB,MAE1B2hH,EAEOrxI,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAI3B,KAKJjG,KAAKgqH,OAAOE,GAAO7nF,KAAK51B,GAAGxG,GAK/B,MAiBfqrI,eAAgB,SAAUrrI,EAAGwG,EAAGymD,EAAWC,EAAY+2D,EAAOmnB,GAU1D,MARkB3nI,UAAdwpD,IAA2BA,EAAYlzD,KAAKkzD,WAC7BxpD,SAAfypD,IAA4BA,EAAanzD,KAAKmzD,YAElD+2D,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBjkH,EAAIjG,KAAKwa,KAAK0E,KAAKutE,YAAYxmF,EAAGitD,GAAaA,EAC/CzmD,EAAIzM,KAAKwa,KAAK0E,KAAKutE,YAAYhgF,EAAG0mD,GAAcA,EAEzCnzD,KAAKoxI,QAAQnrI,EAAGwG,EAAGy9G,EAAOmnB,IAerC/lI,KAAM,SAAUrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAIjC,GAFAA,EAAQlqH,KAAK6iI,SAAS3Y,IAEjBlqH,KAAKgqH,OAAOE,GAGb,YADAlqH,KAAK2kI,SAAS98H,OAAS,EAIjB6B,UAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GACb/C,SAAVqG,IAAuBA,EAAQ/P,KAAKgqH,OAAOE,GAAOn6G,OACvCrG,SAAXsG,IAAwBA,EAAShQ,KAAKgqH,OAAOE,GAAOl6G,QAEhD,EAAJ/J,IAEAA,EAAI,GAGA,EAAJwG,IAEAA,EAAI,GAGJsD,EAAQ/P,KAAKgqH,OAAOE,GAAOn6G,QAE3BA,EAAQ/P,KAAKgqH,OAAOE,GAAOn6G,OAG3BC,EAAShQ,KAAKgqH,OAAOE,GAAOl6G,SAE5BA,EAAShQ,KAAKgqH,OAAOE,GAAOl6G,QAGhChQ,KAAK2kI,SAAS98H,OAAS,EAEvB7H,KAAK2kI,SAAS/xH,MAAO3M,EAAGA,EAAGwG,EAAGA,EAAGsD,MAAOA,EAAOC,OAAQA,EAAQk6G,MAAOA,GAEtE,KAAK,GAAIt4G,GAAKnF,EAAQA,EAAIuD,EAAT4B,EAAiBA,IAE9B,IAAK,GAAID,GAAK1L,EAAQA,EAAI8J,EAAT4B,EAAgBA,IAE7B3R,KAAK2kI,SAAS/xH,KAAK5S,KAAKgqH,OAAOE,GAAO7nF,KAAKzwB,GAAID,GAIvD,OAAO3R,MAAK2kI,UAahB4M,MAAO,SAAUtrI,EAAGwG,EAAG+kI,EAAWtnB,GAO9B,GALUxgH,SAANzD,IAAmBA,EAAI,GACjByD,SAAN+C,IAAmBA,EAAI,GAE3By9G,EAAQlqH,KAAK6iI,SAAS3Y,GAEjBsnB,KAAaA,EAAU3pI,OAAS,GAArC,CASA,IAAK,GAHDi4E,GAAQ75E,EAAIurI,EAAU,GAAGvrI,EACzB85E,EAAQtzE,EAAI+kI,EAAU,GAAG/kI,EAEpB3E,EAAI,EAAGA,EAAI0pI,EAAU3pI,OAAQC,IAElC9H,KAAKgqH,OAAOE,GAAO7nF,KAAM09C,EAAQyxD,EAAU1pI,GAAG2E,GAAKqzE,EAAQ0xD,EAAU1pI,GAAG7B,GAAIqF,KAAKkmI,EAAU1pI,GAGrG9H,MAAKgqH,OAAOE,GAAOziG,OAAQ,EACrBznB,KAAKiwI,eAAe/lB,KAgBxB14F,KAAM,SAAUigH,EAAOC,EAAOzrI,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAE/CA,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBlqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAE3BlqH,KAAK2kI,SAAS98H,OAAS,IAK3B7H,KAAK8tI,OAAS2D,EACdzxI,KAAK+4D,OAAS24E,EAEd1xI,KAAK2kI,SAASl9H,QAAQzH,KAAK2xI,YAAa3xI,MAExCA,KAAKuxI,MAAMtrI,EAAGwG,EAAGzM,KAAK2kI,SAAUza,KAWpCynB,YAAa,SAAUpoI,GAEfA,EAAMmmB,QAAU1vB,KAAK8tI,OAGrBvkI,EAAMmmB,MAAQ1vB,KAAK+4D,OAEdxvD,EAAMmmB,QAAU1vB,KAAK+4D,SAG1BxvD,EAAMmmB,MAAQ1vB,KAAK8tI,SAiB3BrmI,QAAS,SAAU4rB,EAAUhP,EAASpe,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAEvDA,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBlqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAE3BlqH,KAAK2kI,SAAS98H,OAAS,IAK3B7H,KAAK2kI,SAASl9H,QAAQ4rB,EAAUhP,GAEhCrkB,KAAKuxI,MAAMtrI,EAAGwG,EAAGzM,KAAK2kI,SAAUza,KAgBpCt+G,QAAS,SAAU8B,EAAQE,EAAM3H,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAMlD,GAJAA,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBlqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,KAE3BlqH,KAAK2kI,SAAS98H,OAAS,GAA3B,CAKA,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK2kI,SAAS98H,OAAQC,IAElC9H,KAAK2kI,SAAS78H,GAAG4nB,QAAUhiB,IAE3B1N,KAAK2kI,SAAS78H,GAAG4nB,MAAQ9hB,EAIjC5N,MAAKuxI,MAAMtrI,EAAGwG,EAAGzM,KAAK2kI,SAAUza,KAcpCvgH,OAAQ,SAAU1D,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAMnC,GAJAA,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBlqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,KAE3BlqH,KAAK2kI,SAAS98H,OAAS,GAA3B,CAOA,IAAK,GAFD8nI,MAEKhoI,EAAI,EAAGA,EAAI3H,KAAK2kI,SAAS98H,OAAQF,IAEtC,GAAI3H,KAAK2kI,SAASh9H,GAAG+nB,MACrB,CACI,GAAI2rD,GAAMr7E,KAAK2kI,SAASh9H,GAAG+nB,KAEE,MAAzBigH,EAAQt/G,QAAQgrD,IAEhBs0D,EAAQ/8H,KAAKyoE,GAKzB,IAAK,GAAIvzE,GAAI,EAAGA,EAAI9H,KAAK2kI,SAAS98H,OAAQC,IAEtC9H,KAAK2kI,SAAS78H,GAAG4nB,MAAQ1vB,KAAKwa,KAAKsE,IAAIwxE,KAAKq/C,EAGhD3vI,MAAKuxI,MAAMtrI,EAAGwG,EAAGzM,KAAK2kI,SAAUza,KAcpCvD,QAAS,SAAU1gH,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAMpC,GAJAA,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBlqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,KAE3BlqH,KAAK2kI,SAAS98H,OAAS,GAA3B,CAOA,IAAK,GAFD8nI,MAEKhoI,EAAI,EAAGA,EAAI3H,KAAK2kI,SAAS98H,OAAQF,IAElC3H,KAAK2kI,SAASh9H,GAAG+nB,OAEjBigH,EAAQ/8H,KAAK5S,KAAK2kI,SAASh9H,GAAG+nB,MAItCrvB,GAAOw1B,WAAW8wF,QAAQgpB,EAE1B,KAAK,GAAI7nI,GAAI,EAAGA,EAAI9H,KAAK2kI,SAAS98H,OAAQC,IAEtC9H,KAAK2kI,SAAS78H,GAAG4nB,MAAQigH,EAAQ7nI,EAAI,EAGzC9H,MAAKuxI,MAAMtrI,EAAGwG,EAAGzM,KAAK2kI,SAAUza,KAepC5nF,KAAM,SAAU5S,EAAOzpB,EAAGwG,EAAGsD,EAAOC,EAAQk6G,GAMxC,GAJAA,EAAQlqH,KAAK6iI,SAAS3Y,GAEtBlqH,KAAKsL,KAAKrF,EAAGwG,EAAGsD,EAAOC,EAAQk6G,KAE3BlqH,KAAK2kI,SAAS98H,OAAS,GAA3B,CAKA,IAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAK2kI,SAAS98H,OAAQC,IAEtC9H,KAAK2kI,SAAS78H,GAAG4nB,MAAQA,CAG7B1vB,MAAKuxI,MAAMtrI,EAAGwG,EAAGzM,KAAK2kI,SAAUza,KASpC0nB,gBAAiB,WAEb5xI,KAAKgqH,OAAOniH,OAAS,EACrB7H,KAAK4tI,aAAe,GASxBiE,KAAM,WAKF,IAAK,GAHDC,GAAM,GACNnrI,GAAQ,IAEH8F,EAAI,EAAGA,EAAIzM,KAAKgqH,OAAOhqH,KAAK4tI,cAAc59H,OAAQvD,IAC3D,CACI,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKgqH,OAAOhqH,KAAK4tI,cAAc79H,MAAO9J,IAEtD6rI,GAAO,OAEH9xI,KAAKgqH,OAAOhqH,KAAK4tI,cAAcvrG,KAAK51B,GAAGxG,GAAK,EAExCjG,KAAK6tI,SAAS7tI,KAAKgqH,OAAOhqH,KAAK4tI,cAAcvrG,KAAK51B,GAAGxG,IAErDU,EAAKiM,KAAK,eAAiB5S,KAAK6tI,SAAS7tI,KAAKgqH,OAAOhqH,KAAK4tI,cAAcvrG,KAAK51B,GAAGxG,KAIhFU,EAAKiM,KAAK,uBAKdjM,EAAKiM,KAAK,2BAIlBk/H,IAAO,KAGXnrI,EAAK,GAAKmrI,EACV1pI,QAAQC,IAAIpB,MAAMmB,QAASzB,IAU/Bmd,QAAS,WAEL9jB,KAAK4xI,kBACL5xI,KAAKqiC,QACLriC,KAAKwa,KAAO,OAMpBna,EAAOmuD,QAAQnoD,UAAU8B,YAAc9H,EAAOmuD,QAM9CjnD,OAAO2E,eAAe7L,EAAOmuD,QAAQnoD,UAAW,SAE5C2F,IAAK,WAED,MAAOhM,MAAKgqH,OAAOhqH,KAAK4tI,eAI5B3hI,IAAK,SAAU1C,GAEPA,IAAUvJ,KAAK4tI,cAEf5tI,KAAK4wI,SAASrnI,MA6B1BlJ,EAAOouD,aAAe,SAAUj0C,EAAMy4C,EAASvjC,EAAO3f,EAAOC,GAEzDD,GAAS,EACTC,GAAU,EAEV3P,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAM,EAAG,GAQlCxa,KAAKyiI,IAAMxvE,EAQXjzD,KAAK0vB,MAAQA,EAQb1vB,KAAKkqH,MAAQj3D,EAAQ+2D,OAAOt6F,GAO5B1vB,KAAKsrB,OAASxlB,KAAKw6B,WAAW5f,OAAO1gB,KAAM+P,EAAOC,GAOlDhQ,KAAKqkB,QAAUrkB,KAAKsrB,OAAOiV,WAAW,MAEtCvgC,KAAKiuD,WAAW,GAAInoD,MAAK4oD,QAAQ,GAAI5oD,MAAKgyD,YAAY93D,KAAKsrB,UAS3DtrB,KAAKkI,KAAO7H,EAAOsB,aAMnB3B,KAAK+tB,YAAc1tB,EAAOsB,aAe1B3B,KAAK+xI,gBACDC,mBAAmB,EACnBC,cAAe,GACfC,WAAY,MAShBlyI,KAAK6jB,OAAQ,EAKb7jB,KAAKwqB,QAAS,EAkBdxqB,KAAKmyI,eAEDC,iBAAkB,mBAClBC,qBAAsB,oBAEtBC,iBAAiB,EAEjBC,WAAY,GACZC,iBAAkB,kBAClBC,sBAAuB,qBAU3BzyI,KAAK0yI,cAAgB,EAQrB1yI,KAAK2yI,cAAgB,EAOrB3yI,KAAKynB,OAAQ,EAObznB,KAAK4yI,YAAc,EAOnB5yI,KAAK6yI,OAAQ,EAOb7yI,KAAK8yI,KAGD7tB,QAAS,EACTF,QAAS,EACTguB,YAAa,EACbC,aAAc,EAEd9/E,UAAWD,EAAQC,UACnBC,WAAYF,EAAQE,WAKpBlK,GAAIgK,EAAQC,UACZhK,GAAI+J,EAAQE,WAGZq6E,aASJxtI,KAAKizI,SAAW,EAOhBjzI,KAAKkzI,SAAW,EAOhBlzI,KAAK2kI,YAEAnqH,EAAKkS,OAAOo1D,oBAEb9hF,KAAK+xI,eAAeG,WAAa7xI,EAAOouD,aAAa0kF,0BAGzDnzI,KAAK+uB,eAAgB,GAIzB1uB,EAAOouD,aAAapoD,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WAC5DhG,EAAOouD,aAAapoD,UAAU8B,YAAc9H,EAAOouD,aAEnDpuD,EAAOouD,aAAapoD,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UAQpE3c,EAAOouD,aAAa2kF,iBAAmB,KAWvC/yI,EAAOouD,aAAa0kF,uBAAyB,WAOzC,MALKnzI,MAAKozI,mBAENpzI,KAAKozI,iBAAmB/yI,EAAOkrB,OAAO7K,OAAO,EAAG,IAG7C1gB,KAAKozI,kBAShB/yI,EAAOouD,aAAapoD,UAAU2W,UAAY,WAEtC,MAAOhd,MAAKg0D,iBAUhB3zD,EAAOouD,aAAapoD,UAAU+jB,WAAa,WAEnCpqB,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,GAG/FzM,KAAKizI,SAAWjzI,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAK0yI,cAAgB1yI,KAAK6U,MAAM5O,EAC1EjG,KAAKkzI,SAAWlzI,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAK2yI,cAAgB3yI,KAAK6U,MAAMpI,GAW9EpM,EAAOouD,aAAapoD,UAAU6/D,cAAgB,SAAU1O,GAEhDx3D,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,GAG/FzM,KAAKizI,SAAWjzI,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAK0yI,cAAgB1yI,KAAK6U,MAAM5O,EAC1EjG,KAAKkzI,SAAWlzI,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAK2yI,cAAgB3yI,KAAK6U,MAAMpI,EAE1EzM,KAAK4gB,SAEL9a,KAAKsoB,OAAO/nB,UAAU6/D,cAAcp/D,KAAK9G,KAAMw3D,IAWnDn3D,EAAOouD,aAAapoD,UAAUu+D,aAAe,SAAUpN,GAE/Cx3D,KAAK+uB,gBAEL/uB,KAAKuZ,SAAStT,GAAKjG,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAKgvB,aAAa/oB,GAAKjG,KAAKwa,KAAKoC,OAAO/H,MAAM5O,EAC3FjG,KAAKuZ,SAAS9M,GAAKzM,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAKgvB,aAAaviB,GAAKzM,KAAKwa,KAAKoC,OAAO/H,MAAMpI,GAG/FzM,KAAKizI,SAAWjzI,KAAKwa,KAAKoC,OAAOlC,KAAKzU,EAAIjG,KAAK0yI,cAAgB1yI,KAAK6U,MAAM5O,EAC1EjG,KAAKkzI,SAAWlzI,KAAKwa,KAAKoC,OAAOlC,KAAKjO,EAAIzM,KAAK2yI,cAAgB3yI,KAAK6U,MAAMpI,EAE1EzM,KAAK4gB,SAEL9a,KAAKsoB,OAAO/nB,UAAUu+D,aAAa99D,KAAK9G,KAAMw3D,IASlDn3D,EAAOouD,aAAapoD,UAAUyd,QAAU,WAEpChe,KAAKw6B,WAAWxd,OAAO9iB,MAEvBK,EAAOqmD,UAAU2C,QAAQhjD,UAAUyd,QAAQhd,KAAK9G,OAiBpDK,EAAOouD,aAAapoD,UAAUyS,OAAS,SAAU/I,EAAOC,GAEpDhQ,KAAKsrB,OAAOvb,MAAQA,EACpB/P,KAAKsrB,OAAOtb,OAASA,EAErBhQ,KAAKmiC,QAAQzR,MAAM5X,OAAO/I,EAAOC,GAEjChQ,KAAKmiC,QAAQpyB,MAAQA,EACrB/P,KAAKmiC,QAAQnyB,OAASA,EAEtBhQ,KAAKmiC,QAAQyQ,KAAK7iC,MAAQA,EAC1B/P,KAAKmiC,QAAQyQ,KAAK5iC,OAASA,EAE3BhQ,KAAKmiC,QAAQuQ,YAAY3iC,MAAQA,EACjC/P,KAAKmiC,QAAQuQ,YAAY1iC,OAASA,EAElChQ,KAAKmiC,QAAQuQ,YAAYjrB,QACzBznB,KAAKmiC,QAAQkxG,gBAAiB,EAE9BrzI,KAAKmiC,QAAQgnB,aAEbnpD,KAAKynB,OAAQ,GAUjBpnB,EAAOouD,aAAapoD,UAAUitI,YAAc,WAExCtzI,KAAKwa,KAAKC,MAAMqc,UAAU,EAAG,EAAG92B,KAAKkqH,MAAMojB,cAAgBttI,KAAK6U,MAAM5O,EAAGjG,KAAKkqH,MAAMqjB,eAAiBvtI,KAAK6U,MAAMpI,IAYpHpM,EAAOouD,aAAapoD,UAAUktI,MAAQ,SAAUttI,GAE5C,MAA2B,KAAvBjG,KAAK0yI,eAA+C,IAAvB1yI,KAAK0yI,eAA2C,IAApB1yI,KAAKuZ,SAAStT,EAEhEA,EAIgB,IAAvBjG,KAAK0yI,eAA2C,IAApB1yI,KAAKuZ,SAAStT,EAEnCA,EAAIjG,KAAKuZ,SAAStT,EAGtBjG,KAAKizI,UAAYhtI,EAAKjG,KAAKizI,SAAWjzI,KAAK0yI,gBAYtDryI,EAAOouD,aAAapoD,UAAUmtI,QAAU,SAAUvtI,GAE9C,MAA2B,KAAvBjG,KAAK0yI,cAEEzsI,EAGHjG,KAAKizI,SAAWjzI,KAAK0yI,eAAkBzsI,EAAIjG,KAAKizI,WAY5D5yI,EAAOouD,aAAapoD,UAAUotI,MAAQ,SAAUhnI,GAE5C,MAA2B,KAAvBzM,KAAK2yI,eAA+C,IAAvB3yI,KAAK2yI,eAA2C,IAApB3yI,KAAKuZ,SAAS9M,EAEhEA,EAIgB,IAAvBzM,KAAK2yI,eAA2C,IAApB3yI,KAAKuZ,SAAS9M,EAEnCA,EAAIzM,KAAKuZ,SAAS9M,EAGtBzM,KAAKkzI,UAAYzmI,EAAKzM,KAAKkzI,SAAWlzI,KAAK2yI,gBAYtDtyI,EAAOouD,aAAapoD,UAAUqtI,QAAU,SAAUjnI,GAE9C,MAA2B,KAAvBzM,KAAK2yI,cAEElmI,EAGHzM,KAAKkzI,SAAWlzI,KAAK2yI,eAAkBlmI,EAAIzM,KAAKkzI,WAY5D7yI,EAAOouD,aAAapoD,UAAUstI,SAAW,SAAU1tI,GAG/C,MAAOF,MAAKI,MAAMnG,KAAKuzI,MAAMttI,GAAKjG,KAAK8yI,IAAI5/E,YAY/C7yD,EAAOouD,aAAapoD,UAAUutI,SAAW,SAAUnnI,GAG/C,MAAO1G,MAAKI,MAAMnG,KAAKyzI,MAAMhnI,GAAKzM,KAAK8yI,IAAI3/E,aAc/C9yD,EAAOouD,aAAapoD,UAAUwtI,UAAY,SAAU5tI,EAAGwG,EAAG+B,GAKtD,MAHAA,GAAMvI,EAAIjG,KAAK2zI,SAAS1tI,GACxBuI,EAAM/B,EAAIzM,KAAK4zI,SAASnnI,GAEjB+B,GAeXnO,EAAOouD,aAAapoD,UAAUytI,gBAAkB,SAAU1iI,EAAMmB,EAAUywH,EAAU+Q,GAE3ExhI,IAAYA,EAAWvS,KAAK4yI,aAChBlpI,SAAbs5H,IAA0BA,GAAW,GACjBt5H,SAApBqqI,IAAiCA,GAAkB,EAGvD,IAAIrG,GAAQ1tI,KAAKu4H,SAASnnH,EAAKnL,EAAGmL,EAAK3E,EAAG2E,EAAKrB,MAAOqB,EAAKpB,OAAQgzH,EAAU+Q,EAE7E,IAAqB,IAAjBrG,EAAM7lI,OAEN,QAOJ,KAAK,GAHDy9G,GAASl0G,EAAKkB,kBAAkBC,GAChCC,KAEK1K,EAAI,EAAGA,EAAI4lI,EAAM7lI,OAAQC,IAE9B,IAAK,GAAIH,GAAI,EAAGA,EAAI29G,EAAOz9G,OAAQF,IACnC,CACI,GAAI8wH,GAAOiV,EAAM5lI,GACbksI,EAAQ1uB,EAAO39G,EACnB,IAAI8wH,EAAK1+G,cAAci6H,EAAM,GAAIA,EAAM,IACvC,CACIxhI,EAAQI,KAAK6lH,EACb,QAKZ,MAAOjmH,IAiBXnS,EAAOouD,aAAapoD,UAAUkyH,SAAW,SAAUtyH,EAAGwG,EAAGsD,EAAOC,EAAQgzH,EAAU+Q,GAG7DrqI,SAAbs5H,IAA0BA,GAAW,GACjBt5H,SAApBqqI,IAAiCA,GAAkB,EAEvD,IAAIE,KAAajR,GAAY+Q,EAG7B9tI,GAAIjG,KAAKuzI,MAAMttI,GACfwG,EAAIzM,KAAKyzI,MAAMhnI,EASf,KANA,GAAIkF,GAAK5L,KAAKI,MAAMF,GAAKjG,KAAK8yI,IAAI7pF,GAAKjpD,KAAK6U,MAAM5O,IAC9C2L,EAAK7L,KAAKI,MAAMsG,GAAKzM,KAAK8yI,IAAI5pF,GAAKlpD,KAAK6U,MAAMpI,IAE9CynI,EAAKnuI,KAAKG,MAAMD,EAAI8J,IAAU/P,KAAK8yI,IAAI7pF,GAAKjpD,KAAK6U,MAAM5O,IAAM0L,EAC7DwiI,EAAKpuI,KAAKG,MAAMuG,EAAIuD,IAAWhQ,KAAK8yI,IAAI5pF,GAAKlpD,KAAK6U,MAAMpI,IAAMmF,EAE3D5R,KAAK2kI,SAAS98H,QAEjB7H,KAAK2kI,SAASx7H,KAGlB,KAAK,GAAIirI,GAAKxiI,EAASA,EAAKuiI,EAAVC,EAAcA,IAE5B,IAAK,GAAIC,GAAK1iI,EAASA,EAAKuiI,EAAVG,EAAcA,IAChC,CACI,GAAInzC,GAAMlhG,KAAKkqH,MAAM7nF,KAAK+xG,EAEtBlzC,IAAOA,EAAImzC,KAEPJ,GAAY/yC,EAAImzC,GAAInH,cAAclK,EAAU+Q,KAE5C/zI,KAAK2kI,SAAS/xH,KAAKsuF,EAAImzC,IAMvC,MAAOr0I,MAAK2kI,SAASp+H,SAazBlG,EAAOouD,aAAapoD,UAAUiuI,eAAiB,SAAUC,GAErD,GAAI/G,GAAWxtI,KAAK8yI,IAAItF,QAGxB,IAAgB,IAAZ+G,EAEA,KAAO/G,EAAS3lI,OAAS0sI,GAErB/G,EAAS56H,KAAKlJ,OAItB,IAAI8qI,GAAWx0I,KAAKyiI,IAAIiL,MAAM6G,IAAcv0I,KAAKyiI,IAAIiL,MAAM6G,GAAW,EAEtE,IAAgB,MAAZC,EACJ,CACI,GAAIlG,GAAUtuI,KAAKyiI,IAAI+K,SAASgH,EAEhC,IAAIlG,GAAWA,EAAQmG,kBAAkBF,GAErC,MAAQ/G,GAAS+G,GAAajG,EAItC,MAAQd,GAAS+G,GAAa,MAYlCl0I,EAAOouD,aAAapoD,UAAUquI,kBAAoB,WAI9C,IAFA,GAAIlH,GAAWxtI,KAAK8yI,IAAItF,SAEjBA,EAAS3lI,QAEZ2lI,EAASrkI,OAYjB9I,EAAOouD,aAAapoD,UAAUsuI,SAAW,SAAUC,EAAQC,GAEvDD,EAASA,GAAU,EACnBC,EAASA,GAAUD,CAEnB,KAAK,GAAInoI,GAAI,EAAGA,EAAIzM,KAAKkqH,MAAM7nF,KAAKx6B,OAAQ4E,IAIxC,IAAK,GAFDy0F,GAAMlhG,KAAKkqH,MAAM7nF,KAAK51B,GAEjBxG,EAAI,EAAGA,EAAIi7F,EAAIr5F,OAAQ5B,IAChC,CACI,GAAIwyH,GAAOv3B,EAAIj7F,EAEfwyH,GAAK1oH,MAAQ/P,KAAKyiI,IAAIvvE,UAAY0hF,EAClCnc,EAAKzoH,OAAShQ,KAAKyiI,IAAItvE,WAAa0hF,EAEpCpc,EAAK3V,OAAS2V,EAAKxyH,EAAIwyH,EAAK1oH,MAC5B0oH,EAAK1V,OAAS0V,EAAKhsH,EAAIgsH,EAAKzoH,OAIpChQ,KAAK6U,MAAMrH,MAAMonI,EAAQC,IAe7Bx0I,EAAOouD,aAAapoD,UAAUyuI,YAAc,SAAUzwH,EAASpe,EAAGwG,GAE9D,GAAI6e,GAASjH,EAAQiH,OACjBypH,EAAQzpH,EAAOvb,MAAQhK,KAAKoJ,IAAIlJ,GAChC+uI,EAAQ1pH,EAAOtb,OAASjK,KAAKoJ,IAAI1C,GAGjC4B,EAAK,EACLC,EAAK,EACLmE,EAAKxM,EACLyM,EAAKjG,CAED,GAAJxG,IAEAoI,GAAMpI,EACNwM,EAAK,GAGD,EAAJhG,IAEA6B,GAAM7B,EACNiG,EAAK,EAGT,IAAIw/H,GAAalyI,KAAK+xI,eAAeG,UAErC,IAAIA,EACJ,EAGQA,EAAWniI,MAAQglI,GAAS7C,EAAWliI,OAASglI,KAEhD9C,EAAWniI,MAAQglI,EACnB7C,EAAWliI,OAASglI,EAGxB,IAAIC,GAAc/C,EAAW3xG,WAAW,KACxC00G,GAAYliG,UAAU,EAAG,EAAGgiG,EAAOC,GACnCC,EAAYjiG,UAAU1nB,EAAQjd,EAAIC,EAAIymI,EAAOC,EAAO,EAAG,EAAGD,EAAOC,GAEjE3wH,EAAQ0uB,UAAUtgC,EAAIC,EAAIqiI,EAAOC,GACjC3wH,EAAQ2uB,UAAUk/F,EAAY,EAAG,EAAG6C,EAAOC,EAAOviI,EAAIC,EAAIqiI,EAAOC,OAMjE3wH,GAAQC,OACRD,EAAQ+7C,yBAA2B,OACnC/7C,EAAQ2uB,UAAU1nB,EAAQjd,EAAIC,EAAIymI,EAAOC,EAAOviI,EAAIC,EAAIqiI,EAAOC,GAC/D3wH,EAAQG,WAkBhBnkB,EAAOouD,aAAapoD,UAAU6uI,aAAe,SAAUjwB,EAASF,EAASl6G,EAAM6D,EAAK9D,EAAO+D,GAEvF,GAAI0V,GAAUrkB,KAAKqkB,QAEftU,EAAQ/P,KAAKkqH,MAAMn6G,MACnBC,EAAShQ,KAAKkqH,MAAMl6G,OACpBkkI,EAAKl0I,KAAK8yI,IAAI5/E,UACdihF,EAAKn0I,KAAK8yI,IAAI3/E,WAEdq6E,EAAWxtI,KAAK8yI,IAAItF,SACpB2H,EAAYhuB,GAEXnnH,MAAK6yI,QAEMjoI,GAARC,IAEAA,EAAO9E,KAAKoM,IAAI,EAAGtH,GACnBD,EAAQ7E,KAAKkM,IAAIlC,EAAQ,EAAGnF,IAErB+D,GAAPD,IAEAA,EAAM3I,KAAKoM,IAAI,EAAGzD,GAClBC,EAAS5I,KAAKkM,IAAIjC,EAAS,EAAGrB,IAKtC,IAUIgD,GAAIC,EAAI3L,EAAGwG,EAAG2oI,EAAMC,EAVpBC,EAASzqI,EAAOqpI,EAAMjvB,EACtBswB,EAAS7mI,EAAMylI,EAAMpvB,EAGrBywB,GAAc3qI,GAAS,GAAK,IAAMkF,GAAUA,EAC5C0lI,GAAc/mI,GAAQ,GAAK,IAAMsB,GAAWA,CAOhD,KAAKvD,EAAIgpI,EAAYJ,EAAO1mI,EAASD,EAAKkD,EAAK2jI,EAC3CF,GAAQ,EACR5oI,IAAK4oI,IAAQzjI,GAAMuiI,EACvB,CAEQ1nI,GAAKuD,IAAUvD,GAAKuD,EAExB,IAAIkxF,GAAMlhG,KAAKkqH,MAAM7nF,KAAK51B,EAE1B,KAAKxG,EAAIuvI,EAAYJ,EAAOxqI,EAAQC,EAAM8G,EAAK2jI,EAC3CF,GAAQ,EACRnvI,IAAKmvI,IAAQzjI,GAAMuiI,EACvB,CAEQjuI,GAAK8J,IAAS9J,GAAK8J,EAEvB,IAAI0oH,GAAOv3B,EAAIj7F,EAEf,IAAKwyH,KAAQA,EAAK/oG,MAAQ,GAA1B,CAKA,GAAIA,GAAQ+oG,EAAK/oG,MAEbzjB,EAAMuhI,EAAS99G,EAEPhmB,UAARuC,IAEAA,EAAMjM,KAAKs0I,eAAe5kH,IAI1B+oG,EAAKp6G,QAAU82H,GAAcn1I,KAAK6jB,QAElCQ,EAAQk4C,YAAck8D,EAAKp6G,MAC3B82H,EAAY1c,EAAKp6G,OAGjBpS,EAEIwsH,EAAKjiG,UAAYiiG,EAAKoU,SAEtBxoH,EAAQC,OACRD,EAAQzP,UAAUjD,EAAK8mH,EAAKhgH,QAAS7G,EAAK6mH,EAAK//G,SAC/C2L,EAAQnT,OAAOunH,EAAKjiG,UAEhBiiG,EAAKoU,SAELxoH,EAAQxP,MAAM,GAAI,GAGtB5I,EAAImtD,KAAK/0C,GAAUo0G,EAAKhgH,SAAUggH,EAAK//G,QAASgX,GAChDrL,EAAQG,WAIRvY,EAAImtD,KAAK/0C,EAAS1S,EAAIC,EAAI8d,GAGzB1vB,KAAKmyI,cAAcC,mBAExB/tH,EAAQg1C,UAAYr5D,KAAKmyI,cAAcC,iBACvC/tH,EAAQi1C,SAAS3nD,EAAIC,EAAIsiI,EAAIC,IAG7B1b,EAAK50G,OAAS7jB,KAAKmyI,cAAcE,uBAEjChuH,EAAQg1C,UAAYr5D,KAAKmyI,cAAcE,qBACvChuH,EAAQi1C,SAAS3nD,EAAIC,EAAIsiI,EAAIC,QAe7C9zI,EAAOouD,aAAapoD,UAAUqvI,kBAAoB,SAAUC,EAAQC,GAEhE,GAAI3wB,GAAUjlH,KAAK8yI,IAAI7tB,QACnBF,EAAU/kH,KAAK8yI,IAAI/tB,QAEnB8wB,EAAU71I,KAAKsrB,OAAOvb,MACtB+lI,EAAU91I,KAAKsrB,OAAOtb,OAEtBkkI,EAAKl0I,KAAK8yI,IAAI5/E,UACdihF,EAAKn0I,KAAK8yI,IAAI3/E,WAKdtoD,EAAO,EACPD,GAASspI,EACTxlI,EAAM,EACNC,GAAUwlI,CAgCd,IA9Ba,EAATwB,GAEA9qI,EAAOgrI,EAAUF,EACjB/qI,EAAQirI,EAAU,GAEbF,EAAS,IAGd/qI,EAAQ+qI,GAGC,EAATC,GAEAlnI,EAAMonI,EAAUF,EAChBjnI,EAASmnI,EAAU,GAEdF,EAAS,IAGdjnI,EAASinI,GAGb51I,KAAK80I,YAAY90I,KAAKqkB,QAASsxH,EAAQC,GAGvC/qI,EAAO9E,KAAKI,OAAO0E,EAAOo6G,GAAWivB,GACrCtpI,EAAQ7E,KAAKI,OAAOyE,EAAQq6G,GAAWivB,GACvCxlI,EAAM3I,KAAKI,OAAOuI,EAAMq2G,GAAWovB,GACnCxlI,EAAS5I,KAAKI,OAAOwI,EAASo2G,GAAWovB,GAE7BvpI,GAARC,EACJ,CAEI7K,KAAKqkB,QAAQ0uB,UAAYloC,EAAOqpI,EAAMjvB,EAAU,GAAIr6G,EAAQC,EAAO,GAAKqpI,EAAI4B,EAE5E,IAAIC,GAAUhwI,KAAKI,OAAO,EAAI4+G,GAAWovB,GACrC6B,EAAajwI,KAAKI,OAAO2vI,EAAU,EAAI/wB,GAAWovB,EACtDn0I,MAAKk1I,aAAajwB,EAASF,EAASl6G,EAAMkrI,EAASnrI,EAAOorI,GAG9D,GAAWrnI,GAAPD,EACJ,CAEI1O,KAAKqkB,QAAQ0uB,UAAU,EAAKrkC,EAAMylI,EAAMpvB,EAAU8wB,GAAUlnI,EAASD,EAAM,GAAKylI,EAEhF,IAAI8B,GAAWlwI,KAAKI,OAAO,EAAI8+G,GAAWivB,GACtCgC,EAAYnwI,KAAKI,OAAO0vI,EAAU,EAAI5wB,GAAWivB,EACrDl0I,MAAKk1I,aAAajwB,EAASF,EAASkxB,EAAUvnI,EAAKwnI,EAAWvnI,KAWtEtO,EAAOouD,aAAapoD,UAAU8vI,WAAa,WAEvC,GAAIlxB,GAAUjlH,KAAK8yI,IAAI7tB,QACnBF,EAAU/kH,KAAK8yI,IAAI/tB,QAEnB8wB,EAAU71I,KAAKsrB,OAAOvb,MACtB+lI,EAAU91I,KAAKsrB,OAAOtb,OAEtBkkI,EAAKl0I,KAAK8yI,IAAI5/E,UACdihF,EAAKn0I,KAAK8yI,IAAI3/E,WAEdtoD,EAAO9E,KAAKI,MAAM8+G,EAAUivB,GAC5BtpI,EAAQ7E,KAAKI,OAAO0vI,EAAU,EAAI5wB,GAAWivB,GAC7CxlI,EAAM3I,KAAKI,MAAM4+G,EAAUovB,GAC3BxlI,EAAS5I,KAAKI,OAAO2vI,EAAU,EAAI/wB,GAAWovB,EAElDn0I,MAAKqkB,QAAQ0uB,UAAU,EAAG,EAAG8iG,EAASC,GAEtC91I,KAAKk1I,aAAajwB,EAASF,EAASl6G,EAAM6D,EAAK9D,EAAO+D,IAU1DtO,EAAOouD,aAAapoD,UAAUua,OAAS,WAEnC,GAAIw1H,IAAY,CAEhB,IAAKp2I,KAAK6a,QAAV,EAKI7a,KAAKynB,OAASznB,KAAKkqH,MAAMziG,SAEzBznB,KAAKkqH,MAAMziG,OAAQ,EACnB2uH,GAAY,EAGhB,IAAIrD,GAAc/yI,KAAKsrB,OAAOvb,MAC1BijI,EAAehzI,KAAKsrB,OAAOtb,OAG3Bi1G,EAA0B,EAAhBjlH,KAAKizI,SACfluB,EAA0B,EAAhB/kH,KAAKkzI,SAEfmD,EAAKr2I,KAAK8yI,IACV6C,EAASU,EAAGpxB,QAAUA,EACtB2wB,EAASS,EAAGtxB,QAAUA,CAE1B,IAAKqxB,GACU,IAAXT,GAA2B,IAAXC,GAChBS,EAAGtD,cAAgBA,GAAesD,EAAGrD,eAAiBA,EAoD1D,MA9CAhzI,MAAKqkB,QAAQC,OAEb+xH,EAAGpxB,QAAUA,EACboxB,EAAGtxB,QAAUA,EAETsxB,EAAGtD,cAAgBA,GAAesD,EAAGrD,eAAiBA,IAGtDqD,EAAGtD,YAAcA,EACjBsD,EAAGrD,aAAeA,GAGlBhzI,KAAK6jB,QAEL7jB,KAAKqkB,QAAQk4C,YAAcv8D,KAAKmyI,cAAcI,WAE1CvyI,KAAKmyI,cAAcG,kBAEnB8D,GAAY,KAIfA,GACDp2I,KAAK+xI,eAAeC,mBACnBjsI,KAAKoJ,IAAIwmI,GAAU5vI,KAAKoJ,IAAIymI,GAAW7vI,KAAKkM,IAAI8gI,EAAaC,GAE9DhzI,KAAK01I,kBAAkBC,EAAQC,GAK/B51I,KAAKm2I,aAGLn2I,KAAK6jB,QAEL7jB,KAAKqkB,QAAQk4C,YAAc,EAC3Bv8D,KAAKs2I,eAGTt2I,KAAKmiC,QAAQuQ,YAAYjrB,QAEzBznB,KAAKynB,OAAQ,EAEbznB,KAAKqkB,QAAQG,WAEN,IAYXnkB,EAAOouD,aAAapoD,UAAUiwI,YAAc,WAExC,GAuBI3kI,GAAIC,EAAI3L,EAAGwG,EAAG2oI,EAAMC,EAvBpBpwB,EAAUjlH,KAAK8yI,IAAI7tB,QACnBF,EAAU/kH,KAAK8yI,IAAI/tB,QAEnB1gG,EAAUrkB,KAAKqkB,QACfwxH,EAAU71I,KAAKsrB,OAAOvb,MACtB+lI,EAAU91I,KAAKsrB,OAAOtb,OAEtBD,EAAQ/P,KAAKkqH,MAAMn6G,MACnBC,EAAShQ,KAAKkqH,MAAMl6G,OACpBkkI,EAAKl0I,KAAK8yI,IAAI5/E,UACdihF,EAAKn0I,KAAK8yI,IAAI3/E,WAEdtoD,EAAO9E,KAAKI,MAAM8+G,EAAUivB,GAC5BtpI,EAAQ7E,KAAKI,OAAO0vI,EAAU,EAAI5wB,GAAWivB,GAC7CxlI,EAAM3I,KAAKI,MAAM4+G,EAAUovB,GAC3BxlI,EAAS5I,KAAKI,OAAO2vI,EAAU,EAAI/wB,GAAWovB,GAE9CmB,EAASzqI,EAAOqpI,EAAMjvB,EACtBswB,EAAS7mI,EAAMylI,EAAMpvB,EAErBywB,GAAc3qI,GAAS,GAAK,IAAMkF,GAAUA,EAC5C0lI,GAAc/mI,GAAQ,GAAK,IAAMsB,GAAWA,CAMhD,KAFAqU,EAAQi6C,YAAct+D,KAAKmyI,cAAcK,iBAEpC/lI,EAAIgpI,EAAYJ,EAAO1mI,EAASD,EAAKkD,EAAK2jI,EAC3CF,GAAQ,EACR5oI,IAAK4oI,IAAQzjI,GAAMuiI,EACvB,CAEQ1nI,GAAKuD,IAAUvD,GAAKuD,EAExB,IAAIkxF,GAAMlhG,KAAKkqH,MAAM7nF,KAAK51B,EAE1B,KAAKxG,EAAIuvI,EAAYJ,EAAOxqI,EAAQC,EAAM8G,EAAK2jI,EAC3CF,GAAQ,EACRnvI,IAAKmvI,IAAQzjI,GAAMuiI,EACvB,CAEQjuI,GAAK8J,IAAS9J,GAAK8J,EAEvB,IAAI0oH,GAAOv3B,EAAIj7F,IACVwyH,GAAQA,EAAK/oG,MAAQ,IAAM+oG,EAAKuK,WAKjChjI,KAAKmyI,cAAcM,wBAEnBpuH,EAAQg1C,UAAYr5D,KAAKmyI,cAAcM,sBACvCpuH,EAAQi1C,SAAS3nD,EAAIC,EAAI5R,KAAK8yI,IAAI7pF,GAAIjpD,KAAK8yI,IAAI5pF,KAG/ClpD,KAAKmyI,cAAcK,mBAEnBnuH,EAAQ25C,YAEJy6D,EAAKO,UAEL30G,EAAQ85C,OAAOxsD,EAAIC,GACnByS,EAAQ+5C,OAAOzsD,EAAK3R,KAAK8yI,IAAI7pF,GAAIr3C,IAGjC6mH,EAAKQ,aAEL50G,EAAQ85C,OAAOxsD,EAAIC,EAAK5R,KAAK8yI,IAAI5pF,IACjC7kC,EAAQ+5C,OAAOzsD,EAAK3R,KAAK8yI,IAAI7pF,GAAIr3C,EAAK5R,KAAK8yI,IAAI5pF,KAG/CuvE,EAAKK,WAELz0G,EAAQ85C,OAAOxsD,EAAIC,GACnByS,EAAQ+5C,OAAOzsD,EAAIC,EAAK5R,KAAK8yI,IAAI5pF,KAGjCuvE,EAAKM,YAEL10G,EAAQ85C,OAAOxsD,EAAK3R,KAAK8yI,IAAI7pF,GAAIr3C,GACjCyS,EAAQ+5C,OAAOzsD,EAAK3R,KAAK8yI,IAAI7pF,GAAIr3C,EAAK5R,KAAK8yI,IAAI5pF,KAGnD7kC,EAAQk6C,cAiBxBh3D,OAAO2E,eAAe7L,EAAOouD,aAAapoD,UAAW,QAEjD2F,IAAK,WACD,MAAOhM,MAAK6yI,OAGhB5mI,IAAK,SAAU1C,GACXvJ,KAAK6yI,MAAQtpI,EACbvJ,KAAKynB,OAAQ,KAYrBlgB,OAAO2E,eAAe7L,EAAOouD,aAAapoD,UAAW,WAEjD2F,IAAK,WACD,MAAOhM,MAAKizI,UAGhBhnI,IAAK,SAAU1C,GACXvJ,KAAKizI,SAAW1pI,KAYxBhC,OAAO2E,eAAe7L,EAAOouD,aAAapoD,UAAW,WAEjD2F,IAAK,WACD,MAAOhM,MAAKkzI,UAGhBjnI,IAAK,SAAU1C,GACXvJ,KAAKkzI,SAAW3pI,KAYxBhC,OAAO2E,eAAe7L,EAAOouD,aAAapoD,UAAW,kBAEjD2F,IAAK,WACD,MAAOhM,MAAK8yI,IAAI7pF,IAGpBh9C,IAAK,SAAU1C,GACXvJ,KAAK8yI,IAAI7pF,GAAa,EAAR1/C,EACdvJ,KAAKynB,OAAQ,KAYrBlgB,OAAO2E,eAAe7L,EAAOouD,aAAapoD,UAAW,mBAEjD2F,IAAK,WACD,MAAOhM,MAAK8yI,IAAI5pF,IAGpBj9C,IAAK,SAAU1C,GACXvJ,KAAK8yI,IAAI5pF,GAAa,EAAR3/C,EACdvJ,KAAKynB,OAAQ,KAiBrBpnB,EAAO+sI,eAaHmJ,aAAa,EASbC,0BAA2B,WAS3BC,wBAAyB,WASzBC,wBAAyB,UAczBx/H,MAAO,SAAUsD,EAAMzO,EAAKmnD,EAAWC,EAAYpjD,EAAOC,GAOtD,GALkBtG,SAAdwpD,IAA2BA,EAAY,IACxBxpD,SAAfypD,IAA4BA,EAAa,IAC/BzpD,SAAVqG,IAAuBA,EAAQ,IACpBrG,SAAXsG,IAAwBA,EAAS,IAEzBtG,SAARqC,EAEA,MAAO/L,MAAK22I,cAGhB,IAAY,OAAR5qI,EAEA,MAAO/L,MAAK22I,aAAazjF,EAAWC,EAAYpjD,EAAOC,EAG3D,IAAIyyH,GAAMjoH,EAAKsF,MAAMynF,eAAex7F,EAEpC,IAAI02H,EACJ,CACI,GAAIA,EAAIr+B,SAAW/jG,EAAOmuD,QAAQq+C,IAE9B,MAAO7sG,MAAK42I,SAAS7qI,EAAK02H,EAAIpgG,KAAM6wB,EAAWC,EAE9C,KAAKsvE,EAAIr+B,QAAUq+B,EAAIr+B,SAAW/jG,EAAOmuD,QAAQs+C,WAElD,MAAO9sG,MAAK62I,eAAepU,EAAIpgG,UAKnCj6B,SAAQG,KAAK,0DAA4DwD,IAejF6qI,SAAU,SAAU7qI,EAAKs2B,EAAM6wB,EAAWC,GAEtC,GAAIsvE,GAAMziI,KAAK22I,cAGft0G,GAAOA,EAAKsQ,MAOZ,KAAK,GALD5kC,MACAijB,EAAOqR,EAAK15B,MAAM,MAClBqH,EAASghB,EAAKnpB,OACdkI,EAAQ,EAEHtD,EAAI,EAAGA,EAAIukB,EAAKnpB,OAAQ4E,IACjC,CACIsB,EAAOtB,KAIP,KAAK,GAFD00F,GAASnwE,EAAKvkB,GAAG9D,MAAM,KAElB1C,EAAI,EAAGA,EAAIk7F,EAAOt5F,OAAQ5B,IAE/B8H,EAAOtB,GAAGxG,GAAK,GAAI5F,GAAOusI,KAAKnK,EAAIzY,OAAO,GAAI3/G,SAAS82F,EAAOl7F,GAAI,IAAKA,EAAGwG,EAAGymD,EAAWC,EAG9E,KAAVpjD,IAEAA,EAAQoxF,EAAOt5F,QAmBvB,MAfA46H,GAAIr+B,OAAS/jG,EAAOmuD,QAAQq+C,IAC5B41B,EAAIr3H,KAAOW,EACX02H,EAAI1yH,MAAQA,EACZ0yH,EAAIzyH,OAASA,EACbyyH,EAAIvvE,UAAYA,EAChBuvE,EAAItvE,WAAaA,EACjBsvE,EAAI6K,cAAgBv9H,EAAQmjD,EAC5BuvE,EAAI8K,eAAiBv9H,EAASmjD,EAE9BsvE,EAAIzY,OAAO,GAAGj6G,MAAQA,EACtB0yH,EAAIzY,OAAO,GAAGh6G,OAASA,EACvByyH,EAAIzY,OAAO,GAAGsjB,cAAgB7K,EAAI6K,cAClC7K,EAAIzY,OAAO,GAAGujB,eAAiB9K,EAAI8K,eACnC9K,EAAIzY,OAAO,GAAG3nF,KAAOt0B,EAEd00H,GAUXkU,aAAc,SAAUzjF,EAAWC,EAAYpjD,EAAOC,GAElD,GAAIyyH,KAEJA,GAAI1yH,MAAQ,EACZ0yH,EAAIzyH,OAAS,EACbyyH,EAAIvvE,UAAY,EAChBuvE,EAAItvE,WAAa,EAEQ,mBAAdD,IAA2C,OAAdA,IAAsBuvE,EAAIvvE,UAAYA,GACpD,mBAAfC,IAA6C,OAAfA,IAAuBsvE,EAAItvE,WAAaA,GAC5D,mBAAVpjD,IAAmC,OAAVA,IAAkB0yH,EAAI1yH,MAAQA,GAC5C,mBAAXC,IAAqC,OAAXA,IAAmByyH,EAAIzyH,OAASA,GAErEyyH,EAAIlkB,YAAc,aAClBkkB,EAAI4K,QAAU,IACd5K,EAAI3nD,cACJ2nD,EAAI6K,cAAgB,EACpB7K,EAAI8K,eAAiB,CAErB,IAAIvjB,MAEAE,GAEA9+G,KAAM,QACNnF,EAAG,EACHwG,EAAG,EACHsD,MAAO,EACPC,OAAQ,EACRs9H,cAAe,EACfC,eAAgB,EAChBlvH,MAAO,EACPxD,SAAS,EACTigE,cACA60D,WACA14F,aACAknF,UACA97F,QAeJ,OATA2nF,GAAOp3G,KAAKs3G,GAEZuY,EAAIzY,OAASA,EACbyY,EAAIv2B,UACJu2B,EAAI5xC,WACJ4xC,EAAIC,aACJD,EAAI+K,YACJ/K,EAAIiL,SAEGjL,GAUXoU,eAAgB,SAAUx1C,GA+QtB,QAAS96F,GAAOwC,EAAK+tI,GAEjB,GAAIC,KAEJ,KAAK,GAAIp+F,KAAKm+F,GACd,CACI,GAAI/qI,GAAM+qI,EAAOn+F,EAEO,oBAAb5vC,GAAIgD,KAEXgrI,EAAOhrI,GAAOhD,EAAIgD,IAI1B,MAAOgrI,GA3RX,GAAyB,eAArB11C,EAAKkd,YAGL,MADAn2G,SAAQG,KAAK,oGACN,IAIX,IAAIk6H,KAEJA,GAAI1yH,MAAQsxF,EAAKtxF,MACjB0yH,EAAIzyH,OAASqxF,EAAKrxF;AAClByyH,EAAIvvE,UAAYmuC,EAAKQ,UACrB4gC,EAAItvE,WAAakuC,EAAKO,WACtB6gC,EAAIlkB,YAAcld,EAAKkd,YACvBkkB,EAAIr+B,OAAS/jG,EAAOmuD,QAAQs+C,WAC5B21B,EAAI4K,QAAUhsC,EAAKgsC,QACnB5K,EAAI3nD,WAAaumB,EAAKvmB,WACtB2nD,EAAI6K,cAAgB7K,EAAI1yH,MAAQ0yH,EAAIvvE,UACpCuvE,EAAI8K,eAAiB9K,EAAIzyH,OAASyyH,EAAItvE,UAKtC,KAAK,GAFD62D,MAEKliH,EAAI,EAAGA,EAAIu5F,EAAK2oB,OAAOniH,OAAQC,IAEpC,GAA4B,cAAxBu5F,EAAK2oB,OAAOliH,GAAGI,KAAnB,CAKA,GAAI8uI,GAAO31C,EAAK2oB,OAAOliH,EAIvB,KAAKkvI,EAAKC,aAAeD,EAAKE,UAA8B,WAAlBF,EAAKE,SAAuB,CAMlE,IAAK,GALDC,GAAgBpvI,OAAOqvI,KAAKJ,EAAK30G,MACjCz6B,EAAMuvI,EAAatvI,OACnBwvI,EAAQ,GAAI7wI,OAAOoB,GAGdiQ,EAAI,EAAOjQ,EAAJiQ,EAASA,GAAG,EACxBw/H,EAAMx/H,EAAE,IAAMs/H,EAAa32F,WAAW3oC,GACzBs/H,EAAa32F,WAAW3oC,EAAE,IAAM,EAChCs/H,EAAa32F,WAAW3oC,EAAE,IAAM,GAChCs/H,EAAa32F,WAAW3oC,EAAE,IAAM,MAAQ,CAEzDm/H,GAAK30G,KAAOg1G,QACLL,GAAKE,aAEX,IAAGF,EAAKC,YAAY,CACrB7uI,QAAQG,KAAK,oFAAuFyuI,EAAK5rI,KAAO,IAChH,UAIJ,GAAI8+G,IAEA9+G,KAAM4rI,EAAK5rI,KACXnF,EAAG+wI,EAAK/wI,EACRwG,EAAGuqI,EAAKvqI,EACRsD,MAAOinI,EAAKjnI,MACZC,OAAQgnI,EAAKhnI,OACbs9H,cAAe0J,EAAKjnI,MAAQsxF,EAAKQ,UACjC0rC,eAAgByJ,EAAKhnI,OAASqxF,EAAKO,WACnCvjF,MAAO24H,EAAKM,QACZz8H,QAASm8H,EAAKn8H,QACdigE,cACA60D,WACA14F,aACAknF,UAIA6Y,GAAKl8D,aAELovC,EAAMpvC,WAAak8D,EAAKl8D,WAc5B,KAAK,GARDtkD,GAAUq2G,EAAS0K,EAAY5K,EAH/B1mI,EAAI,EACJi7F,KACAnzF,KASKpG,EAAI,EAAGC,EAAMovI,EAAK30G,KAAKx6B,OAAYD,EAAJD,EAASA,IACjD,CAMI,GALA6uB,EAAW,EACXq2G,GAAU,EACVF,EAAMqK,EAAK30G,KAAK16B,GAGZglI,EAAM,UAyBN,OAvBA4K,EAAa,EAGT5K,EAAM,aAENA,GAAO,WACP4K,GAAc,GAId5K,EAAM,aAENA,GAAO,WACP4K,GAAc,GAId5K,EAAM,YAENA,GAAO,UACP4K,GAAc,GAGVA,GAEJ,IAAK,GACD/gH,EAAWzwB,KAAK+G,GAAG,CACnB,MACJ,KAAK,GACD0pB,EAAWzwB,KAAK+G,EAChB,MACJ,KAAK,GACD0pB,EAAW,EAAEzwB,KAAK+G,GAAG,CACrB,MACJ,KAAK,GACD0pB,EAAW,EACXq2G,GAAU,CACV,MACJ,KAAK,GACDr2G,EAAWzwB,KAAK+G,GAAG,EACnB+/H,GAAU,CACV,MACJ,KAAK,GACDr2G,EAAWzwB,KAAK+G,GAChB+/H,GAAU,CACV,MACJ,KAAK,GACDr2G,EAAW,EAAEzwB,KAAK+G,GAAG,EACrB+/H,GAAU,EAMlBF,EAAM,GAENzrC,EAAItuF,KAAK,GAAIvS,GAAOusI,KAAK1iB,EAAOyiB,EAAK1mI,EAAG8H,EAAOlG,OAAQw5F,EAAKQ,UAAWR,EAAKO,aAC5EV,EAAIA,EAAIr5F,OAAS,GAAG2uB,SAAWA,EAC/B0qE,EAAIA,EAAIr5F,OAAS,GAAGglI,QAAUA,GAI1BxsI,EAAO+sI,cAAcmJ,YAErBr1C,EAAItuF,KAAK,MAITsuF,EAAItuF,KAAK,GAAIvS,GAAOusI,KAAK1iB,EAAO,GAAIjkH,EAAG8H,EAAOlG,OAAQw5F,EAAKQ,UAAWR,EAAKO,aAInF37F,IAEIA,IAAM+wI,EAAKjnI,QAEXhC,EAAO6E,KAAKsuF,GACZj7F,EAAI,EACJi7F,MAIRgpB,EAAM7nF,KAAOt0B,EAEbi8G,EAAOp3G,KAAKs3G,GAIhBuY,EAAIzY,OAASA,CAKb,KAAK,GAFD9d,MAEKpkG,EAAI,EAAGA,EAAIu5F,EAAK2oB,OAAOniH,OAAQC,IAEpC,GAA4B,eAAxBu5F,EAAK2oB,OAAOliH,GAAGI,KAAnB,CAKA,GAAIsvI,GAAOn2C,EAAK2oB,OAAOliH,GAEnBshB,GAEAhe,KAAMosI,EAAKpsI,KACXge,MAAOouH,EAAKpuH,MACZnjB,EAAGuxI,EAAKvxI,EACRwG,EAAG+qI,EAAK/qI,EACR4R,MAAOm5H,EAAKF,QACZz8H,QAAS28H,EAAK38H,QACdigE,cAIA08D,GAAK18D,aAEL1xD,EAAM0xD,WAAa08D,EAAK18D,YAG5BoxB,EAAOt5F,KAAKwW,GAIhBq5G,EAAIv2B,OAASA,CAMb,KAAK,GAHDshC,MACAC,KAEK3lI,EAAI,EAAGA,EAAIu5F,EAAKmsC,SAAS3lI,OAAQC,IAC1C,CAEI,GAAImE,GAAMo1F,EAAKmsC,SAAS1lI,EAExB,IAAImE,EAAImd,MACR,CACI,GAAIulH,GAAS,GAAItuI,GAAOuuI,QAAQ3iI,EAAIb,KAAMa,EAAImgI,SAAUngI,EAAI41F,UAAW51F,EAAI21F,WAAY31F,EAAI+0F,OAAQ/0F,EAAIg1F,QAASh1F,EAAI6uE,WAEhH7uE,GAAIwrI,iBAEJ9I,EAAO+I,eAAiBzrI,EAAIwrI,gBAKhC9I,EAAOgJ,eAAe1rI,EAAI2rI,WAAY3rI,EAAI4rI,aAC1CrK,EAAS56H,KAAK+7H,OAGlB,CACI,GAAImJ,GAAgB,GAAIz3I,GAAO8rI,gBAAgBlgI,EAAIb,KAAMa,EAAImgI,SAAUngI,EAAI41F,UAAW51F,EAAI21F,WAAY31F,EAAI+0F,OAAQ/0F,EAAIg1F,QAASh1F,EAAI6uE,WAEnI,KAAK,GAAIi9D,KAAM9rI,GAAIyhI,MACnB,CACI,GAAItkH,GAAQnd,EAAIyhI,MAAMqK,GAAI3uH,MACtBujH,EAAM1gI,EAAImgI,SAAW/hI,SAAS0tI,EAAI,GACtCD,GAAcr+E,SAASkzE,EAAKvjH,GAGhCqkH,EAAiB76H,KAAKklI,IAK9BrV,EAAI+K,SAAWA,EACf/K,EAAIgL,iBAAmBA,CAuBvB,KAAK,GApBD58C,MACA6xC,KAmBK56H,EAAI,EAAGA,EAAIu5F,EAAK2oB,OAAOniH,OAAQC,IAEpC,GAA4B,gBAAxBu5F,EAAK2oB,OAAOliH,GAAGI,KAAnB,CAKA,GAAI8vI,GAAO32C,EAAK2oB,OAAOliH,EAEvB+oF,GAAQmnD,EAAK5sI,SACbs3H,EAAUsV,EAAK5sI,QAEf,KAAK,GAAIivB,GAAI,EAAGzyB,EAAMowI,EAAKnnD,QAAQhpF,OAAYD,EAAJyyB,EAASA,IAGhD,GAAI29G,EAAKnnD,QAAQx2D,GAAGsyG,IACpB,CACI,GAAInpB,GAAOxjH,KAEPs1B,GAEAq3G,IAAKqL,EAAKnnD,QAAQx2D,GAAGsyG,IACrBvhI,KAAM4sI,EAAKnnD,QAAQx2D,GAAGjvB,KACtBlD,KAAM8vI,EAAKnnD,QAAQx2D,GAAGrvB,eAAe,QAAUgtI,EAAKnnD,QAAQx2D,GAAGnyB,KAAO,GACtEjC,EAAG+xI,EAAKnnD,QAAQx2D,GAAGp0B,EACnBwG,EAAGurI,EAAKnnD,QAAQx2D,GAAG5tB,EACnBsD,MAAOioI,EAAKnnD,QAAQx2D,GAAGtqB,MACvBC,OAAQgoI,EAAKnnD,QAAQx2D,GAAGrqB,OACxB6K,QAASm9H,EAAKnnD,QAAQx2D,GAAGxf,QACzBigE,WAAYk9D,EAAKnnD,QAAQx2D,GAAGygD,WAC5Bm9D,oBAAqBD,EAAKnnD,QAAQx2D,GAAGsyG,IAAMnpB,EAAKgzB,0BAChD0B,kBAAmBF,EAAKnnD,QAAQx2D,GAAGsyG,IAAMnpB,EAAKizB,wBAC9C0B,kBAAmBH,EAAKnnD,QAAQx2D,GAAGsyG,IAAMnpB,EAAKkzB,wBAG9CsB,GAAKnnD,QAAQx2D,GAAG7D,WAEhBlB,EAAOkB,SAAWwhH,EAAKnnD,QAAQx2D,GAAG7D,UAGtCq6D,EAAQmnD,EAAK5sI,MAAMwH,KAAK0iB,OAEvB,IAAI0iH,EAAKnnD,QAAQx2D,GAAGsoG,SACzB,CACI,GAAIrtG,IAEAlqB,KAAM4sI,EAAKnnD,QAAQx2D,GAAGjvB,KACtBlD,KAAM8vI,EAAKnnD,QAAQx2D,GAAGnyB,KACtBjC,EAAG+xI,EAAKnnD,QAAQx2D,GAAGp0B,EACnBwG,EAAGurI,EAAKnnD,QAAQx2D,GAAG5tB,EACnBsD,MAAOioI,EAAKnnD,QAAQx2D,GAAGtqB,MACvBC,OAAQgoI,EAAKnnD,QAAQx2D,GAAGrqB,OACxB6K,QAASm9H,EAAKnnD,QAAQx2D,GAAGxf,QACzBigE,WAAYk9D,EAAKnnD,QAAQx2D,GAAGygD,WAI5Bk9D,GAAKnnD,QAAQx2D,GAAG7D,WAEhBlB,EAAOkB,SAAWwhH,EAAKnnD,QAAQx2D,GAAG7D,UAGtClB,EAAOqtG,WAGP,KAAK,GAAI1yH,GAAI,EAAGA,EAAI+nI,EAAKnnD,QAAQx2D,GAAGsoG,SAAS96H,OAAQoI,IAEjDqlB,EAAOqtG,SAAS/vH,MAAOolI,EAAKnnD,QAAQx2D,GAAGsoG,SAAS1yH,GAAGhK,EAAG+xI,EAAKnnD,QAAQx2D,GAAGsoG,SAAS1yH,GAAGxD,GAGtFi2H,GAAUsV,EAAK5sI,MAAMwH,KAAK0iB,GAC1Bu7D,EAAQmnD,EAAK5sI,MAAMwH,KAAK0iB,OAGvB,IAAI0iH,EAAKnnD,QAAQx2D,GAAG+9G,QACzB,CACI,GAAI9iH,GAAS/uB,EAAMyxI,EAAKnnD,QAAQx2D,IACZ,OAAQ,OAAQ,IAAK,IAAK,UAAW,WAAY,cAGrE/E,GAAO8iH,UAEP,KAAK,GAAInoI,GAAI,EAAGA,EAAI+nI,EAAKnnD,QAAQx2D,GAAG+9G,QAAQvwI,OAAQoI,IAEhDqlB,EAAO8iH,QAAQxlI,MAAOolI,EAAKnnD,QAAQx2D,GAAG+9G,QAAQnoI,GAAGhK,EAAG+xI,EAAKnnD,QAAQx2D,GAAG+9G,QAAQnoI,GAAGxD,GAGnFokF,GAAQmnD,EAAK5sI,MAAMwH,KAAK0iB,OAIvB,IAAI0iH,EAAKnnD,QAAQx2D,GAAGg+G,QACzB,CACI,GAAI/iH,GAAS/uB,EAAMyxI,EAAKnnD,QAAQx2D,IACZ,OAAQ,OAAQ,UAAW,IAAK,IAAK,QAAS,SAAU,UAAW,WAAY,cACnGw2D,GAAQmnD,EAAK5sI,MAAMwH,KAAK0iB,OAI5B,CACI,GAAIA,GAAS/uB,EAAMyxI,EAAKnnD,QAAQx2D,IACZ,OAAQ,OAAQ,IAAK,IAAK,QAAS,SAAU,UAAW,WAAY,cACxF/E,GAAOguF,WAAY,EACnBzyB,EAAQmnD,EAAK5sI,MAAMwH,KAAK0iB,IAKpCmtG,EAAI5xC,QAAUA,EACd4xC,EAAIC,UAAYA,EAEhBD,EAAIiL,QAGJ,KAAK,GAAI5lI,GAAI,EAAGA,EAAI26H,EAAI+K,SAAS3lI,OAAQC,IAWrC,IAAK,GATDmE,GAAMw2H,EAAI+K,SAAS1lI,GAEnB7B,EAAIgG,EAAIsiI,WACR9hI,EAAIR,EAAIsiI,WAER5yG,EAAQ,EACRkzG,EAAS,EACTC,EAAS,EAEJnnI,EAAIsE,EAAImgI,SAAUzkI,EAAIsE,EAAImgI,SAAWngI,EAAI2oB,QAG9C6tG,EAAIiL,MAAM/lI,IAAM1B,EAAGwG,EAAG3E,GAEtB7B,GAAKgG,EAAIinD,UAAYjnD,EAAIuiI,YAEzB7yG,IAEIA,IAAU1vB,EAAI2oB,SAKlBi6G,IAEIA,IAAW5iI,EAAIglB,UAEfhrB,EAAIgG,EAAIsiI,WACR9hI,GAAKR,EAAIknD,WAAalnD,EAAIuiI,YAE1BK,EAAS,EACTC,IAEIA,IAAW7iI,EAAI+kB,OAxB8BrpB,KAyC7D,IAAK,GANDuiH,GACAuO,EACA6f,EACArsI,EAGKnE,EAAI,EAAGA,EAAI26H,EAAIzY,OAAOniH,OAAQC,IACvC,CACIoiH,EAAQuY,EAAIzY,OAAOliH,EAGnB,KAAK,GAAI+P,GAAI,EAAGA,EAAIqyG,EAAM7nF,KAAKx6B,OAAQgQ,IACvC,CACIqpF,EAAMgpB,EAAM7nF,KAAKxqB,EAGjB,KAAK,GAAI8gC,GAAI,EAAGA,EAAIuoD,EAAIr5F,OAAQ8wC,IAE5B8/E,EAAOv3B,EAAIvoD,GAEE,OAAT8/E,GAAiBA,EAAK/oG,MAAQ,IAOlC4oH,EAAM7V,EAAIiL,MAAMjV,EAAK/oG,OAAO,GAC5BzjB,EAAMw2H,EAAI+K,SAAS8K,GAIfrsI,EAAIyrI,gBAAkBzrI,EAAIyrI,eAAejf,EAAK/oG,MAAQzjB,EAAImgI,YAE1D3T,EAAK39C,WAAaz6E,EAAOmI,MAAMmD,MAAMM,EAAIyrI,eAAejf,EAAK/oG,MAAQzjB,EAAImgI,UAAW3T,EAAK39C,eAMzG,MAAO2nD,KA2BfpiI,EAAOuuI,QAAU,SAAUxjI,EAAMghI,EAAUr8H,EAAOC,EAAQgxF,EAAQC,EAASnmB,IAEzDpxE,SAAVqG,GAAgC,GAATA,KAAcA,EAAQ,KAClCrG,SAAXsG,GAAkC,GAAVA,KAAeA,EAAS,IACrCtG,SAAXs3F,IAAwBA,EAAS,GACrBt3F,SAAZu3F,IAAyBA,EAAU,GAMvCjhG,KAAKoL,KAAOA,EAOZpL,KAAKosI,SAAsB,EAAXA,EAOhBpsI,KAAKkzD,UAAoB,EAARnjD,EAOjB/P,KAAKmzD,WAAsB,EAATnjD,EASlBhQ,KAAKuuI,WAAsB,EAATvtC,EAQlBhhG,KAAKwuI,YAAwB,EAAVvtC,EAMnBjhG,KAAK86E,WAAaA,MAQlB96E,KAAKopB,MAAQ,KAQbppB,KAAKgxB,KAAO,EAQZhxB,KAAKixB,QAAU,EAQfjxB,KAAK40B,MAAQ,EAQb50B,KAAKu4I,eAITl4I,EAAOuuI,QAAQvoI,WAYX+yD,KAAM,SAAU/0C,EAASpe,EAAGwG,EAAGijB,GAG3B,GAAI8oH,GAAc9oH,EAAQ1vB,KAAKosI,UAAa,CAExCoM,IAAc,GAAMA,EAAa,EAAKx4I,KAAKu4I,WAAW1wI,QAEtDwc,EAAQ2uB,UACJhzC,KAAKopB,MACLppB,KAAKu4I,WAAWC,GAChBx4I,KAAKu4I,WAAWC,EAAa,GAC7Bx4I,KAAKkzD,UACLlzD,KAAKmzD,WACLltD,EACAwG,EACAzM,KAAKkzD,UACLlzD,KAAKmzD,aAajBshF,kBAAmB,SAAUF,GAEzB,MACIA,IAAav0I,KAAKosI,UAClBmI,EAAav0I,KAAKosI,SAAWpsI,KAAK40B,OAY1C85G,SAAU,SAAUtlH,GAEhBppB,KAAKopB,MAAQA,EACbppB,KAAK23I,eAAevuH,EAAMrZ,MAAOqZ,EAAMpZ,SAY3CyoI,WAAY,SAAUz3C,EAAQC,GAE1BjhG,KAAKuuI,WAAsB,EAATvtC,EAClBhhG,KAAKwuI,YAAwB,EAAVvtC,EAEfjhG,KAAKopB,OAELppB,KAAK23I,eAAe33I,KAAKopB,MAAMrZ,MAAO/P,KAAKopB,MAAMpZ,SAazD2nI,eAAgB,SAAUtL,EAAYC,GAGlC,GAAIoM,IAAYpM,EAAgC,EAAlBtsI,KAAKuuI,WAAiBvuI,KAAKwuI,cAAgBxuI,KAAKmzD,WAAanzD,KAAKwuI,aAC5FmK,GAAYtM,EAA+B,EAAlBrsI,KAAKuuI,WAAiBvuI,KAAKwuI,cAAgBxuI,KAAKkzD,UAAYlzD,KAAKwuI,YAE1FkK,GAAW,IAAM,GAAKC,EAAW,IAAM,GAEvCvwI,QAAQG,KAAK,oBAAsBvI,KAAKoL,KAAO,yDAKnDstI,EAAW3yI,KAAKI,MAAMuyI,GACtBC,EAAW5yI,KAAKI,MAAMwyI,IAEjB34I,KAAKgxB,MAAQhxB,KAAKgxB,OAAS0nH,GAAc14I,KAAKixB,SAAWjxB,KAAKixB,UAAY0nH,IAE3EvwI,QAAQG,KAAK,+EAGjBvI,KAAKgxB,KAAO0nH,EACZ14I,KAAKixB,QAAU0nH,EACf34I,KAAK40B,MAAQ8jH,EAAWC,EAExB34I,KAAKu4I,WAAW1wI,OAAS,CAKzB,KAAK,GAHD8J,GAAK3R,KAAKuuI,WACV38H,EAAK5R,KAAKuuI,WAEL9hI,EAAI,EAAGA,EAAIzM,KAAKgxB,KAAMvkB,IAC/B,CACI,IAAK,GAAIxG,GAAI,EAAGA,EAAIjG,KAAKixB,QAAShrB,IAE9BjG,KAAKu4I,WAAW3lI,KAAKjB,GACrB3R,KAAKu4I,WAAW3lI,KAAKhB,GACrBD,GAAM3R,KAAKkzD,UAAYlzD,KAAKwuI,WAGhC78H,GAAK3R,KAAKuuI,WACV38H,GAAM5R,KAAKmzD,WAAanzD,KAAKwuI,eAOzCnuI,EAAOuuI,QAAQvoI,UAAU8B,YAAc9H,EAAOuuI,QAoB9CvuI,EAAOynI,SAAW,SAAUttH,EAAMvU,EAAGwG,EAAGV,EAAK2kB,GAEzCrwB,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK2kB,GAM1C1wB,KAAK44I,WAAY,EAMjB54I,KAAK64I,UAAY,KAMjB74I,KAAK84I,GAAK,EAMV94I,KAAK+4I,WAAY,EAMjB/4I,KAAKg5I,UAAY,KAMjBh5I,KAAKi5I,GAAK,GAId54I,EAAOynI,SAASzhI,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WACxDhG,EAAOynI,SAASzhI,UAAU8B,YAAc9H,EAAOynI,SAQ/CznI,EAAOynI,SAASzhI,UAAUkY,OAAS,WAE3Bve,KAAK44I,YAEL54I,KAAK84I,KAED94I,KAAK84I,GAEL94I,KAAK6U,MAAM5I,IAAIjM,KAAK64I,UAAU74I,KAAK84I,IAAI7yI,EAAGjG,KAAK64I,UAAU74I,KAAK84I,IAAIrsI,GAIlEzM,KAAK44I,WAAY,GAIrB54I,KAAK+4I,YAEL/4I,KAAKi5I,KAEDj5I,KAAKi5I,GAELj5I,KAAKqe,MAAQre,KAAKg5I,UAAUh5I,KAAKi5I,IAAI5+G,EAIrCr6B,KAAK+4I,WAAY,IAY7B14I,EAAOynI,SAASzhI,UAAU6yI,OAAS,aASnC74I,EAAOynI,SAASzhI,UAAU8yI,aAAe,SAAS92G,GAE9CriC,KAAKg5I,UAAY32G,EACjBriC,KAAKi5I,GAAK52G,EAAKx6B,OAAS,EACxB7H,KAAKqe,MAAQre,KAAKg5I,UAAUh5I,KAAKi5I,IAAI5+G,EACrCr6B,KAAK+4I,WAAY,GAUrB14I,EAAOynI,SAASzhI,UAAU+yI,aAAe,SAAS/2G,GAE9CriC,KAAK64I,UAAYx2G,EACjBriC,KAAK84I,GAAKz2G,EAAKx6B,OAAS,EACxB7H,KAAK6U,MAAM5I,IAAIjM,KAAK64I,UAAU74I,KAAK84I,IAAI7yI,EAAGjG,KAAK64I,UAAU74I,KAAK84I,IAAIrsI,GAClEzM,KAAK44I,WAAY,GAgBrBv4I,EAAOynI,SAASzhI,UAAUqZ,MAAQ,SAASzZ,EAAGwG,EAAG+/C,GAU7C,MARAnsD,GAAOqmD,UAAUkJ,MAAMvpD,UAAUqZ,MAAM5Y,KAAK9G,KAAMiG,EAAGwG,EAAG+/C,GAExDxsD,KAAKqe,MAAQ,EACbre,KAAK6U,MAAM5I,IAAI,GAEfjM,KAAK44I,WAAY,EACjB54I,KAAK+4I,WAAY,EAEV/4I,MAiBXK,EAAOu5B,UAAY,SAAUpf,GAKzBxa,KAAKwa,KAAOA,EAKZxa,KAAKq5I,YAMLr5I,KAAKs5I,GAAK,GAIdj5I,EAAOu5B,UAAUvzB,WAQbwL,IAAK,SAAUogD,GAIX,MAFAjyD,MAAKq5I,SAASpnF,EAAQ7mD,MAAQ6mD,EAEvBA,GASXnvC,OAAQ,SAAUmvC,SAEPjyD,MAAKq5I,SAASpnF,EAAQ7mD,OASjCmT,OAAQ,WAEJ,IAAK,GAAIxS,KAAO/L,MAAKq5I,SAEbr5I,KAAKq5I,SAASttI,GAAKye,QAEnBxqB,KAAKq5I,SAASttI,GAAKwS,WAQnCle,EAAOu5B,UAAUvzB,UAAU8B,YAAc9H,EAAOu5B,UAahDv5B,EAAOu5B,UAAUu4B,UAoBjB9xD,EAAOu5B,UAAUu4B,OAAOC,QAAU,SAAU53C,EAAMvU,EAAGwG,EAAGylD,GAMpDlyD,KAAKkyD,aAAeA,GAAgB,GAEpC7xD,EAAOmtB,MAAM1mB,KAAK9G,KAAMwa,GAKxBxa,KAAKoL,KAAO,UAAYpL,KAAKwa,KAAK4F,UAAUk5H,KAM5Ct5I,KAAKkI,KAAO7H,EAAOuB,QAMnB5B,KAAK+tB,YAAc1tB,EAAOmB,MAM1BxB,KAAKsX,KAAO,GAAIjX,GAAOkN,UAAUtH,EAAGwG,EAAG,EAAG,GAM1CzM,KAAKu5I,iBAAmB,GAAIl5I,GAAO2M,MAAM,KAAM,MAM/ChN,KAAKw5I,iBAAmB,GAAIn5I,GAAO2M,MAAM,IAAK,KAM9ChN,KAAKy5I,iBAAmB,EAMxBz5I,KAAK05I,iBAAmB,EAKxB15I,KAAK64I,UAAY,KAMjB74I,KAAK25I,YAAc,KAMnB35I,KAAK45I,YAAc,IAMnB55I,KAAK65I,iBAAmB,EAMxB75I,KAAK85I,iBAAmB,EAKxB95I,KAAKg5I,UAAY,KAMjBh5I,KAAK+uH,QAAU,IAMf/uH,KAAK+5I,cAAgB15I,EAAOynI,SAK5B9nI,KAAKg6I,aAAe,GAAI35I,GAAO2M,MAM/BhN,KAAKgwH,YAAc,EAMnBhwH,KAAK8uF,UAAY,IAMjB9uF,KAAKwtD,SAAW,IAKhBxtD,KAAKwzH,OAAS,GAAInzH,GAAO2M,MAMzBhN,KAAKg7H,IAAK,EAMVh7H,KAAKi6I,eAAiB,GAAI55I,GAAO2M,MAAM,GAAK,IAM5ChN,KAAKg8D,UAAY37D,EAAOmE,WAAWC,OAQnCzE,KAAKk6I,MAAQj0I,EAQbjG,KAAKm6I,MAAQ1tI,EAKbzM,KAAK44I,WAAY,EAKjB54I,KAAK+4I,WAAY,EAMjB/4I,KAAKo6I,oBAAqB,EAM1Bp6I,KAAKq6I,oBAAqB,EAM1Br6I,KAAKs6I,kBAAoB,GAAIj6I,GAAO2M,MAAM,EAAG,GAM7ChN,KAAKu6I,kBAAoB,GAAIl6I,GAAO2M,MAAM,EAAG,GAM7ChN,KAAKw6I,UAAY,EAMjBx6I,KAAKy6I,OAAS,EAMdz6I,KAAK06I,SAAW,EAMhB16I,KAAK26I,cAAgB,EAMrB36I,KAAK46I,WAAa,EAMlB56I,KAAK66I,UAAW,EAMhB76I,KAAKq+F,QAAU,MAInBh+F,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAYkB,OAAOmZ,OAAOrgB,EAAOmtB,MAAMnnB,WACvEhG,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAU8B,YAAc9H,EAAOu5B,UAAUu4B,OAAOC,QAOhF/xD,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUkY,OAAS,WAE/C,GAAIve,KAAKg7H,IAAMh7H,KAAKwa,KAAKmE,KAAKA,MAAQ3e,KAAKy6I,OAIvC,GAFAz6I,KAAKy6I,OAASz6I,KAAKwa,KAAKmE,KAAKA,KAAO3e,KAAK8uF,UAAY9uF,KAAKwa,KAAKmE,KAAK4c,WAE5C,IAApBv7B,KAAK46I,WAEL,GAAI56I,KAAK26I,cAAgB,GAErB,IAAK,GAAI7yI,GAAI,EAAGA,EAAI9H,KAAK26I,cAAe7yI,IAEpC,GAAI9H,KAAK86I,iBAEL96I,KAAK06I,WAEmB,KAApB16I,KAAK46I,YAAqB56I,KAAK06I,UAAY16I,KAAK46I,YACpD,CACI56I,KAAKg7H,IAAK,CACV,YAORh7H,MAAK86I,iBAEL96I,KAAK06I,WAEmB,KAApB16I,KAAK46I,YAAqB56I,KAAK06I,UAAY16I,KAAK46I,aAEhD56I,KAAKg7H,IAAK,QAOlBh7H,MAAK86I,iBAEL96I,KAAK06I,WAED16I,KAAKw6I,UAAY,GAAKx6I,KAAK06I,UAAY16I,KAAKw6I,YAE5Cx6I,KAAKg7H,IAAK,GAS1B,KAFA,GAAIlzH,GAAI9H,KAAK2rB,SAAS9jB,OAEfC,KAEC9H,KAAK2rB,SAAS7jB,GAAG0iB,QAEjBxqB,KAAK2rB,SAAS7jB,GAAGyW,UAkB7Ble,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAU00I,cAAgB,SAAUjvI,EAAMk0E,EAAQpvD,EAAUggG,EAASwF,GAElF1sH,SAAXs2E,IAAwBA,EAAS,GACpBt2E,SAAbknB,IAA0BA,EAAW5wB,KAAKkyD,cAC9BxoD,SAAZknH,IAAyBA,GAAU,GACZlnH,SAAvB0sH,IAAoCA,GAAqB,EAE7D,IAAI4kB,GACAlzI,EAAI,EACJmzI,EAASnvI,EACTovI,EAAWl7D,CAQf,KAPAhgF,KAAKq+F,QAAUre,EAEXpvD,EAAW5wB,KAAKkyD,eAEhBlyD,KAAKkyD,aAAethC,GAGbA,EAAJ9oB,GAECtB,MAAMa,QAAQyE,KAEdmvI,EAASj7I,KAAKwa,KAAKsE,IAAIwxE,KAAKxkF,IAG5BtF,MAAMa,QAAQ24E,KAEdk7D,EAAWl7I,KAAKwa,KAAKsE,IAAIwxE,KAAKtQ,IAGlCg7D,EAAW,GAAIh7I,MAAK+5I,cAAc/5I,KAAKwa,KAAM,EAAG,EAAGygI,EAAQC,GAE3Dl7I,KAAKwa,KAAK6F,QAAQ+tG,OAAOr+F,OAAOirH,GAAU,GAEtCpqB,GAEAoqB,EAASrrH,KAAKq/F,eAAeqH,KAAM,EACnC2kB,EAASrrH,KAAKq/F,eAAe6E,MAAO,GAIpCmnB,EAASrrH,KAAKq/F,eAAe6E,MAAO,EAGxCmnB,EAASrrH,KAAKymG,mBAAqBA,EACnC4kB,EAASrrH,KAAK0/F,cAAe,EAE7B2rB,EAASxwH,QAAS,EAClBwwH,EAASngI,SAAU,EACnBmgI,EAAS3xH,OAAO5b,SAASzN,KAAKi6I,gBAE9Bj6I,KAAK6R,IAAImpI,GAETlzI,GAGJ,OAAO9H,OAUXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUsmD,KAAO,WAM7C,MAJA3sD,MAAKg7H,IAAK,EACVh7H,KAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EAEPxqB,MAUXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUqnD,OAAS,WAK/C,MAHA1tD,MAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EAEPxqB,MAYXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAU80I,QAAU,SAAU3tF,EAAU58B,GAMpE,MAJA5wB,MAAK46I,WAAa,EAElB56I,KAAK0Q,OAAM,EAAM88C,EAAU,EAAG58B,GAAU,GAEjC5wB,MAmBXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAU+0I,KAAO,SAAU5tF,EAAUshC,EAAWl+D,EAAUgE,EAAOsmC,GA4B7F,MA1BiBxxD,UAAbknB,GAAuC,IAAbA,IAAkBA,EAAW,GAC7ClnB,SAAVkrB,IAAuBA,EAAQ,IACjBlrB,SAAdwxD,IAA2BA,GAAY,GAEvCtqC,EAAW5wB,KAAKkyD,eAEhBthC,EAAW5wB,KAAKkyD,cAGpBlyD,KAAK06I,SAAW,EAChB16I,KAAK26I,cAAgB/pH,EACrB5wB,KAAK46I,WAAahmH,EAEdsmC,GAEAl7D,KAAK0Q,OAAM,EAAM88C,EAAUshC,EAAWl+D,GAEtC5wB,KAAK06I,UAAY9pH,EACjB5wB,KAAKg7H,IAAK,EACVh7H,KAAKy6I,OAASz6I,KAAKwa,KAAKmE,KAAKA,KAAOmwE,EAAY9uF,KAAKwa,KAAKmE,KAAK4c,YAI/Dv7B,KAAK0Q,OAAM,EAAO88C,EAAUshC,EAAWl+D,GAGpC5wB,MAeXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUqK,MAAQ,SAAUyqI,EAAS3tF,EAAUshC,EAAWl+D,EAAUyqH,GAoBhG,GAlBgB3xI,SAAZyxI,IAAyBA,GAAU,GACtBzxI,SAAb8jD,IAA0BA,EAAW,GACvB9jD,SAAdolF,GAAyC,OAAdA,IAAsBA,EAAY,KAChDplF,SAAbknB,IAA0BA,EAAW,GACnBlnB,SAAlB2xI,IAA+BA,GAAgB,GAE/CzqH,EAAW5wB,KAAKkyD,eAEhBthC,EAAW5wB,KAAKkyD,cAGpBlyD,KAAK0tD,SAEL1tD,KAAK6a,SAAU,EAEf7a,KAAKwtD,SAAWA,EAChBxtD,KAAK8uF,UAAYA,EAEbqsD,GAAWE,EAEX,IAAK,GAAIvzI,GAAI,EAAO8oB,EAAJ9oB,EAAcA,IAE1B9H,KAAK86I,mBAKT96I,MAAKg7H,IAAK,EACVh7H,KAAKw6I,UAAY5pH,EACjB5wB,KAAK06I,SAAW,EAChB16I,KAAKy6I,OAASz6I,KAAKwa,KAAKmE,KAAKA,KAAOmwE,EAAY9uF,KAAKwa,KAAKmE,KAAK4c,UAGnE,OAAOv7B,OAkBXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUy0I,aAAe,SAAU70I,EAAGwG,EAAGV,EAAK2kB,GAEhEhnB,SAANzD,IAAmBA,EAAI,MACjByD,SAAN+C,IAAmBA,EAAI,KAE3B,IAAIuuI,GAAWh7I,KAAK60B,gBAAe,EAEnC,IAAiB,OAAbmmH,EAEA,OAAO,CAGX,IAAIl8H,GAAM9e,KAAKwa,KAAKsE,GAERpV,UAARqC,GAA+BrC,SAAVgnB,EAErBsqH,EAAS9lH,YAAYnpB,EAAK2kB,GAEbhnB,SAARqC,GAELivI,EAAS9lH,YAAYnpB,EAGzB,IAAImuI,GAAQl6I,KAAKk6I,MACbC,EAAQn6I,KAAKm6I,KAEP,QAANl0I,EAEAi0I,EAAQj0I,EAEHjG,KAAK+P,MAAQ,IAElBmqI,EAAQp7H,EAAIoY,QAAQl3B,KAAK6K,KAAM7K,KAAK4K,QAG9B,OAAN6B,EAEA0tI,EAAQ1tI,EAEHzM,KAAKgQ,OAAS,IAEnBmqI,EAAQr7H,EAAIoY,QAAQl3B,KAAK0O,IAAK1O,KAAK2O,SAGvCqsI,EAASt7H,MAAMw6H,EAAOC,GAEtBa,EAAS9sI,MAAQ,EACjB8sI,EAASxtF,SAAWxtD,KAAKwtD,SAErBxtD,KAAKo6I,mBAELp6I,KAAK4xB,WAAWopH,GAEXh7I,KAAKq6I,oBAEVr6I,KAAK8xB,WAAWkpH,GAGhBh7I,KAAK44I,UAELoC,EAAS5B,aAAap5I,KAAK64I,WAEI,IAA1B74I,KAAKy5I,kBAAoD,IAA1Bz5I,KAAK05I,iBAEzCsB,EAASnmI,MAAM5I,IAAI6S,EAAIsxE,YAAYpwF,KAAKy5I,iBAAkBz5I,KAAK05I,mBAEzD15I,KAAKs6I,kBAAkBr0I,IAAMjG,KAAKu6I,kBAAkBt0I,GAAOjG,KAAKs6I,kBAAkB7tI,IAAMzM,KAAKu6I,kBAAkB9tI,GAErHuuI,EAASnmI,MAAM5I,IAAI6S,EAAIsxE,YAAYpwF,KAAKs6I,kBAAkBr0I,EAAGjG,KAAKu6I,kBAAkBt0I,GAAI6Y,EAAIsxE,YAAYpwF,KAAKs6I,kBAAkB7tI,EAAGzM,KAAKu6I,kBAAkB9tI,IAG/I/C,SAAVgnB,IAEIlqB,MAAMa,QAAQrH,KAAKq+F,SAEnB28C,EAAStqH,MAAQ1wB,KAAKwa,KAAKsE,IAAIwxE,KAAKtwF,KAAKq+F,SAIzC28C,EAAStqH,MAAQ1wB,KAAKq+F,SAI1Br+F,KAAK+4I,UAELiC,EAAS7B,aAAan5I,KAAKg5I,WAI3BgC,EAAS38H,MAAQS,EAAIsxE,YAAYpwF,KAAK65I,iBAAkB75I,KAAK85I,kBAGjEkB,EAASh/E,UAAYh8D,KAAKg8D,SAE1B,IAAIrsC,GAAOqrH,EAASrrH,IAgBpB,OAdAA,GAAK2nG,eAEL3nG,EAAK6jG,OAAO/lH,SAASzN,KAAKwzH,QAC1B7jG,EAAKygG,KAAK3iH,SAASzN,KAAKg6I,cAExBrqH,EAAKugG,SAASjqH,EAAI6Y,EAAIoY,QAAQl3B,KAAKu5I,iBAAiBtzI,EAAGjG,KAAKw5I,iBAAiBvzI,GAC7E0pB,EAAKugG,SAASzjH,EAAIqS,EAAIoY,QAAQl3B,KAAKu5I,iBAAiB9sI,EAAGzM,KAAKw5I,iBAAiB/sI,GAC7EkjB,EAAKmgG,gBAAkBhxG,EAAIoY,QAAQl3B,KAAK25I,YAAa35I,KAAK45I,aAE1DjqH,EAAKo/F,QAAQtiH,EAAIzM,KAAK+uH,QACtBp/F,EAAKqgG,YAAchwH,KAAKgwH,YAExBgrB,EAAS9B,UAEF,GASX74I,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUyd,QAAU,WAEhD9jB,KAAKwa,KAAK4F,UAAU0C,OAAO9iB,MAE3BK,EAAOmtB,MAAMnnB,UAAUyd,QAAQhd,KAAK9G,MAAM,GAAM,IAYpDK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUoZ,QAAU,SAAU1P,EAAOC,GAKjE,MAHAhQ,MAAKsX,KAAKvH,MAAQA,EAClB/P,KAAKsX,KAAKtH,OAASA,EAEZhQ,MAWXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUi1I,UAAY,SAAUrpI,EAAKE,GAQjE,MANAF,GAAMA,GAAO,EACbE,EAAMA,GAAO,EAEbnS,KAAKu5I,iBAAiBtzI,EAAIgM,EAC1BjS,KAAKw5I,iBAAiBvzI,EAAIkM,EAEnBnS,MAWXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUk1I,UAAY,SAAUtpI,EAAKE,GAQjE,MANAF,GAAMA,GAAO,EACbE,EAAMA,GAAO,EAEbnS,KAAKu5I,iBAAiB9sI,EAAIwF,EAC1BjS,KAAKw5I,iBAAiB/sI,EAAI0F,EAEnBnS,MAYXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUm1I,YAAc,SAAUvpI,EAAKE,GAQnE,MANAF,GAAMA,GAAO,EACbE,EAAMA,GAAO,EAEbnS,KAAK25I,YAAc1nI,EACnBjS,KAAK45I,YAAcznI,EAEZnS,MAiBXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUo1I,SAAW,SAAUxpI,EAAKE,EAAKupI,EAAM1jD,EAAMC,GAYjF,GAVYvuF,SAARuI,IAAqBA,EAAM,GACnBvI,SAARyI,IAAqBA,EAAM,GAClBzI,SAATgyI,IAAsBA,EAAO,GACpBhyI,SAATsuF,IAAsBA,EAAO33F,EAAOuyF,OAAOK,OAAOC,MACzCxpF,SAATuuF,IAAsBA,GAAO,GAEjCj4F,KAAK65I,iBAAmB5nI,EACxBjS,KAAK85I,iBAAmB3nI,EACxBnS,KAAK+4I,WAAY,EAEb2C,EAAO,GAAKzpI,IAAQE,EACxB,CACI,GAAIwpI,IAActhH,EAAGpoB,GACjB8+C,EAAQ/wD,KAAKwa,KAAKqF,KAAKkxC,MAAM4qF,GAAWvvI,IAAMiuB,EAAGloB,GAAOupI,EAAM1jD,EAClEjnC,GAAMknC,KAAKA,GAEXj4F,KAAKg5I,UAAYjoF,EAAMqoC,aAAa,IAGpCp5F,KAAKg5I,UAAUpwI,UACf5I,KAAK+4I,WAAY,EAGrB,MAAO/4I,OAmBXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUsuI,SAAW,SAAUzkF,EAAME,EAAMD,EAAME,EAAMqrF,EAAM1jD,EAAMC,GAmB/F,GAjBavuF,SAATwmD,IAAsBA,EAAO,GACpBxmD,SAAT0mD,IAAsBA,EAAO,GACpB1mD,SAATymD,IAAsBA,EAAO,GACpBzmD,SAAT2mD,IAAsBA,EAAO,GACpB3mD,SAATgyI,IAAsBA,EAAO,GACpBhyI,SAATsuF,IAAsBA,EAAO33F,EAAOuyF,OAAOK,OAAOC,MACzCxpF,SAATuuF,IAAsBA,GAAO,GAGjCj4F,KAAKy5I,iBAAmB,EACxBz5I,KAAK05I,iBAAmB,EAExB15I,KAAKs6I,kBAAkBruI,IAAIikD,EAAMC,GACjCnwD,KAAKu6I,kBAAkBtuI,IAAImkD,EAAMC,GAEjCrwD,KAAK44I,WAAY,EAEb8C,EAAO,IAAOxrF,IAASE,GAAUD,IAASE,GAC9C,CACI,GAAIsrF,IAAc11I,EAAGiqD,EAAMzjD,EAAG0jD,GAC1BY,EAAQ/wD,KAAKwa,KAAKqF,KAAKkxC,MAAM4qF,GAAWvvI,IAAMnG,EAAGmqD,EAAM3jD,EAAG4jD,GAAQqrF,EAAM1jD,EAC5EjnC,GAAMknC,KAAKA,GAEXj4F,KAAK64I,UAAY9nF,EAAMqoC,aAAa,IAGpCp5F,KAAK64I,UAAUjwI,UACf5I,KAAK44I,WAAY,EAGrB,MAAO54I,OAYXK,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAUu1I,GAAK,SAAUtmH,GAarD,MAXIA,GAAOtkB,QAEPhR,KAAKk6I,MAAQ5kH,EAAOtkB,OAAO/K,EAC3BjG,KAAKm6I,MAAQ7kH,EAAOtkB,OAAOvE,IAI3BzM,KAAKk6I,MAAQ5kH,EAAO7a,MAAMxU,EAAKqvB,EAAOjM,OAAOpjB,EAAIqvB,EAAOvlB,MACxD/P,KAAKm6I,MAAQ7kH,EAAO7a,MAAMhO,EAAK6oB,EAAOjM,OAAO5c,EAAI6oB,EAAOtlB,QAGrDhQ,MAQXuH,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,SAE7D2F,IAAK,WACD,MAAOhM,MAAKsX,KAAKvH,OAGrB9D,IAAK,SAAU1C,GACXvJ,KAAKsX,KAAKvH,MAAQxG,KAS1BhC,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,UAE7D2F,IAAK,WACD,MAAOhM,MAAKsX,KAAKtH,QAGrB/D,IAAK,SAAU1C,GACXvJ,KAAKsX,KAAKtH,OAASzG,KAS3BhC,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,KAE7D2F,IAAK,WACD,MAAOhM,MAAKk6I,OAGhBjuI,IAAK,SAAU1C,GACXvJ,KAAKk6I,MAAQ3wI,KASrBhC,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,KAE7D2F,IAAK,WACD,MAAOhM,MAAKm6I,OAGhBluI,IAAK,SAAU1C,GACXvJ,KAAKm6I,MAAQ5wI,KAUrBhC,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,QAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKiG,EAAKjG,KAAKsX,KAAKvH,MAAQ,MAUtDxI,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,SAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKiG,EAAKjG,KAAKsX,KAAKvH,MAAQ,MAUtDxI,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,OAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKyM,EAAKzM,KAAKsX,KAAKtH,OAAS,MAUvDzI,OAAO2E,eAAe7L,EAAOu5B,UAAUu4B,OAAOC,QAAQ/rD,UAAW,UAE7D2F,IAAK,WACD,MAAOjG,MAAKI,MAAMnG,KAAKyM,EAAKzM,KAAKsX,KAAKtH,OAAS,MAmCvD3P,EAAOowD,OAAS,SAAUj2C,EAAMgP,GAE5BnpB,EAAOkpB,OAAOziB,KAAK9G,KAAMwa,EAAMgP,GAM/BxpB,KAAK67I,QAAU,KAOf77I,KAAK87I,wBAAyB,EAO9B97I,KAAK+7I,UAAW,EAQhB/7I,KAAKg8I,MAAQ,EAQbh8I,KAAKi8I,UAAY,EAMjBj8I,KAAKk8I,SAAW,IAShBl8I,KAAKm8I,iBAAmB,EAQxBn8I,KAAKo8I,SAAW,GAAI/7I,GAAOkN,UAAU,EAAG,EAAG,EAAG,GAO9CvN,KAAKq8I,UAAYh8I,EAAO8C,SAMxBnD,KAAKs8I,0BAA2B,EAOhCt8I,KAAKu8I,gBAAkB,GAOvBv8I,KAAKw8I,mBAAoB,EAUzBx8I,KAAKy8I,kBAAmB,EAOxBz8I,KAAK08I,iBAAkB,EAQvB18I,KAAK28I,uBAAyB,EAS9B38I,KAAK48I,kBAAoB,EASzB58I,KAAK68I,oBAAsB,EAO3B78I,KAAK88I,YAAc,IAQnB98I,KAAK+8I,oBAAsB,EAQ3B/8I,KAAKg9I,eAAiB,EAOtBh9I,KAAKi9I,mBAAqB,EAO1Bj9I,KAAKk9I,cAAgB,GAAI78I,GAAO2M,MAAM,EAAG,GAQzChN,KAAKm9I,wBAAyB,EAO9Bn9I,KAAKo9I,UAAY,GAOjBp9I,KAAKq9I,YAAc,GAOnBr9I,KAAKs9I,aAAej9I,EAAOk9I,OAO3Bv9I,KAAKw9I,2BAA4B,EAOjCx9I,KAAKy9I,gBAAkBp9I,EAAOowD,OAAOitF,kBAQrC19I,KAAK47E,OACD+hE,YAAY,EACZ5tI,MAAO,EACPC,OAAQ,EACRylC,QAAS,EACTC,QAAS,GAWb11C,KAAK2a,OAAS,GAAIta,GAAOkN,UAQzBvN,KAAK49I,aAAepjI,EAAKC,MAAME,OAQ/B3a,KAAK69I,gBAQL79I,KAAK89I,iBAAmB,EAOxB99I,KAAK+9I,SASL/9I,KAAKg+I,OAAS,GAAI39I,GAAO+a,OASzBpb,KAAKi+I,OAAS,GAAI59I,GAAO+a,OAUzBpb,KAAKk+I,YAAc,GAAI79I,GAAO+a,OAQ9Bpb,KAAKm+I,cAAgB,KAQrBn+I,KAAKo+I,eAAiB,KAStBp+I,KAAKq+I,eAAgB,EAUrBr+I,KAAKs+I,YAAc,GAAIj+I,GAAO2M,MAQ9BhN,KAAKu+I,UAAY,GAIrBl+I,EAAOowD,OAAOpqD,UAAYkB,OAAOmZ,OAAOrgB,EAAOkpB,OAAOljB,WACtDhG,EAAOowD,OAAOpqD,UAAU8B,YAAc9H,EAAOowD,OAO7CpwD,EAAOowD,OAAO+tF,WAAa,EAO3Bn+I,EAAOowD,OAAOguF,cAAgB,EAQ9Bp+I,EAAOowD,OAAOiuF,cAAgB,EAO9Br+I,EAAOowD,OAAOkuF,mBAAqB,EAOnCt+I,EAAOowD,OAAOmuF,mBAAqB,EAOnCv+I,EAAOowD,OAAOitF,kBAAoB,EAOlCr9I,EAAOowD,OAAOouF,mBAAqB,EA4BnCx+I,EAAOowD,OAAOpqD,UAAUqqD,cAAgB,SAAU9/B,EAAU7kB,EAAK2kB,EAAOwF,GA2BpE,MAzBiBxsB,UAAbknB,IAA0BA,EAAW,GAC3BlnB,SAAVwsB,IAAuBA,EAAQl2B,KAAKwa,KAAKC,OAExCza,KAAK67I,UAEN77I,KAAK67I,QAAU77I,KAAKwa,KAAK3I,IAAIm/C,aAAa3wD,EAAOutB,QAAQC,OAAQqI,GACjEl2B,KAAK67I,QAAQ1tH,UAAYnuB,KAAKs9I,cAGjB,IAAb1sH,IAEiB,KAAbA,IAEA5wB,KAAK87I,wBAAyB,EAC9BlrH,EAAW,GAGf5wB,KAAK67I,QAAQlrH,eAAeC,EAAU7kB,EAAK2kB,GAE3C1wB,KAAK67I,QAAQlpH,OAAO,qBAAsB3yB,MAE1CA,KAAKo9I,UAAYrxI,EACjB/L,KAAKq9I,YAAc3sH,GAGhB1wB,MAeXK,EAAOowD,OAAOpqD,UAAUoB,QAAU,SAAU4rB,EAAUtQ,GAIlD,MAFA/iB,MAAK67I,QAAQ5nH,cAAcZ,EAAUtQ,EAAiBhc,WAE/C/G,MAYXK,EAAOowD,OAAOpqD,UAAU0wF,SAAW,WAI/B,MAFA/2F,MAAK67I,QAAQlpH,OAAO,eAAe,GAE5B3yB,MAYXK,EAAOowD,OAAOpqD,UAAU2wF,UAAY,WAIhC,MAFAh3F,MAAK67I,QAAQlpH,OAAO,eAAe,GAE5B3yB,MAWXK,EAAOowD,OAAOpqD,UAAUy4I,QAAU,WAM9B,MAJA9+I,MAAK67I,QAAQzoH,cAAc,QAAQ,GAEnCpzB,KAAK67I,QAAQlpH,OAAO,eAAe,GAE5B3yB,MAYXK,EAAOowD,OAAOpqD,UAAU04I,WAAa,SAAUC,GAS3C,MAPAh/I,MAAKg8I,MAAQ,EAEItyI,SAAbs1I,IAEAh/I,KAAKi8I,UAAY+C,GAGdh/I,MAUXK,EAAOowD,OAAOpqD,UAAUyd,QAAU,WAE9B9jB,KAAKwpB,OAAO1G,OAAO9iB,MAAM,GAEzBA,KAAK67I,QAAQ/3H,UAEb9jB,KAAKwa,KAAO,KACZxa,KAAKwpB,OAAS,KACdxpB,KAAK6kB,QAAS,EACd7kB,KAAK6a,SAAU,GAUnBxa,EAAOowD,OAAOpqD,UAAUkY,OAAS,WAEzBve,KAAKy9I,kBAAoBp9I,EAAOowD,OAAOkuF,qBAEnC3+I,KAAKm+I,eAELn+I,KAAKm+I,cAAcvyH,kBACnB5rB,KAAK2a,OAAOjJ,SAAS1R,KAAKm+I,cAAcl/H,cAAchZ,EAAGjG,KAAKm+I,cAAcl/H,cAAcxS,IAErFzM,KAAKo+I,gBAEVp+I,KAAK2a,OAAOjJ,SAAS1R,KAAKo+I,eAAet7B,OAAQ9iH,KAAKo+I,eAAer7B,SAIzE/iH,KAAK+7I,UAAY/7I,KAAKwa,KAAKmE,KAAKoa,IAAM/4B,KAAKu+I,WAE3Cv+I,KAAKi/I,QAsBb5+I,EAAOowD,OAAOpqD,UAAU64I,YAAc,SAAUnoH,EAAQ0e,EAASC,EAAS2oG,GAYtE,MAVgB30I,UAAZ+rC,IAAyBA,EAAU,GACvB/rC,SAAZgsC,IAAyBA,EAAU,GACjBhsC,SAAlB20I,IAA+BA,GAAgB,GAEnDr+I,KAAKo+I,eAAiB,KACtBp+I,KAAKm+I,cAAgBpnH,EACrB/2B,KAAKq+I,cAAgBA,EAErBr+I,KAAKs+I,YAAYryI,IAAIwpC,EAASC,GAEvB11C,MAoBXK,EAAOowD,OAAOpqD,UAAU84I,aAAe,SAAUr2H,EAAS2sB,EAASC,GAY/D,MAVgBhsC,UAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAMye,eACvC90B,SAAZ+rC,IAAyBA,EAAU,GACvB/rC,SAAZgsC,IAAyBA,EAAU,GAEvC11C,KAAKo+I,eAAiBt1H,EACtB9oB,KAAKm+I,cAAgB,KACrBn+I,KAAKq+I,eAAgB,EAErBr+I,KAAKs+I,YAAYryI,IAAIwpC,EAASC,GAEvB11C,MAyBXK,EAAOowD,OAAOpqD,UAAU44I,KAAO,SAAU9yI,EAAMlG,EAAGwG,GAE9C,GAAIzM,KAAKwa,KAAKmE,KAAKoa,IAAM/4B,KAAKu+I,WAAcv+I,KAAKi8I,UAAY,GAAKj8I,KAAKg8I,QAAUh8I,KAAKi8I,UAElF,OAAO,CAGX,IAAI/+G,GAAQl9B,KAAK88I,WAGgB,KAA7B98I,KAAK+8I,sBAEL7/G,GAAS78B,EAAO0F,KAAKmxB,SAASl3B,KAAK+8I,oBAAqB/8I,KAAK+8I,sBAG7D5wI,EAEInM,KAAKo8I,SAASrsI,MAAQ,EAEtB/P,KAAKo8I,SAAS1qI,SAASvF,EAAKlG,EAAGkG,EAAKM,IAIpCzM,KAAKo8I,SAASn2I,EAAIkG,EAAKlG,EACvBjG,KAAKo8I,SAAS3vI,EAAIN,EAAKM,GAGtBzM,KAAKm+I,eAENn+I,KAAKo8I,SAASrsI,MAAQ,EAEtB/P,KAAKo8I,SAAS1qI,SAAS1R,KAAKm+I,cAAc1jI,MAAMxU,EAAIjG,KAAKs+I,YAAYr4I,EAAGjG,KAAKm+I,cAAc1jI,MAAMhO,EAAIzM,KAAKs+I,YAAY7xI,IAItHzM,KAAKo8I,SAASn2I,EAAIjG,KAAKm+I,cAAc1jI,MAAMxU,EAAIjG,KAAKs+I,YAAYr4I,EAChEjG,KAAKo8I,SAAS3vI,EAAIzM,KAAKm+I,cAAc1jI,MAAMhO,EAAIzM,KAAKs+I,YAAY7xI,GAGhEzM,KAAKs8I,2BAELp/G,GAASl9B,KAAKm+I,cAAcxuH,KAAKuN,QAGhCl9B,KAAKo+I,iBAENp+I,KAAKo8I,SAASrsI,MAAQ,EAEtB/P,KAAKo8I,SAAS1qI,SAAS1R,KAAKo+I,eAAe3jI,MAAMxU,EAAIjG,KAAKs+I,YAAYr4I,EAAGjG,KAAKo+I,eAAe3jI,MAAMhO,EAAIzM,KAAKs+I,YAAY7xI,IAIxHzM,KAAKo8I,SAASn2I,EAAIjG,KAAKo+I,eAAe3jI,MAAMxU,EAAIjG,KAAKs+I,YAAYr4I,EACjEjG,KAAKo8I,SAAS3vI,EAAIzM,KAAKo+I,eAAe3jI,MAAMhO,EAAIzM,KAAKs+I,YAAY7xI,GAIzE,IAAIq1D,GAAS9hE,KAAKo8I,SAASrsI,MAAQ,EAAK/P,KAAKo8I,SAAShjI,QAAUpZ,KAAKo8I,SAASn2I,EAC1E87D,EAAS/hE,KAAKo8I,SAASpsI,OAAS,EAAKhQ,KAAKo8I,SAAS/iI,QAAUrZ,KAAKo8I,SAAS3vI,EAE3EyB,EAASlO,KAAkB,cAAIA,KAAKm+I,cAAcjwI,MAAQlO,KAAKq8I,SAGzD3yI,UAANzD,GAAyByD,SAAN+C,IAEnByB,EAAQlO,KAAKwa,KAAK0E,KAAKxJ,SAAS3P,KAAK+M,MAAMrG,EAAIs1D,EAAO97D,EAAI67D,KAI7B,IAA7B9hE,KAAK68I,sBAEL3uI,GAAS7N,EAAO0F,KAAKmxB,SAASl3B,KAAK68I,oBAAqB78I,KAAK68I,qBAGjE,IAAIuC,GAAQ,EACRC,EAAQ,CAGE,KAAVnxI,GAAyB,MAAVA,EAEfkxI,EAAQr5I,KAAKoH,IAAInN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUgvB,EAEpC,KAAVhvB,GAA0B,MAAVA,EAErBmxI,EAAQt5I,KAAKqH,IAAIpN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUgvB,GAInDkiH,EAAQr5I,KAAKoH,IAAInN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUgvB,EACnDmiH,EAAQt5I,KAAKqH,IAAIpN,KAAKwa,KAAK0E,KAAKnQ,SAASb,IAAUgvB,EAGvD,IAAIoiH,GAAS,IAab,IAXIt/I,KAAK87I,wBAELwD,EAASt/I,KAAK67I,QAAQhnH,gBAAe,GAAO,EAAMitC,EAAOC,EAAO/hE,KAAKo9I,UAAWp9I,KAAKq9I,aAErFiC,EAAOj9G,KAAKk9G,cAAgBv/I,MAI5Bs/I,EAASt/I,KAAK67I,QAAQhnH,gBAAe,GAGrCyqH,EACJ,CAiBI,GAhBAA,EAAO5/H,MAAMoiD,EAAOC,GAEpBu9E,EAAOj9G,KAAKy/B,MAAQA,EACpBw9E,EAAOj9G,KAAK0/B,MAAQA,EACpBu9E,EAAOj9G,KAAKm9G,SAAWx/I,KAAKy/I,eAC5BH,EAAOj9G,KAAKq9G,aAAe1/I,KAAKi9I,mBAChCqC,EAAOj9G,KAAKs9G,iBAAmB3/I,KAAKm9I,uBAEhCn9I,KAAKy/I,iBAAmBp/I,EAAOowD,OAAOguF,gBAEtCa,EAAO9xF,SAAWxtD,KAAKg9I,gBAG3BsC,EAAOpxI,MAAQA,EAAQlO,KAAK48I,kBAGC,KAAzB58I,KAAKu8I,gBACT,CACI,GAA6D,OAAzD+C,EAAOp4F,WAAW82C,aAAah+F,KAAKu8I,iBACxC,CACI,GAAI9+C,GAAOz9F,KAAK+9I,MAAM/9I,KAAKu8I,gBAE3B+C,GAAOp4F,WAAWr1C,IAAI4rF,EAAKryF,KAAMqyF,EAAKzd,OAAQyd,EAAK12C,UAAW02C,EAAKz2C,KAAMy2C,EAAKE,iBAGlF2hD,EAAOp4F,WAAWJ,KAAK9mD,KAAKu8I,qBAIxBv8I,MAAKy8I,kBAEL6C,EAAO5uH,MAAQ1wB,KAAK69I,aAAa79I,KAAK89I,kBAEtC99I,KAAK89I,mBAED99I,KAAK89I,kBAAoB99I,KAAK69I,aAAah2I,SAE3C7H,KAAK89I,iBAAmB,IAGvB99I,KAAKw8I,oBAEV8C,EAAO5uH,MAAQ1wB,KAAK69I,aAAa93I,KAAKI,MAAMJ,KAAK4D,SAAW3J,KAAK69I,aAAah2I,SAIlFy3I,GAAOj9G,KAAKu9G,YAER5/I,KAAK47E,MAAM+hE,YAEX2B,EAAO3vH,KAAKlQ,QAAQzf,KAAK47E,MAAM7rE,MAAO/P,KAAK47E,MAAM5rE,OAAQhQ,KAAK47E,MAAMnmC,QAASz1C,KAAK47E,MAAMlmC,SAG5F4pG,EAAO3vH,KAAKymG,mBAAqBp2H,KAAK6/I,yBAEtCP,EAAOj9G,KAAKu9G,WAAY,GAG5BN,EAAO3vH,KAAKugG,SAASjkH,IAAImzI,EAAOC,GAChCC,EAAO3vH,KAAKo/F,QAAQ9iH,IAAIjM,KAAKk9I,cAAcj3I,EAAGjG,KAAKk9I,cAAczwI,GAEjEzM,KAAKu+I,UAAYv+I,KAAKwa,KAAKmE,KAAKoa,IAAM/4B,KAAKk8I,SAE3Cl8I,KAAKg8I,QAELh8I,KAAKg+I,OAAOn/H,SAASygI,EAAQt/I,KAAMk9B,GAE/Bl9B,KAAKi8I,UAAY,GAAKj8I,KAAKg8I,QAAUh8I,KAAKi8I,WAE1Cj8I,KAAKk+I,YAAYr/H,SAAS7e,KAAMA,KAAKi8I,aAejD57I,EAAOowD,OAAOpqD,UAAUy5I,cAAgB,SAAUh3H,GAI9C,MAFgBpf,UAAZof,IAAyBA,EAAU9oB,KAAKwa,KAAKuF,MAAMye,eAEhDx+B,KAAKi/I,KAAK,KAAMn2H,EAAQg6F,OAAQh6F,EAAQi6F,SAYnD1iH,EAAOowD,OAAOpqD,UAAU05I,aAAe,SAAUhpH,GAE7C,MAAO/2B,MAAKi/I,KAAK,KAAMloH,EAAOtc,MAAMxU,EAAG8wB,EAAOtc,MAAMhO,IAaxDpM,EAAOowD,OAAOpqD,UAAU25I,SAAW,SAAU/5I,EAAGwG,GAE5C,MAAOzM,MAAKi/I,KAAK,KAAMh5I,EAAGwG,IA0B9BpM,EAAOowD,OAAOpqD,UAAU45I,oBAAsB,SAAUlwI,EAAOC,EAAQylC,EAASC,GAe5E,MAbgBhsC,UAAZ+rC,IAAyBA,EAAU,GACvB/rC,SAAZgsC,IAAyBA,EAAU,GAEvC11C,KAAK47E,MAAM+hE,YAAa,EACxB39I,KAAK47E,MAAM7rE,MAAQA,EACnB/P,KAAK47E,MAAM5rE,OAASA,EACpBhQ,KAAK47E,MAAMnmC,QAAUA,EACrBz1C,KAAK47E,MAAMlmC,QAAUA,EAGrB11C,KAAK67I,QAAQroH,QAAQ,eAAgB,OAAQzjB,EAAOC,EAAQylC,EAASC,GACrE11C,KAAK67I,QAAQlpH,OAAO,kBAAkB,GAE/B3yB,MAsBXK,EAAOowD,OAAOpqD,UAAU65I,gBAAkB,SAAUjuI,EAAKE,EAAKguI,EAAOx2I,GAYjE,MAVcD,UAAVy2I,IAAuBA,GAAQ,GACpBz2I,SAAXC,IAAwBA,GAAS,GAErC3J,KAAK69I,aAAex9I,EAAOw1B,WAAW2xF,YAAYv1G,EAAKE,GAEvDnS,KAAK89I,iBAAmB,EAExB99I,KAAKy8I,iBAAmB0D,EACxBngJ,KAAKw8I,kBAAoB7yI,EAElB3J,MAuBXK,EAAOowD,OAAOpqD,UAAU+5I,mBAAqB,SAAUh1I,EAAM40E,EAAQj5B,EAAWC,EAAM22C,GAelF,MAbA39F,MAAK+9I,MAAM3yI,IACPA,KAAMA,EACN40E,OAAQA,EACRj5B,UAAWA,EACXC,KAAMA,EACN22C,gBAAiBA,GAIrB39F,KAAK67I,QAAQroH,QAAQ,iBAAkB,aAAcpoB,EAAM40E,EAAQj5B,EAAWC,EAAM22C,GAEpF39F,KAAKu8I,gBAAkBnxI,EAEhBpL,MAaXK,EAAOowD,OAAOpqD,UAAUwd,MAAQ,SAAU5d,EAAGwG,EAAG4zI,GAElC32I,SAANzD,IAAmBA,EAAI,IACjByD,SAAN+C,IAAmBA,EAAI,IACP/C,SAAhB22I,IAA6BA,GAAc,GAE/CrgJ,KAAKwa,KAAKqJ,MAAM4tC,KAAK,gBAAiBxrD,EAAGwG,GACzCzM,KAAKwa,KAAKqJ,MAAM4tC,KAAK,kBAAoBzxD,KAAK67I,QAAQjnH,MAAQ,aAAe50B,KAAK67I,QAAQh0I,OAAQ5B,EAAGwG,EAAI,IAErG4zI,GAEArgJ,KAAK67I,QAAQ5nH,cAAcj0B,KAAKwa,KAAKqJ,MAAM8L,KAAM3vB,KAAKwa,KAAKqJ,MAAO,2BAY1Etc,OAAO2E,eAAe7L,EAAOowD,OAAOpqD,UAAW,eAE3C2F,IAAK,WAED,MAAOhM,MAAKs9I,cAIhBrxI,IAAK,SAAUkiB,GAEXnuB,KAAKs9I,aAAenvH,EAEpBnuB,KAAK67I,QAAQ1tH,UAAYnuB,KAAKs9I,gBAqCtC/1I,OAAO2E,eAAe7L,EAAOowD,OAAOpqD,UAAW,kBAE3C2F,IAAK,WAED,MAAOhM,MAAKy9I,iBAIhBxxI,IAAK,SAAU/D,GAEX,OAAQA,GAEJ,IAAK7H,GAAOowD,OAAOouF,mBACnB,IAAKx+I,GAAOowD,OAAOkuF,mBACf3+I,KAAK49I,aAAe59I,KAAK2a,MACzB,MAEJ,KAAKta,GAAOowD,OAAOmuF,mBACf5+I,KAAK49I,aAAe59I,KAAKwa,KAAKoC,OAAOlC,IACrC,MAEJ,KAAKra,GAAOowD,OAAOitF,kBACf19I,KAAK49I,aAAe59I,KAAKwa,KAAKC,MAAME,OAI5C3a,KAAKy9I,gBAAkBv1I,KAY/BX,OAAO2E,eAAe7L,EAAOowD,OAAOpqD,UAAW,4BAE3C2F,IAAK,WAED,MAAOhM,MAAKw9I,2BAIhBvxI,IAAK,SAAU1C,GAEXvJ,KAAKw9I,0BAA4Bj0I,EAEjCvJ,KAAK67I,QAAQlpH,OAAO,0BAA2BppB,GAC/CvJ,KAAK67I,QAAQlpH,OAAO,kBAAkB,MAa9CprB,OAAO2E,eAAe7L,EAAOowD,OAAOpqD,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAKo8I,SAASn2I,GAIzBgG,IAAK,SAAU1C,GAEXvJ,KAAKo8I,SAASn2I,EAAIsD,KAY1BhC,OAAO2E,eAAe7L,EAAOowD,OAAOpqD,UAAW,KAE3C2F,IAAK,WAED,MAAOhM,MAAKo8I,SAAS3vI,GAIzBR,IAAK,SAAU1C,GAEXvJ,KAAKo8I,SAAS3vI,EAAIlD,KAwB1BlJ,EAAOk9I,OAAS,SAAU/iI,EAAMvU,EAAGwG,EAAGV,EAAK2kB,GAEvCrwB,EAAO+tB,OAAOtnB,KAAK9G,KAAMwa,EAAMvU,EAAGwG,EAAGV,EAAK2kB,GAE1C1wB,KAAKqpB,OAAOpd,IAAI,IAEhBjM,KAAKqiC,MACDk9G,cAAe,KACfz9E,MAAO,EACPC,MAAO,EACP69E,WAAW,EACXD,kBAAkB,EAClBH,SAAU,EACVE,aAAc,IAKtBr/I,EAAOk9I,OAAOl3I,UAAYkB,OAAOmZ,OAAOrgB,EAAO+tB,OAAO/nB,WACtDhG,EAAOk9I,OAAOl3I,UAAU8B,YAAc9H,EAAOk9I,OAS7Cl9I,EAAOk9I,OAAOl3I,UAAUsmD,KAAO,WAQ3B,MANA3sD,MAAKguB,OAAQ,EACbhuB,KAAKwqB,QAAS,EACdxqB,KAAK6a,SAAU,EAEf7a,KAAKqiC,KAAKk9G,cAActB,OAAOp/H,SAAS7e,MAEjCA,MAUXK,EAAOk9I,OAAOl3I,UAAUkY,OAAS,WAExBve,KAAKwqB,SAKNxqB,KAAKqiC,KAAKm9G,SAAWn/I,EAAOowD,OAAOguF,gBAE/Bz+I,KAAKqiC,KAAKm9G,WAAan/I,EAAOowD,OAAOiuF,cAEjC1+I,KAAKwa,KAAK6F,QAAQ+tG,OAAO6G,aAAaj1H,KAAMA,KAAKqiC,KAAKy/B,MAAO9hE,KAAKqiC,KAAK0/B,OAAO,GAAQ/hE,KAAKqiC,KAAKq9G,cAEhG1/I,KAAK2sD,OAKJ3sD,KAAKqiC,KAAKk9G,cAAc3B,aAAa9uI,WAAW9O,OAEjDA,KAAK2sD,QAKb3sD,KAAKqiC,KAAKs9G,mBAEV3/I,KAAKw2B,SAAWzwB,KAAK+M,MAAM9S,KAAK2vB,KAAKugG,SAASzjH,EAAGzM,KAAK2vB,KAAKugG,SAASjqH,IAGpEjG,KAAKqiC,KAAKk9G,cAAc7C,iBAExB18I,KAAKwa,KAAKC,MAAM1H,KAAK/S,KAAMA,KAAKqiC,KAAKk9G,cAAc5C,0BA8C3Dt8I,EAAOywD,SAAW,SAAUt2C,EAAMvU,EAAGwG,EAAGV,EAAK8kD,EAAMyvF,GAU/C,GARkB52I,SAAd42I,IAA2BA,EAAY,WAM3CtgJ,KAAKkI,KAAO7H,EAAOuC,UAEd4X,EAAKsF,MAAM4mF,aAAa71C,GAGzB,WADAzoD,SAAQG,KAAK,qEAIjB,IAAIg4I,GAAW/lI,EAAKsF,MAAM4nF,QAAQ72C,EAwBlC,IAlBA7wD,KAAKwgJ,UAAY,GAAI1vF,UAASyvF,GAK9BvgJ,KAAKsgJ,UAAY,GAAIG,mBAAkBF,EAAUD,EAAWtgJ,KAAKwgJ,WAKjExgJ,KAAKi3F,QAAU,GAAIypD,iBAAgB1gJ,KAAKwgJ,WAMxCxgJ,KAAK2gJ,UAAY,IAEE,gBAAR50I,GAEP,GAAIo2B,GAAU,GAAIr8B,MAAK4oD,QAAQl0C,EAAKsF,MAAMioF,eAAeh8F,QAIzD,IAAIo2B,GAAUp2B,CAMlB/L,MAAKmiC,QAAUA,EAEfr8B,KAAKwkB,uBAAuBxjB,KAAK9G,MAEjCA,KAAKynB,OAAQ,EACbznB,KAAKg8D,UAAYl2D,KAAKtB,WAAWC,OAMjCzE,KAAK4gJ,kBAAoB,GAAIvgJ,GAAO2M,MAMpChN,KAAK6gJ,kBAAoB,GAAIxgJ,GAAO2M,KAEpC,IAAIhG,GAAShH,KAAKi3F,QAAQ6pD,eAM1B9gJ,MAAK00E,SAAW,GAAI5uE,MAAKyO,aAAoC,EAAvBvN,EAAO+5I,eAM7C/gJ,KAAKghJ,IAAM,GAAIl7I,MAAKyO,aAAoC,EAAvBvN,EAAO+5I,eAMxC/gJ,KAAKsuE,QAAU,GAAIxoE,MAAKstE,YAAYpsE,EAAOi6I,eAAep5I,OAE1D,KAAK,GAAIC,GAAI,EAAGA,EAAI9H,KAAKsuE,QAAQzmE,OAAQC,IAErC9H,KAAKsuE,QAAQxmE,GAAKd,EAAOi6I,eAAen5I,EAO5C9H,MAAKq1E,OAAS,GAAIvvE,MAAKyO,cAAc,EAAG,EAAG,EAAG,IAE9CvU,KAAKkhJ,iBAAiBl6I,EAAOm6I,WAAYn6I,EAAOo6I,YAEhDphJ,KAAKi3F,QAAQoqD,aAAarhJ,KAAKsgJ,WAC/BtgJ,KAAKi3F,QAAQqqD,uBAAuBhB,GAAW,GAE/CjgJ,EAAOqmD,UAAUkB,KAAKtnC,KAAKxZ,KAAK9G,KAAMwa,EAAMvU,EAAGwG,IAInDpM,EAAOywD,SAASzqD,UAAYkB,OAAOmZ,OAAO5a,KAAKwkB,uBAAuBjkB,WACtEhG,EAAOywD,SAASzqD,UAAU8B,YAAc9H,EAAOywD,SAE/CzwD,EAAOqmD,UAAUkB,KAAKC,QAAQ/gD,KAAKzG,EAAOywD,SAASzqD,WAC/C,QACA,WACA,aACA,UACA,gBACA,WACA,UAGJhG,EAAOywD,SAASzqD,UAAU0tD,iBAAmB1zD,EAAOqmD,UAAUsG,QAAQhwC,UACtE3c,EAAOywD,SAASzqD,UAAU2tD,cAAgB3zD,EAAOqmD,UAAUkB,KAAK5qC,UAQhE3c,EAAOywD,SAASzqD,UAAU2W,UAAY,WAElC,MAAKhd,MAAK+zD,oBAKV/zD,KAAKi3F,QAAQsqD,OAAOvhJ,KAAK2gJ,WAEzB3gJ,KAAKwhJ,aAEExhJ,KAAKg0D,kBAPD,GAkBf3zD,EAAOywD,SAASzqD,UAAUo7I,WAAa,SAAUjqF,GAG7C,GAAIoO,GAAKpO,EAAcoO,EAEvB5lE,MAAK0hJ,cAAgB97E,EAAGmN,eACxB/yE,KAAK2hJ,aAAe/7E,EAAGmN,eACvB/yE,KAAK4hJ,UAAYh8E,EAAGmN,eACpB/yE,KAAK6hJ,aAAej8E,EAAGmN,eAEvBnN,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK0hJ,eACpC97E,EAAGqN,WAAWrN,EAAGwJ,aAAcpvE,KAAK00E,SAAU9O,EAAGk8E,cAEjDl8E,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK4hJ,WACpCh8E,EAAGqN,WAAWrN,EAAGwJ,aAAepvE,KAAKghJ,IAAKp7E,EAAGk8E,cAE7Cl8E,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK6hJ,cACpCj8E,EAAGqN,WAAWrN,EAAGwJ,aAAcpvE,KAAKq1E,OAAQzP,EAAGsN,aAE/CtN,EAAGuJ,WAAWvJ,EAAG6J,qBAAsBzvE,KAAK2hJ,cAC5C/7E,EAAGqN,WAAWrN,EAAG6J,qBAAsBzvE,KAAKsuE,QAAS1I,EAAGsN,cAS5D7yE,EAAOywD,SAASzqD,UAAUu+D,aAAe,SAAUpN,IAG1Cx3D,KAAK6a,SAAW7a,KAAKqe,OAAS,IAKnCm5C,EAAcvG,YAAYh1B,OAGrBj8B,KAAK0hJ,eAEN1hJ,KAAKyhJ,WAAWjqF,GAGpBA,EAAcqW,cAAcW,UAAUhX,EAAcqW,cAAck0E,aAElE/hJ,KAAKgiJ,gBAAgBxqF,GAErBA,EAAcvG,YAAYvgD,UAS9BrQ,EAAOywD,SAASzqD,UAAU27I,gBAAkB,SAAUxqF,GAElD,GAAIoO,GAAKpO,EAAcoO,GAEnB+H,EAAanW,EAAcmW,WAC3Bv/D,EAASopD,EAAcppD,OACvBw/D,EAASpW,EAAcqW,cAAck0E,WAEzCvqF,GAAcyN,iBAAiBC,aAAallE,KAAKg8D,WAGjD4J,EAAG6I,iBAAiBb,EAAOc,mBAAmB,EAAO1uE,KAAKyqB,eAAepW,SAAQ,IACjFuxD,EAAGiJ,UAAUjB,EAAOkB,iBAAkBnB,EAAW1nE,GAAI0nE,EAAWlhE,GAChEm5D,EAAGiJ,UAAUjB,EAAOmB,cAAe3gE,EAAOnI,GAAImI,EAAO3B,GACrDm5D,EAAG+I,UAAUf,EAAOvvD,MAAOre,KAAK6rB,YAE3B7rB,KAAKynB,OA4BNznB,KAAKynB,OAAQ,EAEbm+C,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK0hJ,eACpC97E,EAAGqN,WAAWrN,EAAGwJ,aAAcpvE,KAAK00E,SAAU9O,EAAGk8E,cACjDl8E,EAAGyJ,oBAAoBzB,EAAO0B,gBAAiB,EAAG1J,EAAG2J,OAAO,EAAO,EAAG,GAGtE3J,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK4hJ,WACpCh8E,EAAGqN,WAAWrN,EAAGwJ,aAAcpvE,KAAKghJ,IAAKp7E,EAAGk8E,cAC5Cl8E,EAAGyJ,oBAAoBzB,EAAOq0E,cAAe,EAAGr8E,EAAG2J,OAAO,EAAO,EAAG,GAEpE3J,EAAGs8E,cAAct8E,EAAGu8E,UAGhBniJ,KAAKmiC,QAAQuQ,YAAY0vG,OAAOx8E,EAAGjxD,IAEnC6iD,EAAcpgC,SAASyhD,cAAc74E,KAAKmiC,QAAQuQ,aAIlDkzB,EAAGy8E,YAAYz8E,EAAG08E,WAAYtiJ,KAAKmiC,QAAQuQ,YAAY22D,YAAYzjC,EAAGjxD,KAI1EixD,EAAGuJ,WAAWvJ,EAAG6J,qBAAsBzvE,KAAK2hJ,cAC5C/7E,EAAGqN,WAAWrN,EAAG6J,qBAAsBzvE,KAAKsuE,QAAS1I,EAAGsN,eAnDxDtN,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK0hJ,eACpC97E,EAAG28E,cAAc38E,EAAGwJ,aAAc,EAAGpvE,KAAK00E,UAC1C9O,EAAGyJ,oBAAoBzB,EAAO0B,gBAAiB,EAAG1J,EAAG2J,OAAO,EAAO,EAAG,GAGtE3J,EAAGuJ,WAAWvJ,EAAGwJ,aAAcpvE,KAAK4hJ,WACpCh8E,EAAGyJ,oBAAoBzB,EAAOq0E,cAAe,EAAGr8E,EAAG2J,OAAO,EAAO,EAAG,GAEpE3J,EAAGs8E,cAAct8E,EAAGu8E,UAGhBniJ,KAAKmiC,QAAQuQ,YAAY0vG,OAAOx8E,EAAGjxD,IAEnC6iD,EAAcpgC,SAASyhD,cAAc74E,KAAKmiC,QAAQuQ,aAKlDkzB,EAAGy8E,YAAYz8E,EAAG08E,WAAYtiJ,KAAKmiC,QAAQuQ,YAAY22D,YAAYzjC,EAAGjxD,KAI1EixD,EAAGuJ,WAAWvJ,EAAG6J,qBAAsBzvE,KAAK2hJ,eAgChD/7E,EAAGuI,aAAavI,EAAG48E,UAAWxiJ,KAAKsuE,QAAQzmE,OAAQ+9D,EAAGyI,eAAgB,IAS1EhuE,EAAOywD,SAASzqD,UAAUo8I,qBAAuB,WAG7C,GAAIz7I,GAAShH,KAAKi3F,QAAQ6pD,eAE1B95I,GAAO07I,wBAEP1iJ,KAAK4gJ,kBAAkB30I,IAAIjF,EAAO27I,aAAa,IAAK37I,EAAO27I,aAAa,IACxE3iJ,KAAK6gJ,kBAAkB50I,IAAIjF,EAAO47I,aAAa,IAAK57I,EAAO47I,aAAa,IAExE5iJ,KAAKyqB,eAAexjB,MAAMjH,KAAK4gJ,kBAAmB5gJ,KAAK4gJ,mBACvD5gJ,KAAKyqB,eAAexjB,MAAMjH,KAAK6gJ,kBAAmB7gJ,KAAK6gJ,oBAS3DxgJ,EAAOywD,SAASzqD,UAAUm7I,WAAa,WAEnC,GAAIx6I,GAAShH,KAAKi3F,QAAQ6pD,gBAEtB+B,EAAW77I,EAAO87I,WAClBC,EAAW/7I,EAAOo6I,UAEtBphJ,MAAKkhJ,iBAAiB2B,EAAUE,GAChC/iJ,KAAKyiJ,uBAELziJ,KAAKynB,OAAQ,GASjBpnB,EAAOywD,SAASzqD,UAAU66I,iBAAmB,SAAUzwE,EAAOuwE,GAS1D,IAAK,GAPDh6I,GAAShH,KAAKi3F,QAAQ6pD,gBAEtBkC,EAAW,EACXC,EAAW,EAEXC,EAAiB,EAEZp7I,EAAI,EAAGA,EAAId,EAAO+5I,cAAej5I,IAEtC9H,KAAK00E,SAASwuE,GAAkBzyE,EAAMuyE,GACtChjJ,KAAK00E,SAASwuE,EAAiB,IAAMzyE,EAAMuyE,EAAW,GAEtDhjJ,KAAKghJ,IAAIiC,GAAYjC,EAAIiC,GACzBjjJ,KAAKghJ,IAAIiC,EAAW,GAAKjC,EAAIiC,EAAW,GAExCD,GAAY,EACZC,GAAY,EAEZC,GAAkB,GAY1B7iJ,EAAOywD,SAASzqD,UAAU88I,aAAe,SAAUp3I,GAE/C/L,KAAKi3F,QAAQqqD,uBAAuBv1I,GAAK,IAW7C1L,EAAOywD,SAASzqD,UAAUygD,KAAO,SAAUE,GAE1Bt9C,SAATs9C,IAAsBA,GAAO,GAEjChnD,KAAKgnD,KAAOA,EAEZhnD,KAAKi3F,QAAQmsD,cAAa,GAC1BpjJ,KAAKi3F,QAAQosD,UAAU,IAU3BhjJ,EAAOywD,SAASzqD,UAAU41B,KAAO,WAE7Bj8B,KAAKi3F,QAAQmsD,cAAa,IAQ9B77I,OAAO2E,eAAe7L,EAAOywD,SAASzqD,UAAW,aAE7C2F,IAAK,WAED,MAAOhM,MAAKi3F,QAAQqsD,gBAIxBr3I,IAAK,SAAS1C,GAEVvJ,KAAKi3F,QAAQmsD,aAAa75I,MAUlChC,OAAO2E,eAAe7L,EAAOywD,SAASzqD,UAAW,QAE7C2F,IAAK,WAED,MAAOhM,MAAKi3F,QAAQssD,aAIxBt3I,IAAK,SAAS1C,GAEVvJ,KAAKi3F,QAAQusD,cAAcj6I,MA2CnClJ,EAAOmpD,MAAQ,SAAUhvC,EAAMzO,EAAK0nD,GAyLhC,GAvLY/pD,SAARqC,IAAqBA,EAAM,MACnBrC,SAAR+pD,IAAqBA,EAAM,MAK/BzzD,KAAKwa,KAAOA,EAMZxa,KAAK+L,IAAMA,EAMX/L,KAAK+P,MAAQ,EAMb/P,KAAKgQ,OAAS,EAMdhQ,KAAKkI,KAAO7H,EAAOwC,MAKnB7C,KAAKm4D,sBAAuB,EAM5Bn4D,KAAKikG,aAAc,EAKnBjkG,KAAK40G,OAAS,GAAIv0G,GAAO+a,OAKzBpb,KAAKypD,eAAiB,GAAIppD,GAAO+a,OAKjCpb,KAAKy3F,WAAa,GAAIp3F,GAAO+a,OAK7Bpb,KAAKyjJ,SAAW,GAAIpjJ,GAAO+a,OAK3Bpb,KAAK0jJ,QAAU,GAAIrjJ,GAAO+a,OAO1Bpb,KAAK2jJ,UAAY,GAAItjJ,GAAO+a,OAM5Bpb,KAAKuwG,QAAU,KAMfvwG,KAAKqrF,WAAa,KAKlBrrF,KAAKwzD,MAAQ,KAKbxzD,KAAK4jJ,YAAc,KAKnB5jJ,KAAK6jJ,aAAc,EASnB7jJ,KAAK8jJ,WAAa,GAMlB9jJ,KAAK+jJ,MAAQ,EAMb/jJ,KAAKgkJ,cAAgB,IAMrBhkJ,KAAKikJ,SAAW,KAOhBjkJ,KAAKg3G,YAAa,EAOlBh3G,KAAKk1G,QAAS,EAOdl1G,KAAKo4B,aAAc,EAOnBp4B,KAAKm4B,SAAU,EAOfn4B,KAAKkkJ,UAAW,EAOhBlkJ,KAAKmkJ,WAAY,EAMjBnkJ,KAAKokJ,aAAe,KAMpBpkJ,KAAKqkJ,cAAgB,KAEjBt4I,GAAO/L,KAAKwa,KAAKsF,MAAM8mF,cAAc76F,GACzC;AACI,GAAIu4I,GAAStkJ,KAAKwa,KAAKsF,MAAM8nF,SAAS77F,EAElCu4I,GAAOp/C,OAEPllG,KAAKukJ,oBAAoBD,EAAOjiH,MAIhCriC,KAAKwzD,MAAQ8wF,EAAOjiH,KAGxBriC,KAAK+P,MAAQ/P,KAAKwzD,MAAMgxF,WACxBxkJ,KAAKgQ,OAAShQ,KAAKwzD,MAAMixF,gBAEpBhxF,IAELzzD,KAAK0kJ,mBAAmBjxF,GAAK,EAO7BzzD,MAAKwzD,QAAUC,GAEfzzD,KAAK0yC,YAAc,GAAI5sC,MAAKgyD,YAAY93D,KAAKwzD,OAC7CxzD,KAAK0yC,YAAYiyG,YAAY3kJ,KAAK+P,MAAO/P,KAAKgQ,UAI9ChQ,KAAK0yC,YAAc,GAAI5sC,MAAKgyD,YAAYz3D,EAAOi5B,MAAM3zB,QAAQ+sC,YAAYhlC,QACzE1N,KAAK0yC,YAAYiyG,YAAY3kJ,KAAK+P,MAAO/P,KAAKgQ,SAOlDhQ,KAAKmiC,QAAU,GAAIr8B,MAAK4oD,QAAQ1uD,KAAK0yC,aAMrC1yC,KAAKg4D,aAAe,GAAI33D,GAAO63D,MAAM,EAAG,EAAG,EAAGl4D,KAAK+P,MAAO/P,KAAKgQ,OAAQ,SAEvEhQ,KAAKmiC,QAAQ2rB,SAAS9tD,KAAKg4D,cAE3Bh4D,KAAKmiC,QAAQosB,OAAQ,EAET,OAARxiD,GAAgB/L,KAAKwzD,QAErBxzD,KAAKmiC,QAAQosB,MAAQvuD,KAAKwzD,MAAMm8C,SAWpC3vG,KAAK4kJ,SAAW,KAEZvkJ,EAAO6tD,aAEPluD,KAAK4kJ,SAAW,GAAIvkJ,GAAO6tD,WAAWluD,KAAKwa,KAAM,GAAIxa,KAAK+P,MAAO/P,KAAKgQ,UAGrEhQ,KAAKwa,KAAKkS,OAAOmO,WAAa76B,KAAKwa,KAAKkS,OAAO6P,KAAOv8B,KAAKwa,KAAKkS,OAAOyX,UAAap8B,OAAqB,cAAKA,OAAqB,aAAE2vG,iBAEtI13G,KAAK23G,eAID2sC,IAEAA,EAAOrhH,QAAS,IAM5B5iC,EAAOmpD,MAAMnjD,WAUTw+I,qBAAsB,SAAUrxF,EAAOsxF,GAcnC,MAZItxF,IAASsxF,IAET9kJ,KAAKwzD,MAAQA,EACbxzD,KAAK4jJ,YAAckB,EAEnB9kJ,KAAK6jJ,aAAc,EACnB7jJ,KAAK0yC,YAAYhlC,OAAS1N,KAAKwzD,MAC/BxzD,KAAK64E,cAAc,KAAM74E,KAAKwzD,MAAMgxF,WAAYxkJ,KAAKwzD,MAAMixF,aAE3DzkJ,KAAKyjJ,SAAS5kI,SAAS7e,OAGpBA,MAuBX+kJ,iBAAkB,SAAUC,EAAcj1I,EAAOC,GAM7C,GAJqBtG,SAAjBs7I,IAA8BA,GAAe,GACnCt7I,SAAVqG,IAAuBA,EAAQ,MACpBrG,SAAXsG,IAAwBA,EAAS,OAEhChQ,KAAKwa,KAAKkS,OAAO41D,aAGlB,MADAtiF,MAAK0jJ,QAAQ7kI,SAAS7e,KAAM,oBACrB,CAGc,QAArBA,KAAK4jJ,cAED5jJ,KAAK4jJ,YAAoB,OAEzB5jJ,KAAK4jJ,YAAY/+H,QAAS,EAI1B7kB,KAAK4jJ,YAAY3nH,QAIzBj8B,KAAKilJ,qBAELjlJ,KAAKwzD,MAAQ1nC,SAASyvD,cAAc,SACpCv7E,KAAKwzD,MAAM0xF,aAAa,WAAY,YAEtB,OAAVn1I,IAEA/P,KAAKwzD,MAAMzjD,MAAQA,GAGR,OAAXC,IAEAhQ,KAAKwzD,MAAMxjD,OAASA,GAKxBhQ,KAAKqrF,WAAatjF,OAAOy9E,WAAWxlF,KAAKmlJ,oBAAoB7+I,KAAKtG,MAAOA,KAAKuwG,QAE9E,KACIx6D,UAAUusC,cACJnxB,MAAS6zF,EAAcxxF,OAAS,GAClCxzD,KAAKolJ,oBAAoB9+I,KAAKtG,MAC9BA,KAAKqlJ,kBAAkB/+I,KAAKtG,OAGpC,MAAOkmF,GAEHlmF,KAAKqlJ,kBAAkBn/D,GAG3B,MAAOlmF,OAQXmlJ,oBAAqB,WAEjBz5D,aAAa1rF,KAAKqrF,YAElBrrF,KAAK2jJ,UAAU9kI,SAAS7e,OAQ5BqlJ,kBAAmB,SAAUl5H,GAEzBu/D,aAAa1rF,KAAKqrF,YAElBrrF,KAAK0jJ,QAAQ7kI,SAAS7e,KAAMmsB,IAQhCi5H,oBAAqB,SAAUN,GAE3Bp5D,aAAa1rF,KAAKqrF,YAGlBrrF,KAAK4jJ,YAAckB,EAGap7I,SAA5B1J,KAAKwzD,MAAM8xF,aAEXtlJ,KAAKwzD,MAAM8xF,aAAeR,EAI1B9kJ,KAAKwzD,MAAMnoD,IAAOtD,OAAO0+E,KAAO1+E,OAAO0+E,IAAI8+D,gBAAgBT,IAAYA,CAG3E,IAAIthC,GAAOxjH,IAEXA,MAAKwzD,MAAMgyF,aAAe,WAItB,QAASC,KAEL,GAAI1B,EAAQ,EAER,GAAIvgC,EAAKhwD,MAAMgxF,WAAa,EAC5B,CAEI,GAAIz0I,GAAQyzG,EAAKhwD,MAAMgxF,WACnBx0I,EAASwzG,EAAKhwD,MAAMixF,WAEpB9mG,OAAM6lE,EAAKhwD,MAAMixF,eAEjBz0I,EAASD,GAAS,EAAE,IAGxByzG,EAAKhwD,MAAM1M,OAEX08D,EAAKqgC,aAAc,EACnBrgC,EAAK9wE,YAAYhlC,OAAS81G,EAAKhwD,MAC/BgwD,EAAK3qC,cAAc,KAAM9oE,EAAOC,GAChCwzG,EAAKigC,SAAS5kI,SAAS2kG,OAIvBz7G,QAAOy9E,WAAWigE,EAAa,SAKnCr9I,SAAQG,KAAK,mDAGjBw7I,KAlCJ,GAAIA,GAAQ,EAqCZ0B,OAcRlB,oBAAqB,SAAUtqD,GAE3B,GAAIxzE,GAAQzmB,IASZ,OAPAA,MAAKwzD,MAAQ1nC,SAASyvD,cAAc,SACpCv7E,KAAKwzD,MAAMg8C,UAAW,EACtBxvG,KAAKwzD,MAAM0xF,aAAa,WAAY,YACpCllJ,KAAKwzD,MAAMnnC,iBAAiB,aAAc,SAAUF,GAAS1F,EAAMoyD,cAAc1sD,KAAW,GAC5FnsB,KAAKwzD,MAAMnoD,IAAMtD,OAAO0+E,IAAI8+D,gBAAgBtrD,GAC5Cj6F,KAAKwzD,MAAMm8C,SAAU,EAEd3vG,MAYX0kJ,mBAAoB,SAAUjxF,EAAKg8C,GA8B/B,MA5BiB/lG,UAAb+lG,IAA0BA,GAAW,GAGrCzvG,KAAKmiC,UAELniC,KAAKmiC,QAAQosB,OAAQ,GAGzBvuD,KAAKwzD,MAAQ1nC,SAASyvD,cAAc,SACpCv7E,KAAKwzD,MAAMg8C,UAAW,EAElBC,GAEAzvG,KAAKwzD,MAAM0xF,aAAa,WAAY,YAGxCllJ,KAAKwzD,MAAMnoD,IAAMooD,EAEjBzzD,KAAKwzD,MAAMm8C,SAAU,EAErB3vG,KAAKwzD,MAAMxzC,OAEXhgB,KAAK+jJ,MAAQ/jJ,KAAK8jJ,WAElB9jJ,KAAKikJ,SAAWl8I,OAAOy9E,WAAWxlF,KAAK0lJ,mBAAmBp/I,KAAKtG,MAAOA,KAAKgkJ,eAE3EhkJ,KAAK+L,IAAM0nD,EAEJzzD,MAaX64E,cAAe,SAAU1sD,EAAOpc,EAAOC,GAEnC,GAAI21I,IAAS,CAECj8I,UAAVqG,GAAiC,OAAVA,IAAkBA,EAAQ/P,KAAKwzD,MAAMgxF,WAAYmB,GAAS,GACtEj8I,SAAXsG,GAAmC,OAAXA,IAAmBA,EAAShQ,KAAKwzD,MAAMixF,aAEnEzkJ,KAAK+P,MAAQA,EACb/P,KAAKgQ,OAASA,EAEVhQ,KAAK0yC,YAAYhlC,SAAW1N,KAAKwzD,QAEjCxzD,KAAK0yC,YAAYhlC,OAAS1N,KAAKwzD,OAGnCxzD,KAAK0yC,YAAYiyG,YAAY50I,EAAOC,GAEpChQ,KAAKmiC,QAAQzR,MAAM5X,OAAO/I,EAAOC,GAEjChQ,KAAKmiC,QAAQpyB,MAAQA,EACrB/P,KAAKmiC,QAAQnyB,OAASA,EAEtBhQ,KAAKmiC,QAAQosB,OAAQ,EAEjBvuD,KAAK4kJ,UAEL5kJ,KAAK4kJ,SAAS9rI,OAAO/I,EAAOC,GAG5B21I,GAAuB,OAAb3lJ,KAAK+L,MAEf/L,KAAKypD,eAAe5qC,SAAS7e,KAAM+P,EAAOC,GAEtChQ,KAAKmkJ,YAELnkJ,KAAKwzD,MAAM1M,OACX9mD,KAAK40G,OAAO/1F,SAAS7e,KAAMA,KAAKgnD,KAAMhnD,KAAK4lJ,iBAYvDttD,SAAU,WAENt4F,KAAKy3F,WAAW54E,SAAS7e,OAY7B8mD,KAAM,SAAUE,EAAM4+F,GA8DlB,MA5Dal8I,UAATs9C,IAAsBA,GAAO,GACZt9C,SAAjBk8I,IAA8BA,EAAe,GAE7C5lJ,KAAKwa,KAAKyF,MAAM60F,SAEhB90G,KAAKwa,KAAKyF,MAAM60F,OAAOjjG,IAAI7R,KAAKq8B,QAASr8B,MACzCA,KAAKwa,KAAKyF,MAAM62F,SAASjlG,IAAI7R,KAAKw8B,UAAWx8B,MAEzCA,KAAKwa,KAAKyF,MAAMm2F,MAEhBp2G,KAAKq8B,WAIbr8B,KAAKwa,KAAK+H,QAAQ1Q,IAAI7R,KAAK6lJ,SAAU7lJ,MACrCA,KAAKwa,KAAKiI,SAAS5Q,IAAI7R,KAAK8lJ,UAAW9lJ,MAEvCA,KAAKokJ,aAAepkJ,KAAKs4F,SAAShyF,KAAKtG,MAEvCA,KAAKwzD,MAAMnnC,iBAAiB,QAASrsB,KAAKokJ,cAAc,GACxDpkJ,KAAKwzD,MAAMnnC,iBAAiB,sBAAuBrsB,KAAKokJ,cAAc,GAElEp9F,EAEAhnD,KAAKwzD,MAAMxM,KAAO,OAIlBhnD,KAAKwzD,MAAMxM,KAAO,GAGtBhnD,KAAKwzD,MAAMoyF,aAAeA,EAEtB5lJ,KAAKikG,YAELjkG,KAAKkkJ,UAAW,GAIhBlkJ,KAAKkkJ,UAAW,EAEC,OAAblkJ,KAAK+L,MAEyB,IAA1B/L,KAAKwzD,MAAM+xB,YAEXvlF,KAAK+jJ,MAAQ/jJ,KAAK8jJ,WAClB9jJ,KAAKikJ,SAAWl8I,OAAOy9E,WAAWxlF,KAAK0lJ,mBAAmBp/I,KAAKtG,MAAOA,KAAKgkJ,iBAI3EhkJ,KAAKqkJ,cAAgBrkJ,KAAK+lJ,YAAYz/I,KAAKtG,MAC3CA,KAAKwzD,MAAMnnC,iBAAiB,UAAWrsB,KAAKqkJ,eAAe,KAInErkJ,KAAKwzD,MAAM1M,OAEX9mD,KAAK40G,OAAO/1F,SAAS7e,KAAMgnD,EAAM4+F,IAG9B5lJ,MAUX+lJ,YAAa,WAET/lJ,KAAKwzD,MAAMjmC,oBAAoB,UAAWvtB,KAAKqkJ,eAAe,GAE9DrkJ,KAAK64E,iBAkBT58C,KAAM,WA+DF,MA7DIj8B,MAAKwa,KAAKyF,MAAM60F,SAEhB90G,KAAKwa,KAAKyF,MAAM60F,OAAOhyF,OAAO9iB,KAAKq8B,QAASr8B,MAC5CA,KAAKwa,KAAKyF,MAAM62F,SAASh0F,OAAO9iB,KAAKw8B,UAAWx8B,OAGpDA,KAAKwa,KAAK+H,QAAQO,OAAO9iB,KAAK6lJ,SAAU7lJ,MACxCA,KAAKwa,KAAKiI,SAASK,OAAO9iB,KAAK8lJ,UAAW9lJ,MAItCA,KAAK6jJ,aAED7jJ,KAAKwzD,MAAM8xF,cAEXtlJ,KAAKwzD,MAAM8xF,aAAarpH,OACxBj8B,KAAKwzD,MAAMnoD,IAAM,OAIjBrL,KAAKwzD,MAAMnoD,IAAM,GAEbrL,KAAK4jJ,YAAoB,OAEzB5jJ,KAAK4jJ,YAAY/+H,QAAS,EAItB7kB,KAAK4jJ,YAAYoC,UAEjBhmJ,KAAK4jJ,YAAYoC,YAAYv+I,QAAQ,SAAUw+I,GAC3CA,EAAMhqH,SAKVj8B,KAAK4jJ,YAAY3nH,QAM7Bj8B,KAAK4jJ,YAAc,KACnB5jJ,KAAK6jJ,aAAc,IAInB7jJ,KAAKwzD,MAAMjmC,oBAAoB,QAASvtB,KAAKokJ,cAAc,GAC3DpkJ,KAAKwzD,MAAMjmC,oBAAoB,sBAAuBvtB,KAAKokJ,cAAc,GACzEpkJ,KAAKwzD,MAAMjmC,oBAAoB,UAAWvtB,KAAKqkJ,eAAe,GAE1DrkJ,KAAKikG,YAELjkG,KAAKkkJ,UAAW,EAIhBlkJ,KAAKwzD,MAAMhxC,SAIZxiB,MAYX6R,IAAK,SAAUyjB,GAEX,GAAI9uB,MAAMa,QAAQiuB,GAEd,IAAK,GAAIxtB,GAAI,EAAGA,EAAIwtB,EAAOztB,OAAQC,IAE3BwtB,EAAOxtB,GAAgB,aAEvBwtB,EAAOxtB,GAAGotB,YAAYl1B,UAM9Bs1B,GAAOJ,YAAYl1B,KAGvB,OAAOA,OAgBXipB,WAAY,SAAUhjB,EAAGwG,EAAGyc,EAASC,EAASyyC,EAAQC,GAElDD,EAASA,GAAU,EACnBC,EAASA,GAAU,CAEnB,IAAIzyC,GAAQppB,KAAKwa,KAAK3I,IAAIuX,MAAMnjB,EAAGwG,EAAGzM,KAKtC,OAHAopB,GAAMC,OAAOpd,IAAIid,EAASC,GAC1BC,EAAMvU,MAAM5I,IAAI2vD,EAAQC,GAEjBzyC,GAWXxI,OAAQ,YAEC5gB,KAAKm4D,sBAAwBn4D,KAAKkmJ,SAEnClmJ,KAAK0yC,YAAYjrB,SAWzB4U,QAAS,WAEDr8B,KAAKk1G,SAKTl1G,KAAKk1G,QAAS,EAEdl1G,KAAKwzD,MAAM2iD,OAAQ,IAUvB35E,UAAW,WAEFx8B,KAAKk1G,SAAUl1G,KAAKg3G,aAKzBh3G,KAAKk1G,QAAS,EAEdl1G,KAAKwzD,MAAM2iD,OAAQ,IAUvB0vC,SAAU,WAEF7lJ,KAAKm4B,SAAWn4B,KAAKikG,cAKzBjkG,KAAKm4B,SAAU,EAEfn4B,KAAKwzD,MAAMhxC,UAUfsjI,UAAW,YAEF9lJ,KAAKm4B,SAAWn4B,KAAKo4B,aAAep4B,KAAKikG,cAK9CjkG,KAAKm4B,SAAU,EAEVn4B,KAAKwzD,MAAM2yF,OAEZnmJ,KAAKwzD,MAAM1M,SA0BnBs/F,aAAc,SAAU/6I,EAAKokG,GAwBzB,MAtBiB/lG,UAAb+lG,IAA0BA,GAAW,GAGzCzvG,KAAKmiC,QAAQosB,OAAQ,EAErBvuD,KAAKwzD,MAAMhxC,QAEXxiB,KAAK+jJ,MAAQ/jJ,KAAK8jJ,WAElB9jJ,KAAKikJ,SAAWl8I,OAAOy9E,WAAWxlF,KAAK0lJ,mBAAmBp/I,KAAKtG,MAAOA,KAAKgkJ,eAE3EhkJ,KAAKwzD,MAAMnoD,IAAMA,EAEjBrL,KAAKwzD,MAAMxzC,OAEXhgB,KAAKmkJ,UAAY10C,EAEZA,IAEDzvG,KAAK6gB,QAAS,GAGX7gB,MAUX0lJ,mBAAoB,WAGc,IAA1B1lJ,KAAKwzD,MAAM+xB,WAGXvlF,KAAK64E,iBAIL74E,KAAK+jJ,QAED/jJ,KAAK+jJ,MAAQ,EAEb/jJ,KAAKikJ,SAAWl8I,OAAOy9E,WAAWxlF,KAAK0lJ,mBAAmBp/I,KAAKtG,MAAOA,KAAKgkJ,eAI3E57I,QAAQG,KAAK,0DAA2DvI,KAAK6jJ,eAYzFlsC,aAAc,WAEV33G,KAAKwa,KAAKuF,MAAM4e,MAAMwP,qBAAqBnuC,KAAK43G,OAAQ53G,MACxDA,KAAKikG,aAAc,GAWvB2T,OAAQ,WAQJ,GANA53G,KAAKikG,aAAc,EAEnBjkG,KAAKwzD,MAAM1M,OAEX9mD,KAAK40G,OAAO/1F,SAAS7e,KAAMA,KAAKgnD,KAAMhnD,KAAK4lJ,cAEvC5lJ,KAAK+L,IACT,CACI,GAAIu4I,GAAStkJ,KAAKwa,KAAKsF,MAAM8nF,SAAS5nG,KAAK+L,IAEvCu4I,KAAWA,EAAOp/C,SAElBo/C,EAAOrhH,QAAS,GAIxB,OAAO,GAiBXojH,KAAM,SAAUpoI,EAAOI,EAAO29C,GAM1B,MAJctyD,UAAVuU,IAAuBA,GAAQ,GACrBvU,SAAV2U,IAAuBA,EAAQ,GACjB3U,SAAdsyD,IAA2BA,EAAY,MAErB,OAAlBh8D,KAAK4kJ,aAELx8I,SAAQG,KAAK,mEAIb0V,GAEAje,KAAK4kJ,SAASxsF,MAGlBp4D,KAAK4kJ,SAASt5I,KAAKtL,KAAKwzD,MAAO,EAAG,EAAGxzD,KAAK+P,MAAO/P,KAAKgQ,OAAQ,EAAG,EAAGhQ,KAAK+P,MAAO/P,KAAKgQ,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAGqO,EAAO29C,GAE5Gh8D,KAAK4kJ,WAUhBK,mBAAoB,WAEhB,GAAKjlJ,KAAKwzD,MAAV,CAUA,IALIxzD,KAAKwzD,MAAMg3B,YAEXxqF,KAAKwzD,MAAMg3B,WAAWn4D,YAAYryB,KAAKwzD,OAGpCxzD,KAAKwzD,MAAM8yF,iBAEdtmJ,KAAKwzD,MAAMnhC,YAAYryB,KAAKwzD,MAAM+yF,WAGtCvmJ,MAAKwzD,MAAMgzF,gBAAgB,YAC3BxmJ,KAAKwzD,MAAMgzF,gBAAgB,OAE3BxmJ,KAAKwzD,MAAQ,OAUjB1vC,QAAS,WAEL9jB,KAAKi8B,OAELj8B,KAAKilJ,qBAEDjlJ,KAAKikG,aAELjkG,KAAKwa,KAAKuF,MAAM4e,MAAM0P,wBAAwBruC,KAAK43G,OAAQ53G,MAG3DA,KAAKikJ,UAELl8I,OAAO2jF,aAAa1rF,KAAKikJ,YAWrC18I,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,eAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAKwzD,MAAMggD,YAAc,GAInDvnG,IAAK,SAAU1C,GAEXvJ,KAAKwzD,MAAMggD,YAAcjqG,KAWjChC,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,YAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAKwzD,MAAM33C,SAAW,KAWpDtU,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,YAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAKA,KAAKwzD,MAAMggD,YAAcxzG,KAAKwzD,MAAM33C,SAAY,KAU/EtU,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,QAE1C2F,IAAK,WAED,MAAOhM,MAAKk1G,QAIhBjpG,IAAK,SAAU1C,GAIX,GAFAA,EAAQA,GAAS,KAGjB,CACI,GAAIvJ,KAAKk1G,OAEL,MAGJl1G,MAAKg3G,YAAa,EAClBh3G,KAAKq8B,cAGT,CACI,IAAKr8B,KAAKk1G,OAEN,MAGJl1G,MAAKg3G,YAAa,EAClBh3G,KAAKw8B,gBAajBj1B,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,UAE1C2F,IAAK,WAED,MAAOhM,MAAKm4B,SAIhBlsB,IAAK,SAAU1C,GAIX,GAFAA,EAAQA,GAAS,MAEbvJ,KAAKikG,YAKT,GAAI16F,EACJ,CACI,GAAIvJ,KAAKm4B,QAEL,MAGJn4B,MAAKo4B,aAAc,EACnBp4B,KAAK6lJ,eAGT,CACI,IAAK7lJ,KAAKm4B,QAEN,MAGJn4B,MAAKo4B,aAAc,EACnBp4B,KAAK8lJ,gBAUjBv+I,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,UAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAKwzD,MAAMx5C,OAAS,GAI9C/N,IAAK,SAAU1C,GAEC,EAARA,EAEAA,EAAQ,EAEHA,EAAQ,IAEbA,EAAQ,GAGRvJ,KAAKwzD,QAELxzD,KAAKwzD,MAAMx5C,OAASzQ,MAWhChC,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,gBAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAKwzD,MAAMoyF,aAAe,GAIpD35I,IAAK,SAAU1C,GAEPvJ,KAAKwzD,QAELxzD,KAAKwzD,MAAMoyF,aAAer8I,MAetChC,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,QAE1C2F,IAAK,WAED,MAAQhM,MAAU,MAAIA,KAAKwzD,MAAMxM,MAAO,GAI5C/6C,IAAK,SAAU1C,GAEPA,GAASvJ,KAAKwzD,MAEdxzD,KAAKwzD,MAAMxM,KAAO,OAEbhnD,KAAKwzD,QAEVxzD,KAAKwzD,MAAMxM,KAAO,OAY9Bz/C,OAAO2E,eAAe7L,EAAOmpD,MAAMnjD,UAAW,WAE1C2F,IAAK,WAED,QAAShM,KAAKwzD,MAAM3yC,QAAU7gB,KAAKwzD,MAAM2yF,UAMjD9lJ,EAAOmpD,MAAMnjD,UAAU8B,YAAc9H,EAAOmpD,MAWpB9/C,SAApB5D,KAAKtB,aAELsB,KAAKtB,WAAanE,EAAOmE,YAGLkF,SAApB5D,KAAKJ,aAELI,KAAKJ,WAAarF,EAAOqF,YAGKgE,SAA9B5D,KAAK4oD,QAAQ+3F,eAEb3gJ,KAAK4oD,QAAQ+3F,aAAe,GAAI3gJ,MAAK4oD,QAAQ,GAAI5oD,MAAKgyD,cAGnBpuD,SAAnC5D,KAAK4gJ,cAAc5xE,cAEnBhvE,KAAK4gJ,cAAc5xE,YAAc,GAAIhvE,MAAKkO,QAGRtK,SAAlC5D,KAAKkoD,cAAc24F,aAEnB7gJ,KAAKkoD,cAAc24F,WAAa,GAAI7gJ,MAAKkO,QAGzClO,KAAK+W,UAAmCnT,SAAvB5D,KAAK+W,SAAS6qD,OAE/B5hE,KAAK+W,SAAS6qD,KAAOrnE,EAAOwB,QAC5BiE,KAAK+W,SAASqqD,KAAO7mE,EAAOkC,UAC5BuD,KAAK+W,SAASuqD,KAAO/mE,EAAOiC,OAC5BwD,KAAK+W,SAASwqD,KAAOhnE,EAAO4B,QAC5B6D,KAAK+W,SAASsqD,KAAO9mE,EAAOsC,kBAGhCmD,KAAK8gJ,mBAAoB,EAQE,mBAAZC,UACe,mBAAXC,SAA0BA,OAAOD,UACxCA,QAAUC,OAAOD,QAAUxmJ,GAE/BwmJ,QAAQxmJ,OAASA,GACQ,mBAAX0mJ,SAA0BA,OAAOC,IAC/CD,OAAO,SAAU,WAAc,MAAO3mJ,GAAKC,OAASA,MAEpDD,EAAKC,OAASA,EAGXA,IACRyG,KAAK9G","file":"phaser-creature.min.js"} \ No newline at end of file diff --git a/build/phaser-creature.min.js b/build/phaser-creature.min.js deleted file mode 100644 index fe80ccafe..000000000 --- a/build/phaser-creature.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/* Phaser v2.6.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ - -(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0, -c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a), -!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height); -},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]), -c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "), -this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0; -},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary"; -if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h={},i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius, -radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a), -this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])]; -var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Creature=function(a,b,d,e,f,g){if(void 0===g&&(g="default"),this.type=c.CREATURE,!a.cache.checkJSONKey(f))return void console.warn("Phaser.Creature: Invalid mesh key given. Not found in Phaser.Cache");var h=a.cache.getJSON(f);if(this._creature=new Creature(h),this.animation=new CreatureAnimation(h,g,this._creature),this.manager=new CreatureManager(this._creature),this.timeDelta=.05,"string"==typeof e)var i=new PIXI.Texture(a.cache.getBaseTexture(e));else var i=e;this.texture=i,PIXI.DisplayObjectContainer.call(this),this.dirty=!0,this.blendMode=PIXI.blendModes.NORMAL,this.creatureBoundsMin=new c.Point,this.creatureBoundsMax=new c.Point;var j=this.manager.target_creature;this.vertices=new PIXI.Float32Array(2*j.total_num_pts),this.uvs=new PIXI.Float32Array(2*j.total_num_pts),this.indices=new PIXI.Uint16Array(j.global_indices.length);for(var k=0;k0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}).call(this); -//# sourceMappingURL=phaser-creature.map \ No newline at end of file diff --git a/build/phaser.js b/build/phaser.js index 83edc872f..4e16a4bf6 100644 --- a/build/phaser.js +++ b/build/phaser.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 09:59:51 +* v2.6.2 "Kore Springs" - Built: Mon Jul 18 2016 23:40:58 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -18064,6 +18064,9 @@ PIXI.WebGLShaderManager.prototype.setContext = function(gl) // the next one is used for rendering triangle strips this.stripShader = new PIXI.StripShader(gl); + // shader for batch drawing tilemap tiles as a set of triangle strips with degenerate triangles between them + this.tilemapShader = new PIXI.TilemapShader(gl); + this.setShader(this.defaultShader); }; @@ -18151,6 +18154,8 @@ PIXI.WebGLShaderManager.prototype.destroy = function() this.stripShader.destroy(); + this.tilemapShader.destroy(); + this.gl = null; }; @@ -22656,7 +22661,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.1', + VERSION: '2.7.0 Beta', /** * An array of Phaser game instances. @@ -32276,6 +32281,13 @@ Phaser.Group.RETURN_TOTAL = 1; */ Phaser.Group.RETURN_CHILD = 2; +/** +* A returnType value, as specified in {@link #iterate} eg. +* @constant +* @type {integer} +*/ +Phaser.Group.RETURN_ALL = 3; + /** * A sort ordering value, as specified in {@link #sort} eg. * @constant @@ -32348,7 +32360,7 @@ Phaser.Group.prototype.add = function (child, silent, index) { this.addToHash(child); } - if (this.inputEnableChildren && !child.inputEnabled) + if (this.inputEnableChildren && (!child.input || child.inputEnabled)) { child.inputEnabled = true; } @@ -33955,13 +33967,25 @@ Phaser.Group.prototype.descendingSortHandler = function (a, b) { */ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, callbackContext, args) { - if (returnType === Phaser.Group.RETURN_TOTAL && this.children.length === 0) + if (this.children.length === 0) { - return 0; + if (returnType === Phaser.Group.RETURN_TOTAL) + { + return 0; + } + else if (returnType === Phaser.Group.RETURN_ALL) + { + return []; + } } var total = 0; + if (returnType === Phaser.Group.RETURN_ALL) + { + var output = []; + } + for (var i = 0; i < this.children.length; i++) { if (this.children[i][key] === value) @@ -33985,6 +34009,10 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return this.children[i]; } + else if (returnType === Phaser.Group.RETURN_ALL) + { + output.push(this.children[i]); + } } } @@ -33992,9 +34020,15 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal { return total; } - - // RETURN_CHILD or RETURN_NONE - return null; + else if (returnType === Phaser.Group.RETURN_ALL) + { + return output; + } + else + { + // RETURN_CHILD or RETURN_NONE + return null; + } }; @@ -34281,24 +34315,83 @@ Phaser.Group.prototype.countDead = function () { * Returns a random child from the group. * * @method Phaser.Group#getRandom -* @param {integer} [startIndex=0] - Offset from the front of the front of the group (lowest child). +* @param {integer} [startIndex=0] - Offset from the front of the group (lowest child). * @param {integer} [length=(to top)] - Restriction on the number of values you want to randomly select from. * @return {any} A random child of this Group. */ Phaser.Group.prototype.getRandom = function (startIndex, length) { - if (this.children.length === 0) + if (startIndex === undefined) { startIndex = 0; } + if (length === undefined) { length = this.children.length; } + + if (length === 0) { return null; } - startIndex = startIndex || 0; - length = length || this.children.length; - return Phaser.ArrayUtils.getRandomItem(this.children, startIndex, length); }; +/** +* Returns a random child from the Group that has `exists` set to `true`. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getRandomExists +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up to. +* @return {any} A random child of this Group that exists. +*/ +Phaser.Group.prototype.getRandomExists = function (startIndex, endIndex) { + + var list = this.getAll('exists', true, startIndex, endIndex); + + return this.game.rnd.pick(list); + +}; + +/** +* Returns all children in this Group. +* +* You can optionally specify a matching criteria using the `property` and `value` arguments. +* +* For example: `getAll('exists', true)` would return only children that have their exists property set. +* +* Optionally you can specify a start and end index. For example if this Group had 100 children, +* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only +* the first 50 children in the Group. +* +* @method Phaser.Group#getAll +* @param {string} [property] - An optional property to test against the value argument. +* @param {any} [value] - If property is set then Child.property must strictly equal this value to be included in the results. +* @param {integer} [startIndex=0] - The first child index to start the search from. +* @param {integer} [endIndex] - The last child index to search up until. +* @return {any} A random existing child of this Group. +*/ +Phaser.Group.prototype.getAll = function (property, value, startIndex, endIndex) { + + if (startIndex === undefined) { startIndex = 0; } + if (endIndex === undefined) { endIndex = this.children.length; } + + var output = []; + + for (var i = startIndex; i < endIndex; i++) + { + var child = this.children[i]; + + if (property && child[property] === value) + { + output.push(child); + } + } + + return output; + +}; + /** * Removes the given child from this group. * @@ -41172,8 +41265,6 @@ Phaser.InputHandler.prototype = { this.sprite.events.onAddedToGroup.add(this.addedToGroup, this); this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup, this); - this.flagged = false; - return this.sprite; }, @@ -41230,7 +41321,6 @@ Phaser.InputHandler.prototype = { reset: function () { this.enabled = false; - this.flagged = false; for (var i = 0; i < 10; i++) { @@ -51615,6 +51705,8 @@ Phaser.BitmapData.prototype = { ctx.shadowOffsetX = x || 10; ctx.shadowOffsetY = y || 10; } + + return this; }, @@ -51766,6 +51858,8 @@ Phaser.BitmapData.prototype = { ctx.fillText(text, x, y); ctx.font = prevFont; + + return this; }, @@ -55943,7 +56037,6 @@ Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) { * @constructor * @extends PIXI.RenderTexture * @param {Phaser.Game} game - Current game instance. -* @param {string} key - Internal Phaser reference key for the render texture. * @param {number} [width=100] - The width of the render texture. * @param {number} [height=100] - The height of the render texture. * @param {string} [key=''] - The key of the RenderTexture in the Cache, if stored there. @@ -76653,8 +76746,7 @@ Object.defineProperty(Phaser.Sound.prototype, "mute", { /** * @name Phaser.Sound#volume -* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. -* @readonly +* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. The value given is clamped to the range 0 to 1. */ Object.defineProperty(Phaser.Sound.prototype, "volume", { @@ -93939,6 +94031,503 @@ Phaser.Physics.P2.RevoluteConstraint = function (world, bodyA, pivotA, bodyB, pi Phaser.Physics.P2.RevoluteConstraint.prototype = Object.create(p2.RevoluteConstraint.prototype); Phaser.Physics.P2.RevoluteConstraint.prototype.constructor = Phaser.Physics.P2.RevoluteConstraint; +/** +* @author Richard Davey +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* Tilemap - constructor +* +* @param {Array} layer - layer data from the map, arranged in mapheight lists of mapwidth Phaser.Tile objects (2d array) +* +*/ +PIXI.Tilemap = function(texture, mapwidth, mapheight, tilewidth, tileheight, layer) { + + PIXI.DisplayObjectContainer.call(this); + + /** + * The texture of the Tilemap + * + * @property texture + * @type Texture + */ + this.texture = texture; + + // faster access to the tile dimensions + this.tileWide = tilewidth; + this.tileHigh = tileheight; + this.mapWide = mapwidth; + this.mapHigh = mapheight; + + // TODO: switch here to create DisplayObjectContainer at correct size for the render mode + this.width = this.mapWide * this.tileWide; + this.height = this.mapHigh * this.tileHigh; + + this.layer = layer; + + // store the list of batch drawing instructions (for use with WebGL rendering) + this.glBatch = null; + + /** + * Remember last tile drawn to avoid unnecessary set-up + * + * @type Integer + */ + this.lastTile = -1; + + /** + * Whether the Tilemap is dirty or not + * + * @property dirty + * @type Boolean + */ + this.dirty = true; + + /** + * The blend mode to be applied to the tilemap. Set to PIXI.blendModes.NORMAL to remove any blend mode. + * + * @property blendMode + * @type Number + * @default PIXI.blendModes.NORMAL; + */ + this.blendMode = PIXI.blendModes.NORMAL; + + /** + * The size of a single data element in the batch drawing. + * Each tile requires two triangles, each specified as: + * float left, bottom, right, top - screen coordinates + * float u, v, wide, high - source texture coordinates + * + * @type {Number} + */ + this.batchDataElement = 16; + + // calculate total batch data size + var dataSize = mapwidth * mapheight * this.batchDataElement; + + // create buffer data for the webgl rendering of this tile + this.buffer = new PIXI.Float32Array( dataSize ); + +}; + +// constructor, this class extends PIXI.DisplayObjectContainer +PIXI.Tilemap.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); +PIXI.Tilemap.prototype.constructor = PIXI.Tilemap; + +// unused methods overridden to prevent default behavior +PIXI.Tilemap.prototype.update = function () {}; +PIXI.Tilemap.prototype.postUpdate = function () {}; + +// override PIXI.DisplayObjectContainer _renderWebGL +PIXI.Tilemap.prototype._renderWebGL = function (renderSession) { + + // if the sprite is not visible or the alpha is 0 then no need to render this element + if (!this.visible || this.alpha <= 0) + { + return; + } + + // stop current render session batch drawing + renderSession.spriteBatch.stop(); + + if (!this._vertexBuffer) + { + this._initWebGL(renderSession); + } + + renderSession.shaderManager.setShader(renderSession.shaderManager.tilemapShader); + + this._renderWholeTilemap(renderSession); + + // restart batch drawing now that this Tile layer has been rendered + renderSession.spriteBatch.start(); + +}; + +PIXI.Tilemap.prototype._initWebGL = function (renderSession) { + + var gl = renderSession.gl; + + this._vertexBuffer = gl.createBuffer(); + this._indexBuffer = gl.createBuffer(); + this._uvBuffer = gl.createBuffer(); + this._colorBuffer = gl.createBuffer(); + + // create a GL buffer to transfer all the vertex position data through + this.positionBuffer = gl.createBuffer(); + + // bind the buffer to the RAM resident positionBuffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.buffer, gl.STATIC_DRAW); + +}; + + +PIXI.Tilemap.prototype._renderBatch = function (renderSession) { + + if (this.glBatch) + { + var gl = renderSession.gl; + + // TODO: should probably use destination buffer dimensions (halved) + var screenWide2 = this.game.width * 0.5; + var screenHigh2 = this.game.height * 0.5; + + // size of one pixel in the source texture + var iTextureWide = 1.0 / this.texture.width; + var iTextureHigh = 1.0 / this.texture.height; + + // size of one tile in the source texture + var srcWide = this.tileWide * iTextureWide; + var srcHigh = this.tileHigh * iTextureHigh; + + // pre-calculate inverse half-buffer dimensions + var iWide = 1.0 / screenWide2; + var iHigh = 1.0 / screenHigh2; + + var wide = this.tileWide * 0.5 / screenWide2; + var high = this.tileHigh * 0.5 / screenHigh2; + + var buffer = this.buffer; + var oldR, oldT, uvl, uvt; + + // process entire glBatch into a single webGl draw buffer for a TRIANGLE_STRIP blit + var c = 0; + var degenerate = false; + + for (var i = 0, l = this.glBatch.length; i < l; i++) + { + // sx: this.drawCoords[coordIndex], + // sy: this.drawCoords[coordIndex + 1], + // sw: this.tileWidth, + // sh: this.tileHeight, + // dx: x, + // dy: y, + // dw: this.tileWidth, + // dh: this.tileHeight + + var t = this.glBatch[i]; + + if (!t) + { + // insert a degenerate triangle when null is found in the list of batch objects + degenerate = true; + + // skip to end of loop, degenerate will be inserted when no more null objects are found + continue; + } + + var x = t.dx * iWide - 1; + var y = 1 - t.dy * iHigh; + + var lft = x - wide; + var bot = y + high; + + var uvl = t.sx * iTextureWide; + var uvt = t.sy * iTextureHigh; + + // insert a degenerate triangle to separate the tiles + if (degenerate) + { + // add a degenerate triangle: repeat the last vertex + buffer[ c ] = oldR; + buffer[ c + 1 ] = oldT; + // then repeat the next vertex + buffer[ c + 4 ] = lft; + buffer[ c + 5 ] = bot; + // pad with texture coordinates (probably not needed) + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 7 ] = uvt; + + // advance the buffer index for one single degenerate triangle + c += 8; + degenerate = false; + } + + // calculate the destination location of the tile in screen units (-1..1) + buffer[ c ] = buffer[ c + 4 ] = lft; + buffer[ c + 1 ] = buffer[ c + 9 ] = bot; + buffer[ c + 8 ] = buffer[ c + 12] = oldR = x + wide; + buffer[ c + 5 ] = buffer[ c + 13] = oldT = y - high; + + // calculate the uv coordinates of the tile source image + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 11] = uvt; + buffer[ c + 10] = buffer[ c + 14] = uvl + srcWide; + buffer[ c + 7 ] = buffer[ c + 15] = uvt + srcHigh; + + // advance the buffer index + c += 16; + } + + // if there's anything to draw... + if (c > 0) + { + var shader = renderSession.shaderManager.tilemapShader; + + // upload the VBO + gl.bufferData( gl.ARRAY_BUFFER, buffer, gl.STATIC_DRAW ); + + // prepare the shader attributes + gl.vertexAttribPointer( shader.aPosition, 4, gl.FLOAT, false, 0, 0 ); + + // draw the entire VBO in one call + gl.drawArrays(gl.TRIANGLE_STRIP, 0, Math.floor(c / 4)); + } + } + +}; + +/** +* render the entire tilemap using a fast webgl batched tile render +* +* @param {[type]} renderSession [description] +*/ +PIXI.Tilemap.prototype._renderWholeTilemap = function (renderSession) { + + var gl = renderSession.gl; + + var shader = renderSession.shaderManager.tilemapShader; + + renderSession.blendModeManager.setBlendMode(this.blendMode); + + // set the uniforms and texture + + // set the offset in screen units to the center of the screen + // and flip the GL y coordinate to be zero at the top + gl.uniform2f(shader.uCentreOffset, 1, -1); + + // alpha value for whole batch + gl.uniform1f(shader.uAlpha, this.alpha); + + // scale factors for whole batch + gl.uniform2f(shader.uScale, this.worldScale.x, this.worldScale.y); + + // source texture unit + gl.activeTexture(gl.TEXTURE0); + + // check if a texture is dirty.. + if(this.texture.baseTexture._dirty[gl.id]) + { + renderSession.renderer.updateTexture(this.texture.baseTexture); + } + else + { + // bind the current texture + gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); + } + + // bind the source buffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + + // draw the batched tile list + this._renderBatch(renderSession); + +}; + +/** + * When the texture is updated, this event will fire to update the scale and frame + * + * @method onTextureUpdate + * @param event + * @private + */ +PIXI.Tilemap.prototype.onTextureUpdate = function () { + + this.updateFrame = true; + +}; + +/** + * Returns the bounds of the map as a rectangle. The bounds calculation takes the worldTransform into account. + * + * @method getBounds + * @param matrix {Matrix} the transformation matrix of the sprite + * @return {Rectangle} the framing rectangle + */ +PIXI.Tilemap.prototype.getBounds = function (matrix) { + + var worldTransform = matrix || this.worldTransform; + + var a = worldTransform.a; + var b = worldTransform.b; + var c = worldTransform.c; + var d = worldTransform.d; + var tx = worldTransform.tx; + var ty = worldTransform.ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + var vertices = [ + 0, 0, + this.mapWide * this.tileWide, 0, + this.mapWide * this.tileWide, this.mapHigh * this.tileHigh, + 0, this.mapHigh * this.tileHigh + ]; + + for (var i = 0, n = vertices.length; i < n; i += 2) + { + var rawX = vertices[i], rawY = vertices[i + 1]; + var x = (a * rawX) + (c * rawY) + tx; + var y = (d * rawY) + (b * rawX) + ty; + + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + } + + if (minX === -Infinity || maxY === Infinity) + { + return PIXI.EmptyRectangle; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + // store a reference so that if this function gets called again in the render cycle we do not have to recalculate + this._currentBounds = bounds; + + return bounds; + +}; + +/** +* @author Richard Davey +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* This shader is used to render a batch of tiles stored as a tri-strip with +* degenerate triangles at the end of each row, or group of tiles (A group is a +* row of tiles with content followed by one or more empty tiles which are not +* drawn). +* +* Settings available are: +* +* uAlpha - the alpha blending factor for a batch draw +* uCentreOffset - the offset to the center of the drawing area, in WebGL units (-1...1) +* uScale - the scaling factor for a batch draw +* uImageSampler - the source texture containing the tile images +* aPosition - the attribute set by the batch data for drawing location +* +* @class TilemapShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.TilemapShader = function (gl) { + + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + this.fragmentSrc = [ + " precision lowp float;", + " uniform sampler2D uImageSampler;", + " uniform float uAlpha;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_FragColor = texture2D(uImageSampler, vTexCoord) * uAlpha;", + " }" + ]; + + this.vertexSrc = [ + " precision lowp float;", + " uniform vec2 uCentreOffset;", + " uniform vec2 uScale;", + " attribute vec4 aPosition;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_Position.zw = vec2(1, 1);", + " gl_Position.xy = (aPosition.xy + uCentreOffset) * uScale - uCentreOffset;", + " vTexCoord = aPosition.zw;", + " }" + ]; + + /** + * A local texture counter for multi-texture shaders. + * @property textureCount + * @type Number + */ + this.textureCount = 0; + + this.init(); +}; + +PIXI.TilemapShader.prototype.constructor = PIXI.TilemapShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.TilemapShader.prototype.init = function () { + + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + gl.useProgram(program); + + // get and store the attributes + this.aPosition = gl.getAttribLocation(program, 'aPosition'); + this.uSampler = gl.getUniformLocation(program, 'uImageSampler'); + this.uCentreOffset = gl.getUniformLocation(program, 'uCentreOffset'); + this.uAlpha = gl.getUniformLocation(program, 'uAlpha'); + this.uScale = gl.getUniformLocation(program, 'uScale'); + + this.attributes = [this.aPosition]; + this.uniforms = [this.uCentreOffset, this.uAlpha, this.uScale, this.uSampler]; + + this.program = program; + +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.TilemapShader.prototype.destroy = function () { + + this.gl.deleteProgram(this.program); + this.gl = null; + + this.uniforms = null; + this.attributes = null; + +}; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -94152,6 +94741,7 @@ Phaser.Tile = function (layer, index, x, y, width, height) { /** * @property {number} alpha - The alpha value at which this tile is drawn to the canvas. + * TODO: currently unused for both Canvas and WebGL renderers */ this.alpha = 1; @@ -94580,7 +95170,12 @@ Phaser.Tilemap = function (game, key, tileWidth, tileHeight, width, height) { * @property {array} tilesets - An array of Tilesets. */ this.tilesets = data.tilesets; - + + /** + * @property {array} tilesetLayers - An array of internal layers used to separate multiple tilesets from a single map layer. + */ + this.tilesetLayers = null; + /** * @property {array} imagecollections - An array of Image Collections. */ @@ -94791,6 +95386,20 @@ Phaser.Tilemap.prototype = { if (this.tilesets[idx]) { this.tilesets[idx].setImage(img); + + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // // for the first tileset, don't create a layer because createLayer will be called to do that + // this.tilesetLayers = []; + // } + // else + // { + // // for all the rest, go ahead and make a (currently) blank layer + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return this.tilesets[idx]; } else @@ -94839,6 +95448,17 @@ Phaser.Tilemap.prototype = { } } + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // this.tilesetLayers = []; + // } + // else + // { + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return newSet; } @@ -95041,10 +95661,9 @@ Phaser.Tilemap.prototype = { * @param {number} [width] - The rendered width of the layer, should never be wider than Game.width. If not given it will be set to Game.width. * @param {number} [height] - The rendered height of the layer, should never be wider than Game.height. If not given it will be set to Game.height. * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @param {boolean} [pixiTest] - Temporary additional flag to enable tests of the PIXI.Tilemap renderer * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Sprite and can be moved around the display list accordingly. */ - createLayer: function (layer, width, height, group, pixiTest) { + createLayer: function (layer, width, height, group) { // Add Buffer support for the left of the canvas @@ -95065,8 +95684,17 @@ Phaser.Tilemap.prototype = { return; } - if ( pixiTest ) + // create the internal layers for different tilesets using this one as a base description + for (var i = 1, l = this.tilesets.length; i < l; i++) { + var ts = this.tilesets[i]; + var li = this.layers[index]; + this.createInternalLayer( "_internal" + i.toString(), ts, li.width, li.height, ts.tileWidth, ts.tileHeight, group ); + } + + if ( this.game.renderType === Phaser.WEBGL ) + { + // use WebGL variant of TilemapLayer return group.add(new Phaser.TilemapLayerGL(this.game, this, index, width, height)); } @@ -95074,6 +95702,121 @@ Phaser.Tilemap.prototype = { }, + /** + * Creates a new internal layer on this Tilemap. + * + * Internal layers are used when a Tilemap contains multiple Tilesets with different sized tiles. The tilesets + * each get a separate layer which is only ever referenced internally by the renderer. This approach permits us + * to handle large tiles at screen edges, and with the correct offset relative to the 'base' tileset regardless + * of size differences between the tiles. + * + * For WebGL rendering, this approach also permits us to batch the drawing calls efficiently. + * + * By default TilemapLayers are fixed to the camera. + * + * @method Phaser.Tilemap#createInternalLayer + * @param {string} name - The name of this layer. Must be unique within the map. + * @param {Phaser.Tileset} tileset - The tileset whose data is to be added to this layer. + * @param {number} width - The width of the layer in tiles. + * @param {number} height - The height of the layer in tiles. + * @param {number} tileWidth - The width of the tiles the layer uses for calculations. + * @param {number} tileHeight - The height of the tiles the layer uses for calculations. + * @param {Phaser.Group} [group] - Optional Group to add the layer to. If not specified it will be added to the World group. + * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. + */ + createInternalLayer: function (name, tileset, width, height, tileWidth, tileHeight, group) { + + if (group === undefined) { group = this.game.world; } + + if (this.getLayerIndex(name) !== null) + { + console.warn('Tilemap.createBlankLayer: Layer with matching name already exists'); + return; + } + + var layer = { + + name: name, + x: 0, + y: 0, + width: width, + height: height, + widthInPixels: width * tileWidth, + heightInPixels: height * tileHeight, + alpha: 1, + visible: true, + properties: {}, + indexes: [], + callbacks: [], + bodies: [], + data: null, + tileset: tileset + + }; + + var row; + var output = []; + + for (var y = 0; y < height; y++) + { + row = []; + for (var x = 0; x < width; x++) + { + // get the equivalent tile from this Tilemap + var tile = this.layers[0].data[y][x]; + // find out which tileset it is in + var setIndex = this.tiles[tile.index] && this.tiles[tile.index][2]; + var ts = this.tilesets[setIndex]; + // is it one of the ones we want to move? + if ( ts == tileset ) + { + // move the tile to this new layer + row.push( tile ); + // erase it from the original (mixed tileset) layer + this.layers[0].data[y][x] = new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight); + } + else + { + // add an empty tile + row.push(new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight)); + } + } + + output.push(row); + } + + layer.data = output; + + this.layers.push(layer); + + var w = layer.widthInPixels; + var h = layer.heightInPixels; + + if (w > this.game.width) + { + w = this.game.width; + } + + if (h > this.game.height) + { + h = this.game.height; + } + + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } + output.name = name; + + return group.add(output); + + }, + /** * Creates a new and empty layer on this Tilemap. By default TilemapLayers are fixed to the camera. * @@ -95150,7 +95893,15 @@ Phaser.Tilemap.prototype = { h = this.game.height; } - var output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } output.name = name; return group.add(output); @@ -95479,6 +96230,10 @@ Phaser.Tilemap.prototype = { { layer = layer.index; } + else if (layer instanceof Phaser.TilemapLayerGL) + { + layer = layer.index; + } return layer; @@ -97747,6 +98502,914 @@ Object.defineProperty(Phaser.TilemapLayer.prototype, "collisionHeight", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* A TilemapLayerGL is a PIXI.Tilemap that renders a specific TileLayer of a Tilemap using the PIXI WebGL renderer. +* +* NOTE: This is a close duplicate of Phaser.TilemapLayer class, modified to support WebGL rendering, it may be possible to merge the two classes +* although that will probably incur performance penalties due to some fundamental differences in the set-up before rendering. +* +* Since a PIXI.Tilemap is a PIXI.DisplayObjectContainer it can be moved around the display list, added to other groups, or display objects, etc. +* +* By default TilemapLayers have fixedToCamera set to `true`. Changing this will break Camera follow and scrolling behavior. +* +* @class Phaser.TilemapLayerGL +* @extends Phaser.Sprite +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. +* @param {Phaser.Tilemap} tilemap - The tilemap to which this layer belongs. +* @param {integer} index - The index of the TileLayer to render within the Tilemap. +* @param {integer} width - Width of the renderable area of the layer (in pixels). +* @param {integer} height - Height of the renderable area of the layer (in pixels). +*/ +Phaser.TilemapLayerGL = function (game, tilemap, index, width, height) { + + this.game = game; + + width |= 0; + height |= 0; + + /** + * The Tilemap to which this layer is bound. + * @property {Phaser.Tilemap} map + * @protected + * @readonly + */ + this.map = tilemap; + + /** + * The index of this layer within the Tilemap. + * @property {number} index + * @protected + * @readonly + */ + this.index = index; + + /** + * The layer object within the Tilemap that this layer represents. + * @property {object} layer + * @protected + * @readonly + */ + this.layer = tilemap.layers[index]; + + /** + * The const type of this object. + * @property {number} type + * @readonly + * @protected + * @default Phaser.TILEMAPLAYER + */ + this.type = Phaser.TILEMAPLAYER; + + /** + * @property {number} physicsType - The const physics body type of this object. + * @readonly + */ + this.physicsType = Phaser.TILEMAPLAYER; + + /** + * Settings that control standard (non-diagnostic) rendering. + * + * @property {boolean} [enableScrollDelta=true] - Delta scroll rendering only draws tiles/edges as they come into view. + * This can greatly improve scrolling rendering performance, especially when there are many small tiles. + * It should only be disabled in rare cases. + * + * @property {?DOMCanvasElement} [copyCanvas=(auto)] - [Internal] If set, force using a separate (shared) copy canvas. + * Using a canvas bitblt/copy when the source and destinations region overlap produces unexpected behavior + * in some browsers, notably Safari. + * + * @default + */ + this.renderSettings = { + enableScrollDelta: false, + overdrawRatio: 0.20, + copyCanvas: null + }; + + /** + * Enable an additional "debug rendering" pass to display collision information. + * + * @property {boolean} debug + * @default + */ + this.debug = false; + + /** + * @property {boolean} exists - Controls if the core game loop and physics update this game object or not. + */ + this.exists = true; + + /** + * Settings used for debugging and diagnostics. + * + * @property {?string} missingImageFill - A tile is rendered as a rectangle using the following fill if a valid tileset/image cannot be found. A value of `null` prevents additional rendering for tiles without a valid tileset image. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {?string} debuggedTileOverfill - If a Tile has `Tile#debug` true then, after normal tile image rendering, a rectangle with the following fill is drawn above/over it. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {boolean} forceFullRedraw - When debug rendering (`debug` is true), and this option is enabled, the a full redraw is forced and rendering optimization is suppressed. + * + * @property {number} debugAlpha - When debug rendering (`debug` is true), the tileset is initially rendered with this alpha level. This can make the tile edges clearer. + * + * @property {?string} facingEdgeStroke - When debug rendering (`debug` is true), this color/stroke is used to draw "face" edges. A value of `null` disables coloring facing edges. + * + * @property {?string} collidingTileOverfill - When debug rendering (`debug` is true), this fill is used for tiles that are collidable. A value of `null` disables applying the additional overfill. + * + */ + this.debugSettings = { + + missingImageFill: 'rgb(255,255,255)', + debuggedTileOverfill: 'rgba(0,255,0,0.4)', + + forceFullRedraw: true, + + debugAlpha: 0.5, + facingEdgeStroke: 'rgba(0,255,0,1)', + collidingTileOverfill: 'rgba(0,255,0,0.2)' + + }; + + /** + * Speed at which this layer scrolls horizontally, relative to the camera (e.g. scrollFactorX of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do). + * @property {number} scrollFactorX + * @public + * @default + */ + this.scrollFactorX = 1; + + /** + * Speed at which this layer scrolls vertically, relative to the camera (e.g. scrollFactorY of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do) + * @property {number} scrollFactorY + * @public + * @default + */ + this.scrollFactorY = 1; + + /** + * If true tiles will be force rendered, even if such is not believed to be required. + * @property {boolean} dirty + * @protected + */ + this.dirty = true; + + /** + * When ray-casting against tiles this is the number of steps it will jump. For larger tile sizes you can increase this to improve performance. + * @property {integer} rayStepRate + * @default + */ + this.rayStepRate = 4; + + /** + * Flag controlling if the layer tiles wrap at the edges. + * @property {boolean} _wrap + * @private + */ + this._wrap = false; + + /** + * Local map data and calculation cache. + * @property {object} _mc + * @private + */ + var tileset = this.layer.tileset || this.map.tilesets[0]; + this._mc = { + + // Used to bypass rendering without reliance on `dirty` and detect changes. + scrollX: 0, + scrollY: 0, + renderWidth: 0, + renderHeight: 0, + + // dimensions of tiles in the original tilemap (the one holding all the tile indices) + tileWidth: tilemap.tileWidth, + tileHeight: tilemap.tileHeight, + + // Collision width/height (pixels) + // What purpose do these have? Most things use tile width/height directly. + // This also only extends collisions right and down. + + // dimensions of tiles in this tileset (may not match the original tilemap) + cw: tileset.tileWidth, + ch: tileset.tileHeight, + + // the tileset for this layer + tileset: tileset, + + // Cached tilesets from index -> Tileset + tilesets: [] + }; + + /** + * The rendering mode (used by PIXI.Tilemap). Modes are: 0 - render entire screen of tiles, 1 - render entire map of tiles + * TODO: make some constants for the rendering modes + * @property {number} _renderMode + * @private + */ + this._renderMode = 0; + + /** + * The current canvas left after scroll is applied. + * @property {number} _scrollX + * @private + */ + this._scrollX = 0; + + /** + * The current canvas top after scroll is applied. + * @propety {number} _scrollY + * @private + */ + this._scrollY = 0; + + /** + * Used for caching the tiles / array of tiles. + * @property {Phaser.Tile[]} _results + * @private + */ + this._results = []; + + // get PIXI textures for each tileset source image + var baseTexture = new PIXI.BaseTexture( tileset.image ); + PIXI.Tilemap.call(this, new PIXI.Texture(baseTexture), this.map.width, this.map.height, this._mc.tileset.tileWidth, this._mc.tileset.tileHeight, this.layer); + + Phaser.Component.Core.init.call(this, game, 0, 0, null, null); + + // must be set *after* the Core.init + this.fixedToCamera = true; +}; + + +// constructor: extends PIXI.Tilemap +Phaser.TilemapLayerGL.prototype = Object.create(PIXI.Tilemap.prototype); +Phaser.TilemapLayerGL.prototype.constructor = Phaser.TilemapLayerGL; + + +// only one Phaser component used +Phaser.Component.Core.install.call(Phaser.TilemapLayerGL.prototype, [ + 'FixedToCamera' +]); + + +// redirect method prototypes (TODO: not needed? I'm not sure...) +Phaser.TilemapLayerGL.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; +Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; +Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; +Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; +Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; + + +/** +* Automatically called by World.preUpdate. +* +* @method Phaser.TilemapLayerGL#preUpdate +*/ +Phaser.TilemapLayerGL.prototype.preUpdate = function() { + + return this.preUpdateCore(); + +}; + +/** +* Automatically called by World.postUpdate. Handles camera scrolling. +* +* @method Phaser.TilemapLayerGL#postUpdate +* @protected +*/ +Phaser.TilemapLayerGL.prototype.postUpdate = function () { + + Phaser.Component.FixedToCamera.postUpdate.call(this); + + // Stops you being able to auto-scroll the camera if it's not following a sprite + var camera = this.game.camera; + + this.scrollX = camera.x * this.scrollFactorX / this.scale.x; + this.scrollY = camera.y * this.scrollFactorY / this.scale.y; + + this.render(); + +}; + +/** +* Destroys this TilemapLayerGL. +* +* @method Phaser.TilemapLayerGL#destroy +*/ +Phaser.TilemapLayerGL.prototype.destroy = function() { + + PIXI.CanvasPool.remove(this); + + Phaser.Component.Destroy.prototype.destroy.call(this); + +}; + +/** +* Resizes the internal dimensions and texture frame used by this TilemapLayerGL. +* +* This is an expensive call, so don't bind it to a window resize event! But instead call it at carefully +* selected times. +* +* Be aware that no validation of the new sizes takes place and the current map scroll coordinates are not +* modified either. You will have to handle both of these things from your game code if required. +* +* @method Phaser.TilemapLayerGL#resize +* @param {number} width - The new width of the TilemapLayerGL +* @param {number} height - The new height of the TilemapLayerGL +*/ +Phaser.TilemapLayerGL.prototype.resize = function (width, height) { + + this.texture.frame.resize(width, height); + + this.texture.width = width; + this.texture.height = height; + + this.texture.crop.width = width; + this.texture.crop.height = height; + + this.texture.baseTexture.width = width; + this.texture.baseTexture.height = height; + + this.texture.baseTexture.dirty(); + this.texture.requiresUpdate = true; + + this.texture._updateUvs(); + + this.dirty = true; + +}; + +/** +* Sets the world size to match the size of this layer. +* +* @method Phaser.TilemapLayerGL#resizeWorld +* @public +*/ +Phaser.TilemapLayerGL.prototype.resizeWorld = function () { + + this.game.world.setBounds(0, 0, this.layer.widthInPixels * this.scale.x, this.layer.heightInPixels * this.scale.y); + +}; + +/** +* Take an x coordinate that doesn't account for scrollFactorX and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixX +* @private +* @param {number} x - x coordinate in camera space +* @return {number} x coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixX = function (x) { + + if (x < 0) + { + x = 0; + } + + if (this.scrollFactorX === 1) + { + return x; + } + + return this._scrollX + (x - (this._scrollX / this.scrollFactorX)); + +}; + +/** +* Take an x coordinate that _does_ account for scrollFactorX and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixX +* @private +* @param {number} x - x coordinate in scrollFactor-adjusted dimensions +* @return {number} x coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixX = function (x) { + + if (this.scrollFactorX === 1) + { + return x; + } + + return (this._scrollX / this.scrollFactorX) + (x - this._scrollX); + +}; + +/** +* Take a y coordinate that doesn't account for scrollFactorY and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixY +* @private +* @param {number} y - y coordinate in camera space +* @return {number} y coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixY = function (y) { + + if (y < 0) + { + y = 0; + } + + if (this.scrollFactorY === 1) + { + return y; + } + + return this._scrollY + (y - (this._scrollY / this.scrollFactorY)); + +}; + +/** +* Take a y coordinate that _does_ account for scrollFactorY and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixY +* @private +* @param {number} y - y coordinate in scrollFactor-adjusted dimensions +* @return {number} y coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixY = function (y) { + + if (this.scrollFactorY === 1) + { + return y; + } + + return (this._scrollY / this.scrollFactorY) + (y - this._scrollY); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileX +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @return {integer} The X map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileX = function (x) { + + // var tileWidth = this.tileWidth * this.scale.x; + return Math.floor(this._fixX(x) / this._mc.tileWidth); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileY +* @public +* @param {number} y - Y position of the point in target tile (in pixels). +* @return {integer} The Y map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileY = function (y) { + + // var tileHeight = this.tileHeight * this.scale.y; + return Math.floor(this._fixY(y) / this._mc.tileHeight); + +}; + +/** +* Convert a pixel coordinate to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileXY +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @param {number} y - Y position of the point in target tile (in pixels). +* @param {(Phaser.Point|object)} point - The Point/object to update. +* @return {(Phaser.Point|object)} A Point/object with its `x` and `y` properties set. +*/ +Phaser.TilemapLayerGL.prototype.getTileXY = function (x, y, point) { + + point.x = this.getTileX(x); + point.y = this.getTileY(y); + + return point; + +}; + +/** +* Gets all tiles that intersect with the given line. +* +* @method Phaser.TilemapLayerGL#getRayCastTiles +* @public +* @param {Phaser.Line} line - The line used to determine which tiles to return. +* @param {integer} [stepRate=(rayStepRate)] - How many steps through the ray will we check? Defaults to `rayStepRate`. +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {Phaser.Tile[]} An array of Phaser.Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getRayCastTiles = function (line, stepRate, collides, interestingFace) { + + if (!stepRate) { stepRate = this.rayStepRate; } + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + // First get all tiles that touch the bounds of the line + var tiles = this.getTiles(line.x, line.y, line.width, line.height, collides, interestingFace); + + if (tiles.length === 0) + { + return []; + } + + // Now we only want the tiles that intersect with the points on this line + var coords = line.coordinatesOnLine(stepRate); + var results = []; + + for (var i = 0; i < tiles.length; i++) + { + for (var t = 0; t < coords.length; t++) + { + var tile = tiles[i]; + var coord = coords[t]; + if (tile.containsPoint(coord[0], coord[1])) + { + results.push(tile); + break; + } + } + } + + return results; + +}; + +/** +* Get all tiles that exist within the given area, defined by the top-left corner, width and height. Values given are in pixels, not tiles. +* +* @method Phaser.TilemapLayerGL#getTiles +* @public +* @param {number} x - X position of the top left corner (in pixels). +* @param {number} y - Y position of the top left corner (in pixels). +* @param {number} width - Width of the area to get (in pixels). +* @param {number} height - Height of the area to get (in pixels). +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {array} An array of Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getTiles = function (x, y, width, height, collides, interestingFace) { + + // Should we only get tiles that have at least one of their collision flags set? (true = yes, false = no just get them all) + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + var fetchAll = !(collides || interestingFace); + + // Adjust the x,y coordinates for scrollFactor + x = this._fixX(x); + y = this._fixY(y); + + // Convert the pixel values into tile coordinates + var tx = Math.floor(x / (this._mc.cw * this.scale.x)); + var ty = Math.floor(y / (this._mc.ch * this.scale.y)); + // Don't just use ceil(width/cw) to allow account for x/y diff within cell + var tw = Math.ceil((x + width) / (this._mc.cw * this.scale.x)) - tx; + var th = Math.ceil((y + height) / (this._mc.ch * this.scale.y)) - ty; + + // Discard old results before storing the new ones + this._results = []; + + for (var wy = ty; wy < ty + th; wy++) + { + for (var wx = tx; wx < tx + tw; wx++) + { + var row = this.layer.data[wy]; + + if (row && row[wx]) + { + if (fetchAll || row[wx].isInteresting(collides, interestingFace)) + { + this._results.push(row[wx]); + } + } + } + } + + return this._results.slice(); + +}; + +/** +* The TilemapLayerGL caches tileset look-ups. +* +* Call this method of clear the cache if tilesets have been added or updated after the layer has been rendered. +* +* @method Phaser.TilemapLayerGL#resetTilesetCache +* @public +*/ +Phaser.TilemapLayerGL.prototype.resetTilesetCache = function () { + + this._mc.tilesets = []; +}; + +/** + * This method will set the scale of the tilemap as well as update the underlying block data of this layer. + * + * @method Phaser.TilemapLayerGL#setScale + * @param {number} [xScale=1] - The scale factor along the X-plane + * @param {number} [yScale] - The scale factor along the Y-plane + */ +Phaser.TilemapLayerGL.prototype.setScale = function (xScale, yScale) { + + xScale = xScale || 1; + yScale = yScale || xScale; + + for (var y = 0; y < this.layer.data.length; y++) + { + var row = this.layer.data[y]; + + for (var x = 0; x < row.length; x++) + { + var tile = row[x]; + + tile.width = this.map.tileWidth * xScale; + tile.height = this.map.tileHeight * yScale; + + tile.worldX = tile.x * tile.width; + tile.worldY = tile.y * tile.height; + } + } + + this.scale.setTo(xScale, yScale); + +}; + +/** +* Render tiles in the given area given by the virtual tile coordinates biased by the given scroll factor. +* This will constrain the tile coordinates based on wrapping but not physical coordinates. +* +* @method Phaser.TilemapLayerGL#renderRegion +* @private +* @param {integer} scrollX - Render x offset/scroll. +* @param {integer} scrollY - Render y offset/scroll. +* @param {integer} left - Leftmost column to render. +* @param {integer} top - Topmost row to render. +* @param {integer} right - Rightmost column to render. +* @param {integer} bottom - Bottommost row to render. +*/ +Phaser.TilemapLayerGL.prototype.renderRegion = function (scrollX, scrollY, left, top, right, bottom, offx, offy) { + + var width = this.layer.width; + var height = this.layer.height; + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + // var lastAlpha = NaN; + + offx = offx || 0; + offy = offy || 0; + + if (!this._wrap) + { + if (left <= right) // Only adjust if going to render + { + left = Math.max(0, left); + right = Math.min(width - 1, right); + } + if (top <= bottom) + { + top = Math.max(0, top); + bottom = Math.min(height - 1, bottom); + } + } + + // top-left pixel of top-left cell + var baseX = (left * tw) - scrollX; + var baseY = (top * th) - scrollY; + + // Fix normStartX/normStartY such it is normalized [0..width/height). This allows a simple conditional and decrement to always keep in range [0..width/height) during the loop. The major offset bias is to take care of negative values. + var normStartX = (left + ((1 << 20) * width)) % width; + var normStartY = (top + ((1 << 20) * height)) % height; + + // tx/ty - are pixel coordinates where tile is drawn + // x/y - is cell location, normalized [0..width/height) in loop + // xmax/ymax - remaining cells to render on column/row + var tx, ty, x, y, xmax, ymax; + + //context.fillStyle = this.tileColor; + + for (y = normStartY, ymax = bottom - top, ty = baseY; + ymax >= 0; + y++, ymax--, ty += th) + { + + if (y >= height) { y -= height; } + + var row = this.layer.data[y]; + + for (x = normStartX, xmax = right - left, tx = baseX; + xmax >= 0; + x++, xmax--, tx += tw) + { + + if (x >= width) { x -= width; } + + var tile = row[x]; + + if (!tile || tile.index < 0) + { + // skipping some tiles, add a degenerate marker into the batch list + this._mc.tileset.addDegenerate( this.glBatch ); + continue; + } + + var index = tile.index; + + if (tile.rotation || tile.flipped) + { + this._mc.tileset.drawGl(this.glBatch, -tile.centerX + offx, -tile.centerY + offy, index, tile.alpha); + } + else + { + this._mc.tileset.drawGl(this.glBatch, tx + offx, ty + offy, index, tile.alpha); + } + } + + // at end of each row, add a degenerate marker into the batch drawing list + this._mc.tileset.addDegenerate( this.glBatch ); + } + +}; + +/** +* Clear and render the entire canvas. +* +* @method Phaser.TilemapLayerGL#renderFull +* @private +*/ +Phaser.TilemapLayerGL.prototype.renderFull = function () { + + var scrollX = this._mc.scrollX; + var scrollY = this._mc.scrollY; + + var renderW = this.game._width; //this.canvas.width; + var renderH = this.game._height; //this.canvas.height; + + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + var cw = this._mc.cw; + var ch = this._mc.ch; + + var left = Math.floor( (scrollX - (cw - tw)) / tw ); + var right = Math.floor( (renderW - 1 + scrollX) / tw ); + var top = Math.floor( (scrollY - (ch - th)) / th ); + var bottom = Math.floor( (renderH - 1 + scrollY) / th ); + + this.glBatch = []; + this.renderRegion(scrollX, scrollY, left, top, right, bottom, 0, -(ch - th)); +}; + +/** +* Renders the tiles to the layer canvas and pushes to the display. +* +* @method Phaser.TilemapLayerGL#render +* @protected +*/ +Phaser.TilemapLayerGL.prototype.render = function () { + + var redrawAll = false; + + if (!this.visible) + { + return; + } + + if (this.dirty || this.layer.dirty) + { + this.layer.dirty = false; + redrawAll = true; + } + + // Scrolling bias; whole pixels only + var scrollX = this._scrollX | 0; + var scrollY = this._scrollY | 0; + + var mc = this._mc; + var shiftX = mc.scrollX - scrollX; // Negative when scrolling right/down + var shiftY = mc.scrollY - scrollY; + + if (!redrawAll && + shiftX === 0 && shiftY === 0) + { + // No reason to rebuild batch, looking at same thing and not invalidated. + return; + } + + mc.scrollX = scrollX; + mc.scrollY = scrollY; + + this.renderFull(); + + this.texture.baseTexture.dirty(); + + this.dirty = false; + + return true; + +}; + +/** +* Flag controlling if the layer tiles wrap at the edges. Only works if the World size matches the Map size. +* +* @property {boolean} wrap +* @memberof Phaser.TilemapLayerGL +* @public +* @default false +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "wrap", { + + get: function () { + return this._wrap; + }, + + set: function (value) { + this._wrap = value; + this.dirty = true; + } + +}); + +/** +* Scrolls the map horizontally or returns the current x position. +* +* @property {number} scrollX +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollX", { + + get: function () { + return this._scrollX; + }, + + set: function (value) { + this._scrollX = value; + } + +}); + +/** +* Scrolls the map vertically or returns the current y position. +* +* @property {number} scrollY +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollY", { + + get: function () { + return this._scrollY; + }, + + set: function (value) { + this._scrollY = value; + } + +}); + +/** +* The width of the collision tiles (in pixels). +* +* @property {integer} collisionWidth +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionWidth", { + + get: function () { + return this._mc.cw; + }, + + set: function (value) { + this._mc.cw = value | 0; + this.dirty = true; + } + +}); + +/** +* The height of the collision tiles (in pixels). +* +* @property {integer} collisionHeight +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionHeight", { + + get: function () { + return this._mc.ch; + }, + + set: function (value) { + this._mc.ch = value | 0; + this.dirty = true; + } + +}); + +/** +* @author Richard Davey +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * Phaser.TilemapParser parses data objects from Phaser.Loader that need more preparation before they can be inserted into a Tilemap. * @@ -97769,34 +99432,7 @@ Phaser.TilemapParser = { INSERT_NULL: false, /** - * A tiled flag that resides within the 32 bit of the object gid and - * indicates whether the tiled/object is flipped horizontally. - * - * @constant - * @type {number} - */ - FLIPPED_HORIZONTALLY_FLAG: 0x80000000, - - /** - * A tiled flag that resides within the 31 bit of the object gid and - * indicates whether the tiled/object is flipped vertically. - * - * @constant - * @type {number} - */ - FLIPPED_VERTICALLY_FLAG: 0x40000000, - - /** - * A tiled flag that resides within the 30 bit of the object gid and - * indicates whether the tiled/object is flipped diagonally. - * - * @constant - * @type {number} - */ - FLIPPED_DIAGONALLY_FLAG: 0x20000000, - - /** - * Parse tilemap data from the cache and creates a Tilemap object. + * Parse tilemap data from the cache and creates data for a Tilemap object. * * @method Phaser.TilemapParser.parse * @param {Phaser.Game} game - Game reference to the currently running game. @@ -98275,8 +99911,6 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { - var self = this; - var object = { gid: curo.objects[v].gid, @@ -98284,13 +99918,9 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, - width: curo.objects[v].width, - height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties, - horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, - verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, - diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG + properties: curo.objects[v].properties + }; if (curo.objects[v].rotation) @@ -98423,11 +100053,13 @@ Phaser.TilemapParser = { var sid; var set; - // go through each of the map layers + // go through each of the map data layers for (var i = 0; i < map.layers.length; i++) { layer = map.layers[i]; + set = null; + // rows of tiles for (var j = 0; j < layer.data.length; j++) { @@ -98448,12 +100080,14 @@ Phaser.TilemapParser = { sid = map.tiles[tile.index][2]; set = map.tilesets[sid]; + // if that tile type has any properties, add them to the tile object if (set.tileProperties && set.tileProperties[tile.index - set.firstgid]) { tile.properties = Phaser.Utils.mixin(set.tileProperties[tile.index - set.firstgid], tile.properties); } + } } } @@ -98603,6 +100237,7 @@ Phaser.Tileset.prototype = { if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) { + // draw the tile on the canvas context.drawImage( this.image, this.drawCoords[coordIndex], @@ -98618,6 +100253,56 @@ Phaser.Tileset.prototype = { }, + /** + * Draws a tile from this Tileset at the given coordinates using a WebGl renderer. + * + * @method Phaser.Tileset#drawGl + * @public + * @param out {Array} glBatch - A list of webgl batch objects to draw later. + * @param {number} x - The x coordinate to draw to. + * @param {number} y - The y coordinate to draw to. + * @param {integer} index - The index of the tile within the set to draw. + * @param {number} alpha - The alpha value to draw this tile with. + */ + drawGl: function (glBatch, x, y, index, alpha) { + + // Correct the tile index for the set and bias for interlacing x/y values + var coordIndex = (index - this.firstgid) * 2; + + if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) + { + // add the tile to the webgl batch + // source and destination coordinates, in pixel units + // destination is the centre of the tile + glBatch.push( { + sx: this.drawCoords[coordIndex], + sy: this.drawCoords[coordIndex + 1], + sw: this.tileWidth, + sh: this.tileHeight, + dx: x + this.tileWidth * 0.5, + dy: y + this.tileHeight * 0.5, + dw: this.tileWidth, + dh: this.tileHeight, + alpha: alpha + } ); + } + + }, + + /** + * adds a marker for the WebGl batch display to insert a degenerate triangle (eg. at the end of each row of tiles) + * + * @param {[type]} glBatch [description] + */ + addDegenerate: function( glBatch ) + { + // don't insert multiple degenerate markers in a row + if ( glBatch[ glBatch.length - 1] ) + { + glBatch.push( null ); + } + }, + /** * Returns true if and only if this tileset contains the given tile index. * diff --git a/build/phaser.map b/build/phaser.map index aeb5ea36d..bb3a01e62 100644 --- a/build/phaser.map +++ b/build/phaser.map @@ -1 +1 @@ -{"version":3,"sources":["phaser.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist","3","Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point","4","abs","5","./Polygon","6","name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp","7","AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body","9","NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape","10","Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary","11","Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList","14","Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation","15","DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint","16","GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis","18","PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation","19","RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation","20","./Equation","21","computeB","h","GW","Gq","GiMf","computeGiMf","B","22","ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps","23","FrictionEquation","getSlipForce","24","worldVectorA","worldVectorB","25","26","EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y","31","_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter","32","LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring","33","RotationalSpring","restAngle","34","35","TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint","36","Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World","37","arguments","axes","updateArea","./Convex","./Shape","38","intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1","39","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint","40","isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk","41","key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo","42","raycast_normal","raycast_l0","raycast_l1","raycast_unit_y","43","44","intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir","45","material","sensor","46","GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver","47","equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND","48","destroy","equation","./Pool","49","50","IslandNodePool","IslandNode","../world/IslandNode","51","IslandPool","Island","../world/Island","52","OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils","53","OverlapKeeperRecord","54","record","55","objects","resize","object","56","getKey","dict","57","howmany","P2_ARRAY_TYPE","Float32Array","58","bodyIds","59","IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode","60","61","springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Uint16Array","Uint32Array","ArrayBuffer","PI_2","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","children","_destroyCachedSprite","updateTransform","tx","ty","pt","wt","rotationCache","atan2","transformCallback","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","toLocal","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","defineProperties","worldVisible","item","mask","isMask","passes","filterPasses","_filterBlock","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","_width","_height","addChild","addChildAt","removeChild","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","removeChildren","beginIndex","endIndex","begin","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","maskManager","pushMask","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","trim","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","remove","getNextPowerOfTwo","number","isPowerOfTwo","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","v2","paddingX","paddingY","centerX","centerY","normX","normY","beginPath","moveTo","lineTo","closePath","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","rawX","rawY","Rope","lastPoint","amount","total","nextPoint","perp","perpLength","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","RECTANGLE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","Function","bind","thisArg","bound","args","boundArgs","concat","TypeError","F","proto","arg","forEach","fun","CheapArray","assert","reverseString","string","getProperty","obj","prop","parts","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","parseInt","innerWidth","innerHeight","pad","dir","padlen","isPlainObject","nodeType","hasOwnProperty","copyIsArray","deep","mixinPrototype","mixin","replace","mixinKeys","childNodes","cloneNode","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","round","output","contains","circumferencePoint","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotateAround","line","asSegment","intersectsPoints","midPoint","centerOn","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","bx1","by1","bx2","by2","normalAngle","fromArray","newPos","tx1","invert","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","isZero","rperp","normalRightHand","negative","multiplyAdd","interpolate","project","amt","projectUnit","pointslength","parse","xProp","yProp","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","calculateArea","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","volume","sameDimensions","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","flash","beginFill","drawRect","endFill","fade","updateFX","updateShake","checkBounds","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","enableStep","disableStep","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","multiInputOverride","MOUSE_TOUCH_COMBINE","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","TileSprite","graphicsData","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","processAxisChange","triggerCallback","disconnectingIndex","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","C","D","E","H","J","K","L","M","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","addToCache","uuid","addRenderTexture","video","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","g1","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt2","dt3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","sign","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","eliminateHoles","earcutLinked","clockwise","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","factorial","res","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularAcceleration","angularDrag","maxAngular","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","tempVel1","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","setupWall","wall","fixedStepTime","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","toJSON","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","shapeChanged","impulse","localX","localY","setZeroRotation","setZeroVelocity","setZeroDamping","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","updateSpriteTransform","resetDamping","resetMass","clearShapes","addCircle","addPlane","addParticle","addLine","addCapsule","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser.min.js"} \ No newline at end of file +{"version":3,"sources":["phaser.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist","3","Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point","4","abs","5","./Polygon","6","name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp","7","AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body","9","NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape","10","Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary","11","Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList","14","Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation","15","DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint","16","GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis","18","PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation","19","RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation","20","./Equation","21","computeB","h","GW","Gq","GiMf","computeGiMf","B","22","ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps","23","FrictionEquation","getSlipForce","24","worldVectorA","worldVectorB","25","26","EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y","31","_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter","32","LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring","33","RotationalSpring","restAngle","34","35","TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint","36","Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World","37","arguments","axes","updateArea","./Convex","./Shape","38","intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1","39","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint","40","isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk","41","key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo","42","raycast_normal","raycast_l0","raycast_l1","raycast_unit_y","43","44","intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir","45","material","sensor","46","GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver","47","equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND","48","destroy","equation","./Pool","49","50","IslandNodePool","IslandNode","../world/IslandNode","51","IslandPool","Island","../world/Island","52","OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils","53","OverlapKeeperRecord","54","record","55","objects","resize","object","56","getKey","dict","57","howmany","P2_ARRAY_TYPE","Float32Array","58","bodyIds","59","IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode","60","61","springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Uint16Array","Uint32Array","ArrayBuffer","PI_2","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","children","_destroyCachedSprite","updateTransform","tx","ty","pt","wt","rotationCache","atan2","transformCallback","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","toLocal","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","defineProperties","worldVisible","item","mask","isMask","passes","filterPasses","_filterBlock","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","_width","_height","addChild","addChildAt","removeChild","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","removeChildren","beginIndex","endIndex","begin","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","maskManager","pushMask","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","trim","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","remove","getNextPowerOfTwo","number","isPowerOfTwo","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","tilemapShader","TilemapShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","v2","paddingX","paddingY","centerX","centerY","normX","normY","beginPath","moveTo","lineTo","closePath","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","rawX","rawY","Rope","lastPoint","amount","total","nextPoint","perp","perpLength","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","RECTANGLE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","Function","bind","thisArg","bound","args","boundArgs","concat","TypeError","F","proto","arg","forEach","fun","CheapArray","assert","reverseString","string","getProperty","obj","prop","parts","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","parseInt","innerWidth","innerHeight","pad","dir","padlen","isPlainObject","nodeType","hasOwnProperty","copyIsArray","deep","mixinPrototype","mixin","replace","mixinKeys","childNodes","cloneNode","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","round","output","contains","circumferencePoint","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotateAround","line","asSegment","intersectsPoints","midPoint","centerOn","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","bx1","by1","bx2","by2","normalAngle","fromArray","newPos","tx1","invert","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","isZero","rperp","normalRightHand","negative","multiplyAdd","interpolate","project","amt","projectUnit","pointslength","parse","xProp","yProp","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","calculateArea","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","volume","sameDimensions","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","flash","beginFill","drawRect","endFill","fade","updateFX","updateShake","checkBounds","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","RETURN_ALL","SORT_ASCENDING","SORT_DESCENDING","silent","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","getRandomExists","list","getAll","pick","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","enableStep","disableStep","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","multiInputOverride","MOUSE_TOUCH_COMBINE","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","TileSprite","graphicsData","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","processAxisChange","triggerCallback","disconnectingIndex","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","C","D","E","H","J","K","L","M","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","addToCache","uuid","addRenderTexture","video","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","g1","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt2","dt3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","sign","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","eliminateHoles","earcutLinked","clockwise","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","factorial","res","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","ary","weightedPick","QuadTree","maxObjects","maxLevels","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularAcceleration","angularDrag","maxAngular","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","tempVel1","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","setupWall","wall","fixedStepTime","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","toJSON","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","shapeChanged","impulse","localX","localY","setZeroRotation","setZeroVelocity","setZeroDamping","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","updateSpriteTransform","resetDamping","resetMass","clearShapes","addCircle","addPlane","addParticle","addLine","addCapsule","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","mapwidth","mapheight","tileWide","tileHigh","mapWide","mapHigh","glBatch","lastTile","batchDataElement","dataSize","_renderWholeTilemap","positionBuffer","_renderBatch","oldR","oldT","uvl","uvt","screenWide2","screenHigh2","iTextureWide","iTextureHigh","srcWide","srcHigh","iWide","iHigh","wide","degenerate","lft","bot","aPosition","drawArrays","uCentreOffset","uAlpha","uScale","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","widthInPixels","heightInPixels","tilesets","tilesetLayers","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","createFromTiles","replacements","customClass","lh","createLayer","getLayerIndex","ts","li","createInternalLayer","TilemapLayerGL","indexes","setIndex","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","_renderMode","offx","offy","addDegenerate","drawGl","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","polygon","ellipse","sid","drawCoords","coordIndex","sw","sh","dw","dh","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser.min.js"} \ No newline at end of file diff --git a/build/phaser.min.js b/build/phaser.min.js index c5f42e71d..678e38e82 100644 --- a/build/phaser.min.js +++ b/build/phaser.min.js @@ -1,28 +1,29 @@ -/* Phaser v2.6.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.2 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d)},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0, -this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){ -var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution), -this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}.call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){ -var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y, -this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game); -return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke), -0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d, -this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b)); -return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h={},i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius,radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y, -this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null, -this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&i<=1&&j>=0&&j<=1}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return ma.vertices.length)throw new Error("lol2");if(b<0)throw new Error("lol3");for(var d=b;db[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;ch)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xq&&(q+=this.vertices.length),p=Number.MAX_VALUE,q3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;kh[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return c<=d*d},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return(a.type!==d||b.type!==d)&&(!(a.type===c&&b.type===d||a.type===d&&b.type===c)&&((a.type!==c||b.type!==c)&&((a.sleepState!==f.SLEEPING||b.sleepState!==f.SLEEPING)&&!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d))))},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;hW&&V0)for(var N=0;NMath.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(H===-1||I===-1)return 0;for(var J=0;J<2;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;V=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||hi){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=B<=0,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=B<=0,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(k===-1||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);w<0&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;Ay&&(y=n[A]);if(c[1]-m>y)return!l&&0;for(var B=!1,A=w;A=u[0]&&q[0]0)for(var A=w;A<=x;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;us&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return!j&&0;for(var v=0,u=q;u=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;eb.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(b=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;kthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),a.indexOf(e)===-1&&a.push(e);else{var u=a.indexOf(e);u!==-1&&a.splice(u,1)}if(this.lowerLimitEnabled&&sh)o.angle=h,e.indexOf(o)===-1&&e.push(o);else{var r=e.indexOf(o);r!==-1&&e.splice(r,1)}if(this.lowerLimitEnabled&&q>1;if(b<3)return[];for(var c=[],e=[],f=0;f3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;r3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&u+v<1},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return!(g<0)&&(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&e<=1&&f>=0&&f<=1?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0===a.allowSleep||a.allowSleep, +this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0===a.collisionResponse||a.collisionResponse,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return b!==-1&&(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0)},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;g0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&i=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;r<2;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(t<0))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&A<=1&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&B<=1&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(n<0))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&s<=1&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&t<=1&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||de){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bb&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;k=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),es){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);b!==-1&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;d=a&&d=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(c<0||d<0)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(b===-1)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(b<0||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a<0||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(b!==-1)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){ +var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&e<=d){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;co?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;b0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(f===-1){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;q0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;e=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas, +this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;e0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;ej?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;j1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bv?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}.call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.7.0 Beta",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return a<0?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function a(b){if(b&&(a.prototype=b),!(this instanceof a))return new a}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;e0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);i0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return i+j<=k},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a=c&&a<=d&&b>=e&&b<=f},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=c-h&&(k-=h,c+=i),m=0&&p<=1&&q>=0&&q<=1?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&d<=j&&e>=i&&e<=k||f>=h&&f<=j&&g>=i&&g<=k)return!0;if(d=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&l<=k)return!0}else if(d>j&&f<=j&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&l<=k))return!0;if(e=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&l<=j)return!0}else if(e>k&&g<=k&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&l<=j))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c, +this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(this.y*-1,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y*-1,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(d<1)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;e0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;c=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return!(a.width<=0||a.height<=0)&&(b>=a.x&&b=a.y&&c=a&&e=b&&fb.volume)&&(a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!(!d&&this._shake.duration>0)&&(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!(!this.fx||!c&&this._fxDuration>0)&&(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?!!(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)||(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(h!==-1){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return this._indexOfListener(a,b)!==-1},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;e=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;gthis.children.length||a===-1&&b===-1))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor)return this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor};c.Group.prototype.next=function(){if(this.cursor)return this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.previous=function(){if(this.cursor)return 0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return a<0||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!(!c.Utils.getProperty(a,b)&&e)&&c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){if(void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible))return this.setProperty(a,b,c,f,g)},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(0===this.children.length){if(d===c.Group.RETURN_TOTAL)return 0;if(d===c.Group.RETURN_ALL)return[]}var h=0;if(d===c.Group.RETURN_ALL)var i=[];for(var j=0;j0)return this.children[this.children.length-1]},c.Group.prototype.getBottom=function(){if(this.children.length>0)return this.children[0]},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return void 0===a&&(a=0),void 0===b&&(b=this.children.length),0===b?null:c.ArrayUtils.getRandomItem(this.children,a,b)},c.Group.prototype.getRandomExists=function(a,b){var c=this.getAll("exists",!0,a,b);return this.game.rnd.pick(c)},c.Group.prototype.getAll=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=this.children.length);for(var e=[],f=c;f0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||a<0||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button), +b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fa||this.priorityID===a&&this.sprite.renderOrderID>b))},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;b<10;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;b<10;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return!!(a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectClick)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPointerOver:function(a,b){return!!(this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y)&&(!!this.game.input.hitTest(this.sprite,a,this._tempPoint)&&(void 0===b&&(b=!1),!(!b&&this.pixelPerfectOver)||this.checkPixel(this._tempPoint.x,this._tempPoint.y)))},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){if(null!==this.sprite&&void 0!==this.sprite.parent)return this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1)},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)this.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||navigator.userAgent.indexOf("Firefox/")!=-1||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||d<0&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return!(this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0))||(this.kill(),!1)},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,!(!this._exists||!this.parent.exists)||(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,(!0),a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f); +},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return!!this.preUpdateInWorld()&&this.preUpdateCore()},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c&&(this.frame=c,!0)},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),a<0){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;b=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){if(a>=0&&a<=this.width&&b>=0&&b<=this.height)return this.pixels[b*this.width+a]},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||e<=0)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||d<=0)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;l<=g;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;q<=l;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(m<1e-8||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&e<=d?e+=2*Math.PI:f&&d<=e&&(d+=2*Math.PI);var h=f?(d-e)*-1:e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;s<=q;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dv?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;cb?h+j:b,d=ie?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=h-jb?h+j:b,d=i-ke?i+k:e;else{g=f.points;for(var p=0;pb?h+o:b,d=i-oe?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(c<3)return[];for(var d=[],e=[],f=0;f3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;r3*g){if(!b)return null;for(d=[],e=[],f=0;f=0&&v>=0&&u+v<1},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;oj&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;f0)for(f=b;f=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);h<=e&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fc.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;b0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;ch?e:h,i=fj?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;kA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;dy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLines0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;q<0&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness, +this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;h0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;gk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(p<=k)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;ig;i--){for(j=0;j0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;e0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),a<0&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return!!(this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld())&&this.preUpdateCore()},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(a){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=navigator.userAgent.toLowerCase().indexOf("iphone")!=-1,l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=navigator.userAgent.toLowerCase().indexOf("ipad")!=-1,"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]||2712847316!=c[0]&&null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return!("mp3"!==a||!this.mp3)||(!("ogg"!==a||!this.ogg&&!this.opus)||(!("m4a"!==a||!this.m4a)||(!("opus"!==a||!this.opus)||(!("wav"!==a||!this.wav)||(!("webm"!==a||!this.webm)||!("mp4"!==a||!this.dolby))))))},c.Device.canPlayVideo=function(a){return!("webm"!==a||!this.webmVideo&&!this.vp9Video)||(!("mp4"!==a||!this.mp4Video&&!this.h264Video)||(!("ogg"!==a&&"ogv"!==a||!this.oggVideo)||!("mpeg"!==a||!this.hlsVideo)))},c.Device.isConsoleOpen=function(){return!(!window.console||!window.console.firebug)||!(!window.console||(console.profile(),console.profileEnd(),console.clear&&console.clear(),!console.profiles))&&console.profiles.length>0},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);if(b)return a[b]},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;cb-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;c=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(d<=0)return 0;var e=(a-b)%d;return e<0&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;ba[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;cb[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return b<0?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;e<=d;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(b<0&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):b<0?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[c0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;j0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:aa?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),b!==-1))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(d!==-1?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return window.location.hostname.indexOf(a)!==-1},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=d.indexOf("?")!==-1?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;a0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||b<=0)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;bthis.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),c===-1)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration, +this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||c<1?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return a<.5?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,(!1)),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;a=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a])return this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d))},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return!(this.updateIfVisible&&!this.sprite.visible)&&(!(!this.currentAnim||!this.currentAnim.update())&&(this.currentFrame=this.currentAnim.currentFrame,!0))},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){if(this.currentAnim)return this.currentAnim.name}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){if(this.currentFrame)return this.currentFrame.index},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){if(this.currentFrame)return this.currentFrame.name},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame)&&(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),!this.onUpdate||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)):(this.complete(),!1):this.updateCurrentFrame(!0)))},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),!this.onUpdate||!a||(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData)},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;b<0&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(b=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;bj&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1&&{index:c,file:this._fileList[c]}},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else i===-1&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(a){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(b){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(a){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,a)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;a1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottleb;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,(!0)),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return a-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);if(b>-1)return this.list.splice(b,1),a},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;e-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||b===-270||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(b===-90||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(b1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);if(b)return c.Color.getColor32(b.a,b.r,b.g,b.b)},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1, +c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;e<=359;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return b<128?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return b<128?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return b<128?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return b<128?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return b<128?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:c+e<0?c+=e:c=0),c>f?c=f:c<-f&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return!(!a.body||!b.body)&&(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0)},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h={},i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right)&&!(a.position.y>=b.bottom))))},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius,radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){if(0!==b.length&&a.exists)return this.getObjectsAtLocation(a.x,a.y,b,c,d,a)},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return!(b||a>=1||void 0!==c&&c!==!0)||(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1)},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2), +this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){b<0?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){b<0?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return!a.data.world&&(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;d-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(), +this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;a=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;eo;e=0<=o?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;if(a.endFill(),b.length>2)return a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,PIXI.Tilemap=function(a,b,c,d,e,f){PIXI.DisplayObjectContainer.call(this),this.texture=a,this.tileWide=d,this.tileHigh=e,this.mapWide=b,this.mapHigh=c,this.width=this.mapWide*this.tileWide,this.height=this.mapHigh*this.tileHigh,this.layer=f,this.glBatch=null,this.lastTile=-1,this.dirty=!0,this.blendMode=PIXI.blendModes.NORMAL,this.batchDataElement=16;var g=b*c*this.batchDataElement;this.buffer=new PIXI.Float32Array(g)},PIXI.Tilemap.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Tilemap.prototype.constructor=PIXI.Tilemap,PIXI.Tilemap.prototype.update=function(){},PIXI.Tilemap.prototype.postUpdate=function(){},PIXI.Tilemap.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.tilemapShader),this._renderWholeTilemap(a),a.spriteBatch.start())},PIXI.Tilemap.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),this.positionBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this.positionBuffer),b.bufferData(b.ARRAY_BUFFER,this.buffer,b.STATIC_DRAW)},PIXI.Tilemap.prototype._renderBatch=function(a){if(this.glBatch){for(var b,c,d,e,f=a.gl,g=.5*this.game.width,h=.5*this.game.height,i=1/this.texture.width,j=1/this.texture.height,k=this.tileWide*i,l=this.tileHigh*j,m=1/g,n=1/h,o=.5*this.tileWide/g,p=.5*this.tileHigh/h,q=this.buffer,r=0,s=!1,t=0,u=this.glBatch.length;t0){var A=a.shaderManager.tilemapShader;f.bufferData(f.ARRAY_BUFFER,q,f.STATIC_DRAW),f.vertexAttribPointer(A.aPosition,4,f.FLOAT,!1,0,0),f.drawArrays(f.TRIANGLE_STRIP,0,Math.floor(r/4))}}},PIXI.Tilemap.prototype._renderWholeTilemap=function(a){var b=a.gl,c=a.shaderManager.tilemapShader;a.blendModeManager.setBlendMode(this.blendMode),b.uniform2f(c.uCentreOffset,1,-1),b.uniform1f(c.uAlpha,this.alpha),b.uniform2f(c.uScale,this.worldScale.x,this.worldScale.y),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ARRAY_BUFFER,this.positionBuffer),this._renderBatch(a)},PIXI.Tilemap.prototype.onTextureUpdate=function(){this.updateFrame=!0},PIXI.Tilemap.prototype.getBounds=function(a){for(var b=a||this.worldTransform,c=b.a,d=b.b,e=b.c,f=b.d,g=b.tx,h=b.ty,i=-(1/0),j=-(1/0),k=1/0,l=1/0,m=[0,0,this.mapWide*this.tileWide,0,this.mapWide*this.tileWide,this.mapHigh*this.tileHigh,0,this.mapHigh*this.tileHigh],n=0,o=m.length;ni?r:i,j=s>j?s:j}if(k===-(1/0)||j===1/0)return PIXI.EmptyRectangle;var t=this._bounds;return t.x=k,t.width=i-k,t.y=l,t.height=j-l,this._currentBounds=t,t},PIXI.TilemapShader=function(a){this._UID=PIXI._UID++,this.gl=a,this.program=null,this.fragmentSrc=[" precision lowp float;"," uniform sampler2D uImageSampler;"," uniform float uAlpha;"," varying vec2 vTexCoord;"," void main(void) {"," gl_FragColor = texture2D(uImageSampler, vTexCoord) * uAlpha;"," }"],this.vertexSrc=[" precision lowp float;"," uniform vec2 uCentreOffset;"," uniform vec2 uScale;"," attribute vec4 aPosition;"," varying vec2 vTexCoord;"," void main(void) {"," gl_Position.zw = vec2(1, 1);"," gl_Position.xy = (aPosition.xy + uCentreOffset) * uScale - uCentreOffset;"," vTexCoord = aPosition.zw;"," }"],this.textureCount=0,this.init()},PIXI.TilemapShader.prototype.constructor=PIXI.TilemapShader,PIXI.TilemapShader.prototype.init=function(){var a=this.gl,b=PIXI.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(b),this.aPosition=a.getAttribLocation(b,"aPosition"),this.uSampler=a.getUniformLocation(b,"uImageSampler"),this.uCentreOffset=a.getUniformLocation(b,"uCentreOffset"),this.uAlpha=a.getUniformLocation(b,"uAlpha"),this.uScale=a.getUniformLocation(b,"uScale"),this.attributes=[this.aPosition],this.uniforms=[this.uCentreOffset,this.uAlpha,this.uScale,this.uSampler],this.program=b},PIXI.TilemapShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.gl=null,this.uniforms=null,this.attributes=null},c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||c<=0)&&(c=32),(void 0===d||d<=0)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return!(c<=this.worldX)&&(!(d<=this.worldY)&&(!(a>=this.worldX+this.width)&&!(b>=this.worldY+this.height)))},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:!!b&&(this.faceTop||this.faceBottom||this.faceLeft||this.faceRight)},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tilesetLayers=null,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;r1)for(l=0;lthis.layers.length)return void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f);for(var g=1,h=this.tilesets.length;gthis.game.width&&(q=this.game.width),r>this.game.height&&(r=this.game.height);var k;return k=this.game.renderType===c.WEBGL?new c.TilemapLayerGL(this.game,this,this.layers.length-1,q,r):new c.TilemapLayer(this.game,this,this.layers.length-1,q,r),k.name=a,h.add(k)},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;kthis.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j;return j=this.game.renderType===c.WEBGL?new c.TilemapLayerGL(this.game,this,this.layers.length-1,m,n):new c.TilemapLayer(this.game,this,this.layers.length-1,m,n),j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;cb)){for(var f=a;f<=b;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;e-1&&this.collideIndexes.splice(e,1)}for(var f=0;f0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&bthis.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;f1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;h=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(a<0?(i=e+a,j=e-1):a>0&&(j=a),b<0?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),i<=j){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(k<=l){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapLayerGL=function(a,b,d,e,f){this.game=a,e|=0,f|=0,this.map=b,this.index=d,this.layer=b.layers[d],this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1;var g=this.layer.tileset||this.map.tilesets[0];this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:g.tileWidth,ch:g.tileHeight,tileset:g,tilesets:[]},this._renderMode=0,this._scrollX=0,this._scrollY=0,this._results=[];var h=new PIXI.BaseTexture(g.image);PIXI.Tilemap.call(this,new PIXI.Texture(h),this.map.width,this.map.height,this._mc.tileset.tileWidth,this._mc.tileset.tileHeight,this.layer),c.Component.Core.init.call(this,a,0,0,null,null),this.fixedToCamera=!0},c.TilemapLayerGL.prototype=Object.create(PIXI.Tilemap.prototype),c.TilemapLayerGL.prototype.constructor=c.TilemapLayerGL,c.Component.Core.install.call(c.TilemapLayerGL.prototype,["FixedToCamera"]),c.TilemapLayerGL.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TileSprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.TileSprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.TileSprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.TileSprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayerGL.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayerGL.prototype.postUpdate=function(){c.Component.FixedToCamera.postUpdate.call(this);var a=this.game.camera;this.scrollX=a.x*this.scrollFactorX/this.scale.x,this.scrollY=a.y*this.scrollFactorY/this.scale.y,this.render()},c.TilemapLayerGL.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayerGL.prototype.resize=function(a,b){this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayerGL.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayerGL.prototype._fixX=function(a){return a<0&&(a=0),1===this.scrollFactorX?a:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayerGL.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayerGL.prototype._fixY=function(a){return a<0&&(a=0),1===this.scrollFactorY?a:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayerGL.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayerGL.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayerGL.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayerGL.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayerGL.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;h=0;p++,r--,n+=l){p>=j&&(p-=j);var w=this.layer.data[p];for(o=u,q=e-c,m=s;q>=0;o++,q--,m+=k){o>=i&&(o-=i);var x=w[o];if(!x||x.index<0)this._mc.tileset.addDegenerate(this.glBatch);else{var y=x.index;x.rotation||x.flipped?this._mc.tileset.drawGl(this.glBatch,-x.centerX+g,-x.centerY+h,y,x.alpha):this._mc.tileset.drawGl(this.glBatch,m+g,n+h,y,x.alpha)}}this._mc.tileset.addDegenerate(this.glBatch)}},c.TilemapLayerGL.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.game._width,d=this.game._height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=this._mc.cw,h=this._mc.ch,i=Math.floor((a-(g-e))/e),j=Math.floor((c-1+a)/e),k=Math.floor((b-(h-f))/f),l=Math.floor((d-1+b)/f);this.glBatch=[],this.renderRegion(a,b,i,k,j,l,0,-(h-f))},c.TilemapLayerGL.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=0|this._scrollX,c=0|this._scrollY,d=this._mc,e=d.scrollX-b,f=d.scrollY-c;if(a||0!==e||0!==f)return d.scrollX=b,d.scrollY=c,this.renderFull(),this.texture.baseTexture.dirty(),this.dirty=!1,!0}},Object.defineProperty(c.TilemapLayerGL.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayerGL.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayerGL.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayerGL.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayerGL.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;k>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;t536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,(-1),q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;f=0&&e+1=0&&f+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,this._flowTotal!==-1&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);gthis.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;f1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(a===-1&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(a){this.getUserMediaError(a)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){a<0?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{ +get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return!!this.video&&this.video.loop},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser.map \ No newline at end of file diff --git a/build/pixi.js b/build/pixi.js deleted file mode 100644 index e3e9e41d4..000000000 --- a/build/pixi.js +++ /dev/null @@ -1,9018 +0,0 @@ -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -* -* @overview -* -* Phaser - http://phaser.io -* -* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:20 -* -* By Richard Davey http://www.photonstorm.com @photonstorm -* -* Phaser is a fun, free and fast 2D game framework for making HTML5 games -* for desktop and mobile web browsers, supporting Canvas and WebGL rendering. -* -* Phaser uses Pixi.js for rendering, created by Mat Groves http://matgroves.com @Doormat23 -* Phaser uses p2.js for full-body physics, created by Stefan Hedman https://github.com/schteppe/p2.js @schteppe -* Phaser contains a port of N+ Physics, converted by Richard Davey, original by http://www.metanetsoftware.com -* -* Many thanks to Adam Saltsman (@ADAMATOMIC) for releasing Flixel, from which both Phaser and my love of framework development originate. -* -* Follow development at http://phaser.io and on our forum -* -* "If you want your children to be intelligent, read them fairy tales." -* "If you want them to be more intelligent, read them more fairy tales." -* -- Albert Einstein -*/ - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -(function(){ - - var root = this; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * The [pixi.js](http://www.pixijs.com/) module/namespace. - * - * @module PIXI - */ - -/** - * Namespace-class for [pixi.js](http://www.pixijs.com/). - * - * Contains assorted static properties and enumerations. - * - * @class PIXI - * @static - */ -var PIXI = PIXI || {}; - -/** - * A reference to the Phaser Game instance that owns this Pixi renderer. - * @property {Phaser.Game} game - * @static - */ -PIXI.game = null; - -/** - * @property {Number} WEBGL_RENDERER - * @protected - * @static - */ -PIXI.WEBGL_RENDERER = 0; - -/** - * @property {Number} CANVAS_RENDERER - * @protected - * @static - */ -PIXI.CANVAS_RENDERER = 1; - -/** - * Version of pixi that is loaded. - * @property {String} VERSION - * @static - */ -PIXI.VERSION = "v2.2.9"; - -// used to create uids for various pixi objects. -PIXI._UID = 0; - -if (typeof(Float32Array) != 'undefined') -{ - PIXI.Float32Array = Float32Array; - PIXI.Uint16Array = Uint16Array; - - // Uint32Array and ArrayBuffer only used by WebGL renderer - // We can suppose that if WebGL is supported then typed arrays are supported too - // as they predate WebGL support for all browsers: - // see typed arrays support: http://caniuse.com/#search=TypedArrays - // see WebGL support: http://caniuse.com/#search=WebGL - PIXI.Uint32Array = Uint32Array; - PIXI.ArrayBuffer = ArrayBuffer; -} -else -{ - PIXI.Float32Array = Array; - PIXI.Uint16Array = Array; -} - -/** - * @property {Number} PI_2 - * @static - */ -PIXI.PI_2 = Math.PI * 2; - -/** - * @property {Number} RAD_TO_DEG - * @static - */ -PIXI.RAD_TO_DEG = 180 / Math.PI; - -/** - * @property {Number} DEG_TO_RAD - * @static - */ -PIXI.DEG_TO_RAD = Math.PI / 180; - -/** - * @property {String} RETINA_PREFIX - * @protected - * @static - */ -PIXI.RETINA_PREFIX = "@2x"; - -/** - * The default render options if none are supplied to - * {{#crossLink "WebGLRenderer"}}{{/crossLink}} or {{#crossLink "CanvasRenderer"}}{{/crossLink}}. - * - * @property {Object} defaultRenderOptions - * @property {Object} defaultRenderOptions.view=null - * @property {Boolean} defaultRenderOptions.transparent=false - * @property {Boolean} defaultRenderOptions.antialias=false - * @property {Boolean} defaultRenderOptions.preserveDrawingBuffer=false - * @property {Number} defaultRenderOptions.resolution=1 - * @property {Boolean} defaultRenderOptions.clearBeforeRender=true - * @property {Boolean} defaultRenderOptions.autoResize=false - * @static -PIXI.defaultRenderOptions = { - view: null, - transparent: false, - antialias: false, - preserveDrawingBuffer: false, - resolution: 1, - clearBeforeRender: true, - autoResize: false -}; - */ - -/** -* @author Mat Groves http://matgroves.com @Doormat23 -* @author Richard Davey -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The base class for all objects that are rendered. Contains properties for position, scaling, -* rotation, masks and cache handling. -* -* This is an abstract class and should not be used on its own, rather it should be extended. -* -* It is used internally by the likes of PIXI.Sprite. -* -* @class PIXI.DisplayObject -* @constructor -*/ -PIXI.DisplayObject = function() { - - /** - * The coordinates, in pixels, of this DisplayObject, relative to its parent container. - * - * The value of this property does not reflect any positioning happening further up the display list. - * To obtain that value please see the `worldPosition` property. - * - * @property {PIXI.Point} position - * @default - */ - this.position = new PIXI.Point(0, 0); - - /** - * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject - * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. - * - * The value of this property does not reflect any scaling happening further up the display list. - * To obtain that value please see the `worldScale` property. - * - * @property {PIXI.Point} scale - * @default - */ - this.scale = new PIXI.Point(1, 1); - - /** - * The pivot point of this DisplayObject that it rotates around. The values are expressed - * in pixel values. - * @property {PIXI.Point} pivot - * @default - */ - this.pivot = new PIXI.Point(0, 0); - - /** - * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on - * a right-handed orientation. - * - * The value of this property does not reflect any rotation happening further up the display list. - * To obtain that value please see the `worldRotation` property. - * - * @property {number} rotation - * @default - */ - this.rotation = 0; - - /** - * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. - * Please note that an object with an alpha value of 0 is skipped during the render pass. - * - * The value of this property does not reflect any alpha values set further up the display list. - * To obtain that value please see the `worldAlpha` property. - * - * @property {number} alpha - * @default - */ - this.alpha = 1; - - /** - * The visibility of this DisplayObject. A value of `false` makes the object invisible. - * A value of `true` makes it visible. Please note that an object with a visible value of - * `false` is skipped during the render pass. Equally a DisplayObject with visible false will - * not render any of its children. - * - * The value of this property does not reflect any visible values set further up the display list. - * To obtain that value please see the `worldVisible` property. - * - * @property {boolean} visible - * @default - */ - this.visible = true; - - /** - * This is the defined area that will pick up mouse / touch events. It is null by default. - * Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children) - * - * @property hitArea - * @type Rectangle|Circle|Ellipse|Polygon - */ - this.hitArea = null; - - /** - * Should this DisplayObject be rendered by the renderer? An object with a renderable value of - * `false` is skipped during the render pass. - * - * @property {boolean} renderable - * @default - */ - this.renderable = false; - - /** - * The parent DisplayObjectContainer that this DisplayObject is a child of. - * All DisplayObjects must belong to a parent in order to be rendered. - * The root parent is the Stage object. This property is set automatically when the - * DisplayObject is added to, or removed from, a DisplayObjectContainer. - * - * @property {PIXI.DisplayObjectContainer} parent - * @default - * @readOnly - */ - this.parent = null; - - /** - * The stage that this DisplayObject is connected to. - * - * @property {PIXI.Stage} stage - * @default - * @readOnly - */ - this.stage = null; - - /** - * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. - * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects - * in the display list. - * - * To obtain, and set, the local alpha value, see the `alpha` property. - * - * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until - * that happens this property will contain values based on the previous frame. Be mindful of this if - * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. - * - * @property {number} worldAlpha - * @readOnly - */ - this.worldAlpha = 1; - - /** - * The current transform of this DisplayObject. - * - * This property contains the calculated total, based on the transforms of all parents of this - * DisplayObject in the display list. - * - * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until - * that happens this property will contain values based on the previous frame. Be mindful of this if - * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. - * - * @property {PIXI.Matrix} worldTransform - * @readOnly - */ - this.worldTransform = new PIXI.Matrix(); - - /** - * The coordinates, in pixels, of this DisplayObject within the world. - * - * This property contains the calculated total, based on the positions of all parents of this - * DisplayObject in the display list. - * - * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until - * that happens this property will contain values based on the previous frame. Be mindful of this if - * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. - * - * @property {PIXI.Point} worldPosition - * @readOnly - */ - this.worldPosition = new PIXI.Point(0, 0); - - /** - * The global scale of this DisplayObject. - * - * This property contains the calculated total, based on the scales of all parents of this - * DisplayObject in the display list. - * - * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until - * that happens this property will contain values based on the previous frame. Be mindful of this if - * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. - * - * @property {PIXI.Point} worldScale - * @readOnly - */ - this.worldScale = new PIXI.Point(1, 1); - - /** - * The rotation, in radians, of this DisplayObject. - * - * This property contains the calculated total, based on the rotations of all parents of this - * DisplayObject in the display list. - * - * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until - * that happens this property will contain values based on the previous frame. Be mindful of this if - * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. - * - * @property {number} worldRotation - * @readOnly - */ - this.worldRotation = 0; - - /** - * The rectangular area used by filters when rendering a shader for this DisplayObject. - * - * @property {PIXI.Rectangle} filterArea - * @type Rectangle - * @default - */ - this.filterArea = null; - - /** - * @property {number} _sr - Cached rotation value. - * @private - */ - this._sr = 0; - - /** - * @property {number} _cr - Cached rotation value. - * @private - */ - this._cr = 1; - - /** - * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. - * @private - */ - this._bounds = new PIXI.Rectangle(0, 0, 1, 1); - - /** - * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. - * @private - */ - this._currentBounds = null; - - /** - * @property {PIXI.Rectangle} _mask - The cached mask of this object. - * @private - */ - this._mask = null; - - /** - * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. - * @private - */ - this._cacheAsBitmap = false; - - /** - * @property {boolean} _cacheIsDirty - Internal dirty cache flag. - * @private - */ - this._cacheIsDirty = false; - -}; - -PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; - -PIXI.DisplayObject.prototype = { - - /** - * Destroy this DisplayObject. - * - * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, - * bounds and mask. - * - * Also iteratively calls `destroy` on any children. - * - * @method PIXI.DisplayObject#destroy - */ - destroy: function () { - - if (this.children) - { - var i = this.children.length; - - while (i--) - { - this.children[i].destroy(); - } - - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this.renderable = false; - - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - this._destroyCachedSprite(); - - }, - - /* - * Updates the transform matrix this DisplayObject uses for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to - * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject. - * - * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` - * and `worldRotation` properties. - * - * If a `transformCallback` has been specified, it is called at the end of this method, and is passed - * the new, updated, worldTransform property, along with the parent transform used. - * - * @method PIXI.DisplayObject#updateTransform - * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. - * @return {PIXI.DisplayObject} - A reference to this DisplayObject. - */ - updateTransform: function (parent) { - - if (!parent && !this.parent && !this.game) - { - return this; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); - } - - return this; - - }, - - /** - * Sets the root Stage object that this DisplayObject is connected to. - * - * @method PIXI.DisplayObject#setStageReference - * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference - * @return {PIXI.DisplayObject} - A reference to this DisplayObject. - */ - setStageReference: function (stage) - { - this.stage = stage; - - return this; - - }, - - /** - * To be overridden by classes that require it. - * - * @method PIXI.DisplayObject#preUpdate - */ - preUpdate: function () { - - }, - - /** - * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. - * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. - * - * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, - * and references to them, so they don't linger in memory. - * - * @method PIXI.DisplayObject#generateTexture - * @param {number} [resolution=1] - The resolution of the texture being generated. - * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. - * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. - * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. - */ - generateTexture: function (resolution, scaleMode, renderer) { - - var bounds = this.getLocalBounds(); - - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); - - return renderTexture; - - }, - - /** - * If this DisplayObject has a cached Sprite, this method generates and updates it. - * - * @method PIXI.DisplayObject#updateCache - * @return {PIXI.DisplayObject} - A reference to this DisplayObject. - */ - updateCache: function () { - - this._generateCachedSprite(); - - return this; - - }, - - /** - * Calculates the global position of this DisplayObject, based on the position given. - * - * @method PIXI.DisplayObject#toGlobal - * @param {PIXI.Point} position - The global position to calculate from. - * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. - */ - toGlobal: function (position) { - - this.updateTransform(); - - return this.worldTransform.apply(position); - - }, - - /** - * Calculates the local position of this DisplayObject, relative to another point. - * - * @method PIXI.DisplayObject#toLocal - * @param {PIXI.Point} position - The world origin to calculate from. - * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. - * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. - */ - toLocal: function (position, from) { - - if (from) - { - position = from.toGlobal(position); - } - - this.updateTransform(); - - return this.worldTransform.applyInverse(position); - - }, - - /** - * Internal method. - * - * @method PIXI.DisplayObject#_renderCachedSprite - * @private - * @param {Object} renderSession - The render session - */ - _renderCachedSprite: function (renderSession) { - - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } - - }, - - /** - * Internal method. - * - * @method PIXI.DisplayObject#_generateCachedSprite - * @private - */ - _generateCachedSprite: function () { - - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - - this._filters = null; - this._cachedSprite.filters = tempFilters; - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; - - }, - - /** - * Destroys a cached Sprite. - * - * @method PIXI.DisplayObject#_destroyCachedSprite - * @private - */ - _destroyCachedSprite: function () { - - if (!this._cachedSprite) - { - return; - } - - this._cachedSprite.texture.destroy(true); - - this._cachedSprite = null; - - } - -}; - -// Alias for updateTransform. As used in DisplayObject container, etc. -PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; - -Object.defineProperties(PIXI.DisplayObject.prototype, { - - /** - * The horizontal position of the DisplayObject, in pixels, relative to its parent. - * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. - * @name PIXI.DisplayObject#x - * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. - */ - 'x': { - - get: function () { - - return this.position.x; - - }, - - set: function (value) { - - this.position.x = value; - - } - - }, - - /** - * The vertical position of the DisplayObject, in pixels, relative to its parent. - * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. - * @name PIXI.DisplayObject#y - * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. - */ - 'y': { - - get: function () { - - return this.position.y; - - }, - - set: function (value) { - - this.position.y = value; - - } - - }, - - /** - * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. - * @name PIXI.DisplayObject#worldVisible - * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. - */ - 'worldVisible': { - - get: function () { - - if (!this.visible) - { - return false; - } - else - { - var item = this.parent; - - do - { - if (!item.visible) - { - return false; - } - - item = item.parent; - } - while (item); - - return true; - } - - } - - }, - - /** - * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. - * When applied it limits the visible area of this DisplayObject to the shape of the mask. - * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. - * To remove a mask, set this property to `null`. - * - * @name PIXI.DisplayObject#mask - * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. - */ - 'mask': { - - get: function () { - - return this._mask; - - }, - - set: function (value) { - - if (this._mask) - { - this._mask.isMask = false; - } - - this._mask = value; - - if (value) - { - this._mask.isMask = true; - } - - } - - }, - - /** - * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas - * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter - * using `DisplayObject.filterArea`. - * - * To remove filters, set this property to `null`. - * - * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a - * filter will reset this DisplayObjects blend mode to NORMAL. - * - * @name PIXI.DisplayObject#filters - * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. - */ - 'filters': { - - get: function () { - - return this._filters; - - }, - - set: function (value) { - - if (Array.isArray(value)) - { - // Put all the passes in one place. - var passes = []; - - for (var i = 0; i < value.length; i++) - { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } - } - - // Needed any more? - this._filterBlock = { target: this, filterPasses: passes }; - } - - this._filters = value; - - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - - } - - }, - - /** - * Sets if this DisplayObject should be cached as a bitmap. - * - * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it - * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a - * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. - * - * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not - * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. - * - * To remove a cached bitmap, set this property to `null`. - * - * @name PIXI.DisplayObject#cacheAsBitmap - * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. - */ - 'cacheAsBitmap': { - - get: function () { - - return this._cacheAsBitmap; - - }, - - set: function (value) { - - if (this._cacheAsBitmap === value) - { - return; - } - - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } - - this._cacheAsBitmap = value; - - } - - } - -}); - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A DisplayObjectContainer represents a collection of display objects. - * It is the base class of all display objects that act as a container for other objects. - * - * @class DisplayObjectContainer - * @extends DisplayObject - * @constructor - */ -PIXI.DisplayObjectContainer = function() -{ - PIXI.DisplayObject.call(this); - - /** - * [read-only] The array of children of this container. - * - * @property children - * @type Array(DisplayObject) - * @readOnly - */ - this.children = []; - - /** - * If `ignoreChildInput` is `false` it will allow this objects _children_ to be considered as valid for Input events. - * - * If this property is `true` then the children will _not_ be considered as valid for Input events. - * - * Note that this property isn't recursive: only immediate children are influenced, it doesn't scan further down. - * @property {boolean} ignoreChildInput - * @default - */ - this.ignoreChildInput = false; - -}; - -// constructor -PIXI.DisplayObjectContainer.prototype = Object.create( PIXI.DisplayObject.prototype ); -PIXI.DisplayObjectContainer.prototype.constructor = PIXI.DisplayObjectContainer; - -/** - * The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set - * - * @property width - * @type Number - */ -Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'width', { - - get: function() { - return this.scale.x * this.getLocalBounds().width; - }, - - set: function(value) { - - var width = this.getLocalBounds().width; - - if (width !== 0) - { - this.scale.x = value / width; - } - else - { - this.scale.x = 1; - } - - this._width = value; - } -}); - -/** - * The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set - * - * @property height - * @type Number - */ -Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'height', { - - get: function() { - return this.scale.y * this.getLocalBounds().height; - }, - - set: function(value) { - - var height = this.getLocalBounds().height; - - if (height !== 0) - { - this.scale.y = value / height; - } - else - { - this.scale.y = 1; - } - - this._height = value; - } - -}); - -/** - * Adds a child to the container. - * - * @method addChild - * @param child {DisplayObject} The DisplayObject to add to the container - * @return {DisplayObject} The child that was added. - */ -PIXI.DisplayObjectContainer.prototype.addChild = function(child) -{ - return this.addChildAt(child, this.children.length); -}; - -/** - * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown - * - * @method addChildAt - * @param child {DisplayObject} The child to add - * @param index {Number} The index to place the child in - * @return {DisplayObject} The child that was added. - */ -PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index) -{ - if(index >= 0 && index <= this.children.length) - { - if(child.parent) - { - child.parent.removeChild(child); - } - - child.parent = this; - - this.children.splice(index, 0, child); - - if(this.stage)child.setStageReference(this.stage); - - return child; - } - else - { - throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length); - } -}; - -/** - * Swaps the position of 2 Display Objects within this container. - * - * @method swapChildren - * @param child {DisplayObject} - * @param child2 {DisplayObject} - */ -PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2) -{ - if(child === child2) { - return; - } - - var index1 = this.getChildIndex(child); - var index2 = this.getChildIndex(child2); - - if(index1 < 0 || index2 < 0) { - throw new Error('swapChildren: Both the supplied DisplayObjects must be a child of the caller.'); - } - - this.children[index1] = child2; - this.children[index2] = child; - -}; - -/** - * Returns the index position of a child DisplayObject instance - * - * @method getChildIndex - * @param child {DisplayObject} The DisplayObject instance to identify - * @return {Number} The index position of the child display object to identify - */ -PIXI.DisplayObjectContainer.prototype.getChildIndex = function(child) -{ - var index = this.children.indexOf(child); - if (index === -1) - { - throw new Error('The supplied DisplayObject must be a child of the caller'); - } - return index; -}; - -/** - * Changes the position of an existing child in the display object container - * - * @method setChildIndex - * @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number - * @param index {Number} The resulting index number for the child display object - */ -PIXI.DisplayObjectContainer.prototype.setChildIndex = function(child, index) -{ - if (index < 0 || index >= this.children.length) - { - throw new Error('The supplied index is out of bounds'); - } - var currentIndex = this.getChildIndex(child); - this.children.splice(currentIndex, 1); //remove from old position - this.children.splice(index, 0, child); //add at new position -}; - -/** - * Returns the child at the specified index - * - * @method getChildAt - * @param index {Number} The index to get the child from - * @return {DisplayObject} The child at the given index, if any. - */ -PIXI.DisplayObjectContainer.prototype.getChildAt = function(index) -{ - if (index < 0 || index >= this.children.length) - { - throw new Error('getChildAt: Supplied index '+ index +' does not exist in the child list, or the supplied DisplayObject must be a child of the caller'); - } - return this.children[index]; - -}; - -/** - * Removes a child from the container. - * - * @method removeChild - * @param child {DisplayObject} The DisplayObject to remove - * @return {DisplayObject} The child that was removed. - */ -PIXI.DisplayObjectContainer.prototype.removeChild = function(child) -{ - var index = this.children.indexOf( child ); - if(index === -1)return; - - return this.removeChildAt( index ); -}; - -/** - * Removes a child from the specified index position. - * - * @method removeChildAt - * @param index {Number} The index to get the child from - * @return {DisplayObject} The child that was removed. - */ -PIXI.DisplayObjectContainer.prototype.removeChildAt = function(index) -{ - var child = this.getChildAt( index ); - if(this.stage) - child.removeStageReference(); - - child.parent = undefined; - this.children.splice( index, 1 ); - return child; -}; - -/** -* Removes all children from this container that are within the begin and end indexes. -* -* @method removeChildren -* @param beginIndex {Number} The beginning position. Default value is 0. -* @param endIndex {Number} The ending position. Default value is size of the container. -*/ -PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endIndex) -{ - var begin = beginIndex || 0; - var end = typeof endIndex === 'number' ? endIndex : this.children.length; - var range = end - begin; - - if (range > 0 && range <= end) - { - var removed = this.children.splice(begin, range); - for (var i = 0; i < removed.length; i++) { - var child = removed[i]; - if(this.stage) - child.removeStageReference(); - child.parent = undefined; - } - return removed; - } - else if (range === 0 && this.children.length === 0) - { - return []; - } - else - { - throw new Error( 'removeChildren: Range Error, numeric values are outside the acceptable range' ); - } -}; - -/* - * Updates the transform on all children of this container for rendering - * - * @method updateTransform - * @private - */ -PIXI.DisplayObjectContainer.prototype.updateTransform = function() -{ - if (!this.visible) - { - return; - } - - this.displayObjectUpdateTransform(); - - if (this._cacheAsBitmap) - { - return; - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } -}; - -// performance increase to avoid using call.. (10x faster) -PIXI.DisplayObjectContainer.prototype.displayObjectContainerUpdateTransform = PIXI.DisplayObjectContainer.prototype.updateTransform; - -/** - * Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration. - * - * @method getBounds - * @return {Rectangle} The rectangular bounding area - */ -PIXI.DisplayObjectContainer.prototype.getBounds = function() -{ - if (this.children.length === 0) - { - return PIXI.EmptyRectangle; - } - - this.updateTransform(); - - var minX = Infinity; - var minY = Infinity; - - var maxX = -Infinity; - var maxY = -Infinity; - - var childBounds; - var childMaxX; - var childMaxY; - - var childVisible = false; - - for (var i = 0; i < this.children.length; i++) - { - var child = this.children[i]; - - if (!child.visible) - { - continue; - } - - childVisible = true; - - childBounds = this.children[i].getBounds(); - - minX = minX < childBounds.x ? minX : childBounds.x; - minY = minY < childBounds.y ? minY : childBounds.y; - - childMaxX = childBounds.width + childBounds.x; - childMaxY = childBounds.height + childBounds.y; - - maxX = maxX > childMaxX ? maxX : childMaxX; - maxY = maxY > childMaxY ? maxY : childMaxY; - } - - if (!childVisible) - { - return PIXI.EmptyRectangle; - } - - var bounds = this._bounds; - - bounds.x = minX; - bounds.y = minY; - bounds.width = maxX - minX; - bounds.height = maxY - minY; - - return bounds; -}; - -/** - * Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration. - * - * @method getLocalBounds - * @return {Rectangle} The rectangular bounding area - */ -PIXI.DisplayObjectContainer.prototype.getLocalBounds = function() -{ - var matrixCache = this.worldTransform; - - this.worldTransform = PIXI.identityMatrix; - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } - - var bounds = this.getBounds(); - - this.worldTransform = matrixCache; - - for (i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } - - return bounds; -}; - -/** - * Sets the containers Stage reference. This is the Stage that this object, and all of its children, is connected to. - * - * @method setStageReference - * @param stage {Stage} the stage that the container will have as its current stage reference - */ -PIXI.DisplayObjectContainer.prototype.setStageReference = function(stage) -{ - this.stage = stage; - - for (var i=0; i < this.children.length; i++) - { - this.children[i].setStageReference(stage) - } -}; - -/** - * Removes the current stage reference from the container and all of its children. - * - * @method removeStageReference - */ -PIXI.DisplayObjectContainer.prototype.removeStageReference = function() -{ - for (var i = 0; i < this.children.length; i++) - { - this.children[i].removeStageReference(); - } - - this.stage = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession) -{ - if (!this.visible || this.alpha <= 0) return; - - if (this._cacheAsBitmap) - { - this._renderCachedSprite(renderSession); - return; - } - - var i; - - if (this._mask || this._filters) - { - // push filter first as we need to ensure the stencil buffer is correct for any masking - if (this._filters) - { - renderSession.spriteBatch.flush(); - renderSession.filterManager.pushFilter(this._filterBlock); - } - - if (this._mask) - { - renderSession.spriteBatch.stop(); - renderSession.maskManager.pushMask(this.mask, renderSession); - renderSession.spriteBatch.start(); - } - - // simple render children! - for (i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - - renderSession.spriteBatch.stop(); - - if (this._mask) renderSession.maskManager.popMask(this._mask, renderSession); - if (this._filters) renderSession.filterManager.popFilter(); - - renderSession.spriteBatch.start(); - } - else - { - // simple render children! - for (i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - } -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) -{ - if (this.visible === false || this.alpha === 0) return; - - if (this._cacheAsBitmap) - { - this._renderCachedSprite(renderSession); - return; - } - - if (this._mask) - { - renderSession.maskManager.pushMask(this._mask, renderSession); - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderCanvas(renderSession); - } - - if (this._mask) - { - renderSession.maskManager.popMask(renderSession); - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * The Sprite object is the base for all textured objects that are rendered to the screen - * - * @class Sprite - * @extends DisplayObjectContainer - * @constructor - * @param texture {Texture} The texture for this sprite - * - * A sprite can be created directly from an image like this : - * var sprite = new PIXI.Sprite.fromImage('assets/image.png'); - * yourStage.addChild(sprite); - * then obviously don't forget to add it to the stage you have already created - */ -PIXI.Sprite = function(texture) -{ - PIXI.DisplayObjectContainer.call(this); - - /** - * The anchor sets the origin point of the texture. - * The default is 0,0 this means the texture's origin is the top left - * Setting than anchor to 0.5,0.5 means the textures origin is centered - * Setting the anchor to 1,1 would mean the textures origin points will be the bottom right corner - * - * @property anchor - * @type Point - */ - this.anchor = new PIXI.Point(); - - /** - * The texture that the sprite is using - * - * @property texture - * @type Texture - */ - this.texture = texture || PIXI.Texture.emptyTexture; - - /** - * The width of the sprite (this is initially set by the texture) - * - * @property _width - * @type Number - * @private - */ - this._width = 0; - - /** - * The height of the sprite (this is initially set by the texture) - * - * @property _height - * @type Number - * @private - */ - this._height = 0; - - /** - * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. - * - * @property tint - * @type Number - * @default 0xFFFFFF - */ - this.tint = 0xFFFFFF; - - /** - * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. - * - * @property cachedTint - * @private - * @type Number - * @default -1 - */ - this.cachedTint = -1; - - /** - * A canvas that contains the tinted version of the Sprite (in Canvas mode, WebGL doesn't populate this) - * - * @property tintedTexture - * @type Canvas - * @default null - */ - this.tintedTexture = null; - - /** - * The blend mode to be applied to the sprite. Set to PIXI.blendModes.NORMAL to remove any blend mode. - * - * Warning: You cannot have a blend mode and a filter active on the same Sprite. Doing so will render the sprite invisible. - * - * @property blendMode - * @type Number - * @default PIXI.blendModes.NORMAL; - */ - this.blendMode = PIXI.blendModes.NORMAL; - - /** - * The shader that will be used to render the texture to the stage. Set to null to remove a current shader. - * - * @property shader - * @type AbstractFilter - * @default null - */ - this.shader = null; - - /** - * Controls if this Sprite is processed by the core Phaser game loops and Group loops. - * - * @property exists - * @type Boolean - * @default true - */ - this.exists = true; - - if (this.texture.baseTexture.hasLoaded) - { - this.onTextureUpdate(); - } - - this.renderable = true; - -}; - -// constructor -PIXI.Sprite.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -PIXI.Sprite.prototype.constructor = PIXI.Sprite; - -/** - * The width of the sprite, setting this will actually modify the scale to achieve the value set - * - * @property width - * @type Number - */ -Object.defineProperty(PIXI.Sprite.prototype, 'width', { - - get: function() { - return this.scale.x * this.texture.frame.width; - }, - - set: function(value) { - this.scale.x = value / this.texture.frame.width; - this._width = value; - } - -}); - -/** - * The height of the sprite, setting this will actually modify the scale to achieve the value set - * - * @property height - * @type Number - */ -Object.defineProperty(PIXI.Sprite.prototype, 'height', { - - get: function() { - return this.scale.y * this.texture.frame.height; - }, - - set: function(value) { - this.scale.y = value / this.texture.frame.height; - this._height = value; - } - -}); - -/** - * Sets the texture of the sprite. Be warned that this doesn't remove or destroy the previous - * texture this Sprite was using. - * - * @method setTexture - * @param texture {Texture} The PIXI texture that is displayed by the sprite - * @param [destroy=false] {boolean} Call Texture.destroy on the current texture before replacing it with the new one? - */ -PIXI.Sprite.prototype.setTexture = function(texture, destroyBase) -{ - if (destroyBase !== undefined) - { - this.texture.baseTexture.destroy(); - } - - // Over-ridden by loadTexture as needed - this.texture.baseTexture.skipRender = false; - this.texture = texture; - this.texture.valid = true; - this.cachedTint = -1; -}; - -/** - * When the texture is updated, this event will fire to update the scale and frame - * - * @method onTextureUpdate - * @param event - * @private - */ -PIXI.Sprite.prototype.onTextureUpdate = function() -{ - // so if _width is 0 then width was not set.. - if (this._width) this.scale.x = this._width / this.texture.frame.width; - if (this._height) this.scale.y = this._height / this.texture.frame.height; -}; - -/** -* Returns the bounds of the Sprite as a rectangle. -* The bounds calculation takes the worldTransform into account. -* -* It is important to note that the transform is not updated when you call this method. -* So if this Sprite is the child of a Display Object which has had its transform -* updated since the last render pass, those changes will not yet have been applied -* to this Sprites worldTransform. If you need to ensure that all parent transforms -* are factored into this getBounds operation then you should call `updateTransform` -* on the root most object in this Sprites display list first. -* -* @method getBounds -* @param matrix {Matrix} the transformation matrix of the sprite -* @return {Rectangle} the framing rectangle -*/ -PIXI.Sprite.prototype.getBounds = function(matrix) -{ - var width = this.texture.frame.width; - var height = this.texture.frame.height; - - var w0 = width * (1-this.anchor.x); - var w1 = width * -this.anchor.x; - - var h0 = height * (1-this.anchor.y); - var h1 = height * -this.anchor.y; - - var worldTransform = matrix || this.worldTransform; - - var a = worldTransform.a; - var b = worldTransform.b; - var c = worldTransform.c; - var d = worldTransform.d; - var tx = worldTransform.tx; - var ty = worldTransform.ty; - - var maxX = -Infinity; - var maxY = -Infinity; - - var minX = Infinity; - var minY = Infinity; - - if (b === 0 && c === 0) - { - // scale may be negative! - if (a < 0) - { - a *= -1; - var temp = w0; - w0 = -w1; - w1 = -temp; - } - - if (d < 0) - { - d *= -1; - var temp = h0; - h0 = -h1; - h1 = -temp; - } - - // this means there is no rotation going on right? RIGHT? - // if thats the case then we can avoid checking the bound values! yay - minX = a * w1 + tx; - maxX = a * w0 + tx; - minY = d * h1 + ty; - maxY = d * h0 + ty; - } - else - { - var x1 = a * w1 + c * h1 + tx; - var y1 = d * h1 + b * w1 + ty; - - var x2 = a * w0 + c * h1 + tx; - var y2 = d * h1 + b * w0 + ty; - - var x3 = a * w0 + c * h0 + tx; - var y3 = d * h0 + b * w0 + ty; - - var x4 = a * w1 + c * h0 + tx; - var y4 = d * h0 + b * w1 + ty; - - minX = x1 < minX ? x1 : minX; - minX = x2 < minX ? x2 : minX; - minX = x3 < minX ? x3 : minX; - minX = x4 < minX ? x4 : minX; - - minY = y1 < minY ? y1 : minY; - minY = y2 < minY ? y2 : minY; - minY = y3 < minY ? y3 : minY; - minY = y4 < minY ? y4 : minY; - - maxX = x1 > maxX ? x1 : maxX; - maxX = x2 > maxX ? x2 : maxX; - maxX = x3 > maxX ? x3 : maxX; - maxX = x4 > maxX ? x4 : maxX; - - maxY = y1 > maxY ? y1 : maxY; - maxY = y2 > maxY ? y2 : maxY; - maxY = y3 > maxY ? y3 : maxY; - maxY = y4 > maxY ? y4 : maxY; - } - - var bounds = this._bounds; - - bounds.x = minX; - bounds.width = maxX - minX; - - bounds.y = minY; - bounds.height = maxY - minY; - - // store a reference so that if this function gets called again in the render cycle we do not have to recalculate - this._currentBounds = bounds; - - return bounds; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @param {Matrix} [matrix] - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. -* @private -*/ -PIXI.Sprite.prototype._renderWebGL = function(renderSession, matrix) -{ - // if the sprite is not visible or the alpha is 0 then no need to render this element - if (!this.visible || this.alpha <= 0 || !this.renderable) return; - - // They provided an alternative rendering matrix, so use it - var wt = this.worldTransform; - - if (matrix) - { - wt = matrix; - } - - // A quick check to see if this element has a mask or a filter. - if (this._mask || this._filters) - { - var spriteBatch = renderSession.spriteBatch; - - // push filter first as we need to ensure the stencil buffer is correct for any masking - if (this._filters) - { - spriteBatch.flush(); - renderSession.filterManager.pushFilter(this._filterBlock); - } - - if (this._mask) - { - spriteBatch.stop(); - renderSession.maskManager.pushMask(this.mask, renderSession); - spriteBatch.start(); - } - - // add this sprite to the batch - spriteBatch.render(this); - - // now loop through the children and make sure they get rendered - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - - // time to stop the sprite batch as either a mask element or a filter draw will happen next - spriteBatch.stop(); - - if (this._mask) renderSession.maskManager.popMask(this._mask, renderSession); - if (this._filters) renderSession.filterManager.popFilter(); - - spriteBatch.start(); - } - else - { - renderSession.spriteBatch.render(this); - - // Render children! - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession, wt); - } - - } -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @param {Matrix} [matrix] - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. -* @private -*/ -PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) -{ - // If the sprite is not visible or the alpha is 0 then no need to render this element - if (!this.visible || this.alpha === 0 || !this.renderable || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) - { - return; - } - - var wt = this.worldTransform; - - // If they provided an alternative rendering matrix then use it - if (matrix) - { - wt = matrix; - } - - if (this.blendMode !== renderSession.currentBlendMode) - { - renderSession.currentBlendMode = this.blendMode; - renderSession.context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode]; - } - - if (this._mask) - { - renderSession.maskManager.pushMask(this._mask, renderSession); - } - - // Ignore null sources - if (this.texture.valid) - { - var resolution = this.texture.baseTexture.resolution / renderSession.resolution; - - renderSession.context.globalAlpha = this.worldAlpha; - - // If smoothingEnabled is supported and we need to change the smoothing property for this texture - if (renderSession.smoothProperty && renderSession.scaleMode !== this.texture.baseTexture.scaleMode) - { - renderSession.scaleMode = this.texture.baseTexture.scaleMode; - renderSession.context[renderSession.smoothProperty] = (renderSession.scaleMode === PIXI.scaleModes.LINEAR); - } - - // If the texture is trimmed we offset by the trim x/y, otherwise we use the frame dimensions - var dx = (this.texture.trim) ? this.texture.trim.x - this.anchor.x * this.texture.trim.width : this.anchor.x * -this.texture.frame.width; - var dy = (this.texture.trim) ? this.texture.trim.y - this.anchor.y * this.texture.trim.height : this.anchor.y * -this.texture.frame.height; - - var tx = (wt.tx * renderSession.resolution) + renderSession.shakeX; - var ty = (wt.ty * renderSession.resolution) + renderSession.shakeY; - - // Allow for pixel rounding - if (renderSession.roundPixels) - { - renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx | 0, ty | 0); - dx |= 0; - dy |= 0; - } - else - { - renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx, ty); - } - - var cw = this.texture.crop.width; - var ch = this.texture.crop.height; - - dx /= resolution; - dy /= resolution; - - if (this.tint !== 0xFFFFFF) - { - if (this.texture.requiresReTint || this.cachedTint !== this.tint) - { - this.tintedTexture = PIXI.CanvasTinter.getTintedTexture(this, this.tint); - - this.cachedTint = this.tint; - this.texture.requiresReTint = false; - } - - renderSession.context.drawImage(this.tintedTexture, 0, 0, cw, ch, dx, dy, cw / resolution, ch / resolution); - } - else - { - var cx = this.texture.crop.x; - var cy = this.texture.crop.y; - renderSession.context.drawImage(this.texture.baseTexture.source, cx, cy, cw, ch, dx, dy, cw / resolution, ch / resolution); - } - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderCanvas(renderSession); - } - - if (this._mask) - { - renderSession.maskManager.popMask(renderSession); - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ - */ - -/** - * The SpriteBatch class is a really fast version of the DisplayObjectContainer - * built solely for speed, so use when you need a lot of sprites or particles. - * And it's extremely easy to use : - - var container = new PIXI.SpriteBatch(); - - stage.addChild(container); - - for(var i = 0; i < 100; i++) - { - var sprite = new PIXI.Sprite.fromImage("myImage.png"); - container.addChild(sprite); - } - * And here you have a hundred sprites that will be renderer at the speed of light - * - * @class SpriteBatch - * @constructor - * @param texture {Texture} - */ -PIXI.SpriteBatch = function(texture) -{ - PIXI.DisplayObjectContainer.call( this); - - this.textureThing = texture; - - this.ready = false; -}; - -PIXI.SpriteBatch.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -PIXI.SpriteBatch.prototype.constructor = PIXI.SpriteBatch; - -/* - * Initialises the spriteBatch - * - * @method initWebGL - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.SpriteBatch.prototype.initWebGL = function(gl) -{ - // TODO only one needed for the whole engine really? - this.fastSpriteBatch = new PIXI.WebGLFastSpriteBatch(gl); - - this.ready = true; -}; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.SpriteBatch.prototype.updateTransform = function() -{ - // TODO don't need to! - this.displayObjectUpdateTransform(); - // PIXI.DisplayObjectContainer.prototype.updateTransform.call( this ); -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.SpriteBatch.prototype._renderWebGL = function(renderSession) -{ - if (!this.visible || this.alpha <= 0 || !this.children.length) return; - - if (!this.ready) - { - this.initWebGL(renderSession.gl); - } - - if (this.fastSpriteBatch.gl !== renderSession.gl) - { - this.fastSpriteBatch.setContext(renderSession.gl); - } - - renderSession.spriteBatch.stop(); - - renderSession.shaderManager.setShader(renderSession.shaderManager.fastShader); - - this.fastSpriteBatch.begin(this, renderSession); - this.fastSpriteBatch.render(this); - - renderSession.spriteBatch.start(); - -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) -{ - if (!this.visible || this.alpha <= 0 || !this.children.length) return; - - var context = renderSession.context; - - context.globalAlpha = this.worldAlpha; - - this.displayObjectUpdateTransform(); - - var transform = this.worldTransform; - - var isRotated = true; - - for (var i = 0; i < this.children.length; i++) - { - var child = this.children[i]; - - if (!child.visible) continue; - - var texture = child.texture; - var frame = texture.frame; - - context.globalAlpha = this.worldAlpha * child.alpha; - - if (child.rotation % (Math.PI * 2) === 0) - { - if (isRotated) - { - context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty); - isRotated = false; - } - - // this is the fastest way to optimise! - if rotation is 0 then we can avoid any kind of setTransform call - context.drawImage(texture.baseTexture.source, - frame.x, - frame.y, - frame.width, - frame.height, - ((child.anchor.x) * (-frame.width * child.scale.x) + child.position.x + 0.5 + renderSession.shakeX) | 0, - ((child.anchor.y) * (-frame.height * child.scale.y) + child.position.y + 0.5 + renderSession.shakeY) | 0, - frame.width * child.scale.x, - frame.height * child.scale.y); - } - else - { - if (!isRotated) isRotated = true; - - child.displayObjectUpdateTransform(); - - var childTransform = child.worldTransform; - var tx = (childTransform.tx * renderSession.resolution) + renderSession.shakeX; - var ty = (childTransform.ty * renderSession.resolution) + renderSession.shakeY; - - // allow for trimming - - if (renderSession.roundPixels) - { - context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, tx | 0, ty | 0); - } - else - { - context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, tx, ty); - } - - context.drawImage(texture.baseTexture.source, - frame.x, - frame.y, - frame.width, - frame.height, - ((child.anchor.x) * (-frame.width) + 0.5) | 0, - ((child.anchor.y) * (-frame.height) + 0.5) | 0, - frame.width, - frame.height); - } - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * Converts a hex color number to an [R, G, B] array - * - * @method hex2rgb - * @param hex {Number} - */ -PIXI.hex2rgb = function(hex) { - return [(hex >> 16 & 0xFF) / 255, ( hex >> 8 & 0xFF) / 255, (hex & 0xFF)/ 255]; -}; - -/** - * Converts a color as an [R, G, B] array to a hex number - * - * @method rgb2hex - * @param rgb {Array} - */ -PIXI.rgb2hex = function(rgb) { - return ((rgb[0]*255 << 16) + (rgb[1]*255 << 8) + rgb[2]*255); -}; - -/** - * Checks whether the Canvas BlendModes are supported by the current browser for drawImage - * - * @method canUseNewCanvasBlendModes - * @return {Boolean} whether they are supported - */ -PIXI.canUseNewCanvasBlendModes = function() -{ - if (document === undefined) return false; - - var pngHead = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/'; - var pngEnd = 'AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg=='; - - var magenta = new Image(); - magenta.src = pngHead + 'AP804Oa6' + pngEnd; - - var yellow = new Image(); - yellow.src = pngHead + '/wCKxvRF' + pngEnd; - - var canvas = PIXI.CanvasPool.create(this, 6, 1); - var context = canvas.getContext('2d'); - context.globalCompositeOperation = 'multiply'; - context.drawImage(magenta, 0, 0); - context.drawImage(yellow, 2, 0); - - if (!context.getImageData(2,0,1,1)) - { - return false; - } - - var data = context.getImageData(2,0,1,1).data; - - PIXI.CanvasPool.remove(this); - - return (data[0] === 255 && data[1] === 0 && data[2] === 0); - -}; - -/** - * Given a number, this function returns the closest number that is a power of two - * this function is taken from Starling Framework as its pretty neat ;) - * - * @method getNextPowerOfTwo - * @param number {Number} - * @return {Number} the closest number that is a power of two - */ -PIXI.getNextPowerOfTwo = function(number) -{ - if (number > 0 && (number & (number - 1)) === 0) // see: http://goo.gl/D9kPj - return number; - else - { - var result = 1; - while (result < number) result <<= 1; - return result; - } -}; - -/** - * checks if the given width and height make a power of two texture - * @method isPowerOfTwo - * @param width {Number} - * @param height {Number} - * @return {Boolean} - */ -PIXI.isPowerOfTwo = function(width, height) -{ - return (width > 0 && (width & (width - 1)) === 0 && height > 0 && (height & (height - 1)) === 0); - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. -* -* @class CanvasPool -* @static -*/ -PIXI.CanvasPool = { - - /** - * Creates a new Canvas DOM element, or pulls one from the pool if free. - * - * @method create - * @static - * @param parent {any} The parent of the canvas element. - * @param width {number} The width of the canvas element. - * @param height {number} The height of the canvas element. - * @return {HTMLCanvasElement} The canvas element. - */ - create: function (parent, width, height) { - - var idx = PIXI.CanvasPool.getFirst(); - var canvas; - - if (idx === -1) - { - var container = { - parent: parent, - canvas: document.createElement('canvas') - } - - PIXI.CanvasPool.pool.push(container); - - canvas = container.canvas; - } - else - { - PIXI.CanvasPool.pool[idx].parent = parent; - - canvas = PIXI.CanvasPool.pool[idx].canvas; - } - - if (width !== undefined) - { - canvas.width = width; - canvas.height = height; - } - - return canvas; - - }, - - /** - * Gets the first free canvas index from the pool. - * - * @method getFirst - * @static - * @return {number} - */ - getFirst: function () { - - var pool = PIXI.CanvasPool.pool; - - for (var i = 0; i < pool.length; i++) - { - if (!pool[i].parent) - { - return i; - } - } - - return -1; - - }, - - /** - * Removes the parent from a canvas element from the pool, freeing it up for re-use. - * - * @method remove - * @param parent {any} The parent of the canvas element. - * @static - */ - remove: function (parent) { - - var pool = PIXI.CanvasPool.pool; - - for (var i = 0; i < pool.length; i++) - { - if (pool[i].parent === parent) - { - pool[i].parent = null; - pool[i].canvas.width = 1; - pool[i].canvas.height = 1; - } - } - - }, - - /** - * Removes the parent from a canvas element from the pool, freeing it up for re-use. - * - * @method removeByCanvas - * @param canvas {HTMLCanvasElement} The canvas element to remove - * @static - */ - removeByCanvas: function (canvas) { - - var pool = PIXI.CanvasPool.pool; - - for (var i = 0; i < pool.length; i++) - { - if (pool[i].canvas === canvas) - { - pool[i].parent = null; - pool[i].canvas.width = 1; - pool[i].canvas.height = 1; - } - } - - }, - - /** - * Gets the total number of used canvas elements in the pool. - * - * @method getTotal - * @static - * @return {number} The number of in-use (parented) canvas elements in the pool. - */ - getTotal: function () { - - var pool = PIXI.CanvasPool.pool; - var c = 0; - - for (var i = 0; i < pool.length; i++) - { - if (pool[i].parent) - { - c++; - } - } - - return c; - - }, - - /** - * Gets the total number of free canvas elements in the pool. - * - * @method getFree - * @static - * @return {number} The number of free (un-parented) canvas elements in the pool. - */ - getFree: function () { - - var pool = PIXI.CanvasPool.pool; - var c = 0; - - for (var i = 0; i < pool.length; i++) - { - if (!pool[i].parent) - { - c++; - } - } - - return c; - - } - -}; - -/** - * The pool into which the canvas dom elements are placed. - * - * @property pool - * @type Array - * @static - */ -PIXI.CanvasPool.pool = []; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @method initDefaultShaders -* @static -* @private -*/ -PIXI.initDefaultShaders = function() -{ -}; - -/** -* @method CompileVertexShader -* @static -* @param gl {WebGLContext} the current WebGL drawing context -* @param shaderSrc {Array} -* @return {Any} -*/ -PIXI.CompileVertexShader = function(gl, shaderSrc) -{ - return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); -}; - -/** -* @method CompileFragmentShader -* @static -* @param gl {WebGLContext} the current WebGL drawing context -* @param shaderSrc {Array} -* @return {Any} -*/ -PIXI.CompileFragmentShader = function(gl, shaderSrc) -{ - return PIXI._CompileShader(gl, shaderSrc, gl.FRAGMENT_SHADER); -}; - -/** -* @method _CompileShader -* @static -* @private -* @param gl {WebGLContext} the current WebGL drawing context -* @param shaderSrc {Array} -* @param shaderType {Number} -* @return {Any} -*/ -PIXI._CompileShader = function(gl, shaderSrc, shaderType) -{ - var src = shaderSrc; - - if (Array.isArray(shaderSrc)) - { - src = shaderSrc.join("\n"); - } - - var shader = gl.createShader(shaderType); - gl.shaderSource(shader, src); - gl.compileShader(shader); - - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) - { - window.console.log(gl.getShaderInfoLog(shader)); - return null; - } - - return shader; -}; - -/** -* @method compileProgram -* @static -* @param gl {WebGLContext} the current WebGL drawing context -* @param vertexSrc {Array} -* @param fragmentSrc {Array} -* @return {Any} -*/ -PIXI.compileProgram = function(gl, vertexSrc, fragmentSrc) -{ - var fragmentShader = PIXI.CompileFragmentShader(gl, fragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, vertexSrc); - - var shaderProgram = gl.createProgram(); - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) - { - window.console.log(gl.getProgramInfoLog(shaderProgram)); - window.console.log("Could not initialise shaders"); - } - - return shaderProgram; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - * @author Richard Davey http://www.photonstorm.com @photonstorm - */ - -/** -* @class PixiShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.PixiShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision lowp float;', - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - 'uniform sampler2D uSampler;', - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ]; - - /** - * A local texture counter for multi-texture shaders. - * @property textureCount - * @type Number - */ - this.textureCount = 0; - - /** - * A local flag - * @property firstRun - * @type Boolean - * @private - */ - this.firstRun = true; - - /** - * A dirty flag - * @property dirty - * @type Boolean - */ - this.dirty = true; - - /** - * Uniform attributes cache. - * @property attributes - * @type Array - * @private - */ - this.attributes = []; - - this.init(); -}; - -PIXI.PixiShader.prototype.constructor = PIXI.PixiShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.PixiShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc || PIXI.PixiShader.defaultVertexSrc, this.fragmentSrc); - - gl.useProgram(program); - - // get and store the uniforms for the shader - this.uSampler = gl.getUniformLocation(program, 'uSampler'); - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.dimensions = gl.getUniformLocation(program, 'dimensions'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - // Begin worst hack eva // - - // WHY??? ONLY on my chrome pixel the line above returns -1 when using filters? - // maybe its something to do with the current state of the gl context. - // I'm convinced this is a bug in the chrome browser as there is NO reason why this should be returning -1 especially as it only manifests on my chrome pixel - // If theres any webGL people that know why could happen please help :) - if(this.colorAttribute === -1) - { - this.colorAttribute = 2; - } - - this.attributes = [this.aVertexPosition, this.aTextureCoord, this.colorAttribute]; - - // End worst hack eva // - - // add those custom shaders! - for (var key in this.uniforms) - { - // get the uniform locations.. - this.uniforms[key].uniformLocation = gl.getUniformLocation(program, key); - } - - this.initUniforms(); - - this.program = program; -}; - -/** -* Initialises the shader uniform values. -* -* Uniforms are specified in the GLSL_ES Specification: http://www.khronos.org/registry/webgl/specs/latest/1.0/ -* http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf -* -* @method initUniforms -*/ -PIXI.PixiShader.prototype.initUniforms = function() -{ - this.textureCount = 1; - var gl = this.gl; - var uniform; - - for (var key in this.uniforms) - { - uniform = this.uniforms[key]; - - var type = uniform.type; - - if (type === 'sampler2D') - { - uniform._init = false; - - if (uniform.value !== null) - { - this.initSampler2D(uniform); - } - } - else if (type === 'mat2' || type === 'mat3' || type === 'mat4') - { - // These require special handling - uniform.glMatrix = true; - uniform.glValueLength = 1; - - if (type === 'mat2') - { - uniform.glFunc = gl.uniformMatrix2fv; - } - else if (type === 'mat3') - { - uniform.glFunc = gl.uniformMatrix3fv; - } - else if (type === 'mat4') - { - uniform.glFunc = gl.uniformMatrix4fv; - } - } - else - { - // GL function reference - uniform.glFunc = gl['uniform' + type]; - - if (type === '2f' || type === '2i') - { - uniform.glValueLength = 2; - } - else if (type === '3f' || type === '3i') - { - uniform.glValueLength = 3; - } - else if (type === '4f' || type === '4i') - { - uniform.glValueLength = 4; - } - else - { - uniform.glValueLength = 1; - } - } - } - -}; - -/** -* Initialises a Sampler2D uniform (which may only be available later on after initUniforms once the texture has loaded) -* -* @method initSampler2D -*/ -PIXI.PixiShader.prototype.initSampler2D = function(uniform) -{ - if (!uniform.value || !uniform.value.baseTexture || !uniform.value.baseTexture.hasLoaded) - { - return; - } - - var gl = this.gl; - - gl.activeTexture(gl['TEXTURE' + this.textureCount]); - gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id]); - - // Extended texture data - if (uniform.textureData) - { - var data = uniform.textureData; - - // GLTexture = mag linear, min linear_mipmap_linear, wrap repeat + gl.generateMipmap(gl.TEXTURE_2D); - // GLTextureLinear = mag/min linear, wrap clamp - // GLTextureNearestRepeat = mag/min NEAREST, wrap repeat - // GLTextureNearest = mag/min nearest, wrap clamp - // AudioTexture = whatever + luminance + width 512, height 2, border 0 - // KeyTexture = whatever + luminance + width 256, height 2, border 0 - - // magFilter can be: gl.LINEAR, gl.LINEAR_MIPMAP_LINEAR or gl.NEAREST - // wrapS/T can be: gl.CLAMP_TO_EDGE or gl.REPEAT - - var magFilter = (data.magFilter) ? data.magFilter : gl.LINEAR; - var minFilter = (data.minFilter) ? data.minFilter : gl.LINEAR; - var wrapS = (data.wrapS) ? data.wrapS : gl.CLAMP_TO_EDGE; - var wrapT = (data.wrapT) ? data.wrapT : gl.CLAMP_TO_EDGE; - var format = (data.luminance) ? gl.LUMINANCE : gl.RGBA; - - if (data.repeat) - { - wrapS = gl.REPEAT; - wrapT = gl.REPEAT; - } - - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, !!data.flipY); - - if (data.width) - { - var width = (data.width) ? data.width : 512; - var height = (data.height) ? data.height : 2; - var border = (data.border) ? data.border : 0; - - // void texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels); - gl.texImage2D(gl.TEXTURE_2D, 0, format, width, height, border, format, gl.UNSIGNED_BYTE, null); - } - else - { - // void texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, ImageData? pixels); - gl.texImage2D(gl.TEXTURE_2D, 0, format, gl.RGBA, gl.UNSIGNED_BYTE, uniform.value.baseTexture.source); - } - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT); - } - - gl.uniform1i(uniform.uniformLocation, this.textureCount); - - uniform._init = true; - - this.textureCount++; - -}; - -/** -* Updates the shader uniform values. -* -* @method syncUniforms -*/ -PIXI.PixiShader.prototype.syncUniforms = function() -{ - this.textureCount = 1; - var uniform; - var gl = this.gl; - - // This would probably be faster in an array and it would guarantee key order - for (var key in this.uniforms) - { - uniform = this.uniforms[key]; - - if (uniform.glValueLength === 1) - { - if (uniform.glMatrix === true) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.transpose, uniform.value); - } - else - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value); - } - } - else if (uniform.glValueLength === 2) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y); - } - else if (uniform.glValueLength === 3) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y, uniform.value.z); - } - else if (uniform.glValueLength === 4) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y, uniform.value.z, uniform.value.w); - } - else if (uniform.type === 'sampler2D') - { - if (uniform._init) - { - gl.activeTexture(gl['TEXTURE' + this.textureCount]); - - if(uniform.value.baseTexture._dirty[gl.id]) - { - PIXI.instances[gl.id].updateTexture(uniform.value.baseTexture); - } - else - { - // bind the current texture - gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id]); - } - - // gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id] || PIXI.createWebGLTexture( uniform.value.baseTexture, gl)); - gl.uniform1i(uniform.uniformLocation, this.textureCount); - this.textureCount++; - } - else - { - this.initSampler2D(uniform); - } - } - } - -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.PixiShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attributes = null; -}; - -/** -* The Default Vertex shader source. -* -* @property defaultVertexSrc -* @type String -*/ -PIXI.PixiShader.defaultVertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aTextureCoord;', - 'attribute vec4 aColor;', - - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - - 'const vec2 center = vec2(-1.0, 1.0);', - - 'void main(void) {', - ' gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - ' vColor = vec4(aColor.rgb * aColor.a, aColor.a);', - '}' -]; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class PixiFastShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.PixiFastShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision lowp float;', - 'varying vec2 vTextureCoord;', - 'varying float vColor;', - 'uniform sampler2D uSampler;', - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aPositionCoord;', - 'attribute vec2 aScale;', - 'attribute float aRotation;', - 'attribute vec2 aTextureCoord;', - 'attribute float aColor;', - - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - 'uniform mat3 uMatrix;', - - 'varying vec2 vTextureCoord;', - 'varying float vColor;', - - 'const vec2 center = vec2(-1.0, 1.0);', - - 'void main(void) {', - ' vec2 v;', - ' vec2 sv = aVertexPosition * aScale;', - ' v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);', - ' v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);', - ' v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;', - ' gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - // ' vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;', - ' vColor = aColor;', - '}' - ]; - - /** - * A local texture counter for multi-texture shaders. - * @property textureCount - * @type Number - */ - this.textureCount = 0; - - this.init(); -}; - -PIXI.PixiFastShader.prototype.constructor = PIXI.PixiFastShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.PixiFastShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - - gl.useProgram(program); - - // get and store the uniforms for the shader - this.uSampler = gl.getUniformLocation(program, 'uSampler'); - - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.dimensions = gl.getUniformLocation(program, 'dimensions'); - this.uMatrix = gl.getUniformLocation(program, 'uMatrix'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.aPositionCoord = gl.getAttribLocation(program, 'aPositionCoord'); - - this.aScale = gl.getAttribLocation(program, 'aScale'); - this.aRotation = gl.getAttribLocation(program, 'aRotation'); - - this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - // Begin worst hack eva // - - // WHY??? ONLY on my chrome pixel the line above returns -1 when using filters? - // maybe its somthing to do with the current state of the gl context. - // Im convinced this is a bug in the chrome browser as there is NO reason why this should be returning -1 especially as it only manifests on my chrome pixel - // If theres any webGL people that know why could happen please help :) - if(this.colorAttribute === -1) - { - this.colorAttribute = 2; - } - - this.attributes = [this.aVertexPosition, this.aPositionCoord, this.aScale, this.aRotation, this.aTextureCoord, this.colorAttribute]; - - // End worst hack eva // - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.PixiFastShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attributes = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class StripShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.StripShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision mediump float;', - 'varying vec2 vTextureCoord;', - // 'varying float vColor;', - 'uniform float alpha;', - 'uniform sampler2D uSampler;', - - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y)) * alpha;', - // ' gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);',//gl_FragColor * alpha;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aTextureCoord;', - 'uniform mat3 translationMatrix;', - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - // 'uniform float alpha;', - // 'uniform vec3 tint;', - 'varying vec2 vTextureCoord;', - // 'varying vec4 vColor;', - - 'void main(void) {', - ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', - ' v -= offsetVector.xyx;', - ' gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - // ' vColor = aColor * vec4(tint * alpha, alpha);', - '}' - ]; - - this.init(); -}; - -PIXI.StripShader.prototype.constructor = PIXI.StripShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.StripShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - gl.useProgram(program); - - // get and store the uniforms for the shader - this.uSampler = gl.getUniformLocation(program, 'uSampler'); - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - //this.dimensions = gl.getUniformLocation(this.program, 'dimensions'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); - - this.attributes = [this.aVertexPosition, this.aTextureCoord]; - - this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); - this.alpha = gl.getUniformLocation(program, 'alpha'); - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.StripShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attribute = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class PrimitiveShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.PrimitiveShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision mediump float;', - 'varying vec4 vColor;', - - 'void main(void) {', - ' gl_FragColor = vColor;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec4 aColor;', - 'uniform mat3 translationMatrix;', - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - 'uniform float alpha;', - 'uniform float flipY;', - 'uniform vec3 tint;', - 'varying vec4 vColor;', - - 'void main(void) {', - ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', - ' v -= offsetVector.xyx;', - ' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);', - ' vColor = aColor * vec4(tint * alpha, alpha);', - '}' - ]; - - this.init(); -}; - -PIXI.PrimitiveShader.prototype.constructor = PIXI.PrimitiveShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.PrimitiveShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - gl.useProgram(program); - - // get and store the uniforms for the shader - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.tintColor = gl.getUniformLocation(program, 'tint'); - this.flipY = gl.getUniformLocation(program, 'flipY'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - this.attributes = [this.aVertexPosition, this.colorAttribute]; - - this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); - this.alpha = gl.getUniformLocation(program, 'alpha'); - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.PrimitiveShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attributes = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class ComplexPrimitiveShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.ComplexPrimitiveShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - - 'precision mediump float;', - - 'varying vec4 vColor;', - - 'void main(void) {', - ' gl_FragColor = vColor;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - //'attribute vec4 aColor;', - 'uniform mat3 translationMatrix;', - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - - 'uniform vec3 tint;', - 'uniform float alpha;', - 'uniform vec3 color;', - 'uniform float flipY;', - 'varying vec4 vColor;', - - 'void main(void) {', - ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', - ' v -= offsetVector.xyx;', - ' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);', - ' vColor = vec4(color * alpha * tint, alpha);',//" * vec4(tint * alpha, alpha);', - '}' - ]; - - this.init(); -}; - -PIXI.ComplexPrimitiveShader.prototype.constructor = PIXI.ComplexPrimitiveShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.ComplexPrimitiveShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - gl.useProgram(program); - - // get and store the uniforms for the shader - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.tintColor = gl.getUniformLocation(program, 'tint'); - this.color = gl.getUniformLocation(program, 'color'); - this.flipY = gl.getUniformLocation(program, 'flipY'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - // this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - this.attributes = [this.aVertexPosition, this.colorAttribute]; - - this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); - this.alpha = gl.getUniformLocation(program, 'alpha'); - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.ComplexPrimitiveShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attribute = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -PIXI.glContexts = []; // this is where we store the webGL contexts for easy access. -PIXI.instances = []; - -/** - * The WebGLRenderer draws the stage and all its content onto a webGL enabled canvas. This renderer - * should be used for browsers that support webGL. This Render works by automatically managing webGLBatchs. - * So no need for Sprite Batches or Sprite Clouds. - * Don't forget to add the view to your DOM or you will not see anything :) - * - * @class WebGLRenderer - * @constructor - * @param game {Phaser.Game} A reference to the Phaser Game instance - */ -PIXI.WebGLRenderer = function(game) { - - /** - * @property {Phaser.Game} game - A reference to the Phaser Game instance. - */ - this.game = game; - - if (!PIXI.defaultRenderer) - { - PIXI.defaultRenderer = this; - } - - /** - * @property type - * @type Number - */ - this.type = PIXI.WEBGL_RENDERER; - - /** - * The resolution of the renderer - * - * @property resolution - * @type Number - * @default 1 - */ - this.resolution = game.resolution; - - /** - * Whether the render view is transparent - * - * @property transparent - * @type Boolean - */ - this.transparent = game.transparent; - - /** - * Whether the render view should be resized automatically - * - * @property autoResize - * @type Boolean - */ - this.autoResize = false; - - /** - * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. - * - * @property preserveDrawingBuffer - * @type Boolean - */ - this.preserveDrawingBuffer = game.preserveDrawingBuffer; - - /** - * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: - * If the Stage is NOT transparent, Pixi will clear to alpha (0, 0, 0, 0). - * If the Stage is transparent, Pixi will clear to the target Stage's background color. - * Disable this by setting this to false. For example: if your game has a canvas filling background image, you often don't need this set. - * - * @property clearBeforeRender - * @type Boolean - * @default - */ - this.clearBeforeRender = game.clearBeforeRender; - - /** - * The width of the canvas view - * - * @property width - * @type Number - */ - this.width = game.width; - - /** - * The height of the canvas view - * - * @property height - * @type Number - */ - this.height = game.height; - - /** - * The canvas element that everything is drawn to - * - * @property view - * @type HTMLCanvasElement - */ - this.view = game.canvas; - - /** - * @property _contextOptions - * @type Object - * @private - */ - this._contextOptions = { - alpha: this.transparent, - antialias: game.antialias, - premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', - stencil: true, - preserveDrawingBuffer: this.preserveDrawingBuffer - }; - - /** - * @property projection - * @type Point - */ - this.projection = new PIXI.Point(); - - /** - * @property offset - * @type Point - */ - this.offset = new PIXI.Point(); - - // time to create the render managers! each one focuses on managing a state in webGL - - /** - * Deals with managing the shader programs and their attribs - * @property shaderManager - * @type WebGLShaderManager - */ - this.shaderManager = new PIXI.WebGLShaderManager(); - - /** - * Manages the rendering of sprites - * @property spriteBatch - * @type WebGLSpriteBatch - */ - this.spriteBatch = new PIXI.WebGLSpriteBatch(); - - /** - * Manages the masks using the stencil buffer - * @property maskManager - * @type WebGLMaskManager - */ - this.maskManager = new PIXI.WebGLMaskManager(); - - /** - * Manages the filters - * @property filterManager - * @type WebGLFilterManager - */ - this.filterManager = new PIXI.WebGLFilterManager(); - - /** - * Manages the stencil buffer - * @property stencilManager - * @type WebGLStencilManager - */ - this.stencilManager = new PIXI.WebGLStencilManager(); - - /** - * Manages the blendModes - * @property blendModeManager - * @type WebGLBlendModeManager - */ - this.blendModeManager = new PIXI.WebGLBlendModeManager(); - - /** - * @property renderSession - * @type Object - */ - this.renderSession = {}; - - // Needed? - this.renderSession.game = this.game; - this.renderSession.gl = this.gl; - this.renderSession.drawCount = 0; - this.renderSession.shaderManager = this.shaderManager; - this.renderSession.maskManager = this.maskManager; - this.renderSession.filterManager = this.filterManager; - this.renderSession.blendModeManager = this.blendModeManager; - this.renderSession.spriteBatch = this.spriteBatch; - this.renderSession.stencilManager = this.stencilManager; - this.renderSession.renderer = this; - this.renderSession.resolution = this.resolution; - - // time init the context.. - this.initContext(); - - // map some webGL blend modes.. - this.mapBlendModes(); - -}; - -// constructor -PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer; - -/** -* @method initContext -*/ -PIXI.WebGLRenderer.prototype.initContext = function() -{ - var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions); - - this.gl = gl; - - if (!gl) { - // fail, not able to get a context - throw new Error('This browser does not support webGL. Try using the canvas renderer'); - } - - this.glContextId = gl.id = PIXI.WebGLRenderer.glContextId++; - - PIXI.glContexts[this.glContextId] = gl; - - PIXI.instances[this.glContextId] = this; - - // set up the default pixi settings.. - gl.disable(gl.DEPTH_TEST); - gl.disable(gl.CULL_FACE); - gl.enable(gl.BLEND); - - // need to set the context for all the managers... - this.shaderManager.setContext(gl); - this.spriteBatch.setContext(gl); - this.maskManager.setContext(gl); - this.filterManager.setContext(gl); - this.blendModeManager.setContext(gl); - this.stencilManager.setContext(gl); - - this.renderSession.gl = this.gl; - - // now resize and we are good to go! - this.resize(this.width, this.height); -}; - -/** - * Renders the stage to its webGL view - * - * @method render - * @param stage {Stage} the Stage element to be rendered - */ -PIXI.WebGLRenderer.prototype.render = function(stage) -{ - // no point rendering if our context has been blown up! - if (this.contextLost) - { - return; - } - - var gl = this.gl; - - // -- Does this need to be set every frame? -- // - gl.viewport(0, 0, this.width, this.height); - - // make sure we are bound to the main frame buffer - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - - if (this.game.clearBeforeRender) - { - gl.clearColor(stage._bgColor.r, stage._bgColor.g, stage._bgColor.b, stage._bgColor.a); - - gl.clear(gl.COLOR_BUFFER_BIT); - } - - this.offset.x = this.game.camera._shake.x; - this.offset.y = this.game.camera._shake.y; - - this.renderDisplayObject(stage, this.projection); -}; - -/** - * Renders a Display Object. - * - * @method renderDisplayObject - * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer - */ -PIXI.WebGLRenderer.prototype.renderDisplayObject = function(displayObject, projection, buffer, matrix) -{ - this.renderSession.blendModeManager.setBlendMode(PIXI.blendModes.NORMAL); - - // reset the render session data.. - this.renderSession.drawCount = 0; - - // make sure to flip the Y if using a render texture.. - this.renderSession.flipY = buffer ? -1 : 1; - - // set the default projection - this.renderSession.projection = projection; - - //set the default offset - this.renderSession.offset = this.offset; - - // start the sprite batch - this.spriteBatch.begin(this.renderSession); - - // start the filter manager - this.filterManager.begin(this.renderSession, buffer); - - // render the scene! - displayObject._renderWebGL(this.renderSession, matrix); - - // finish the sprite batch - this.spriteBatch.end(); -}; - -/** - * Resizes the webGL view to the specified width and height. - * - * @method resize - * @param width {Number} the new width of the webGL view - * @param height {Number} the new height of the webGL view - */ -PIXI.WebGLRenderer.prototype.resize = function(width, height) -{ - this.width = width * this.resolution; - this.height = height * this.resolution; - - this.view.width = this.width; - this.view.height = this.height; - - if (this.autoResize) { - this.view.style.width = this.width / this.resolution + 'px'; - this.view.style.height = this.height / this.resolution + 'px'; - } - - this.gl.viewport(0, 0, this.width, this.height); - - this.projection.x = this.width / 2 / this.resolution; - this.projection.y = -this.height / 2 / this.resolution; -}; - -/** - * Updates and Creates a WebGL texture for the renderers context. - * - * @method updateTexture - * @param texture {Texture} the texture to update - * @return {boolean} True if the texture was successfully bound, otherwise false. - */ -PIXI.WebGLRenderer.prototype.updateTexture = function(texture) -{ - if (!texture.hasLoaded) - { - return false; - } - - var gl = this.gl; - - if (!texture._glTextures[gl.id]) - { - texture._glTextures[gl.id] = gl.createTexture(); - } - - gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]); - - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultipliedAlpha); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.source); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - - if (texture.mipmap && PIXI.isPowerOfTwo(texture.width, texture.height)) - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST); - gl.generateMipmap(gl.TEXTURE_2D); - } - else - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - } - - if (!texture._powerOf2) - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - } - else - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - } - - texture._dirty[gl.id] = false; - - // return texture._glTextures[gl.id]; - return true; - -}; - -/** - * Removes everything from the renderer (event listeners, spritebatch, etc...) - * - * @method destroy - */ -PIXI.WebGLRenderer.prototype.destroy = function() -{ - PIXI.glContexts[this.glContextId] = null; - - this.projection = null; - this.offset = null; - - this.shaderManager.destroy(); - this.spriteBatch.destroy(); - this.maskManager.destroy(); - this.filterManager.destroy(); - - this.shaderManager = null; - this.spriteBatch = null; - this.maskManager = null; - this.filterManager = null; - - this.gl = null; - this.renderSession = null; - - PIXI.CanvasPool.remove(this); - - PIXI.instances[this.glContextId] = null; - - PIXI.WebGLRenderer.glContextId--; -}; - -/** - * Maps Pixi blend modes to WebGL blend modes. - * - * @method mapBlendModes - */ -PIXI.WebGLRenderer.prototype.mapBlendModes = function() -{ - var gl = this.gl; - - if (!PIXI.blendModesWebGL) - { - var b = []; - var modes = PIXI.blendModes; - - b[modes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - b[modes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - b[modes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - - PIXI.blendModesWebGL = b; - } -}; - -PIXI.WebGLRenderer.glContextId = 0; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLBlendModeManager -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLBlendModeManager = function() -{ - /** - * @property currentBlendMode - * @type Number - */ - this.currentBlendMode = 99999; -}; - -PIXI.WebGLBlendModeManager.prototype.constructor = PIXI.WebGLBlendModeManager; - -/** - * Sets the WebGL Context. - * - * @method setContext - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLBlendModeManager.prototype.setContext = function(gl) -{ - this.gl = gl; -}; - -/** -* Sets-up the given blendMode from WebGL's point of view. -* -* @method setBlendMode -* @param blendMode {Number} the blendMode, should be a Pixi const, such as PIXI.BlendModes.ADD -*/ -PIXI.WebGLBlendModeManager.prototype.setBlendMode = function(blendMode) -{ - if(this.currentBlendMode === blendMode)return false; - - this.currentBlendMode = blendMode; - - var blendModeWebGL = PIXI.blendModesWebGL[this.currentBlendMode]; - - if (blendModeWebGL) - { - this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); - } - - return true; -}; - -/** -* Destroys this object. -* -* @method destroy -*/ -PIXI.WebGLBlendModeManager.prototype.destroy = function() -{ - this.gl = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLMaskManager -* @constructor -* @private -*/ -PIXI.WebGLMaskManager = function() -{ -}; - -PIXI.WebGLMaskManager.prototype.constructor = PIXI.WebGLMaskManager; - -/** -* Sets the drawing context to the one given in parameter. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLMaskManager.prototype.setContext = function(gl) -{ - this.gl = gl; -}; - -/** -* Applies the Mask and adds it to the current filter stack. -* -* @method pushMask -* @param maskData {Array} -* @param renderSession {Object} -*/ -PIXI.WebGLMaskManager.prototype.pushMask = function(maskData, renderSession) -{ - var gl = renderSession.gl; - - if (maskData.dirty) - { - PIXI.WebGLGraphics.updateGraphics(maskData, gl); - } - - if (maskData._webGL[gl.id] === undefined || maskData._webGL[gl.id].data === undefined || maskData._webGL[gl.id].data.length === 0) - { - return; - } - - renderSession.stencilManager.pushStencil(maskData, maskData._webGL[gl.id].data[0], renderSession); -}; - -/** -* Removes the last filter from the filter stack and doesn't return it. -* -* @method popMask -* @param maskData {Array} -* @param renderSession {Object} an object containing all the useful parameters -*/ -PIXI.WebGLMaskManager.prototype.popMask = function(maskData, renderSession) -{ - var gl = this.gl; - - if (maskData._webGL[gl.id] === undefined || maskData._webGL[gl.id].data === undefined || maskData._webGL[gl.id].data.length === 0) - { - return; - } - - renderSession.stencilManager.popStencil(maskData, maskData._webGL[gl.id].data[0], renderSession); - -}; - -/** -* Destroys the mask stack. -* -* @method destroy -*/ -PIXI.WebGLMaskManager.prototype.destroy = function() -{ - this.gl = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLStencilManager -* @constructor -* @private -*/ -PIXI.WebGLStencilManager = function() -{ - this.stencilStack = []; - this.reverse = true; - this.count = 0; -}; - -/** -* Sets the drawing context to the one given in parameter. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLStencilManager.prototype.setContext = function(gl) -{ - this.gl = gl; -}; - -/** -* Applies the Mask and adds it to the current filter stack. -* -* @method pushMask -* @param graphics {Graphics} -* @param webGLData {Array} -* @param renderSession {Object} -*/ -PIXI.WebGLStencilManager.prototype.pushStencil = function(graphics, webGLData, renderSession) -{ - var gl = this.gl; - this.bindGraphics(graphics, webGLData, renderSession); - - if(this.stencilStack.length === 0) - { - gl.enable(gl.STENCIL_TEST); - gl.clear(gl.STENCIL_BUFFER_BIT); - this.reverse = true; - this.count = 0; - } - - this.stencilStack.push(webGLData); - - var level = this.count; - - gl.colorMask(false, false, false, false); - - gl.stencilFunc(gl.ALWAYS,0,0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT); - - // draw the triangle strip! - - if(webGLData.mode === 1) - { - gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 ); - - if(this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - - // draw a quad to increment.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - if(this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - } - - this.reverse = !this.reverse; - } - else - { - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - } - } - - gl.colorMask(true, true, true, true); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); - - this.count++; -}; - -/** - * TODO this does not belong here! - * - * @method bindGraphics - * @param graphics {Graphics} - * @param webGLData {Array} - * @param renderSession {Object} - */ -PIXI.WebGLStencilManager.prototype.bindGraphics = function(graphics, webGLData, renderSession) -{ - //if(this._currentGraphics === graphics)return; - this._currentGraphics = graphics; - - var gl = this.gl; - - // bind the graphics object.. - var projection = renderSession.projection, - offset = renderSession.offset, - shader;// = renderSession.shaderManager.primitiveShader; - - if(webGLData.mode === 1) - { - shader = renderSession.shaderManager.complexPrimitiveShader; - - renderSession.shaderManager.setShader( shader ); - - gl.uniform1f(shader.flipY, renderSession.flipY); - - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - gl.uniform3fv(shader.color, webGLData.color); - - gl.uniform1f(shader.alpha, graphics.worldAlpha * webGLData.alpha); - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 2, 0); - - - // now do the rest.. - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - } - else - { - //renderSession.shaderManager.activatePrimitiveShader(); - shader = renderSession.shaderManager.primitiveShader; - renderSession.shaderManager.setShader( shader ); - - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform1f(shader.flipY, renderSession.flipY); - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - - gl.uniform1f(shader.alpha, graphics.worldAlpha); - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); - - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - } -}; - -/** - * @method popStencil - * @param graphics {Graphics} - * @param webGLData {Array} - * @param renderSession {Object} - */ -PIXI.WebGLStencilManager.prototype.popStencil = function(graphics, webGLData, renderSession) -{ - var gl = this.gl; - this.stencilStack.pop(); - - this.count--; - - if(this.stencilStack.length === 0) - { - // the stack is empty! - gl.disable(gl.STENCIL_TEST); - - } - else - { - - var level = this.count; - - this.bindGraphics(graphics, webGLData, renderSession); - - gl.colorMask(false, false, false, false); - - if(webGLData.mode === 1) - { - this.reverse = !this.reverse; - - if(this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - - // draw a quad to increment.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - gl.stencilFunc(gl.ALWAYS,0,0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT); - - // draw the triangle strip! - gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 ); - - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - } - - } - else - { - // console.log("<<>>") - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - } - } - - gl.colorMask(true, true, true, true); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); - - - } -}; - -/** -* Destroys the mask stack. -* -* @method destroy -*/ -PIXI.WebGLStencilManager.prototype.destroy = function() -{ - this.stencilStack = null; - this.gl = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLShaderManager -* @constructor -* @private -*/ -PIXI.WebGLShaderManager = function() -{ - /** - * @property maxAttibs - * @type Number - */ - this.maxAttibs = 10; - - /** - * @property attribState - * @type Array - */ - this.attribState = []; - - /** - * @property tempAttribState - * @type Array - */ - this.tempAttribState = []; - - for (var i = 0; i < this.maxAttibs; i++) - { - this.attribState[i] = false; - } - - /** - * @property stack - * @type Array - */ - this.stack = []; - -}; - -PIXI.WebGLShaderManager.prototype.constructor = PIXI.WebGLShaderManager; - -/** -* Initialises the context and the properties. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLShaderManager.prototype.setContext = function(gl) -{ - this.gl = gl; - - // the next one is used for rendering primitives - this.primitiveShader = new PIXI.PrimitiveShader(gl); - - // the next one is used for rendering triangle strips - this.complexPrimitiveShader = new PIXI.ComplexPrimitiveShader(gl); - - // this shader is used for the default sprite rendering - this.defaultShader = new PIXI.PixiShader(gl); - - // this shader is used for the fast sprite rendering - this.fastShader = new PIXI.PixiFastShader(gl); - - // the next one is used for rendering triangle strips - this.stripShader = new PIXI.StripShader(gl); - - this.setShader(this.defaultShader); -}; - -/** -* Takes the attributes given in parameters. -* -* @method setAttribs -* @param attribs {Array} attribs -*/ -PIXI.WebGLShaderManager.prototype.setAttribs = function(attribs) -{ - // reset temp state - var i; - - for (i = 0; i < this.tempAttribState.length; i++) - { - this.tempAttribState[i] = false; - } - - // set the new attribs - for (i = 0; i < attribs.length; i++) - { - var attribId = attribs[i]; - this.tempAttribState[attribId] = true; - } - - var gl = this.gl; - - for (i = 0; i < this.attribState.length; i++) - { - if(this.attribState[i] !== this.tempAttribState[i]) - { - this.attribState[i] = this.tempAttribState[i]; - - if(this.tempAttribState[i]) - { - gl.enableVertexAttribArray(i); - } - else - { - gl.disableVertexAttribArray(i); - } - } - } -}; - -/** -* Sets the current shader. -* -* @method setShader -* @param shader {Any} -*/ -PIXI.WebGLShaderManager.prototype.setShader = function(shader) -{ - if(this._currentId === shader._UID)return false; - - this._currentId = shader._UID; - - this.currentShader = shader; - - this.gl.useProgram(shader.program); - this.setAttribs(shader.attributes); - - return true; -}; - -/** -* Destroys this object. -* -* @method destroy -*/ -PIXI.WebGLShaderManager.prototype.destroy = function() -{ - this.attribState = null; - - this.tempAttribState = null; - - this.primitiveShader.destroy(); - - this.complexPrimitiveShader.destroy(); - - this.defaultShader.destroy(); - - this.fastShader.destroy(); - - this.stripShader.destroy(); - - this.gl = null; -}; - -/** - * @author Mat Groves - * - * Big thanks to the very clever Matt DesLauriers https://github.com/mattdesl/ - * for creating the original pixi version! - * Also a thanks to https://github.com/bchevalier for tweaking the tint and alpha so that they now share 4 bytes on the vertex buffer - * - * Heavily inspired by LibGDX's WebGLSpriteBatch: - * https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/WebGLSpriteBatch.java - */ - - /** - * - * @class WebGLSpriteBatch - * @private - * @constructor - */ -PIXI.WebGLSpriteBatch = function() -{ - /** - * @property vertSize - * @type Number - */ - this.vertSize = 5; - - /** - * The number of images in the SpriteBatch before it flushes - * @property size - * @type Number - */ - this.size = 2000;//Math.pow(2, 16) / this.vertSize; - - //the total number of bytes in our batch - var numVerts = this.size * 4 * 4 * this.vertSize; - //the total number of indices in our batch - var numIndices = this.size * 6; - - /** - * Holds the vertices - * - * @property vertices - * @type ArrayBuffer - */ - this.vertices = new PIXI.ArrayBuffer(numVerts); - - /** - * View on the vertices as a Float32Array - * - * @property positions - * @type Float32Array - */ - this.positions = new PIXI.Float32Array(this.vertices); - - /** - * View on the vertices as a Uint32Array - * - * @property colors - * @type Uint32Array - */ - this.colors = new PIXI.Uint32Array(this.vertices); - - /** - * Holds the indices - * - * @property indices - * @type Uint16Array - */ - this.indices = new PIXI.Uint16Array(numIndices); - - /** - * @property lastIndexCount - * @type Number - */ - this.lastIndexCount = 0; - - for (var i=0, j=0; i < numIndices; i += 6, j += 4) - { - this.indices[i + 0] = j + 0; - this.indices[i + 1] = j + 1; - this.indices[i + 2] = j + 2; - this.indices[i + 3] = j + 0; - this.indices[i + 4] = j + 2; - this.indices[i + 5] = j + 3; - } - - /** - * @property drawing - * @type Boolean - */ - this.drawing = false; - - /** - * @property currentBatchSize - * @type Number - */ - this.currentBatchSize = 0; - - /** - * @property currentBaseTexture - * @type BaseTexture - */ - this.currentBaseTexture = null; - - /** - * @property dirty - * @type Boolean - */ - this.dirty = true; - - /** - * @property textures - * @type Array - */ - this.textures = []; - - /** - * @property blendModes - * @type Array - */ - this.blendModes = []; - - /** - * @property shaders - * @type Array - */ - this.shaders = []; - - /** - * @property sprites - * @type Array - */ - this.sprites = []; - - /** - * @property defaultShader - * @type AbstractFilter - */ - this.defaultShader = new PIXI.AbstractFilter([ - 'precision lowp float;', - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - 'uniform sampler2D uSampler;', - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ]); -}; - -/** -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLSpriteBatch.prototype.setContext = function(gl) -{ - this.gl = gl; - - // create a couple of buffers - this.vertexBuffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - - // 65535 is max index, so 65535 / 6 = 10922. - - //upload the index data - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); - - this.currentBlendMode = 99999; - - var shader = new PIXI.PixiShader(gl); - - shader.fragmentSrc = this.defaultShader.fragmentSrc; - shader.uniforms = {}; - shader.init(); - - this.defaultShader.shaders[gl.id] = shader; -}; - -/** -* @method begin -* @param renderSession {Object} The RenderSession object -*/ -PIXI.WebGLSpriteBatch.prototype.begin = function(renderSession) -{ - this.renderSession = renderSession; - this.shader = this.renderSession.shaderManager.defaultShader; - - this.start(); -}; - -/** -* @method end -*/ -PIXI.WebGLSpriteBatch.prototype.end = function() -{ - this.flush(); -}; - -/** -* @method render -* @param sprite {Sprite} the sprite to render when using this spritebatch -* @param {Matrix} [matrix] - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. -*/ -PIXI.WebGLSpriteBatch.prototype.render = function(sprite, matrix) -{ - var texture = sprite.texture; - - // They provided an alternative rendering matrix, so use it - var wt = sprite.worldTransform; - - if (matrix) - { - wt = matrix; - } - - // check texture.. - if (this.currentBatchSize >= this.size) - { - this.flush(); - this.currentBaseTexture = texture.baseTexture; - } - - // get the uvs for the texture - var uvs = texture._uvs; - - // if the uvs have not updated then no point rendering just yet! - if (!uvs) - { - return; - } - - var aX = sprite.anchor.x; - var aY = sprite.anchor.y; - - var w0, w1, h0, h1; - - if (texture.trim) - { - // if the sprite is trimmed then we need to add the extra space before transforming the sprite coords. - var trim = texture.trim; - - w1 = trim.x - aX * trim.width; - w0 = w1 + texture.crop.width; - - h1 = trim.y - aY * trim.height; - h0 = h1 + texture.crop.height; - } - else - { - w0 = (texture.frame.width) * (1-aX); - w1 = (texture.frame.width) * -aX; - - h0 = texture.frame.height * (1-aY); - h1 = texture.frame.height * -aY; - } - - var i = this.currentBatchSize * 4 * this.vertSize; - var resolution = texture.baseTexture.resolution; - - var a = wt.a / resolution; - var b = wt.b / resolution; - var c = wt.c / resolution; - var d = wt.d / resolution; - var tx = wt.tx; - var ty = wt.ty; - - var colors = this.colors; - var positions = this.positions; - - if (this.renderSession.roundPixels) - { - // xy - positions[i] = a * w1 + c * h1 + tx | 0; - positions[i+1] = d * h1 + b * w1 + ty | 0; - - // xy - positions[i+5] = a * w0 + c * h1 + tx | 0; - positions[i+6] = d * h1 + b * w0 + ty | 0; - - // xy - positions[i+10] = a * w0 + c * h0 + tx | 0; - positions[i+11] = d * h0 + b * w0 + ty | 0; - - // xy - positions[i+15] = a * w1 + c * h0 + tx | 0; - positions[i+16] = d * h0 + b * w1 + ty | 0; - } - else - { - // xy - positions[i] = a * w1 + c * h1 + tx; - positions[i+1] = d * h1 + b * w1 + ty; - - // xy - positions[i+5] = a * w0 + c * h1 + tx; - positions[i+6] = d * h1 + b * w0 + ty; - - // xy - positions[i+10] = a * w0 + c * h0 + tx; - positions[i+11] = d * h0 + b * w0 + ty; - - // xy - positions[i+15] = a * w1 + c * h0 + tx; - positions[i+16] = d * h0 + b * w1 + ty; - } - - // uv - positions[i+2] = uvs.x0; - positions[i+3] = uvs.y0; - - // uv - positions[i+7] = uvs.x1; - positions[i+8] = uvs.y1; - - // uv - positions[i+12] = uvs.x2; - positions[i+13] = uvs.y2; - - // uv - positions[i+17] = uvs.x3; - positions[i+18] = uvs.y3; - - // color and alpha - var tint = sprite.tint; - - colors[i+4] = colors[i+9] = colors[i+14] = colors[i+19] = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (sprite.worldAlpha * 255 << 24); - - // increment the batchsize - this.sprites[this.currentBatchSize++] = sprite; - -}; - -/** -* Renders a TilingSprite using the spriteBatch. -* -* @method renderTilingSprite -* @param sprite {TilingSprite} the sprite to render -*/ -PIXI.WebGLSpriteBatch.prototype.renderTilingSprite = function(sprite) -{ - var texture = sprite.tilingTexture; - - // check texture.. - if (this.currentBatchSize >= this.size) - { - this.flush(); - this.currentBaseTexture = texture.baseTexture; - } - - // set the textures uvs temporarily - if (!sprite._uvs) - { - sprite._uvs = new PIXI.TextureUvs(); - } - - var uvs = sprite._uvs; - - var w = texture.baseTexture.width; - var h = texture.baseTexture.height; - - // var w = sprite._frame.sourceSizeW; - // var h = sprite._frame.sourceSizeH; - - // w = 16; - // h = 16; - - sprite.tilePosition.x %= w * sprite.tileScaleOffset.x; - sprite.tilePosition.y %= h * sprite.tileScaleOffset.y; - - var offsetX = sprite.tilePosition.x / (w * sprite.tileScaleOffset.x); - var offsetY = sprite.tilePosition.y / (h * sprite.tileScaleOffset.y); - - var scaleX = (sprite.width / w) / (sprite.tileScale.x * sprite.tileScaleOffset.x); - var scaleY = (sprite.height / h) / (sprite.tileScale.y * sprite.tileScaleOffset.y); - - uvs.x0 = 0 - offsetX; - uvs.y0 = 0 - offsetY; - - uvs.x1 = (1 * scaleX) - offsetX; - uvs.y1 = 0 - offsetY; - - uvs.x2 = (1 * scaleX) - offsetX; - uvs.y2 = (1 * scaleY) - offsetY; - - uvs.x3 = 0 - offsetX; - uvs.y3 = (1 * scaleY) - offsetY; - - // Get the sprites current alpha and tint and combine them into a single color - var tint = sprite.tint; - var color = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (sprite.worldAlpha * 255 << 24); - - var positions = this.positions; - var colors = this.colors; - - var width = sprite.width; - var height = sprite.height; - - // TODO trim?? - var aX = sprite.anchor.x; - var aY = sprite.anchor.y; - var w0 = width * (1-aX); - var w1 = width * -aX; - - var h0 = height * (1-aY); - var h1 = height * -aY; - - var i = this.currentBatchSize * 4 * this.vertSize; - - var resolution = texture.baseTexture.resolution; - - var wt = sprite.worldTransform; - - var a = wt.a / resolution; - var b = wt.b / resolution; - var c = wt.c / resolution; - var d = wt.d / resolution; - var tx = wt.tx; - var ty = wt.ty; - - // xy - positions[i++] = a * w1 + c * h1 + tx; - positions[i++] = d * h1 + b * w1 + ty; - // uv - positions[i++] = uvs.x0; - positions[i++] = uvs.y0; - // color - colors[i++] = color; - - // xy - positions[i++] = (a * w0 + c * h1 + tx); - positions[i++] = d * h1 + b * w0 + ty; - // uv - positions[i++] = uvs.x1; - positions[i++] = uvs.y1; - // color - colors[i++] = color; - - // xy - positions[i++] = a * w0 + c * h0 + tx; - positions[i++] = d * h0 + b * w0 + ty; - // uv - positions[i++] = uvs.x2; - positions[i++] = uvs.y2; - // color - colors[i++] = color; - - // xy - positions[i++] = a * w1 + c * h0 + tx; - positions[i++] = d * h0 + b * w1 + ty; - // uv - positions[i++] = uvs.x3; - positions[i++] = uvs.y3; - // color - colors[i++] = color; - - // increment the batchsize - this.sprites[this.currentBatchSize++] = sprite; -}; - -/** -* Renders the content and empties the current batch. -* -* @method flush -*/ -PIXI.WebGLSpriteBatch.prototype.flush = function() -{ - // If the batch is length 0 then return as there is nothing to draw - if (this.currentBatchSize === 0) - { - return; - } - - var gl = this.gl; - var shader; - - if (this.dirty) - { - this.dirty = false; - - // bind the main texture - gl.activeTexture(gl.TEXTURE0); - - // bind the buffers - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - - shader = this.defaultShader.shaders[gl.id]; - - // this is the same for each shader? - var stride = this.vertSize * 4; - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, stride, 0); - gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, stride, 2 * 4); - - // color attributes will be interpreted as unsigned bytes and normalized - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.UNSIGNED_BYTE, true, stride, 4 * 4); - } - - // upload the verts to the buffer - if (this.currentBatchSize > (this.size * 0.5)) - { - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertices); - } - else - { - var view = this.positions.subarray(0, this.currentBatchSize * 4 * this.vertSize); - gl.bufferSubData(gl.ARRAY_BUFFER, 0, view); - } - - var nextTexture, nextBlendMode, nextShader; - var batchSize = 0; - var start = 0; - - var currentBaseTexture = null; - var currentBlendMode = this.renderSession.blendModeManager.currentBlendMode; - var currentShader = null; - - var blendSwap = false; - var shaderSwap = false; - var sprite; - - for (var i = 0, j = this.currentBatchSize; i < j; i++) { - - sprite = this.sprites[i]; - - if (sprite.tilingTexture) - { - nextTexture = sprite.tilingTexture.baseTexture; - } - else - { - nextTexture = sprite.texture.baseTexture; - } - - nextBlendMode = sprite.blendMode; - nextShader = sprite.shader || this.defaultShader; - - blendSwap = currentBlendMode !== nextBlendMode; - shaderSwap = currentShader !== nextShader; // should I use _UIDS??? - - var skip = nextTexture.skipRender; - - if (skip && sprite.children.length > 0) - { - skip = false; - } - - if ((currentBaseTexture !== nextTexture && !skip) || blendSwap || shaderSwap) - { - this.renderBatch(currentBaseTexture, batchSize, start); - - start = i; - batchSize = 0; - currentBaseTexture = nextTexture; - - if (blendSwap) - { - currentBlendMode = nextBlendMode; - this.renderSession.blendModeManager.setBlendMode(currentBlendMode); - } - - if (shaderSwap) - { - currentShader = nextShader; - - shader = currentShader.shaders[gl.id]; - - if (!shader) - { - shader = new PIXI.PixiShader(gl); - - shader.fragmentSrc = currentShader.fragmentSrc; - shader.uniforms = currentShader.uniforms; - shader.init(); - - currentShader.shaders[gl.id] = shader; - } - - // set shader function??? - this.renderSession.shaderManager.setShader(shader); - - if (shader.dirty) - { - shader.syncUniforms(); - } - - // both these only need to be set if they are changing.. - // set the projection - var projection = this.renderSession.projection; - gl.uniform2f(shader.projectionVector, projection.x, projection.y); - - // TODO - this is temporary! - var offsetVector = this.renderSession.offset; - gl.uniform2f(shader.offsetVector, offsetVector.x, offsetVector.y); - - // set the pointers - } - } - - batchSize++; - } - - this.renderBatch(currentBaseTexture, batchSize, start); - - // then reset the batch! - this.currentBatchSize = 0; -}; - -/** -* @method renderBatch -* @param texture {Texture} -* @param size {Number} -* @param startIndex {Number} -*/ -PIXI.WebGLSpriteBatch.prototype.renderBatch = function(texture, size, startIndex) -{ - if (size === 0) - { - return; - } - - var gl = this.gl; - - // check if a texture is dirty.. - if (texture._dirty[gl.id]) - { - if (!this.renderSession.renderer.updateTexture(texture)) - { - // If updateTexture returns false then we cannot render it, so bail out now - return; - } - } - else - { - // bind the current texture - gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]); - } - - // now draw those suckas! - gl.drawElements(gl.TRIANGLES, size * 6, gl.UNSIGNED_SHORT, startIndex * 6 * 2); - - // increment the draw count - this.renderSession.drawCount++; -}; - -/** -* @method stop -*/ -PIXI.WebGLSpriteBatch.prototype.stop = function() -{ - this.flush(); - this.dirty = true; -}; - -/** -* @method start -*/ -PIXI.WebGLSpriteBatch.prototype.start = function() -{ - this.dirty = true; -}; - -/** -* Destroys the SpriteBatch. -* -* @method destroy -*/ -PIXI.WebGLSpriteBatch.prototype.destroy = function() -{ - this.vertices = null; - this.indices = null; - - this.gl.deleteBuffer(this.vertexBuffer); - this.gl.deleteBuffer(this.indexBuffer); - - this.currentBaseTexture = null; - - this.gl = null; -}; -/** - * @author Mat Groves - * - * Big thanks to the very clever Matt DesLauriers https://github.com/mattdesl/ - * for creating the original pixi version! - * - * Heavily inspired by LibGDX's WebGLSpriteBatch: - * https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/WebGLSpriteBatch.java - */ - -/** -* @class WebGLFastSpriteBatch -* @constructor -*/ -PIXI.WebGLFastSpriteBatch = function(gl) -{ - /** - * @property vertSize - * @type Number - */ - this.vertSize = 10; - - /** - * @property maxSize - * @type Number - */ - this.maxSize = 6000;//Math.pow(2, 16) / this.vertSize; - - /** - * @property size - * @type Number - */ - this.size = this.maxSize; - - //the total number of floats in our batch - var numVerts = this.size * 4 * this.vertSize; - - //the total number of indices in our batch - var numIndices = this.maxSize * 6; - - /** - * Vertex data - * @property vertices - * @type Float32Array - */ - this.vertices = new PIXI.Float32Array(numVerts); - - /** - * Index data - * @property indices - * @type Uint16Array - */ - this.indices = new PIXI.Uint16Array(numIndices); - - /** - * @property vertexBuffer - * @type Object - */ - this.vertexBuffer = null; - - /** - * @property indexBuffer - * @type Object - */ - this.indexBuffer = null; - - /** - * @property lastIndexCount - * @type Number - */ - this.lastIndexCount = 0; - - for (var i=0, j=0; i < numIndices; i += 6, j += 4) - { - this.indices[i + 0] = j + 0; - this.indices[i + 1] = j + 1; - this.indices[i + 2] = j + 2; - this.indices[i + 3] = j + 0; - this.indices[i + 4] = j + 2; - this.indices[i + 5] = j + 3; - } - - /** - * @property drawing - * @type Boolean - */ - this.drawing = false; - - /** - * @property currentBatchSize - * @type Number - */ - this.currentBatchSize = 0; - - /** - * @property currentBaseTexture - * @type BaseTexture - */ - this.currentBaseTexture = null; - - /** - * @property currentBlendMode - * @type Number - */ - this.currentBlendMode = 0; - - /** - * @property renderSession - * @type Object - */ - this.renderSession = null; - - /** - * @property shader - * @type Object - */ - this.shader = null; - - /** - * @property matrix - * @type Matrix - */ - this.matrix = null; - - this.setContext(gl); -}; - -PIXI.WebGLFastSpriteBatch.prototype.constructor = PIXI.WebGLFastSpriteBatch; - -/** - * Sets the WebGL Context. - * - * @method setContext - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLFastSpriteBatch.prototype.setContext = function(gl) -{ - this.gl = gl; - - // create a couple of buffers - this.vertexBuffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - - // 65535 is max index, so 65535 / 6 = 10922. - - //upload the index data - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); -}; - -/** - * @method begin - * @param spriteBatch {WebGLSpriteBatch} - * @param renderSession {Object} - */ -PIXI.WebGLFastSpriteBatch.prototype.begin = function(spriteBatch, renderSession) -{ - this.renderSession = renderSession; - this.shader = this.renderSession.shaderManager.fastShader; - - this.matrix = spriteBatch.worldTransform.toArray(true); - - this.start(); -}; - -/** - * @method end - */ -PIXI.WebGLFastSpriteBatch.prototype.end = function() -{ - this.flush(); -}; - -/** - * @method render - * @param spriteBatch {WebGLSpriteBatch} - */ -PIXI.WebGLFastSpriteBatch.prototype.render = function(spriteBatch) -{ - var children = spriteBatch.children; - var sprite = children[0]; - - // if the uvs have not updated then no point rendering just yet! - - // check texture. - if(!sprite.texture._uvs)return; - - this.currentBaseTexture = sprite.texture.baseTexture; - - // check blend mode - if(sprite.blendMode !== this.renderSession.blendModeManager.currentBlendMode) - { - this.flush(); - this.renderSession.blendModeManager.setBlendMode(sprite.blendMode); - } - - for(var i=0,j= children.length; i= this.size) - { - this.flush(); - } -}; - -/** - * @method flush - */ -PIXI.WebGLFastSpriteBatch.prototype.flush = function() -{ - // If the batch is length 0 then return as there is nothing to draw - if (this.currentBatchSize===0)return; - - var gl = this.gl; - - // bind the current texture - - if(!this.currentBaseTexture._glTextures[gl.id])this.renderSession.renderer.updateTexture(this.currentBaseTexture, gl); - - gl.bindTexture(gl.TEXTURE_2D, this.currentBaseTexture._glTextures[gl.id]); - - // upload the verts to the buffer - - if(this.currentBatchSize > ( this.size * 0.5 ) ) - { - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertices); - } - else - { - var view = this.vertices.subarray(0, this.currentBatchSize * 4 * this.vertSize); - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, view); - } - - // now draw those suckas! - gl.drawElements(gl.TRIANGLES, this.currentBatchSize * 6, gl.UNSIGNED_SHORT, 0); - - // then reset the batch! - this.currentBatchSize = 0; - - // increment the draw count - this.renderSession.drawCount++; -}; - - -/** - * @method stop - */ -PIXI.WebGLFastSpriteBatch.prototype.stop = function() -{ - this.flush(); -}; - -/** - * @method start - */ -PIXI.WebGLFastSpriteBatch.prototype.start = function() -{ - var gl = this.gl; - - // bind the main texture - gl.activeTexture(gl.TEXTURE0); - - // bind the buffers - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - - // set the projection - var projection = this.renderSession.projection; - gl.uniform2f(this.shader.projectionVector, projection.x, projection.y); - - // set the matrix - gl.uniformMatrix3fv(this.shader.uMatrix, false, this.matrix); - - // set the pointers - var stride = this.vertSize * 4; - - gl.vertexAttribPointer(this.shader.aVertexPosition, 2, gl.FLOAT, false, stride, 0); - gl.vertexAttribPointer(this.shader.aPositionCoord, 2, gl.FLOAT, false, stride, 2 * 4); - gl.vertexAttribPointer(this.shader.aScale, 2, gl.FLOAT, false, stride, 4 * 4); - gl.vertexAttribPointer(this.shader.aRotation, 1, gl.FLOAT, false, stride, 6 * 4); - gl.vertexAttribPointer(this.shader.aTextureCoord, 2, gl.FLOAT, false, stride, 7 * 4); - gl.vertexAttribPointer(this.shader.colorAttribute, 1, gl.FLOAT, false, stride, 9 * 4); - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLFilterManager -* @constructor -*/ -PIXI.WebGLFilterManager = function() -{ - /** - * @property filterStack - * @type Array - */ - this.filterStack = []; - - /** - * @property offsetX - * @type Number - */ - this.offsetX = 0; - - /** - * @property offsetY - * @type Number - */ - this.offsetY = 0; -}; - -PIXI.WebGLFilterManager.prototype.constructor = PIXI.WebGLFilterManager; - -/** -* Initialises the context and the properties. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLFilterManager.prototype.setContext = function(gl) -{ - this.gl = gl; - this.texturePool = []; - - this.initShaderBuffers(); -}; - -/** -* @method begin -* @param renderSession {RenderSession} -* @param buffer {ArrayBuffer} -*/ -PIXI.WebGLFilterManager.prototype.begin = function(renderSession, buffer) -{ - this.renderSession = renderSession; - this.defaultShader = renderSession.shaderManager.defaultShader; - - var projection = this.renderSession.projection; - this.width = projection.x * 2; - this.height = -projection.y * 2; - this.buffer = buffer; -}; - -/** -* Applies the filter and adds it to the current filter stack. -* -* @method pushFilter -* @param filterBlock {Object} the filter that will be pushed to the current filter stack -*/ -PIXI.WebGLFilterManager.prototype.pushFilter = function(filterBlock) -{ - var gl = this.gl; - - var projection = this.renderSession.projection; - var offset = this.renderSession.offset; - - filterBlock._filterArea = filterBlock.target.filterArea || filterBlock.target.getBounds(); - - // >>> modify by nextht - filterBlock._previous_stencil_mgr = this.renderSession.stencilManager; - this.renderSession.stencilManager = new PIXI.WebGLStencilManager(); - this.renderSession.stencilManager.setContext(gl); - gl.disable(gl.STENCIL_TEST); - // <<< modify by nextht - - // filter program - // OPTIMISATION - the first filter is free if its a simple color change? - this.filterStack.push(filterBlock); - - var filter = filterBlock.filterPasses[0]; - - this.offsetX += filterBlock._filterArea.x; - this.offsetY += filterBlock._filterArea.y; - - var texture = this.texturePool.pop(); - if(!texture) - { - texture = new PIXI.FilterTexture(this.gl, this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - } - else - { - texture.resize(this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - } - - gl.bindTexture(gl.TEXTURE_2D, texture.texture); - - var filterArea = filterBlock._filterArea;// filterBlock.target.getBounds();///filterBlock.target.filterArea; - - var padding = filter.padding; - filterArea.x -= padding; - filterArea.y -= padding; - filterArea.width += padding * 2; - filterArea.height += padding * 2; - - // cap filter to screen size.. - if(filterArea.x < 0)filterArea.x = 0; - if(filterArea.width > this.width)filterArea.width = this.width; - if(filterArea.y < 0)filterArea.y = 0; - if(filterArea.height > this.height)filterArea.height = this.height; - - //gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, filterArea.width, filterArea.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); - gl.bindFramebuffer(gl.FRAMEBUFFER, texture.frameBuffer); - - // set view port - gl.viewport(0, 0, filterArea.width * this.renderSession.resolution, filterArea.height * this.renderSession.resolution); - - projection.x = filterArea.width/2; - projection.y = -filterArea.height/2; - - offset.x = -filterArea.x; - offset.y = -filterArea.y; - - // update projection - // now restore the regular shader.. - // this.renderSession.shaderManager.setShader(this.defaultShader); - //gl.uniform2f(this.defaultShader.projectionVector, filterArea.width/2, -filterArea.height/2); - //gl.uniform2f(this.defaultShader.offsetVector, -filterArea.x, -filterArea.y); - - gl.colorMask(true, true, true, true); - gl.clearColor(0,0,0, 0); - gl.clear(gl.COLOR_BUFFER_BIT); - - filterBlock._glFilterTexture = texture; - -}; - -/** -* Removes the last filter from the filter stack and doesn't return it. -* -* @method popFilter -*/ -PIXI.WebGLFilterManager.prototype.popFilter = function() -{ - var gl = this.gl; - var filterBlock = this.filterStack.pop(); - var filterArea = filterBlock._filterArea; - var texture = filterBlock._glFilterTexture; - var projection = this.renderSession.projection; - var offset = this.renderSession.offset; - - if(filterBlock.filterPasses.length > 1) - { - gl.viewport(0, 0, filterArea.width * this.renderSession.resolution, filterArea.height * this.renderSession.resolution); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - - this.vertexArray[0] = 0; - this.vertexArray[1] = filterArea.height; - - this.vertexArray[2] = filterArea.width; - this.vertexArray[3] = filterArea.height; - - this.vertexArray[4] = 0; - this.vertexArray[5] = 0; - - this.vertexArray[6] = filterArea.width; - this.vertexArray[7] = 0; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertexArray); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - // now set the uvs.. - this.uvArray[2] = filterArea.width/this.width; - this.uvArray[5] = filterArea.height/this.height; - this.uvArray[6] = filterArea.width/this.width; - this.uvArray[7] = filterArea.height/this.height; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.uvArray); - - var inputTexture = texture; - var outputTexture = this.texturePool.pop(); - if(!outputTexture)outputTexture = new PIXI.FilterTexture(this.gl, this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - outputTexture.resize(this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - - // need to clear this FBO as it may have some left over elements from a previous filter. - gl.bindFramebuffer(gl.FRAMEBUFFER, outputTexture.frameBuffer ); - gl.clear(gl.COLOR_BUFFER_BIT); - - gl.disable(gl.BLEND); - - for (var i = 0; i < filterBlock.filterPasses.length-1; i++) - { - var filterPass = filterBlock.filterPasses[i]; - - gl.bindFramebuffer(gl.FRAMEBUFFER, outputTexture.frameBuffer ); - - // set texture - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, inputTexture.texture); - - // draw texture.. - //filterPass.applyFilterPass(filterArea.width, filterArea.height); - this.applyFilterPass(filterPass, filterArea, filterArea.width, filterArea.height); - - // swap the textures.. - var temp = inputTexture; - inputTexture = outputTexture; - outputTexture = temp; - } - - gl.enable(gl.BLEND); - - texture = inputTexture; - this.texturePool.push(outputTexture); - } - - var filter = filterBlock.filterPasses[filterBlock.filterPasses.length-1]; - - this.offsetX -= filterArea.x; - this.offsetY -= filterArea.y; - - var sizeX = this.width; - var sizeY = this.height; - - var offsetX = 0; - var offsetY = 0; - - var buffer = this.buffer; - - // time to render the filters texture to the previous scene - if(this.filterStack.length === 0) - { - gl.colorMask(true, true, true, true);//this.transparent); - } - else - { - var currentFilter = this.filterStack[this.filterStack.length-1]; - filterArea = currentFilter._filterArea; - - sizeX = filterArea.width; - sizeY = filterArea.height; - - offsetX = filterArea.x; - offsetY = filterArea.y; - - buffer = currentFilter._glFilterTexture.frameBuffer; - } - - // TODO need to remove these global elements.. - projection.x = sizeX/2; - projection.y = -sizeY/2; - - offset.x = offsetX; - offset.y = offsetY; - - filterArea = filterBlock._filterArea; - - var x = filterArea.x-offsetX; - var y = filterArea.y-offsetY; - - // update the buffers.. - // make sure to flip the y! - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - - this.vertexArray[0] = x; - this.vertexArray[1] = y + filterArea.height; - - this.vertexArray[2] = x + filterArea.width; - this.vertexArray[3] = y + filterArea.height; - - this.vertexArray[4] = x; - this.vertexArray[5] = y; - - this.vertexArray[6] = x + filterArea.width; - this.vertexArray[7] = y; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertexArray); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - - this.uvArray[2] = filterArea.width/this.width; - this.uvArray[5] = filterArea.height/this.height; - this.uvArray[6] = filterArea.width/this.width; - this.uvArray[7] = filterArea.height/this.height; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.uvArray); - - gl.viewport(0, 0, sizeX * this.renderSession.resolution, sizeY * this.renderSession.resolution); - - // bind the buffer - gl.bindFramebuffer(gl.FRAMEBUFFER, buffer ); - - // set the blend mode! - //gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA) - - // set texture - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, texture.texture); - - // >>> modify by nextht - if (this.renderSession.stencilManager) { - this.renderSession.stencilManager.destroy(); - } - this.renderSession.stencilManager = filterBlock._previous_stencil_mgr; - filterBlock._previous_stencil_mgr = null; - if (this.renderSession.stencilManager.count > 0) { - gl.enable(gl.STENCIL_TEST); - } - else { - gl.disable(gl.STENCIL_TEST); - } - // <<< modify by nextht - - // apply! - this.applyFilterPass(filter, filterArea, sizeX, sizeY); - - // now restore the regular shader.. should happen automatically now.. - // this.renderSession.shaderManager.setShader(this.defaultShader); - // gl.uniform2f(this.defaultShader.projectionVector, sizeX/2, -sizeY/2); - // gl.uniform2f(this.defaultShader.offsetVector, -offsetX, -offsetY); - - // return the texture to the pool - this.texturePool.push(texture); - filterBlock._glFilterTexture = null; -}; - - -/** -* Applies the filter to the specified area. -* -* @method applyFilterPass -* @param filter {AbstractFilter} the filter that needs to be applied -* @param filterArea {Texture} TODO - might need an update -* @param width {Number} the horizontal range of the filter -* @param height {Number} the vertical range of the filter -*/ -PIXI.WebGLFilterManager.prototype.applyFilterPass = function(filter, filterArea, width, height) -{ - // use program - var gl = this.gl; - var shader = filter.shaders[gl.id]; - - if(!shader) - { - shader = new PIXI.PixiShader(gl); - - shader.fragmentSrc = filter.fragmentSrc; - shader.uniforms = filter.uniforms; - shader.init(); - - filter.shaders[gl.id] = shader; - } - - // set the shader - this.renderSession.shaderManager.setShader(shader); - -// gl.useProgram(shader.program); - - gl.uniform2f(shader.projectionVector, width/2, -height/2); - gl.uniform2f(shader.offsetVector, 0,0); - - if(filter.uniforms.dimensions) - { - filter.uniforms.dimensions.value[0] = this.width;//width; - filter.uniforms.dimensions.value[1] = this.height;//height; - filter.uniforms.dimensions.value[2] = this.vertexArray[0]; - filter.uniforms.dimensions.value[3] = this.vertexArray[5];//filterArea.height; - } - - shader.syncUniforms(); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer); - gl.vertexAttribPointer(shader.colorAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - - // draw the filter... - gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); - - this.renderSession.drawCount++; -}; - -/** -* Initialises the shader buffers. -* -* @method initShaderBuffers -*/ -PIXI.WebGLFilterManager.prototype.initShaderBuffers = function() -{ - var gl = this.gl; - - // create some buffers - this.vertexBuffer = gl.createBuffer(); - this.uvBuffer = gl.createBuffer(); - this.colorBuffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - - // bind and upload the vertexs.. - // keep a reference to the vertexFloatData.. - this.vertexArray = new PIXI.Float32Array([0.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 1.0, 1.0]); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertexArray, gl.STATIC_DRAW); - - // bind and upload the uv buffer - this.uvArray = new PIXI.Float32Array([0.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 1.0, 1.0]); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.uvArray, gl.STATIC_DRAW); - - this.colorArray = new PIXI.Float32Array([1.0, 0xFFFFFF, - 1.0, 0xFFFFFF, - 1.0, 0xFFFFFF, - 1.0, 0xFFFFFF]); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.colorArray, gl.STATIC_DRAW); - - // bind and upload the index - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([0, 1, 2, 1, 3, 2]), gl.STATIC_DRAW); - -}; - -/** -* Destroys the filter and removes it from the filter stack. -* -* @method destroy -*/ -PIXI.WebGLFilterManager.prototype.destroy = function() -{ - var gl = this.gl; - - this.filterStack = null; - - this.offsetX = 0; - this.offsetY = 0; - - // destroy textures - for (var i = 0; i < this.texturePool.length; i++) { - this.texturePool[i].destroy(); - } - - this.texturePool = null; - - //destroy buffers.. - gl.deleteBuffer(this.vertexBuffer); - gl.deleteBuffer(this.uvBuffer); - gl.deleteBuffer(this.colorBuffer); - gl.deleteBuffer(this.indexBuffer); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class FilterTexture -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -* @param width {Number} the horizontal range of the filter -* @param height {Number} the vertical range of the filter -* @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -*/ -PIXI.FilterTexture = function(gl, width, height, scaleMode) -{ - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - // next time to create a frame buffer and texture - - /** - * @property frameBuffer - * @type Any - */ - this.frameBuffer = gl.createFramebuffer(); - - /** - * @property texture - * @type Any - */ - this.texture = gl.createTexture(); - - /** - * @property scaleMode - * @type Number - */ - scaleMode = scaleMode || PIXI.scaleModes.DEFAULT; - - gl.bindTexture(gl.TEXTURE_2D, this.texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffer ); - - gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffer ); - gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.texture, 0); - - // required for masking a mask?? - this.renderBuffer = gl.createRenderbuffer(); - gl.bindRenderbuffer(gl.RENDERBUFFER, this.renderBuffer); - gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, this.renderBuffer); - - this.resize(width, height); -}; - -PIXI.FilterTexture.prototype.constructor = PIXI.FilterTexture; - -/** -* Clears the filter texture. -* -* @method clear -*/ -PIXI.FilterTexture.prototype.clear = function() -{ - var gl = this.gl; - - gl.clearColor(0,0,0, 0); - gl.clear(gl.COLOR_BUFFER_BIT); -}; - -/** - * Resizes the texture to the specified width and height - * - * @method resize - * @param width {Number} the new width of the texture - * @param height {Number} the new height of the texture - */ -PIXI.FilterTexture.prototype.resize = function(width, height) -{ - if(this.width === width && this.height === height) return; - - this.width = width; - this.height = height; - - var gl = this.gl; - - gl.bindTexture(gl.TEXTURE_2D, this.texture); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width , height , 0, gl.RGBA, gl.UNSIGNED_BYTE, null); - // update the stencil buffer width and height - gl.bindRenderbuffer(gl.RENDERBUFFER, this.renderBuffer); - gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width , height ); -}; - -/** -* Destroys the filter texture. -* -* @method destroy -*/ -PIXI.FilterTexture.prototype.destroy = function() -{ - var gl = this.gl; - gl.deleteFramebuffer( this.frameBuffer ); - gl.deleteTexture( this.texture ); - - this.frameBuffer = null; - this.texture = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * Creates a Canvas element of the given size. - * - * @class CanvasBuffer - * @constructor - * @param width {Number} the width for the newly created canvas - * @param height {Number} the height for the newly created canvas - */ -PIXI.CanvasBuffer = function(width, height) -{ - /** - * The width of the Canvas in pixels. - * - * @property width - * @type Number - */ - this.width = width; - - /** - * The height of the Canvas in pixels. - * - * @property height - * @type Number - */ - this.height = height; - - /** - * The Canvas object that belongs to this CanvasBuffer. - * - * @property canvas - * @type HTMLCanvasElement - */ - this.canvas = PIXI.CanvasPool.create(this, this.width, this.height); - - /** - * A CanvasRenderingContext2D object representing a two-dimensional rendering context. - * - * @property context - * @type CanvasRenderingContext2D - */ - this.context = this.canvas.getContext("2d"); - - this.canvas.width = width; - this.canvas.height = height; -}; - -PIXI.CanvasBuffer.prototype.constructor = PIXI.CanvasBuffer; - -/** - * Clears the canvas that was created by the CanvasBuffer class. - * - * @method clear - * @private - */ -PIXI.CanvasBuffer.prototype.clear = function() -{ - this.context.setTransform(1, 0, 0, 1, 0, 0); - this.context.clearRect(0,0, this.width, this.height); -}; - -/** - * Resizes the canvas to the specified width and height. - * - * @method resize - * @param width {Number} the new width of the canvas - * @param height {Number} the new height of the canvas - */ -PIXI.CanvasBuffer.prototype.resize = function(width, height) -{ - this.width = this.canvas.width = width; - this.height = this.canvas.height = height; -}; - -/** - * Frees the canvas up for use again. - * - * @method destroy - */ -PIXI.CanvasBuffer.prototype.destroy = function() -{ - PIXI.CanvasPool.remove(this); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A set of functions used to handle masking. - * - * @class CanvasMaskManager - * @constructor - */ -PIXI.CanvasMaskManager = function() -{ -}; - -PIXI.CanvasMaskManager.prototype.constructor = PIXI.CanvasMaskManager; - -/** - * This method adds it to the current stack of masks. - * - * @method pushMask - * @param maskData {Object} the maskData that will be pushed - * @param renderSession {Object} The renderSession whose context will be used for this mask manager. - */ -PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) { - - var context = renderSession.context; - - context.save(); - - var cacheAlpha = maskData.alpha; - var transform = maskData.worldTransform; - - var resolution = renderSession.resolution; - - context.setTransform(transform.a * resolution, - transform.b * resolution, - transform.c * resolution, - transform.d * resolution, - transform.tx * resolution, - transform.ty * resolution); - - PIXI.CanvasGraphics.renderGraphicsMask(maskData, context); - - context.clip(); - - maskData.worldAlpha = cacheAlpha; -}; - -/** - * Restores the current drawing context to the state it was before the mask was applied. - * - * @method popMask - * @param renderSession {Object} The renderSession whose context will be used for this mask manager. - */ -PIXI.CanvasMaskManager.prototype.popMask = function(renderSession) -{ - renderSession.context.restore(); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * Utility methods for Sprite/Texture tinting. - * - * @class CanvasTinter - * @static - */ -PIXI.CanvasTinter = function() {}; - -/** - * Basically this method just needs a sprite and a color and tints the sprite with the given color. - * - * @method getTintedTexture - * @static - * @param sprite {Sprite} the sprite to tint - * @param color {Number} the color to use to tint the sprite with - * @return {HTMLCanvasElement} The tinted canvas - */ -PIXI.CanvasTinter.getTintedTexture = function(sprite, color) -{ - var canvas = sprite.tintedTexture || PIXI.CanvasPool.create(this); - - PIXI.CanvasTinter.tintMethod(sprite.texture, color, canvas); - - return canvas; -}; - -/** - * Tint a texture using the "multiply" operation. - * - * @method tintWithMultiply - * @static - * @param texture {Texture} the texture to tint - * @param color {Number} the color to use to tint the sprite with - * @param canvas {HTMLCanvasElement} the current canvas - */ -PIXI.CanvasTinter.tintWithMultiply = function(texture, color, canvas) -{ - var context = canvas.getContext("2d"); - - var crop = texture.crop; - - if (canvas.width !== crop.width || canvas.height !== crop.height) - { - canvas.width = crop.width; - canvas.height = crop.height; - } - - context.clearRect(0, 0, crop.width, crop.height); - - context.fillStyle = "#" + ("00000" + (color | 0).toString(16)).substr(-6); - context.fillRect(0, 0, crop.width, crop.height); - - context.globalCompositeOperation = "multiply"; - context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); - - context.globalCompositeOperation = "destination-atop"; - context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); - -}; - -/** - * Tint a texture pixel per pixel. - * - * @method tintPerPixel - * @static - * @param texture {Texture} the texture to tint - * @param color {Number} the color to use to tint the sprite with - * @param canvas {HTMLCanvasElement} the current canvas - */ -PIXI.CanvasTinter.tintWithPerPixel = function(texture, color, canvas) -{ - var context = canvas.getContext("2d"); - - var crop = texture.crop; - - canvas.width = crop.width; - canvas.height = crop.height; - - context.globalCompositeOperation = "copy"; - - context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); - - var rgbValues = PIXI.hex2rgb(color); - var r = rgbValues[0], g = rgbValues[1], b = rgbValues[2]; - - var pixelData = context.getImageData(0, 0, crop.width, crop.height); - - var pixels = pixelData.data; - - for (var i = 0; i < pixels.length; i += 4) - { - pixels[i + 0] *= r; - pixels[i + 1] *= g; - pixels[i + 2] *= b; - - if (!PIXI.CanvasTinter.canHandleAlpha) - { - var alpha = pixels[i + 3]; - - pixels[i + 0] /= 255 / alpha; - pixels[i + 1] /= 255 / alpha; - pixels[i + 2] /= 255 / alpha; - } - } - - context.putImageData(pixelData, 0, 0); -}; - -/** - * Checks if the browser correctly supports putImageData alpha channels. - * - * @method checkInverseAlpha - * @static - */ -PIXI.CanvasTinter.checkInverseAlpha = function() -{ - var canvas = new PIXI.CanvasBuffer(2, 1); - - canvas.context.fillStyle = "rgba(10, 20, 30, 0.5)"; - - // Draw a single pixel - canvas.context.fillRect(0, 0, 1, 1); - - // Get the color values - var s1 = canvas.context.getImageData(0, 0, 1, 1); - - if (s1 === null) - { - return false; - } - - // Plot them to x2 - canvas.context.putImageData(s1, 1, 0); - - // Get those values - var s2 = canvas.context.getImageData(1, 0, 1, 1); - - // Compare and return - return (s2.data[0] === s1.data[0] && s2.data[1] === s1.data[1] && s2.data[2] === s1.data[2] && s2.data[3] === s1.data[3]); -}; - -/** - * If the browser isn't capable of handling tinting with alpha this will be false. - * This property is only applicable if using tintWithPerPixel. - * - * @property canHandleAlpha - * @type Boolean - * @static - */ -PIXI.CanvasTinter.canHandleAlpha = PIXI.CanvasTinter.checkInverseAlpha(); - -/** - * Whether or not the Canvas BlendModes are supported, consequently the ability to tint using the multiply method. - * - * @property canUseMultiply - * @type Boolean - * @static - */ -PIXI.CanvasTinter.canUseMultiply = PIXI.canUseNewCanvasBlendModes(); - -/** - * The tinting method that will be used. - * - * @method tintMethod - * @static - */ -PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTinter.tintWithMultiply : PIXI.CanvasTinter.tintWithPerPixel; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * The CanvasRenderer draws the Stage and all its content onto a 2d canvas. This renderer should be used for browsers that do not support webGL. - * Don't forget to add the CanvasRenderer.view to your DOM or you will not see anything :) - * - * @class CanvasRenderer - * @constructor - * @param game {Phaser.Game} A reference to the Phaser Game instance - */ -PIXI.CanvasRenderer = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the Phaser Game instance. - */ - this.game = game; - - if (!PIXI.defaultRenderer) - { - PIXI.defaultRenderer = this; - } - - /** - * The renderer type. - * - * @property type - * @type Number - */ - this.type = PIXI.CANVAS_RENDERER; - - /** - * The resolution of the canvas. - * - * @property resolution - * @type Number - */ - this.resolution = game.resolution; - - /** - * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. - * If the Stage is NOT transparent Pixi will use a canvas sized fillRect operation every frame to set the canvas background color. - * If the Stage is transparent Pixi will use clearRect to clear the canvas every frame. - * Disable this by setting this to false. For example if your game has a canvas filling background image you often don't need this set. - * - * @property clearBeforeRender - * @type Boolean - * @default - */ - this.clearBeforeRender = game.clearBeforeRender; - - /** - * Whether the render view is transparent - * - * @property transparent - * @type Boolean - */ - this.transparent = game.transparent; - - /** - * Whether the render view should be resized automatically - * - * @property autoResize - * @type Boolean - */ - this.autoResize = false; - - /** - * The width of the canvas view - * - * @property width - * @type Number - * @default 800 - */ - this.width = game.width * this.resolution; - - /** - * The height of the canvas view - * - * @property height - * @type Number - * @default 600 - */ - this.height = game.height * this.resolution; - - /** - * The canvas element that everything is drawn to. - * - * @property view - * @type HTMLCanvasElement - */ - this.view = game.canvas; - - /** - * The canvas 2d context that everything is drawn with - * @property context - * @type CanvasRenderingContext2D - */ - this.context = this.view.getContext("2d", { alpha: this.transparent } ); - - /** - * Boolean flag controlling canvas refresh. - * - * @property refresh - * @type Boolean - */ - this.refresh = true; - - /** - * Internal var. - * - * @property count - * @type Number - */ - this.count = 0; - - /** - * Instance of a PIXI.CanvasMaskManager, handles masking when using the canvas renderer - * @property CanvasMaskManager - * @type CanvasMaskManager - */ - this.maskManager = new PIXI.CanvasMaskManager(); - - /** - * The render session is just a bunch of parameter used for rendering - * @property renderSession - * @type Object - */ - this.renderSession = { - context: this.context, - maskManager: this.maskManager, - scaleMode: null, - smoothProperty: Phaser.Canvas.getSmoothingPrefix(this.context), - - /** - * If true Pixi will Math.floor() x/y values when rendering, stopping pixel interpolation. - * Handy for crisp pixel art and speed on legacy devices. - */ - roundPixels: false - }; - - this.mapBlendModes(); - - this.resize(this.width, this.height); - -}; - -// constructor -PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer; - -/** - * Renders the Stage to this canvas view - * - * @method render - * @param stage {Stage} the Stage element to be rendered - */ -PIXI.CanvasRenderer.prototype.render = function (stage) { - - this.context.setTransform(1, 0, 0, 1, 0, 0); - - this.context.globalAlpha = 1; - - this.renderSession.currentBlendMode = 0; - this.renderSession.shakeX = this.game.camera._shake.x; - this.renderSession.shakeY = this.game.camera._shake.y; - - this.context.globalCompositeOperation = 'source-over'; - - if (navigator.isCocoonJS && this.view.screencanvas) - { - this.context.fillStyle = "black"; - this.context.clear(); - } - - if (this.clearBeforeRender) - { - if (this.transparent) - { - this.context.clearRect(0, 0, this.width, this.height); - } - else - { - this.context.fillStyle = stage._bgColor.rgba; - this.context.fillRect(0, 0, this.width , this.height); - } - } - - this.renderDisplayObject(stage); - -}; - -/** - * Removes everything from the renderer and optionally removes the Canvas DOM element. - * - * @method destroy - * @param [removeView=true] {boolean} Removes the Canvas element from the DOM. - */ -PIXI.CanvasRenderer.prototype.destroy = function (removeView) { - - if (removeView === undefined) { removeView = true; } - - if (removeView && this.view.parent) - { - this.view.parent.removeChild(this.view); - } - - this.view = null; - this.context = null; - this.maskManager = null; - this.renderSession = null; - -}; - -/** - * Resizes the canvas view to the specified width and height - * - * @method resize - * @param width {Number} the new width of the canvas view - * @param height {Number} the new height of the canvas view - */ -PIXI.CanvasRenderer.prototype.resize = function (width, height) { - - this.width = width * this.resolution; - this.height = height * this.resolution; - - this.view.width = this.width; - this.view.height = this.height; - - if (this.autoResize) - { - this.view.style.width = this.width / this.resolution + "px"; - this.view.style.height = this.height / this.resolution + "px"; - } - - if (this.renderSession.smoothProperty) - { - this.context[this.renderSession.smoothProperty] = (this.renderSession.scaleMode === PIXI.scaleModes.LINEAR); - } - -}; - -/** - * Renders a display object - * - * @method renderDisplayObject - * @param displayObject {DisplayObject} The displayObject to render - * @param context {CanvasRenderingContext2D} the context 2d method of the canvas - * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. - * @private - */ -PIXI.CanvasRenderer.prototype.renderDisplayObject = function (displayObject, context, matrix) { - - this.renderSession.context = context || this.context; - this.renderSession.resolution = this.resolution; - displayObject._renderCanvas(this.renderSession, matrix); - -}; - -/** - * Maps Pixi blend modes to canvas blend modes. - * - * @method mapBlendModes - * @private - */ -PIXI.CanvasRenderer.prototype.mapBlendModes = function () { - - if (!PIXI.blendModesCanvas) - { - var b = []; - var modes = PIXI.blendModes; - var useNew = PIXI.canUseNewCanvasBlendModes(); - - b[modes.NORMAL] = 'source-over'; - b[modes.ADD] = 'lighter'; - b[modes.MULTIPLY] = (useNew) ? 'multiply' : 'source-over'; - b[modes.SCREEN] = (useNew) ? 'screen' : 'source-over'; - b[modes.OVERLAY] = (useNew) ? 'overlay' : 'source-over'; - b[modes.DARKEN] = (useNew) ? 'darken' : 'source-over'; - b[modes.LIGHTEN] = (useNew) ? 'lighten' : 'source-over'; - b[modes.COLOR_DODGE] = (useNew) ? 'color-dodge' : 'source-over'; - b[modes.COLOR_BURN] = (useNew) ? 'color-burn' : 'source-over'; - b[modes.HARD_LIGHT] = (useNew) ? 'hard-light' : 'source-over'; - b[modes.SOFT_LIGHT] = (useNew) ? 'soft-light' : 'source-over'; - b[modes.DIFFERENCE] = (useNew) ? 'difference' : 'source-over'; - b[modes.EXCLUSION] = (useNew) ? 'exclusion' : 'source-over'; - b[modes.HUE] = (useNew) ? 'hue' : 'source-over'; - b[modes.SATURATION] = (useNew) ? 'saturation' : 'source-over'; - b[modes.COLOR] = (useNew) ? 'color' : 'source-over'; - b[modes.LUMINOSITY] = (useNew) ? 'luminosity' : 'source-over'; - - PIXI.blendModesCanvas = b; - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A texture stores the information that represents an image. All textures have a base texture. - * - * @class BaseTexture - * @uses EventTarget - * @constructor - * @param source {String|Canvas} the source object (image or canvas) - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - */ -PIXI.BaseTexture = function(source, scaleMode) -{ - /** - * The Resolution of the texture. - * - * @property resolution - * @type Number - */ - this.resolution = 1; - - /** - * [read-only] The width of the base texture set when the image has loaded - * - * @property width - * @type Number - * @readOnly - */ - this.width = 100; - - /** - * [read-only] The height of the base texture set when the image has loaded - * - * @property height - * @type Number - * @readOnly - */ - this.height = 100; - - /** - * The scale mode to apply when scaling this texture - * - * @property scaleMode - * @type {Number} - * @default PIXI.scaleModes.LINEAR - */ - this.scaleMode = scaleMode || PIXI.scaleModes.DEFAULT; - - /** - * [read-only] Set to true once the base texture has loaded - * - * @property hasLoaded - * @type Boolean - * @readOnly - */ - this.hasLoaded = false; - - /** - * The image source that is used to create the texture. - * - * @property source - * @type Image - */ - this.source = source; - - /** - * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) - * - * @property premultipliedAlpha - * @type Boolean - * @default true - */ - this.premultipliedAlpha = true; - - // used for webGL - - /** - * @property _glTextures - * @type Array - * @private - */ - this._glTextures = []; - - /** - * Set this to true if a mipmap of this texture needs to be generated. This value needs to be set before the texture is used - * Also the texture must be a power of two size to work - * - * @property mipmap - * @type {Boolean} - */ - this.mipmap = false; - - /** - * @property _dirty - * @type Array - * @private - */ - this._dirty = [true, true, true, true]; - - if (!source) - { - return; - } - - if ((this.source.complete || this.source.getContext) && this.source.width && this.source.height) - { - this.hasLoaded = true; - this.width = this.source.naturalWidth || this.source.width; - this.height = this.source.naturalHeight || this.source.height; - this.dirty(); - } - - /** - * A BaseTexture can be set to skip the rendering phase in the WebGL Sprite Batch. - * - * You may want to do this if you have a parent Sprite with no visible texture (i.e. uses the internal `__default` texture) - * that has children that you do want to render, without causing a batch flush in the process. - * - * @property skipRender - * @type Boolean - */ - this.skipRender = false; - - /** - * @property _powerOf2 - * @type Boolean - * @private - */ - this._powerOf2 = false; - -}; - -PIXI.BaseTexture.prototype.constructor = PIXI.BaseTexture; - -/** - * Forces this BaseTexture to be set as loaded, with the given width and height. - * Then calls BaseTexture.dirty. - * Important for when you don't want to modify the source object by forcing in `complete` or dimension properties it may not have. - * - * @method forceLoaded - * @param {number} width - The new width to force the BaseTexture to be. - * @param {number} height - The new height to force the BaseTexture to be. - */ -PIXI.BaseTexture.prototype.forceLoaded = function(width, height) -{ - this.hasLoaded = true; - this.width = width; - this.height = height; - this.dirty(); -}; - -/** - * Destroys this base texture - * - * @method destroy - */ -PIXI.BaseTexture.prototype.destroy = function() -{ - if (this.source) - { - PIXI.CanvasPool.removeByCanvas(this.source); - } - - this.source = null; - - this.unloadFromGPU(); -}; - -/** - * Changes the source image of the texture - * - * @method updateSourceImage - * @param newSrc {String} the path of the image - * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. - */ -PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) -{ - console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); -}; - -/** - * Sets all glTextures to be dirty. - * - * @method dirty - */ -PIXI.BaseTexture.prototype.dirty = function() -{ - for (var i = 0; i < this._glTextures.length; i++) - { - this._dirty[i] = true; - } -}; - -/** - * Removes the base texture from the GPU, useful for managing resources on the GPU. - * Atexture is still 100% usable and will simply be reuploaded if there is a sprite on screen that is using it. - * - * @method unloadFromGPU - */ -PIXI.BaseTexture.prototype.unloadFromGPU = function() -{ - this.dirty(); - - // delete the webGL textures if any. - for (var i = this._glTextures.length - 1; i >= 0; i--) - { - var glTexture = this._glTextures[i]; - var gl = PIXI.glContexts[i]; - - if(gl && glTexture) - { - gl.deleteTexture(glTexture); - } - - } - - this._glTextures.length = 0; - - this.dirty(); -}; - -/** - * Helper function that creates a base texture from the given canvas element. - * - * @static - * @method fromCanvas - * @param canvas {Canvas} The canvas element source of the texture - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) -{ - if (canvas.width === 0) - { - canvas.width = 1; - } - - if (canvas.height === 0) - { - canvas.height = 1; - } - - return new PIXI.BaseTexture(canvas, scaleMode); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * TextureSilentFail is a boolean that defaults to `false`. - * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. - * Instead `Texture.valid` will be set to `false` (#1556) - * - * @type {boolean} - */ -PIXI.TextureSilentFail = false; - -/** - * A texture stores the information that represents an image or part of an image. It cannot be added - * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. - * - * @class Texture - * @uses EventTarget - * @constructor - * @param baseTexture {BaseTexture} The base texture source to create the texture from - * @param frame {Rectangle} The rectangle frame of the texture to show - * @param [crop] {Rectangle} The area of original texture - * @param [trim] {Rectangle} Trimmed texture rectangle - */ -PIXI.Texture = function(baseTexture, frame, crop, trim) -{ - /** - * Does this Texture have any frame data assigned to it? - * - * @property noFrame - * @type Boolean - */ - this.noFrame = false; - - if (!frame) - { - this.noFrame = true; - frame = new PIXI.Rectangle(0,0,1,1); - } - - if (baseTexture instanceof PIXI.Texture) - { - baseTexture = baseTexture.baseTexture; - } - - /** - * The base texture that this texture uses. - * - * @property baseTexture - * @type BaseTexture - */ - this.baseTexture = baseTexture; - - /** - * The frame specifies the region of the base texture that this texture uses - * - * @property frame - * @type Rectangle - */ - this.frame = frame; - - /** - * The texture trim data. - * - * @property trim - * @type Rectangle - */ - this.trim = trim; - - /** - * This will let the renderer know if the texture is valid. If it's not then it cannot be rendered. - * - * @property valid - * @type Boolean - */ - this.valid = false; - - /** - * Is this a tiling texture? As used by the likes of a TilingSprite. - * - * @property isTiling - * @type Boolean - */ - this.isTiling = false; - - /** - * This will let a renderer know that a texture has been updated (used mainly for webGL uv updates) - * - * @property requiresUpdate - * @type Boolean - */ - this.requiresUpdate = false; - - /** - * This will let a renderer know that a tinted parent has updated its texture. - * - * @property requiresReTint - * @type Boolean - */ - this.requiresReTint = false; - - /** - * The WebGL UV data cache. - * - * @property _uvs - * @type Object - * @private - */ - this._uvs = null; - - /** - * The width of the Texture in pixels. - * - * @property width - * @type Number - */ - this.width = 0; - - /** - * The height of the Texture in pixels. - * - * @property height - * @type Number - */ - this.height = 0; - - /** - * This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering, - * irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) - * - * @property crop - * @type Rectangle - */ - this.crop = crop || new PIXI.Rectangle(0, 0, 1, 1); - - if (baseTexture.hasLoaded) - { - if (this.noFrame) frame = new PIXI.Rectangle(0, 0, baseTexture.width, baseTexture.height); - this.setFrame(frame); - } - -}; - -PIXI.Texture.prototype.constructor = PIXI.Texture; - -/** - * Called when the base texture is loaded - * - * @method onBaseTextureLoaded - * @private - */ -PIXI.Texture.prototype.onBaseTextureLoaded = function() -{ - var baseTexture = this.baseTexture; - - if (this.noFrame) - { - this.frame = new PIXI.Rectangle(0, 0, baseTexture.width, baseTexture.height); - } - - this.setFrame(this.frame); -}; - -/** - * Destroys this texture - * - * @method destroy - * @param destroyBase {Boolean} Whether to destroy the base texture as well - */ -PIXI.Texture.prototype.destroy = function(destroyBase) -{ - if (destroyBase) this.baseTexture.destroy(); - - this.valid = false; -}; - -/** - * Specifies the region of the baseTexture that this texture will use. - * - * @method setFrame - * @param frame {Rectangle} The frame of the texture to set it to - */ -PIXI.Texture.prototype.setFrame = function(frame) -{ - this.noFrame = false; - - this.frame = frame; - this.width = frame.width; - this.height = frame.height; - - this.crop.x = frame.x; - this.crop.y = frame.y; - this.crop.width = frame.width; - this.crop.height = frame.height; - - if (!this.trim && (frame.x + frame.width > this.baseTexture.width || frame.y + frame.height > this.baseTexture.height)) - { - if (!PIXI.TextureSilentFail) - { - throw new Error('Texture Error: frame does not fit inside the base Texture dimensions ' + this); - } - - this.valid = false; - return; - } - - this.valid = frame && frame.width && frame.height && this.baseTexture.source && this.baseTexture.hasLoaded; - - if (this.trim) - { - this.width = this.trim.width; - this.height = this.trim.height; - this.frame.width = this.trim.width; - this.frame.height = this.trim.height; - } - - if (this.valid) this._updateUvs(); - -}; - -/** - * Updates the internal WebGL UV cache. - * - * @method _updateUvs - * @private - */ -PIXI.Texture.prototype._updateUvs = function() -{ - if(!this._uvs)this._uvs = new PIXI.TextureUvs(); - - var frame = this.crop; - var tw = this.baseTexture.width; - var th = this.baseTexture.height; - - this._uvs.x0 = frame.x / tw; - this._uvs.y0 = frame.y / th; - - this._uvs.x1 = (frame.x + frame.width) / tw; - this._uvs.y1 = frame.y / th; - - this._uvs.x2 = (frame.x + frame.width) / tw; - this._uvs.y2 = (frame.y + frame.height) / th; - - this._uvs.x3 = frame.x / tw; - this._uvs.y3 = (frame.y + frame.height) / th; -}; - -/** - * Helper function that creates a new a Texture based on the given canvas element. - * - * @static - * @method fromCanvas - * @param canvas {Canvas} The canvas element source of the texture - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromCanvas = function(canvas, scaleMode) -{ - var baseTexture = PIXI.BaseTexture.fromCanvas(canvas, scaleMode); - - return new PIXI.Texture(baseTexture); -}; - -PIXI.TextureUvs = function() -{ - this.x0 = 0; - this.y0 = 0; - - this.x1 = 0; - this.y1 = 0; - - this.x2 = 0; - this.y2 = 0; - - this.x3 = 0; - this.y3 = 0; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A RenderTexture is a special texture that allows any Pixi display object to be rendered to it. - * - * __Hint__: All DisplayObjects (i.e. Sprites) that render to a RenderTexture should be preloaded otherwise black rectangles will be drawn instead. - * - * A RenderTexture takes a snapshot of any Display Object given to its render method. The position and rotation of the given Display Objects is ignored. For example: - * - * var renderTexture = new PIXI.RenderTexture(800, 600); - * var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - * sprite.position.x = 800/2; - * sprite.position.y = 600/2; - * sprite.anchor.x = 0.5; - * sprite.anchor.y = 0.5; - * renderTexture.render(sprite); - * - * The Sprite in this case will be rendered to a position of 0,0. To render this sprite at its actual position a DisplayObjectContainer should be used: - * - * var doc = new PIXI.DisplayObjectContainer(); - * doc.addChild(sprite); - * renderTexture.render(doc); // Renders to center of renderTexture - * - * @class RenderTexture - * @extends Texture - * @constructor - * @param width {Number} The width of the render texture - * @param height {Number} The height of the render texture - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used for this RenderTexture - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param resolution {Number} The resolution of the texture being generated - */ -PIXI.RenderTexture = function(width, height, renderer, scaleMode, resolution) -{ - /** - * The with of the render texture - * - * @property width - * @type Number - */ - this.width = width || 100; - - /** - * The height of the render texture - * - * @property height - * @type Number - */ - this.height = height || 100; - - /** - * The Resolution of the texture. - * - * @property resolution - * @type Number - */ - this.resolution = resolution || 1; - - /** - * The framing rectangle of the render texture - * - * @property frame - * @type Rectangle - */ - this.frame = new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution); - - /** - * This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering, - * irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) - * - * @property crop - * @type Rectangle - */ - this.crop = new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution); - - /** - * The base texture object that this texture uses - * - * @property baseTexture - * @type BaseTexture - */ - this.baseTexture = new PIXI.BaseTexture(); - this.baseTexture.width = this.width * this.resolution; - this.baseTexture.height = this.height * this.resolution; - this.baseTexture._glTextures = []; - this.baseTexture.resolution = this.resolution; - - this.baseTexture.scaleMode = scaleMode || PIXI.scaleModes.DEFAULT; - - this.baseTexture.hasLoaded = true; - - PIXI.Texture.call(this, - this.baseTexture, - new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution) - ); - - /** - * The renderer this RenderTexture uses. A RenderTexture can only belong to one renderer at the moment if its webGL. - * - * @property renderer - * @type CanvasRenderer|WebGLRenderer - */ - this.renderer = renderer || PIXI.defaultRenderer; - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - var gl = this.renderer.gl; - this.baseTexture._dirty[gl.id] = false; - - this.textureBuffer = new PIXI.FilterTexture(gl, this.width, this.height, this.baseTexture.scaleMode); - this.baseTexture._glTextures[gl.id] = this.textureBuffer.texture; - - this.render = this.renderWebGL; - this.projection = new PIXI.Point(this.width * 0.5, -this.height * 0.5); - } - else - { - this.render = this.renderCanvas; - this.textureBuffer = new PIXI.CanvasBuffer(this.width * this.resolution, this.height * this.resolution); - this.baseTexture.source = this.textureBuffer.canvas; - } - - /** - * @property valid - * @type Boolean - */ - this.valid = true; - - this.tempMatrix = new Phaser.Matrix(); - - this._updateUvs(); -}; - -PIXI.RenderTexture.prototype = Object.create(PIXI.Texture.prototype); -PIXI.RenderTexture.prototype.constructor = PIXI.RenderTexture; - -/** - * Resizes the RenderTexture. - * - * @method resize - * @param width {Number} The width to resize to. - * @param height {Number} The height to resize to. - * @param updateBase {Boolean} Should the baseTexture.width and height values be resized as well? - */ -PIXI.RenderTexture.prototype.resize = function(width, height, updateBase) -{ - if (width === this.width && height === this.height)return; - - this.valid = (width > 0 && height > 0); - - this.width = width; - this.height = height; - this.frame.width = this.crop.width = width * this.resolution; - this.frame.height = this.crop.height = height * this.resolution; - - if (updateBase) - { - this.baseTexture.width = this.width * this.resolution; - this.baseTexture.height = this.height * this.resolution; - } - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - this.projection.x = this.width / 2; - this.projection.y = -this.height / 2; - } - - if(!this.valid)return; - - this.textureBuffer.resize(this.width, this.height); -}; - -/** - * Clears the RenderTexture. - * - * @method clear - */ -PIXI.RenderTexture.prototype.clear = function() -{ - if (!this.valid) - { - return; - } - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER, this.textureBuffer.frameBuffer); - } - - this.textureBuffer.clear(); -}; - -/** - * This function will draw the display object to the texture. - * - * @method renderWebGL - * @param displayObject {DisplayObject} The display object to render this texture on - * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. - * @param [clear] {Boolean} If true the texture will be cleared before the displayObject is drawn - * @private - */ -PIXI.RenderTexture.prototype.renderWebGL = function(displayObject, matrix, clear) -{ - if (!this.valid || displayObject.alpha === 0) - { - return; - } - - // Let's create a nice matrix to apply to our display object. - // Frame buffers come in upside down so we need to flip the matrix. - var wt = displayObject.worldTransform; - wt.identity(); - wt.translate(0, this.projection.y * 2); - - if (matrix) - { - wt.append(matrix); - } - - wt.scale(1, -1); - - // Time to update all the children of the displayObject with the new matrix. - for (var i = 0; i < displayObject.children.length; i++) - { - displayObject.children[i].updateTransform(); - } - - // Time for the webGL fun stuff! - var gl = this.renderer.gl; - - gl.viewport(0, 0, this.width * this.resolution, this.height * this.resolution); - - gl.bindFramebuffer(gl.FRAMEBUFFER, this.textureBuffer.frameBuffer ); - - if (clear) - { - this.textureBuffer.clear(); - } - - this.renderer.spriteBatch.dirty = true; - - this.renderer.renderDisplayObject(displayObject, this.projection, this.textureBuffer.frameBuffer, matrix); - - this.renderer.spriteBatch.dirty = true; - -}; - -/** - * This function will draw the display object to the texture. - * - * @method renderCanvas - * @param displayObject {DisplayObject} The display object to render this texture on - * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. - * @param [clear] {Boolean} If true the texture will be cleared before the displayObject is drawn - * @private - */ -PIXI.RenderTexture.prototype.renderCanvas = function(displayObject, matrix, clear) -{ - if (!this.valid || displayObject.alpha === 0) - { - return; - } - - // Let's create a nice matrix to apply to our display object. - // Frame buffers come in upside down so we need to flip the matrix. - var wt = displayObject.worldTransform; - wt.identity(); - - if (matrix) - { - wt.append(matrix); - } - - // Time to update all the children of the displayObject with the new matrix (what new matrix? there isn't one!) - for (var i = 0; i < displayObject.children.length; i++) - { - displayObject.children[i].updateTransform(); - } - - if (clear) - { - this.textureBuffer.clear(); - } - - var realResolution = this.renderer.resolution; - - this.renderer.resolution = this.resolution; - - this.renderer.renderDisplayObject(displayObject, this.textureBuffer.context, matrix); - - this.renderer.resolution = realResolution; -}; - -/** - * Will return a HTML Image of the texture - * - * @method getImage - * @return {Image} - */ -PIXI.RenderTexture.prototype.getImage = function() -{ - var image = new Image(); - image.src = this.getBase64(); - return image; -}; - -/** - * Will return a base64 encoded string of this texture. It works by calling RenderTexture.getCanvas and then running toDataURL on that. - * - * @method getBase64 - * @return {String} A base64 encoded string of the texture. - */ -PIXI.RenderTexture.prototype.getBase64 = function() -{ - return this.getCanvas().toDataURL(); -}; - -/** - * Creates a Canvas element, renders this RenderTexture to it and then returns it. - * - * @method getCanvas - * @return {HTMLCanvasElement} A Canvas element with the texture rendered on. - */ -PIXI.RenderTexture.prototype.getCanvas = function() -{ - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - var gl = this.renderer.gl; - var width = this.textureBuffer.width; - var height = this.textureBuffer.height; - - var webGLPixels = new Uint8Array(4 * width * height); - - gl.bindFramebuffer(gl.FRAMEBUFFER, this.textureBuffer.frameBuffer); - gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, webGLPixels); - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - - var tempCanvas = new PIXI.CanvasBuffer(width, height); - var canvasData = tempCanvas.context.getImageData(0, 0, width, height); - canvasData.data.set(webGLPixels); - - tempCanvas.context.putImageData(canvasData, 0, 0); - - return tempCanvas.canvas; - } - else - { - return this.textureBuffer.canvas; - } -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * This is the base class for creating a PIXI filter. Currently only webGL supports filters. - * If you want to make a custom filter this should be your base class. - * - * @class AbstractFilter - * @constructor - * @param fragmentSrc {Array} The fragment source in an array of strings. - * @param uniforms {Object} An object containing the uniforms for this filter. - */ -PIXI.AbstractFilter = function(fragmentSrc, uniforms) -{ - /** - * An array of passes - some filters contain a few steps this array simply stores the steps in a liniear fashion. - * For example the blur filter has two passes blurX and blurY. - * @property passes - * @type Array - * @private - */ - this.passes = [this]; - - /** - * @property shaders - * @type Array - * @private - */ - this.shaders = []; - - /** - * @property dirty - * @type Boolean - */ - this.dirty = true; - - /** - * @property padding - * @type Number - */ - this.padding = 0; - - /** - * @property uniforms - * @type Object - * @private - */ - this.uniforms = uniforms || {}; - - /** - * @property fragmentSrc - * @type Array - * @private - */ - this.fragmentSrc = fragmentSrc || []; -}; - -PIXI.AbstractFilter.prototype.constructor = PIXI.AbstractFilter; - -/** - * Syncs the uniforms between the class object and the shaders. - * - * @method syncUniforms - */ -PIXI.AbstractFilter.prototype.syncUniforms = function() -{ - for(var i=0,j=this.shaders.length; i 0) { - var paddingX = this.canvasPadding / this.worldTransform.a; - var paddingY = this.canvasPadding / this.worldTransform.d; - var centerX = (x0 + x1 + x2) / 3; - var centerY = (y0 + y1 + y2) / 3; - - var normX = x0 - centerX; - var normY = y0 - centerY; - - var dist = Math.sqrt(normX * normX + normY * normY); - x0 = centerX + (normX / dist) * (dist + paddingX); - y0 = centerY + (normY / dist) * (dist + paddingY); - - // - - normX = x1 - centerX; - normY = y1 - centerY; - - dist = Math.sqrt(normX * normX + normY * normY); - x1 = centerX + (normX / dist) * (dist + paddingX); - y1 = centerY + (normY / dist) * (dist + paddingY); - - normX = x2 - centerX; - normY = y2 - centerY; - - dist = Math.sqrt(normX * normX + normY * normY); - x2 = centerX + (normX / dist) * (dist + paddingX); - y2 = centerY + (normY / dist) * (dist + paddingY); - } - - context.save(); - context.beginPath(); - - - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - - context.closePath(); - - context.clip(); - - // Compute matrix transform - var delta = (u0 * v1) + (v0 * u2) + (u1 * v2) - (v1 * u2) - (v0 * u1) - (u0 * v2); - var deltaA = (x0 * v1) + (v0 * x2) + (x1 * v2) - (v1 * x2) - (v0 * x1) - (x0 * v2); - var deltaB = (u0 * x1) + (x0 * u2) + (u1 * x2) - (x1 * u2) - (x0 * u1) - (u0 * x2); - var deltaC = (u0 * v1 * x2) + (v0 * x1 * u2) + (x0 * u1 * v2) - (x0 * v1 * u2) - (v0 * u1 * x2) - (u0 * x1 * v2); - var deltaD = (y0 * v1) + (v0 * y2) + (y1 * v2) - (v1 * y2) - (v0 * y1) - (y0 * v2); - var deltaE = (u0 * y1) + (y0 * u2) + (u1 * y2) - (y1 * u2) - (y0 * u1) - (u0 * y2); - var deltaF = (u0 * v1 * y2) + (v0 * y1 * u2) + (y0 * u1 * v2) - (y0 * v1 * u2) - (v0 * u1 * y2) - (u0 * y1 * v2); - - context.transform(deltaA / delta, deltaD / delta, - deltaB / delta, deltaE / delta, - deltaC / delta, deltaF / delta); - - context.drawImage(textureSource, 0, 0); - context.restore(); -}; - - - -/** - * Renders a flat strip - * - * @method renderStripFlat - * @param strip {Strip} The Strip to render - * @private - */ -PIXI.Strip.prototype.renderStripFlat = function(strip) -{ - var context = this.context; - var vertices = strip.vertices; - - var length = vertices.length/2; - this.count++; - - context.beginPath(); - for (var i=1; i < length-2; i++) - { - // draw some triangles! - var index = i*2; - - var x0 = vertices[index], x1 = vertices[index+2], x2 = vertices[index+4]; - var y0 = vertices[index+1], y1 = vertices[index+3], y2 = vertices[index+5]; - - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - } - - context.fillStyle = '#FF0000'; - context.fill(); - context.closePath(); -}; - -/* -PIXI.Strip.prototype.setTexture = function(texture) -{ - //TODO SET THE TEXTURES - //TODO VISIBILITY - - // stop current texture - this.texture = texture; - this.width = texture.frame.width; - this.height = texture.frame.height; - this.updateFrame = true; -}; -*/ - -/** - * When the texture is updated, this event will fire to update the scale and frame - * - * @method onTextureUpdate - * @param event - * @private - */ - -PIXI.Strip.prototype.onTextureUpdate = function() -{ - this.updateFrame = true; -}; - -/** - * Returns the bounds of the mesh as a rectangle. The bounds calculation takes the worldTransform into account. - * - * @method getBounds - * @param matrix {Matrix} the transformation matrix of the sprite - * @return {Rectangle} the framing rectangle - */ -PIXI.Strip.prototype.getBounds = function(matrix) -{ - var worldTransform = matrix || this.worldTransform; - - var a = worldTransform.a; - var b = worldTransform.b; - var c = worldTransform.c; - var d = worldTransform.d; - var tx = worldTransform.tx; - var ty = worldTransform.ty; - - var maxX = -Infinity; - var maxY = -Infinity; - - var minX = Infinity; - var minY = Infinity; - - var vertices = this.vertices; - for (var i = 0, n = vertices.length; i < n; i += 2) - { - var rawX = vertices[i], rawY = vertices[i + 1]; - var x = (a * rawX) + (c * rawY) + tx; - var y = (d * rawY) + (b * rawX) + ty; - - minX = x < minX ? x : minX; - minY = y < minY ? y : minY; - - maxX = x > maxX ? x : maxX; - maxY = y > maxY ? y : maxY; - } - - if (minX === -Infinity || maxY === Infinity) - { - return PIXI.EmptyRectangle; - } - - var bounds = this._bounds; - - bounds.x = minX; - bounds.width = maxX - minX; - - bounds.y = minY; - bounds.height = maxY - minY; - - // store a reference so that if this function gets called again in the render cycle we do not have to recalculate - this._currentBounds = bounds; - - return bounds; -}; - -/** - * Different drawing buffer modes supported - * - * @property - * @type {{TRIANGLE_STRIP: number, TRIANGLES: number}} - * @static - */ -PIXI.Strip.DrawModes = { - TRIANGLE_STRIP: 0, - TRIANGLES: 1 -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - * @copyright Mat Groves, Rovanion Luckey - */ - -/** - * - * @class Rope - * @constructor - * @extends Strip - * @param {Texture} texture - The texture to use on the rope. - * @param {Array} points - An array of {PIXI.Point}. - * - */ -PIXI.Rope = function(texture, points) -{ - PIXI.Strip.call( this, texture ); - this.points = points; - - this.vertices = new PIXI.Float32Array(points.length * 4); - this.uvs = new PIXI.Float32Array(points.length * 4); - this.colors = new PIXI.Float32Array(points.length * 2); - this.indices = new PIXI.Uint16Array(points.length * 2); - - - this.refresh(); -}; - - -// constructor -PIXI.Rope.prototype = Object.create( PIXI.Strip.prototype ); -PIXI.Rope.prototype.constructor = PIXI.Rope; - -/* - * Refreshes - * - * @method refresh - */ -PIXI.Rope.prototype.refresh = function() -{ - var points = this.points; - if(points.length < 1) return; - - var uvs = this.uvs; - - var lastPoint = points[0]; - var indices = this.indices; - var colors = this.colors; - - this.count-=0.2; - - uvs[0] = 0; - uvs[1] = 0; - uvs[2] = 0; - uvs[3] = 1; - - colors[0] = 1; - colors[1] = 1; - - indices[0] = 0; - indices[1] = 1; - - var total = points.length, - point, index, amount; - - for (var i = 1; i < total; i++) - { - point = points[i]; - index = i * 4; - // time to do some smart drawing! - amount = i / (total-1); - - if(i%2) - { - uvs[index] = amount; - uvs[index+1] = 0; - - uvs[index+2] = amount; - uvs[index+3] = 1; - } - else - { - uvs[index] = amount; - uvs[index+1] = 0; - - uvs[index+2] = amount; - uvs[index+3] = 1; - } - - index = i * 2; - colors[index] = 1; - colors[index+1] = 1; - - index = i * 2; - indices[index] = index; - indices[index + 1] = index + 1; - - lastPoint = point; - } -}; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.Rope.prototype.updateTransform = function() -{ - - var points = this.points; - if(points.length < 1)return; - - var lastPoint = points[0]; - var nextPoint; - var perp = {x:0, y:0}; - - this.count-=0.2; - - var vertices = this.vertices; - var total = points.length, - point, index, ratio, perpLength, num; - - for (var i = 0; i < total; i++) - { - point = points[i]; - index = i * 4; - - if(i < points.length-1) - { - nextPoint = points[i+1]; - } - else - { - nextPoint = point; - } - - perp.y = -(nextPoint.x - lastPoint.x); - perp.x = nextPoint.y - lastPoint.y; - - ratio = (1 - (i / (total-1))) * 10; - - if(ratio > 1) ratio = 1; - - perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - num = this.texture.height / 2; //(20 + Math.abs(Math.sin((i + this.count) * 0.3) * 50) )* ratio; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - - vertices[index] = point.x + perp.x; - vertices[index+1] = point.y + perp.y; - vertices[index+2] = point.x - perp.x; - vertices[index+3] = point.y - perp.y; - - lastPoint = point; - } - - PIXI.DisplayObjectContainer.prototype.updateTransform.call( this ); -}; -/* - * Sets the texture that the Rope will use - * - * @method setTexture - * @param texture {Texture} the texture that will be used - */ -PIXI.Rope.prototype.setTexture = function(texture) -{ - // stop current texture - this.texture = texture; - //this.updateFrame = true; -}; - -/** - * @author Mat Groves http://matgroves.com/ - */ - -/** - * A tiling sprite is a fast way of rendering a tiling image - * - * @class TilingSprite - * @extends Sprite - * @constructor - * @param texture {Texture} the texture of the tiling sprite - * @param width {Number} the width of the tiling sprite - * @param height {Number} the height of the tiling sprite - */ -PIXI.TilingSprite = function(texture, width, height) -{ - PIXI.Sprite.call(this, texture); - - /** - * The width of the tiling sprite - * - * @property width - * @type Number - */ - this._width = width || 128; - - /** - * The height of the tiling sprite - * - * @property height - * @type Number - */ - this._height = height || 128; - - /** - * The scaling of the image that is being tiled - * - * @property tileScale - * @type Point - */ - this.tileScale = new PIXI.Point(1, 1); - - /** - * A point that represents the scale of the texture object - * - * @property tileScaleOffset - * @type Point - */ - this.tileScaleOffset = new PIXI.Point(1, 1); - - /** - * The offset position of the image that is being tiled - * - * @property tilePosition - * @type Point - */ - this.tilePosition = new PIXI.Point(); - - /** - * Whether this sprite is renderable or not - * - * @property renderable - * @type Boolean - * @default true - */ - this.renderable = true; - - /** - * The tint applied to the sprite. This is a hex value - * - * @property tint - * @type Number - * @default 0xFFFFFF - */ - this.tint = 0xFFFFFF; - - /** - * If enabled a green rectangle will be drawn behind the generated tiling texture, allowing you to visually - * debug the texture being used. - * - * @property textureDebug - * @type Boolean - */ - this.textureDebug = false; - - /** - * The blend mode to be applied to the sprite - * - * @property blendMode - * @type Number - * @default PIXI.blendModes.NORMAL; - */ - this.blendMode = PIXI.blendModes.NORMAL; - - /** - * The CanvasBuffer object that the tiled texture is drawn to. - * - * @property canvasBuffer - * @type PIXI.CanvasBuffer - */ - this.canvasBuffer = null; - - /** - * An internal Texture object that holds the tiling texture that was generated from TilingSprite.texture. - * - * @property tilingTexture - * @type PIXI.Texture - */ - this.tilingTexture = null; - - /** - * The Context fill pattern that is used to draw the TilingSprite in Canvas mode only (will be null in WebGL). - * - * @property tilePattern - * @type PIXI.Texture - */ - this.tilePattern = null; - - /** - * If true the TilingSprite will run generateTexture on its **next** render pass. - * This is set by the likes of Phaser.LoadTexture.setFrame. - * - * @property refreshTexture - * @type Boolean - * @default true - */ - this.refreshTexture = true; - - this.frameWidth = 0; - this.frameHeight = 0; - -}; - -PIXI.TilingSprite.prototype = Object.create(PIXI.Sprite.prototype); -PIXI.TilingSprite.prototype.constructor = PIXI.TilingSprite; - -PIXI.TilingSprite.prototype.setTexture = function(texture) -{ - if (this.texture !== texture) - { - this.texture = texture; - this.refreshTexture = true; - this.cachedTint = 0xFFFFFF; - } - -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.TilingSprite.prototype._renderWebGL = function(renderSession) -{ - if (!this.visible || !this.renderable || this.alpha === 0) - { - return; - } - - if (this._mask) - { - renderSession.spriteBatch.stop(); - renderSession.maskManager.pushMask(this.mask, renderSession); - renderSession.spriteBatch.start(); - } - - if (this._filters) - { - renderSession.spriteBatch.flush(); - renderSession.filterManager.pushFilter(this._filterBlock); - } - - if (this.refreshTexture) - { - this.generateTilingTexture(true, renderSession); - - if (this.tilingTexture) - { - if (this.tilingTexture.needsUpdate) - { - renderSession.renderer.updateTexture(this.tilingTexture.baseTexture); - this.tilingTexture.needsUpdate = false; - } - } - else - { - return; - } - } - - renderSession.spriteBatch.renderTilingSprite(this); - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - - renderSession.spriteBatch.stop(); - - if (this._filters) - { - renderSession.filterManager.popFilter(); - } - - if (this._mask) - { - renderSession.maskManager.popMask(this._mask, renderSession); - } - - renderSession.spriteBatch.start(); - -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.TilingSprite.prototype._renderCanvas = function(renderSession) -{ - if (!this.visible || !this.renderable || this.alpha === 0) - { - return; - } - - var context = renderSession.context; - - if (this._mask) - { - renderSession.maskManager.pushMask(this._mask, renderSession); - } - - context.globalAlpha = this.worldAlpha; - - var wt = this.worldTransform; - var resolution = renderSession.resolution; - var tx = (wt.tx * resolution) + renderSession.shakeX; - var ty = (wt.ty * resolution) + renderSession.shakeY; - - context.setTransform(wt.a * resolution, wt.b * resolution, wt.c * resolution, wt.d * resolution, tx, ty); - - if (this.refreshTexture) - { - this.generateTilingTexture(false, renderSession); - - if (this.tilingTexture) - { - this.tilePattern = context.createPattern(this.tilingTexture.baseTexture.source, 'repeat'); - } - else - { - return; - } - } - - var sessionBlendMode = renderSession.currentBlendMode; - - // Check blend mode - if (this.blendMode !== renderSession.currentBlendMode) - { - renderSession.currentBlendMode = this.blendMode; - context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode]; - } - - var tilePosition = this.tilePosition; - var tileScale = this.tileScale; - - tilePosition.x %= this.tilingTexture.baseTexture.width; - tilePosition.y %= this.tilingTexture.baseTexture.height; - - // Translate - context.scale(tileScale.x, tileScale.y); - context.translate(tilePosition.x + (this.anchor.x * -this._width), tilePosition.y + (this.anchor.y * -this._height)); - - context.fillStyle = this.tilePattern; - - var tx = -tilePosition.x; - var ty = -tilePosition.y; - var tw = this._width / tileScale.x; - var th = this._height / tileScale.y; - - // Allow for pixel rounding - if (renderSession.roundPixels) - { - tx |= 0; - ty |= 0; - tw |= 0; - th |= 0; - } - - context.fillRect(tx, ty, tw, th); - - // Translate back again - context.scale(1 / tileScale.x, 1 / tileScale.y); - context.translate(-tilePosition.x + (this.anchor.x * this._width), -tilePosition.y + (this.anchor.y * this._height)); - - if (this._mask) - { - renderSession.maskManager.popMask(renderSession); - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderCanvas(renderSession); - } - - // Reset blend mode - if (sessionBlendMode !== this.blendMode) - { - renderSession.currentBlendMode = sessionBlendMode; - context.globalCompositeOperation = PIXI.blendModesCanvas[sessionBlendMode]; - } - -}; - -/** - * When the texture is updated, this event will fire to update the scale and frame - * - * @method onTextureUpdate - * @param event - * @private - */ -PIXI.TilingSprite.prototype.onTextureUpdate = function() -{ - // overriding the sprite version of this! -}; - -/** -* -* @method generateTilingTexture -* -* @param forcePowerOfTwo {Boolean} Whether we want to force the texture to be a power of two -* @param renderSession {RenderSession} -*/ -PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo, renderSession) -{ - if (!this.texture.baseTexture.hasLoaded) - { - return; - } - - var texture = this.texture; - var frame = texture.frame; - - var targetWidth = this._frame.sourceSizeW || this._frame.width; - var targetHeight = this._frame.sourceSizeH || this._frame.height; - - var dx = 0; - var dy = 0; - - if (this._frame.trimmed) - { - dx = this._frame.spriteSourceSizeX; - dy = this._frame.spriteSourceSizeY; - } - - if (forcePowerOfTwo) - { - targetWidth = PIXI.getNextPowerOfTwo(targetWidth); - targetHeight = PIXI.getNextPowerOfTwo(targetHeight); - } - - if (this.canvasBuffer) - { - this.canvasBuffer.resize(targetWidth, targetHeight); - this.tilingTexture.baseTexture.width = targetWidth; - this.tilingTexture.baseTexture.height = targetHeight; - this.tilingTexture.needsUpdate = true; - } - else - { - this.canvasBuffer = new PIXI.CanvasBuffer(targetWidth, targetHeight); - this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); - this.tilingTexture.isTiling = true; - this.tilingTexture.needsUpdate = true; - } - - if (this.textureDebug) - { - this.canvasBuffer.context.strokeStyle = '#00ff00'; - this.canvasBuffer.context.strokeRect(0, 0, targetWidth, targetHeight); - } - - // If a sprite sheet we need this: - var w = texture.crop.width; - var h = texture.crop.height; - - if (w !== targetWidth || h !== targetHeight) - { - w = targetWidth; - h = targetHeight; - } - - this.canvasBuffer.context.drawImage(texture.baseTexture.source, - texture.crop.x, - texture.crop.y, - texture.crop.width, - texture.crop.height, - dx, - dy, - w, - h); - - this.tileScaleOffset.x = frame.width / targetWidth; - this.tileScaleOffset.y = frame.height / targetHeight; - - this.refreshTexture = false; - - this.tilingTexture.baseTexture._powerOf2 = true; - -}; - -/** -* Returns the framing rectangle of the sprite as a PIXI.Rectangle object -* -* @method getBounds -* @return {Rectangle} the framing rectangle -*/ -PIXI.TilingSprite.prototype.getBounds = function() -{ - var width = this._width; - var height = this._height; - - var w0 = width * (1-this.anchor.x); - var w1 = width * -this.anchor.x; - - var h0 = height * (1-this.anchor.y); - var h1 = height * -this.anchor.y; - - var worldTransform = this.worldTransform; - - var a = worldTransform.a; - var b = worldTransform.b; - var c = worldTransform.c; - var d = worldTransform.d; - var tx = worldTransform.tx; - var ty = worldTransform.ty; - - var x1 = a * w1 + c * h1 + tx; - var y1 = d * h1 + b * w1 + ty; - - var x2 = a * w0 + c * h1 + tx; - var y2 = d * h1 + b * w0 + ty; - - var x3 = a * w0 + c * h0 + tx; - var y3 = d * h0 + b * w0 + ty; - - var x4 = a * w1 + c * h0 + tx; - var y4 = d * h0 + b * w1 + ty; - - var maxX = -Infinity; - var maxY = -Infinity; - - var minX = Infinity; - var minY = Infinity; - - minX = x1 < minX ? x1 : minX; - minX = x2 < minX ? x2 : minX; - minX = x3 < minX ? x3 : minX; - minX = x4 < minX ? x4 : minX; - - minY = y1 < minY ? y1 : minY; - minY = y2 < minY ? y2 : minY; - minY = y3 < minY ? y3 : minY; - minY = y4 < minY ? y4 : minY; - - maxX = x1 > maxX ? x1 : maxX; - maxX = x2 > maxX ? x2 : maxX; - maxX = x3 > maxX ? x3 : maxX; - maxX = x4 > maxX ? x4 : maxX; - - maxY = y1 > maxY ? y1 : maxY; - maxY = y2 > maxY ? y2 : maxY; - maxY = y3 > maxY ? y3 : maxY; - maxY = y4 > maxY ? y4 : maxY; - - var bounds = this._bounds; - - bounds.x = minX; - bounds.width = maxX - minX; - - bounds.y = minY; - bounds.height = maxY - minY; - - // store a reference so that if this function gets called again in the render cycle we do not have to recalculate - this._currentBounds = bounds; - - return bounds; -}; - -PIXI.TilingSprite.prototype.destroy = function () { - - PIXI.Sprite.prototype.destroy.call(this); - - if (this.canvasBuffer) - { - this.canvasBuffer.destroy(); - this.canvasBuffer = null; - } - - this.tileScale = null; - this.tileScaleOffset = null; - this.tilePosition = null; - - if (this.tilingTexture) - { - this.tilingTexture.destroy(true); - this.tilingTexture = null; - } - -}; - -/** - * The width of the sprite, setting this will actually modify the scale to achieve the value set - * - * @property width - * @type Number - */ -Object.defineProperty(PIXI.TilingSprite.prototype, 'width', { - - get: function() { - return this._width; - }, - - set: function(value) { - this._width = value; - } - -}); - -/** - * The height of the TilingSprite, setting this will actually modify the scale to achieve the value set - * - * @property height - * @type Number - */ -Object.defineProperty(PIXI.TilingSprite.prototype, 'height', { - - get: function() { - return this._height; - }, - - set: function(value) { - this._height = value; - } - -}); - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = PIXI; - } - exports.PIXI = PIXI; - } else if (typeof define !== 'undefined' && define.amd) { - define('PIXI', (function() { return root.PIXI = PIXI; })() ); - } else { - root.PIXI = PIXI; - } - - return PIXI; -}).call(this); \ No newline at end of file diff --git a/build/pixi.map b/build/pixi.map deleted file mode 100644 index cd78f61b8..000000000 --- a/build/pixi.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["pixi.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd"],"mappings":"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","file":"pixi.min.js"} \ No newline at end of file diff --git a/build/pixi.min.js b/build/pixi.min.js deleted file mode 100644 index 0f8021f93..000000000 --- a/build/pixi.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/* Phaser v2.6.1 PIXI Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ - -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this); -//# sourceMappingURL=pixi.map \ No newline at end of file diff --git a/resources/WebGL Tilemap Renderer progress.txt b/resources/WebGL Tilemap Renderer progress.txt new file mode 100644 index 000000000..2e2cd2adc --- /dev/null +++ b/resources/WebGL Tilemap Renderer progress.txt @@ -0,0 +1,419 @@ +Phaser/PIXI Tilemap modifications + +day one: + +Background/comprehension - understanding the existing system +Experiments in PIXI - adjusting the first test code +Rewriting the PIXI component - created a new shader and handling code +Tile-mapping - added a single "tile" drawer using the "mario" test images, extended it to draw the whole map full of tiles +Optimised the code to reduce unneccesary webgl initialisation + + +day two: + +Modify TilemapLayer to create and use PIXI.TileSprite using pixiTest flag (carried through Phaser.Tilemap.createLayer) +Tests indicate that the PIXI.TileSprite drawing isn't properly embedded in the draw list. +Created a new TilemapLayerGL class which extends PIXI.Tilemap in the same way that Phaser.TileSprite extends PIXI.TilingSprite. Used pixiTest flag in createLayer to branch and create the appropriate version. Adjusted sci-fly demo to use the new TilemapLayerGL class and tested. +We've now got a running demo with the ship over the map. It's running very slowly (profiling indicates 87% of the time is spent drawing tiles, so that will have to be modified to only draw the visible area) and it doesn't scroll when the ship hits the edges. +I think the scrolling might be related to the inability to set this.fixedToCamera (which blows up because there is no this.position value when it tries to establish the fixed position). Modified PIXI.Tilemap to extend PIXI.Sprite instead, but that didn't fix either problem. Realised that the problem was with lack of Core functions, so copied code from TileSprite to create core and experimented turning off the various mixins that it included. Successful test with only 'FixedToCamera' provided that this.fixedToCamera is set after the Core.init call. +Modified Pixi.TilingSprite to use this.x and this.y when drawing tiles, which has provided a scrolling map surface. +It's still very slow - probably because it's rebuilding the entire PIXI surface (2560x704 pixels) from 16x16 pixel tiles. + +TODO: modify PIXI.Tilemap to create a surface only the size of the visible screen. Render only that part of the map into the new smaller surface. + +day three: + +Step through full process to ensure that slow-down is not caused by multiple draw-over (e.g. if a prior layer had multiple copies of a tile layer, or was calling render too many times). It isn't, so it must simply be too much work to draw the entire map each frame. + +Add TilemapLayerGL modes to optionally draw only the visible on-screen tiles each frame. This fixed the frame-rate issues entirely, it all runs smoothly in this mode. +Did first-pass clean-up on TilemapLayerGL to get rid of all the legacy code from the original canvas implementation and correct the comments accordingly. +Modified Phaser.Tilemap to temporarily default to testing (pixiText = true) so that I can test the other examples/tilemaps demos and fix incompatibilities with the GL layer code. + +Quick test results: +blank tilemap - draws tiles at top and runs, but newly drawn (by hand) tiles don't appear in the layers +create from objects - draws arrow and coins but not the map background +csv map - draws a map but with many white squares in it, doesn't feel very smooth either +csv map collide - draws a character but no map +csv map with p2 - same again +features test - draws brown background and green arrow, has a very few tiles but mostly blank brown + +I'll start with "blank tilemap" and then retest the others in case it's all caused by one set of problems... +Ok, turns out that the examples are mostly set to Canvas mode... having overwritten that setting we get much better results (the examples are hardwired to use the GL tile layers at the moment, so Canvas logic + GL drawing == examples fail weirdly). +I have the blank tilemap example working, but there seems to be a difference in the way tiles are represented... for "sci fly" we have to subtract one from the tile index values (I'm assuming they're '1' based tile indices accessing a '0' based tilemap with the '0' tile index representing a blank tile). In the 'blank tilemap' example the tile indices are '0' based with '-1' representing a blank tile. + +Retests: +blank tilemap - works, but tile numbers are out by one (click on the second tile picture to draw the first tile, etc) and there's no alpha blending when layers are not focused +* create from objects - draws arrow, coins, and map, but doesn't draw 'objects' like the signs +csv map (all three demos) - work but tile numbers are out by one +* features test - works but doesn't draw 'objects' like the torches and signs +fill tiles - appears to work, tile numbers are out by one +map bounce - works perfectly +map collide - works perfectly +* mario - works but 'wrap' is not repeating the map data down the screen +paint tiles - works, tiles out by one +randomise tiles - works, tiles out by one +replace tiles - works, tiles out by one +* resize map - draws map but doesn't visibly resize +sci fly - works perfectly +shuffle tiles - works perfectly +swap tiles - works perfectly +* tile callbacks - draws map but not coins, blobs where coins should be don't vanish (so callbacks might not be working) +tile properties - works perfectly +* tilemap ray cast - draws map but not debug layer, impossible to tell if raycast is working without debug +tileset from bitmapdata - works perfectly + +* demos that fail for other reasons than 'tiles out by one' + +create from objects: looks like the actual 'createFromObjects' call is working perfectly (coins). The failure is due to the lack of ability to handle multiple tile source images per tilemap. Looking at features_test.json (the map source) it appears that there are multiple layers with different sources... I'll start by supporting multiple layers. +With some help from Rich, finally discovered the Tileset class and it's firstgid value. Also discovered the 'draw' function in there which is hard-wired to Canvas drawing. Options: spin off TilesetGl class, or create drawGl function and branch on every draw call, or duplicate the firstgid logic in my new GL drawing code. I prefer the third option. At some point that draw in Tileset should be moved because Tileset is a data-holder class and shouldn't really contain drawing logic (despite how convenient it is to put it there to access firstgid etc from Tileset). My rationale for this separation is that rendering for browsers is very similar to writing game for old-school consoles - we separated the code that touches hardware from the logic code, because then we could convert the game to a different platform easily. In this case the 'different platform' is webgl but the approach should be the same. + + + +day four: + +Read through the new PIXI 4 tilemap code to see another approach to this task. It looks very similar (beautiful code though, mine is still very rough). They're using TRIANGLE rather than TRIANGLE_STRIP which I believe will give this implementation a slight speed edge when I add proper batching. There's an anim x,y property which is passed to the shaders, I'll need to look at their shader code to see how that's being used... might be a clever way of allowing map tile animations and passing most of the work off to the GPU. + +Ran a profiler on my code using FireFox which runs the sci-fly demo extremely slowly (6 fps). As expected 95% of the time is locked in the _renderTile function, I'm virtually certain that the GPU is blocking because I'm only sending pairs in my TRIANGLE_STRIP at the moment. I shall prioritise the batch processing then re-run those tests to make sure the problem is solved. It would be very interesting to find out why Chrome and Canary on my computer do not suffer from the same problem (after all, it's the same GPU!). But I suspect I won't ever be able to answer that question in light of Rich's results (it ran slowly on his Chrome browser with a more powerful GPU...) + +The batch changes are in, in a very rough form. The entire visible screen is now drawn with a single gl.drawArrays call after the JS sets up a large VBO with degenerate tris to separate the individual tiles from each other. This approach was hugely successful at drawing in the "pbRenderer" (now called "Beam"), however it is still choking FireFox. Further investigation is needed including: test the old pbRenderer demos to make sure they don't choke FireFox, if it does then check the PIXI 4 tilemap renderer to see if that does too. If the old demos work properly, then compare them with this new implementation line-by-line to find out what's causing the problem now. + +False alarm? After a restart FireFox is now running the new demo correctly (60 fps)... I'm certain I cleared the cache before testing the new version, but maybe there was something jamming up the GPU which got cleared when I reset the browser. Still, this is good news, and now I can go ahead and finish this implementation with proper scroll offsets then get Rich to test it on his rig. +Added the scroll offsets and gave the code a cursory first-pass clean up. I've noticed that when switching from Chrome to FireFox it runs slowly for a few seconds before settling in to the solid 60 fps... I think this might be some webgl feature not being cleaned up immediately after Chrome closes because it's very consistent. + +Next coding task is to modify the Tileset class to remove the 'draw' function, and use it's firstgid value so that more of the Phaser tileset examples will work correctly. +Rich tested on his lap-top and the frame-rate issues were generally gone. +However testing other demos shows a large corrupt tile in the ones which use the brown tile-set (create from objects, features test, map bounce, etc) and the green tiles (csv map collide, csv map with p2, etc). Some of these demos run slowly on his lap-top so I'll prioritise fixing the corrupt tile (maybe a firstgid issue?) + + +day five (part 1): + +I can reference firstgid (in Phaser.Tileset) through PIXI.Tilemap.map.tilesets[X].firstgid. Currently I'm limited to one tileset per map so I've hardwired this to tilesets[0].firstgid and it's working for many examples. +Test results show that most of the demos which previously had "out by one" errors are working properly now. The exceptions are "fill tiles" and anything else using that desert tileset. I'll need to investigate that further, it still looks like an 'out by one' error so maybe it's using a second tileset and I'm grabbing the wrong firstgid value. + +The large corrupt tile was caused by drawing a VBO with insufficient data. I've found two possible cases where this can happen and fixed them. I'll need to get Rich to test again to see if the previously slow demos with corrupt tiles are now working smoothly on his rig. + +Ok the 'desert' tileset uses a 1 pixel margin and a 1 pixel separation between each tile (which is why filltiles etc were broken). I don't see an efficient way to support this level of flexibility using WebGL because every time the tileset changes the batching will break, and it's going to impose a ton of extra calculations which are currently being pre-calced into the high-speed VBO creation loop. Ideally webgl wants to draw a ton of stuff from a single source image in one large batch. +What we could maybe do is run the canvas tile rendering code to generate a source texture (no margins, no spacing) of all tiles which are the same size. We'd need a different texture for each tile-size, and they would need to be processed as separate batches. This would let webgl run at maximum speed, with a memory overhead for the new textures, and an initialisation overhead to generate them. I'll talk this over with Rich before going any further with these more complicated tileset cases. + +(part 2): + +Had a chat with Rich and he suggested a number of things that are helpful. +It *looks* like I can avoid a lot of code duplication by adding an alternative to Phaser.Tileset.draw for drawGl. If I do things this way I can leverage all of the existing Phaser support for tilesets with margins and separators, plus the code to handle multiple tilesets in a single map (which is currently broken even in canvas if the tilesets aren't the same size, see example "Create From Objects" - the large tiles are messed up). +My new drawGl function builds a list of data objects with texture coordinates and destination coordinate - exactly like the canvas drawImage function uses... then the tricky bit will be finding a good mechanism for transferring that list over to PIXI such that it draws as part of the PIXI draw loops to maintain layer order with all the other gl drawing. +My older attempt uses TilemapLayerGL which extends PIXI.Tilemap which extends PIXI.DisplayObject... with this new approach I would like to avoid using TilemapLayerGL (which will mainly be a duplicate of Phaser.TilemapLayer), but I need to dig a bit deeper to see if that will be possible. + + +day six: + +After several attempts I can't find a neat way to discard TilemapLayerGL. In order to make PIXI accept this drawing as part of it's own system it is essential to extend PIXI.Tilemap, and for Canvas drawing TilemapLayer has to extend Phaser.Sprite. +I've copied over a ton more content from TilemapLayer so that TilemapLayerGL is now a duplicate in all regards except what it extends and the actual tile batch list build and draw stuff. This should be looked at again in the future because it violates the DRY principle, however I don't want to spend any more time on non-essential work getting this GL tile drawing system up and running. +There is now a drawGL function in Phaser.Tileset which simply pushes the tile information into a list of Objects. This information is being added to the TilemapLayerGL this.glBatch list (which extends PIXI.Tilemap and so is visible to the renderer). +PIXI.Tilemap uses this list to build a GL buffer of TRIANGLE_STRIP with degenerate triangles between each pair of triangles that represent a tile. It then draws the entire layer in a single GL draw call. +To test the demos, we currently need to set drawing mode to Phaser.WEBGL (in the Phaser.Game constructor arguments), and pass 'true' as the final argument to map.createLayer (eg. from sci-fly example): + map = game.add.tilemap('level3'); + map.addTilesetImage('CybernoidMap3BG_bank.png', 'tiles'); + layer = map.createLayer(0, undefined, undefined, undefined, true); <-- true specifies to use the new PIXI tilemap system + +bug - in the sci-fly demo there is a new problem with collisions when the map has scrolled, I'm guessing this is some sort of scroll offset conflict between the display and the collision system. + +Testing the system on tilemaps with borders and tiles with margins ("fill-tiles" example)... it works! This vindicates the change of approach because that was going to be a real pain to support if I had to recreate all the stuff that Phaser already handles out of the box! + +Removed requirement for pixiTest parameter in createLayer by using renderType instead. I don't need to use WEBGL because it's currently hard-wired in Phaser.Game constructor code (which I had forgotten about) so all examples running locally will be using the new renderer. + +another bug - when scrolling not only are the collisions off, the redrawing tile area gets smaller as we move away from the map origin. This could be linked to the collisions via the scroll offsets being wrong, however the area of map which is drawn appears to be in the correct place... are there two separate scroll offsets in this system? There are some calculations for start/end of drawing region, might be a good place to start looking. + +I need to make the PIXI.Tilemap access multiple source textures and use tile width and height from the batch buffer data in order to reinstate the Phaser multiple tilesets per map capabilities. NOTE: decided this is a stupid approach, see task list below for better idea. + +After testing, *all* examples seem to work (with these three restrictions) + +Found both bugs, I was effectively applying the scroll twice because the new batch list calculates the offsets internally and I was still applying it as a uniform to the webgl shader. + +Remaining Task Summary: + +- Change the map parser, so that when additional tilesets are encountered, it creates a new Tilemap Layer for each and keeps data for only one tileset per layer. (added TODO: comments into TilemapParser.js for one possible approach to this). +- Store the tileset index or reference in the Tile structure, deprecate resolveTileset and any other related code +- Add alpha blending to the shader, calculate the 'final' alpha by multiplying the layer's worldAlpha with the tile.alpha +- Add scaling to the shader, use the layer's worldScale. (See if rotation can be easily supported too, while doing this) +- Optimise the drawing to avoid degenerate triangles where possible, e.g. each row should be a single tri-strip without degenerates in it for faster drawing + +Known bugs: +- Blank Tilemap example isn't drawing, may not handle multiple layers correctly. + +Attempted a quick hack to test the new layers approach but got bogged down in the messy class relationship here. + +Some notes for later: +- Tilemap creates TilemapLayer objects (Sprites). It keeps no reference to them after adding them to a group (or the world group), the new layer object gets a 'map' reference. +- Tilemap contains a layers member variable, it contains bespoke objects (see createBlankLayer) with some information about layers in the map data (which do not correspond to TilemapLayer objects at all) +- TilemapParser parses raw map data into a local 'map' variable which is returned to be set as the Tilemap.data member. It creates Tileset objects and populates them for each tile set used in the raw map. It creates Tile objects for each tile in the map data. +- Tileset contains information about separate tile sources, including the image, the first tile, tile layout in the image. It contains the draw function to render a tile on the canvas. +- Tilemap.createLayer is called by Examples after the Tilemap has been created and parsed. + +So, I can't create new TilemapLayer objects in TilemapParser because it will preempt Tilemap.createLayer. Or maybe I can, these TilemapLayer objects will be internal (hidden)...? There aren't any later calls in the Examples which I can extend or adapt, so that might have to be the solution. + +day seven: + +Read through the above and took a good look at the code. It's a messy solution in this context. +A better idea... parse the map as originally, on return to Tilemap create layers for each 'unique' entry in tilesets array. +This avoids the circular calls to and from tilemap and parse, allows map to have a populated data member after parse, and still creates the required new layers before the example calls createLayer. +(Check if this process can be added to createLayer?) +Added createInternalLayer to Phaser.Tilemap which creates a new internal layer for each non-zero member of the base Tilemap's tilesets list when createLayer is called. (The zero tileset is drawn by the layer created by createLayer). + +The Tile objects have incorrect data... in the "create from objects" example the "tiles2" tiles which are 70x70 pixels have a width/height of 32x32 (the same as the base tiles from the "ground_1x1" set). I'll take a look at that in a minute after I get this to draw something (the tile used is in the top-left of the image so it should draw even through the sizes are wrong). + +The image texture appears to also be incorrect in Tile objects that use different tilesets. This might explain why we get garbage drawn to screen, however looking at the phaser.io example I'm seeing the correct tiles being drawn. Need to check all my new code to find how it has got the wrong values. + +Bug found in TilemapLayerGL where it sets the PIXI baseTexture. I'm seeing the top-left corner of the 70x70 tiles. + +Added a tileset parameter to the map's layer data objects when creating an 'internal' layer. +Made TilemapLayerGL grab the tile dimensions from the new tileset parameter instead of relying on the map containing only one size. + +First working demo with multiple webgl layers each batching tiles from separate tilesets which were all attached to one map layer in the Tiled program. +Tiles are still turning off too soon at the map edges (exactly like the Canvas version) but that should be fixable with this 'internal layer' approach. + +Fixed tiles vanishing at the edge of the screen by using the difference between the original map tileWidth and the current tileset tileWidth when calculating the redraw region left and top. + +Removed resolveTileset from TilemapLayerGL as it is no longer needed. + +Task list updated: +- Add alpha blending to the shader, calculate the 'final' alpha by multiplying the layer's worldAlpha with the tile.alpha +- Add scaling to the shader, use the layer's worldScale. (See if rotation can be easily supported too, while doing this) +- Optimise the drawing to avoid degenerate triangles where possible, e.g. each row should be a single tri-strip without degenerates in it for faster drawing +- larger tiles are top-left aligned but should be bottom-left aligned to match the way that Tiled places them + +Added offset parameters to renderRegion to correctly bottom-left align the large tiles. +NOTE: the canvas version does not do this and consequently displays the tiles in the wrong positions. + +Added alpha blending based on TilemapLayerGL.alpha property. NOTE: this appears to punch holes through the background and blends with the CSS background colour of the web-page. See: http://webglfundamentals.org/webgl/lessons/webgl-and-alpha.html for list of possible solutions to this... looks like PIXI is currently set to use premultiplied alpha by Phaser (need to find out where, or if this is a default?) + +Prepared code to pass each Tile alpha value through to the batch renderer, however realised that implementing this will break the batching! +Need to talk with Rich about it before proceeding further. + +Modified the batch creation code and the batch drawing code to only insert degenerate triangles at the end of rows or when a row is broken (e.g. by some empty tiles which we won't draw at all). This should speed things up by optimising the draw, and reducing the amount of data required to describe the batch. + +Took a look at the PIXI triangle strip shader and noticed that the alpha is being used as a multiplier on the whole colour vector... I was applying it directly to the .a fourth vector value. Changed the tilemap shader to match and it's working great now! + + +day eight: + +Task list updated: +- calculate the 'final' alpha by multiplying the layer's worldAlpha with the tile.alpha +Added a TODO note in Tile.js for the unused 'alpha' property. It is not currently supported in Canvas or WebGL. Supporting it in WebGL will require the batch processing to change. Either we add 'alpha' to the gl data buffer for every tile, and modify the shader to apply it. Or we need to break the Tiles into two processing groups, those with alpha = 1, and those with other (non-zero) alpha values. +Both renderers currently support one global alpha value applied to each layer. +- Add scaling to the shader, use the layer's worldScale. (See if rotation can be easily supported too, while doing this) + +Added a uniform to the tile shader for scale factor. Set it up and modified the 'blank tilemap.js' example to constantly stretch it between 0.5 and 2.0 in x and y at different speeds. It looks like it's nearly correct, but the anchor point doesn't match the same test in Canvas mode - which is using the top-left corner as the anchor. +Yes my current GL version is using the centre of the screen as the anchor point. +Added a uniform for the centreOffset which is (+1, -1) to offset the WebGL screen space before scaling, then applied it again after scaling to draw things where they should go. The -1 flips the Y coordinates (Canvas coordinates increase down the screen, WebGL coordinates increase up the screen). +I'm now seeing the same behaviour in WebGL as we get from the Canvas when a Tilemap is scaled. + +I think that's it! Time to clean it all up... + + + + +Ok finally... here is the source for my modifications of the "blank tilemap" example which scales layer 1 constantly. + + + + +// var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update, render: render }); +var game = new Phaser.Game(800, 600, Phaser.WEBGL, 'phaser-example', { preload: preload, create: create, update: update, render: render }); + + +function preload() { + + game.load.image('ground_1x1', 'assets/tilemaps/tiles/ground_1x1.png'); + +} + +var map; +var layer1; +var layer2; +var layer3; + +var marker; +var currentTile = 0; +var currentLayer; + +var cursors; +var showLayersKey; +var layer1Key; +var layer2Key; +var layer3Key; + +var layer1Scale = new Phaser.Point(1, 1); +var sx = 0.03; +var sy = 0.02; + + +function create() { + + game.stage.backgroundColor = '#2d2d2d'; + + // Creates a blank tilemap + map = game.add.tilemap(); + + // Add a Tileset image to the map + map.addTilesetImage('ground_1x1'); + + // Creates a new blank layer and sets the map dimensions. + // In this case the map is 40x30 tiles in size and the tiles are 32x32 pixels in size. + layer1 = map.create('level1', 40, 30, 32, 32); + layer1.scrollFactorX = 0.5; + layer1.scrollFactorY = 0.5; + + // Resize the world + layer1.resizeWorld(); + + layer2 = map.createBlankLayer('level2', 40, 30, 32, 32); + layer2.scrollFactorX = 0.8; + layer2.scrollFactorY = 0.8; + + layer3 = map.createBlankLayer('level3', 40, 30, 32, 32); + + currentLayer = layer3; + + // Create our tile selector at the top of the screen + createTileSelector(); + + game.input.addMoveCallback(updateMarker, this); + + cursors = game.input.keyboard.createCursorKeys(); + + showLayersKey = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR); + layer1Key = game.input.keyboard.addKey(Phaser.Keyboard.ONE); + layer2Key = game.input.keyboard.addKey(Phaser.Keyboard.TWO); + layer3Key = game.input.keyboard.addKey(Phaser.Keyboard.THREE); + + showLayersKey.onDown.add(changeLayer, this); + layer1Key.onDown.add(changeLayer, this); + layer2Key.onDown.add(changeLayer, this); + layer3Key.onDown.add(changeLayer, this); + + console.log(layer1.index); + console.log(layer2.index); + console.log(layer3.index); + +} + +function changeLayer(key) { + + switch (key.keyCode) + { + case Phaser.Keyboard.SPACEBAR: + layer1.alpha = 1; + layer2.alpha = 1; + layer3.alpha = 1; + break; + + case Phaser.Keyboard.ONE: + currentLayer = layer1; + layer1.alpha = 1; + layer2.alpha = 0.2; + layer3.alpha = 0.2; + break; + + case Phaser.Keyboard.TWO: + currentLayer = layer2; + layer1.alpha = 0.2; + layer2.alpha = 1; + layer3.alpha = 0.2; + break; + + case Phaser.Keyboard.THREE: + currentLayer = layer3; + layer1.alpha = 0.2; + layer2.alpha = 0.2; + layer3.alpha = 1; + break; + } + +} + +function pickTile(sprite, pointer) { + + currentTile = game.math.snapToFloor(pointer.x, 32) / 32; + +} + +function updateMarker() { + + marker.x = currentLayer.getTileX(game.input.activePointer.worldX) * 32; + marker.y = currentLayer.getTileY(game.input.activePointer.worldY) * 32; + + if (game.input.mousePointer.isDown) + { + map.putTile(currentTile, currentLayer.getTileX(marker.x), currentLayer.getTileY(marker.y), currentLayer); + // map.fill(currentTile, currentLayer.getTileX(marker.x), currentLayer.getTileY(marker.y), 4, 4, currentLayer); + } + +} + +function update() { + + if (cursors.left.isDown) + { + game.camera.x -= 4; + } + else if (cursors.right.isDown) + { + game.camera.x += 4; + } + + if (cursors.up.isDown) + { + game.camera.y -= 4; + } + else if (cursors.down.isDown) + { + game.camera.y += 4; + } + + // animate the layer1 scale constantly + layer1Scale.x += sx; + if ( layer1Scale.x < 0.5 || layer1Scale.x > 2.0 ) sx = -sx; + layer1Scale.y += sy; + if ( layer1Scale.y < 0.5 || layer1Scale.y > 2.0 ) sy = -sy; + layer1.scale.set( layer1Scale.x, layer1Scale.y ); + layer1.updateTransform(); +} + +function render() { + + game.debug.text('Current Layer: ' + currentLayer.name, 16, 550); + game.debug.text('1-3 Switch Layers. SPACE = Show All. Cursors = Move Camera', 16, 570); + +} + +function createTileSelector() { + + // Our tile selection window + var tileSelector = game.add.group(); + + var tileSelectorBackground = game.make.graphics(); + tileSelectorBackground.beginFill(0x000000, 0.5); + tileSelectorBackground.drawRect(0, 0, 800, 34); + tileSelectorBackground.endFill(); + + tileSelector.add(tileSelectorBackground); + + var tileStrip = tileSelector.create(1, 1, 'ground_1x1'); + tileStrip.inputEnabled = true; + tileStrip.events.onInputDown.add(pickTile, this); + + tileSelector.fixedToCamera = true; + + // Our painting marker + marker = game.add.graphics(); + marker.lineStyle(2, 0x000000, 1); + marker.drawRect(0, 0, 32, 32); + +} + + + + + + + + diff --git a/src/Phaser.js b/src/Phaser.js index 245a9c197..39a3b03be 100644 --- a/src/Phaser.js +++ b/src/Phaser.js @@ -15,7 +15,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.2 Beta', + VERSION: '2.7.0 Beta', /** * An array of Phaser game instances. diff --git a/src/gameobjects/BitmapData.js b/src/gameobjects/BitmapData.js index 04a807be5..64f6f02b3 100644 --- a/src/gameobjects/BitmapData.js +++ b/src/gameobjects/BitmapData.js @@ -1730,6 +1730,8 @@ Phaser.BitmapData.prototype = { ctx.shadowOffsetX = x || 10; ctx.shadowOffsetY = y || 10; } + + return this; }, @@ -1881,6 +1883,8 @@ Phaser.BitmapData.prototype = { ctx.fillText(text, x, y); ctx.font = prevFont; + + return this; }, diff --git a/src/gameobjects/RenderTexture.js b/src/gameobjects/RenderTexture.js index 612afe0e5..77a44ede6 100644 --- a/src/gameobjects/RenderTexture.js +++ b/src/gameobjects/RenderTexture.js @@ -12,7 +12,6 @@ * @constructor * @extends PIXI.RenderTexture * @param {Phaser.Game} game - Current game instance. -* @param {string} key - Internal Phaser reference key for the render texture. * @param {number} [width=100] - The width of the render texture. * @param {number} [height=100] - The height of the render texture. * @param {string} [key=''] - The key of the RenderTexture in the Cache, if stored there. diff --git a/src/geom/Hermite.js b/src/geom/Hermite.js index 1d4269344..2991f37a8 100644 --- a/src/geom/Hermite.js +++ b/src/geom/Hermite.js @@ -104,13 +104,13 @@ Phaser.Hermite = function (p1x, p1y, p2x, p2y, v1x, v1y, v2x, v2y, accuracy) { * @property {Phaser.Point} _temp1 - A local cached Point object. * @private */ - this._temp1 = new Phaser.Point; + this._temp1 = new Phaser.Point(); /** * @property {Phaser.Point} _temp2 - A local cached Point object. * @private */ - this._temp2 = new Phaser.Point; + this._temp2 = new Phaser.Point(); this.recalculate(); @@ -229,8 +229,8 @@ Phaser.Hermite.prototype = { if (t > 1) { - t = 1; - } + t = 1; + } } var t2 = t * t; @@ -262,8 +262,8 @@ Phaser.Hermite.prototype = { if (t > 1) { - t = 1; - } + t = 1; + } } var t2 = t * t; @@ -293,8 +293,8 @@ Phaser.Hermite.prototype = { if (t > 1) { - t = 1; - } + t = 1; + } var t2 = t * t; var t3 = t * t2; @@ -344,8 +344,8 @@ Phaser.Hermite.prototype = { if (t === undefined) { t = 0; } - this.getPoint(t - .01, this._temp1); - this.getPoint(t + .01, this._temp2); + this.getPoint(t - 0.01, this._temp1); + this.getPoint(t + 0.01, this._temp2); return Math.atan2(this._temp2.y - this._temp1.y, this._temp2.x - this._temp1.x); diff --git a/src/pixi/extras/Tilemap.js b/src/pixi/extras/Tilemap.js new file mode 100644 index 000000000..fd974c067 --- /dev/null +++ b/src/pixi/extras/Tilemap.js @@ -0,0 +1,373 @@ +/** +* @author Richard Davey +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* Tilemap - constructor +* +* @param {Array} layer - layer data from the map, arranged in mapheight lists of mapwidth Phaser.Tile objects (2d array) +* +*/ +PIXI.Tilemap = function(texture, mapwidth, mapheight, tilewidth, tileheight, layer) { + + PIXI.DisplayObjectContainer.call(this); + + /** + * The texture of the Tilemap + * + * @property texture + * @type Texture + */ + this.texture = texture; + + // faster access to the tile dimensions + this.tileWide = tilewidth; + this.tileHigh = tileheight; + this.mapWide = mapwidth; + this.mapHigh = mapheight; + + // TODO: switch here to create DisplayObjectContainer at correct size for the render mode + this.width = this.mapWide * this.tileWide; + this.height = this.mapHigh * this.tileHigh; + + this.layer = layer; + + // store the list of batch drawing instructions (for use with WebGL rendering) + this.glBatch = null; + + /** + * Remember last tile drawn to avoid unnecessary set-up + * + * @type Integer + */ + this.lastTile = -1; + + /** + * Whether the Tilemap is dirty or not + * + * @property dirty + * @type Boolean + */ + this.dirty = true; + + /** + * The blend mode to be applied to the tilemap. Set to PIXI.blendModes.NORMAL to remove any blend mode. + * + * @property blendMode + * @type Number + * @default PIXI.blendModes.NORMAL; + */ + this.blendMode = PIXI.blendModes.NORMAL; + + /** + * The size of a single data element in the batch drawing. + * Each tile requires two triangles, each specified as: + * float left, bottom, right, top - screen coordinates + * float u, v, wide, high - source texture coordinates + * + * @type {Number} + */ + this.batchDataElement = 16; + + // calculate total batch data size + var dataSize = mapwidth * mapheight * this.batchDataElement; + + // create buffer data for the webgl rendering of this tile + this.buffer = new PIXI.Float32Array( dataSize ); + +}; + +// constructor, this class extends PIXI.DisplayObjectContainer +PIXI.Tilemap.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); +PIXI.Tilemap.prototype.constructor = PIXI.Tilemap; + +// unused methods overridden to prevent default behavior +PIXI.Tilemap.prototype.update = function () {}; +PIXI.Tilemap.prototype.postUpdate = function () {}; + +// override PIXI.DisplayObjectContainer _renderWebGL +PIXI.Tilemap.prototype._renderWebGL = function (renderSession) { + + // if the sprite is not visible or the alpha is 0 then no need to render this element + if (!this.visible || this.alpha <= 0) + { + return; + } + + // stop current render session batch drawing + renderSession.spriteBatch.stop(); + + if (!this._vertexBuffer) + { + this._initWebGL(renderSession); + } + + renderSession.shaderManager.setShader(renderSession.shaderManager.tilemapShader); + + this._renderWholeTilemap(renderSession); + + // restart batch drawing now that this Tile layer has been rendered + renderSession.spriteBatch.start(); + +}; + +PIXI.Tilemap.prototype._initWebGL = function (renderSession) { + + var gl = renderSession.gl; + + this._vertexBuffer = gl.createBuffer(); + this._indexBuffer = gl.createBuffer(); + this._uvBuffer = gl.createBuffer(); + this._colorBuffer = gl.createBuffer(); + + // create a GL buffer to transfer all the vertex position data through + this.positionBuffer = gl.createBuffer(); + + // bind the buffer to the RAM resident positionBuffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.buffer, gl.STATIC_DRAW); + +}; + + +PIXI.Tilemap.prototype._renderBatch = function (renderSession) { + + if (this.glBatch) + { + var gl = renderSession.gl; + + // TODO: should probably use destination buffer dimensions (halved) + var screenWide2 = this.game.width * 0.5; + var screenHigh2 = this.game.height * 0.5; + + // size of one pixel in the source texture + var iTextureWide = 1.0 / this.texture.width; + var iTextureHigh = 1.0 / this.texture.height; + + // size of one tile in the source texture + var srcWide = this.tileWide * iTextureWide; + var srcHigh = this.tileHigh * iTextureHigh; + + // pre-calculate inverse half-buffer dimensions + var iWide = 1.0 / screenWide2; + var iHigh = 1.0 / screenHigh2; + + var wide = this.tileWide * 0.5 / screenWide2; + var high = this.tileHigh * 0.5 / screenHigh2; + + var buffer = this.buffer; + var oldR, oldT, uvl, uvt; + + // process entire glBatch into a single webGl draw buffer for a TRIANGLE_STRIP blit + var c = 0; + var degenerate = false; + + for (var i = 0, l = this.glBatch.length; i < l; i++) + { + // sx: this.drawCoords[coordIndex], + // sy: this.drawCoords[coordIndex + 1], + // sw: this.tileWidth, + // sh: this.tileHeight, + // dx: x, + // dy: y, + // dw: this.tileWidth, + // dh: this.tileHeight + + var t = this.glBatch[i]; + + if (!t) + { + // insert a degenerate triangle when null is found in the list of batch objects + degenerate = true; + + // skip to end of loop, degenerate will be inserted when no more null objects are found + continue; + } + + var x = t.dx * iWide - 1; + var y = 1 - t.dy * iHigh; + + var lft = x - wide; + var bot = y + high; + + var uvl = t.sx * iTextureWide; + var uvt = t.sy * iTextureHigh; + + // insert a degenerate triangle to separate the tiles + if (degenerate) + { + // add a degenerate triangle: repeat the last vertex + buffer[ c ] = oldR; + buffer[ c + 1 ] = oldT; + // then repeat the next vertex + buffer[ c + 4 ] = lft; + buffer[ c + 5 ] = bot; + // pad with texture coordinates (probably not needed) + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 7 ] = uvt; + + // advance the buffer index for one single degenerate triangle + c += 8; + degenerate = false; + } + + // calculate the destination location of the tile in screen units (-1..1) + buffer[ c ] = buffer[ c + 4 ] = lft; + buffer[ c + 1 ] = buffer[ c + 9 ] = bot; + buffer[ c + 8 ] = buffer[ c + 12] = oldR = x + wide; + buffer[ c + 5 ] = buffer[ c + 13] = oldT = y - high; + + // calculate the uv coordinates of the tile source image + buffer[ c + 2 ] = buffer[ c + 6 ] = uvl; + buffer[ c + 3 ] = buffer[ c + 11] = uvt; + buffer[ c + 10] = buffer[ c + 14] = uvl + srcWide; + buffer[ c + 7 ] = buffer[ c + 15] = uvt + srcHigh; + + // advance the buffer index + c += 16; + } + + // if there's anything to draw... + if (c > 0) + { + var shader = renderSession.shaderManager.tilemapShader; + + // upload the VBO + gl.bufferData( gl.ARRAY_BUFFER, buffer, gl.STATIC_DRAW ); + + // prepare the shader attributes + gl.vertexAttribPointer( shader.aPosition, 4, gl.FLOAT, false, 0, 0 ); + + // draw the entire VBO in one call + gl.drawArrays(gl.TRIANGLE_STRIP, 0, Math.floor(c / 4)); + } + } + +}; + +/** +* render the entire tilemap using a fast webgl batched tile render +* +* @param {[type]} renderSession [description] +*/ +PIXI.Tilemap.prototype._renderWholeTilemap = function (renderSession) { + + var gl = renderSession.gl; + + var shader = renderSession.shaderManager.tilemapShader; + + renderSession.blendModeManager.setBlendMode(this.blendMode); + + // set the uniforms and texture + + // set the offset in screen units to the center of the screen + // and flip the GL y coordinate to be zero at the top + gl.uniform2f(shader.uCentreOffset, 1, -1); + + // alpha value for whole batch + gl.uniform1f(shader.uAlpha, this.alpha); + + // scale factors for whole batch + gl.uniform2f(shader.uScale, this.worldScale.x, this.worldScale.y); + + // source texture unit + gl.activeTexture(gl.TEXTURE0); + + // check if a texture is dirty.. + if(this.texture.baseTexture._dirty[gl.id]) + { + renderSession.renderer.updateTexture(this.texture.baseTexture); + } + else + { + // bind the current texture + gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); + } + + // bind the source buffer + gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer); + + // draw the batched tile list + this._renderBatch(renderSession); + +}; + +/** + * When the texture is updated, this event will fire to update the scale and frame + * + * @method onTextureUpdate + * @param event + * @private + */ +PIXI.Tilemap.prototype.onTextureUpdate = function () { + + this.updateFrame = true; + +}; + +/** + * Returns the bounds of the map as a rectangle. The bounds calculation takes the worldTransform into account. + * + * @method getBounds + * @param matrix {Matrix} the transformation matrix of the sprite + * @return {Rectangle} the framing rectangle + */ +PIXI.Tilemap.prototype.getBounds = function (matrix) { + + var worldTransform = matrix || this.worldTransform; + + var a = worldTransform.a; + var b = worldTransform.b; + var c = worldTransform.c; + var d = worldTransform.d; + var tx = worldTransform.tx; + var ty = worldTransform.ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + var vertices = [ + 0, 0, + this.mapWide * this.tileWide, 0, + this.mapWide * this.tileWide, this.mapHigh * this.tileHigh, + 0, this.mapHigh * this.tileHigh + ]; + + for (var i = 0, n = vertices.length; i < n; i += 2) + { + var rawX = vertices[i], rawY = vertices[i + 1]; + var x = (a * rawX) + (c * rawY) + tx; + var y = (d * rawY) + (b * rawX) + ty; + + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + } + + if (minX === -Infinity || maxY === Infinity) + { + return PIXI.EmptyRectangle; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + // store a reference so that if this function gets called again in the render cycle we do not have to recalculate + this._currentBounds = bounds; + + return bounds; + +}; diff --git a/src/pixi/renderers/webgl/shaders/TilemapShader.js b/src/pixi/renderers/webgl/shaders/TilemapShader.js new file mode 100644 index 000000000..2105ca4c7 --- /dev/null +++ b/src/pixi/renderers/webgl/shaders/TilemapShader.js @@ -0,0 +1,122 @@ +/** +* @author Richard Davey +* @author Pete Baron +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* This shader is used to render a batch of tiles stored as a tri-strip with +* degenerate triangles at the end of each row, or group of tiles (A group is a +* row of tiles with content followed by one or more empty tiles which are not +* drawn). +* +* Settings available are: +* +* uAlpha - the alpha blending factor for a batch draw +* uCentreOffset - the offset to the center of the drawing area, in WebGL units (-1...1) +* uScale - the scaling factor for a batch draw +* uImageSampler - the source texture containing the tile images +* aPosition - the attribute set by the batch data for drawing location +* +* @class TilemapShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.TilemapShader = function (gl) { + + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + this.fragmentSrc = [ + " precision lowp float;", + " uniform sampler2D uImageSampler;", + " uniform float uAlpha;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_FragColor = texture2D(uImageSampler, vTexCoord) * uAlpha;", + " }" + ]; + + this.vertexSrc = [ + " precision lowp float;", + " uniform vec2 uCentreOffset;", + " uniform vec2 uScale;", + " attribute vec4 aPosition;", + " varying vec2 vTexCoord;", + " void main(void) {", + " gl_Position.zw = vec2(1, 1);", + " gl_Position.xy = (aPosition.xy + uCentreOffset) * uScale - uCentreOffset;", + " vTexCoord = aPosition.zw;", + " }" + ]; + + /** + * A local texture counter for multi-texture shaders. + * @property textureCount + * @type Number + */ + this.textureCount = 0; + + this.init(); +}; + +PIXI.TilemapShader.prototype.constructor = PIXI.TilemapShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.TilemapShader.prototype.init = function () { + + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + gl.useProgram(program); + + // get and store the attributes + this.aPosition = gl.getAttribLocation(program, 'aPosition'); + this.uSampler = gl.getUniformLocation(program, 'uImageSampler'); + this.uCentreOffset = gl.getUniformLocation(program, 'uCentreOffset'); + this.uAlpha = gl.getUniformLocation(program, 'uAlpha'); + this.uScale = gl.getUniformLocation(program, 'uScale'); + + this.attributes = [this.aPosition]; + this.uniforms = [this.uCentreOffset, this.uAlpha, this.uScale, this.uSampler]; + + this.program = program; + +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.TilemapShader.prototype.destroy = function () { + + this.gl.deleteProgram(this.program); + this.gl = null; + + this.uniforms = null; + this.attributes = null; + +}; diff --git a/src/pixi/renderers/webgl/utils/WebGLShaderManager.js b/src/pixi/renderers/webgl/utils/WebGLShaderManager.js index 297137e72..1ea64ab5f 100644 --- a/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +++ b/src/pixi/renderers/webgl/utils/WebGLShaderManager.js @@ -67,6 +67,9 @@ PIXI.WebGLShaderManager.prototype.setContext = function(gl) // the next one is used for rendering triangle strips this.stripShader = new PIXI.StripShader(gl); + // shader for batch drawing tilemap tiles as a set of triangle strips with degenerate triangles between them + this.tilemapShader = new PIXI.TilemapShader(gl); + this.setShader(this.defaultShader); }; @@ -154,5 +157,7 @@ PIXI.WebGLShaderManager.prototype.destroy = function() this.stripShader.destroy(); + this.tilemapShader.destroy(); + this.gl = null; }; diff --git a/src/sound/Sound.js b/src/sound/Sound.js index 9e9466279..dd18759c6 100644 --- a/src/sound/Sound.js +++ b/src/sound/Sound.js @@ -1152,8 +1152,7 @@ Object.defineProperty(Phaser.Sound.prototype, "mute", { /** * @name Phaser.Sound#volume -* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. -* @readonly +* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. The value given is clamped to the range 0 to 1. */ Object.defineProperty(Phaser.Sound.prototype, "volume", { diff --git a/src/tilemap/Tile.js b/src/tilemap/Tile.js index 9465f6660..ed97d7f6b 100644 --- a/src/tilemap/Tile.js +++ b/src/tilemap/Tile.js @@ -80,6 +80,7 @@ Phaser.Tile = function (layer, index, x, y, width, height) { /** * @property {number} alpha - The alpha value at which this tile is drawn to the canvas. + * TODO: currently unused for both Canvas and WebGL renderers */ this.alpha = 1; diff --git a/src/tilemap/Tilemap.js b/src/tilemap/Tilemap.js index 4b3378d55..d206e8ec6 100644 --- a/src/tilemap/Tilemap.js +++ b/src/tilemap/Tilemap.js @@ -100,7 +100,12 @@ Phaser.Tilemap = function (game, key, tileWidth, tileHeight, width, height) { * @property {array} tilesets - An array of Tilesets. */ this.tilesets = data.tilesets; - + + /** + * @property {array} tilesetLayers - An array of internal layers used to separate multiple tilesets from a single map layer. + */ + this.tilesetLayers = null; + /** * @property {array} imagecollections - An array of Image Collections. */ @@ -311,6 +316,20 @@ Phaser.Tilemap.prototype = { if (this.tilesets[idx]) { this.tilesets[idx].setImage(img); + + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // // for the first tileset, don't create a layer because createLayer will be called to do that + // this.tilesetLayers = []; + // } + // else + // { + // // for all the rest, go ahead and make a (currently) blank layer + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return this.tilesets[idx]; } else @@ -359,6 +378,17 @@ Phaser.Tilemap.prototype = { } } + // create an empty layer for the map parts corresponding to this tileset + // if ( !this.tilesetLayers ) + // { + // this.tilesetLayers = []; + // } + // else + // { + // // name, width, height, tileWidth, tileHeight, group + // this.tilesetLayers.push( this.createBlankLayer( "_internal" + this.tilesetLayers.length.toString() ) ); + // } + return newSet; } @@ -561,10 +591,9 @@ Phaser.Tilemap.prototype = { * @param {number} [width] - The rendered width of the layer, should never be wider than Game.width. If not given it will be set to Game.width. * @param {number} [height] - The rendered height of the layer, should never be wider than Game.height. If not given it will be set to Game.height. * @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group. - * @param {boolean} [pixiTest] - Temporary additional flag to enable tests of the PIXI.Tilemap renderer * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Sprite and can be moved around the display list accordingly. */ - createLayer: function (layer, width, height, group, pixiTest) { + createLayer: function (layer, width, height, group) { // Add Buffer support for the left of the canvas @@ -585,8 +614,17 @@ Phaser.Tilemap.prototype = { return; } - if ( pixiTest ) + // create the internal layers for different tilesets using this one as a base description + for (var i = 1, l = this.tilesets.length; i < l; i++) { + var ts = this.tilesets[i]; + var li = this.layers[index]; + this.createInternalLayer( "_internal" + i.toString(), ts, li.width, li.height, ts.tileWidth, ts.tileHeight, group ); + } + + if ( this.game.renderType === Phaser.WEBGL ) + { + // use WebGL variant of TilemapLayer return group.add(new Phaser.TilemapLayerGL(this.game, this, index, width, height)); } @@ -594,6 +632,121 @@ Phaser.Tilemap.prototype = { }, + /** + * Creates a new internal layer on this Tilemap. + * + * Internal layers are used when a Tilemap contains multiple Tilesets with different sized tiles. The tilesets + * each get a separate layer which is only ever referenced internally by the renderer. This approach permits us + * to handle large tiles at screen edges, and with the correct offset relative to the 'base' tileset regardless + * of size differences between the tiles. + * + * For WebGL rendering, this approach also permits us to batch the drawing calls efficiently. + * + * By default TilemapLayers are fixed to the camera. + * + * @method Phaser.Tilemap#createInternalLayer + * @param {string} name - The name of this layer. Must be unique within the map. + * @param {Phaser.Tileset} tileset - The tileset whose data is to be added to this layer. + * @param {number} width - The width of the layer in tiles. + * @param {number} height - The height of the layer in tiles. + * @param {number} tileWidth - The width of the tiles the layer uses for calculations. + * @param {number} tileHeight - The height of the tiles the layer uses for calculations. + * @param {Phaser.Group} [group] - Optional Group to add the layer to. If not specified it will be added to the World group. + * @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. + */ + createInternalLayer: function (name, tileset, width, height, tileWidth, tileHeight, group) { + + if (group === undefined) { group = this.game.world; } + + if (this.getLayerIndex(name) !== null) + { + console.warn('Tilemap.createBlankLayer: Layer with matching name already exists'); + return; + } + + var layer = { + + name: name, + x: 0, + y: 0, + width: width, + height: height, + widthInPixels: width * tileWidth, + heightInPixels: height * tileHeight, + alpha: 1, + visible: true, + properties: {}, + indexes: [], + callbacks: [], + bodies: [], + data: null, + tileset: tileset + + }; + + var row; + var output = []; + + for (var y = 0; y < height; y++) + { + row = []; + for (var x = 0; x < width; x++) + { + // get the equivalent tile from this Tilemap + var tile = this.layers[0].data[y][x]; + // find out which tileset it is in + var setIndex = this.tiles[tile.index] && this.tiles[tile.index][2]; + var ts = this.tilesets[setIndex]; + // is it one of the ones we want to move? + if ( ts == tileset ) + { + // move the tile to this new layer + row.push( tile ); + // erase it from the original (mixed tileset) layer + this.layers[0].data[y][x] = new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight); + } + else + { + // add an empty tile + row.push(new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight)); + } + } + + output.push(row); + } + + layer.data = output; + + this.layers.push(layer); + + var w = layer.widthInPixels; + var h = layer.heightInPixels; + + if (w > this.game.width) + { + w = this.game.width; + } + + if (h > this.game.height) + { + h = this.game.height; + } + + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } + output.name = name; + + return group.add(output); + + }, + /** * Creates a new and empty layer on this Tilemap. By default TilemapLayers are fixed to the camera. * @@ -670,7 +823,15 @@ Phaser.Tilemap.prototype = { h = this.game.height; } - var output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + var output; + if ( this.game.renderType === Phaser.WEBGL ) + { + output = new Phaser.TilemapLayerGL(this.game, this, this.layers.length - 1, w, h); + } + else + { + output = new Phaser.TilemapLayer(this.game, this, this.layers.length - 1, w, h); + } output.name = name; return group.add(output); @@ -999,6 +1160,10 @@ Phaser.Tilemap.prototype = { { layer = layer.index; } + else if (layer instanceof Phaser.TilemapLayerGL) + { + layer = layer.index; + } return layer; diff --git a/src/tilemap/TilemapLayerGL.js b/src/tilemap/TilemapLayerGL.js new file mode 100644 index 000000000..06e0fa71f --- /dev/null +++ b/src/tilemap/TilemapLayerGL.js @@ -0,0 +1,907 @@ +/** +* @author Richard Davey +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* A TilemapLayerGL is a PIXI.Tilemap that renders a specific TileLayer of a Tilemap using the PIXI WebGL renderer. +* +* NOTE: This is a close duplicate of Phaser.TilemapLayer class, modified to support WebGL rendering, it may be possible to merge the two classes +* although that will probably incur performance penalties due to some fundamental differences in the set-up before rendering. +* +* Since a PIXI.Tilemap is a PIXI.DisplayObjectContainer it can be moved around the display list, added to other groups, or display objects, etc. +* +* By default TilemapLayers have fixedToCamera set to `true`. Changing this will break Camera follow and scrolling behavior. +* +* @class Phaser.TilemapLayerGL +* @extends Phaser.Sprite +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. +* @param {Phaser.Tilemap} tilemap - The tilemap to which this layer belongs. +* @param {integer} index - The index of the TileLayer to render within the Tilemap. +* @param {integer} width - Width of the renderable area of the layer (in pixels). +* @param {integer} height - Height of the renderable area of the layer (in pixels). +*/ +Phaser.TilemapLayerGL = function (game, tilemap, index, width, height) { + + this.game = game; + + width |= 0; + height |= 0; + + /** + * The Tilemap to which this layer is bound. + * @property {Phaser.Tilemap} map + * @protected + * @readonly + */ + this.map = tilemap; + + /** + * The index of this layer within the Tilemap. + * @property {number} index + * @protected + * @readonly + */ + this.index = index; + + /** + * The layer object within the Tilemap that this layer represents. + * @property {object} layer + * @protected + * @readonly + */ + this.layer = tilemap.layers[index]; + + /** + * The const type of this object. + * @property {number} type + * @readonly + * @protected + * @default Phaser.TILEMAPLAYER + */ + this.type = Phaser.TILEMAPLAYER; + + /** + * @property {number} physicsType - The const physics body type of this object. + * @readonly + */ + this.physicsType = Phaser.TILEMAPLAYER; + + /** + * Settings that control standard (non-diagnostic) rendering. + * + * @property {boolean} [enableScrollDelta=true] - Delta scroll rendering only draws tiles/edges as they come into view. + * This can greatly improve scrolling rendering performance, especially when there are many small tiles. + * It should only be disabled in rare cases. + * + * @property {?DOMCanvasElement} [copyCanvas=(auto)] - [Internal] If set, force using a separate (shared) copy canvas. + * Using a canvas bitblt/copy when the source and destinations region overlap produces unexpected behavior + * in some browsers, notably Safari. + * + * @default + */ + this.renderSettings = { + enableScrollDelta: false, + overdrawRatio: 0.20, + copyCanvas: null + }; + + /** + * Enable an additional "debug rendering" pass to display collision information. + * + * @property {boolean} debug + * @default + */ + this.debug = false; + + /** + * @property {boolean} exists - Controls if the core game loop and physics update this game object or not. + */ + this.exists = true; + + /** + * Settings used for debugging and diagnostics. + * + * @property {?string} missingImageFill - A tile is rendered as a rectangle using the following fill if a valid tileset/image cannot be found. A value of `null` prevents additional rendering for tiles without a valid tileset image. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {?string} debuggedTileOverfill - If a Tile has `Tile#debug` true then, after normal tile image rendering, a rectangle with the following fill is drawn above/over it. _This takes effect even when debug rendering for the layer is not enabled._ + * + * @property {boolean} forceFullRedraw - When debug rendering (`debug` is true), and this option is enabled, the a full redraw is forced and rendering optimization is suppressed. + * + * @property {number} debugAlpha - When debug rendering (`debug` is true), the tileset is initially rendered with this alpha level. This can make the tile edges clearer. + * + * @property {?string} facingEdgeStroke - When debug rendering (`debug` is true), this color/stroke is used to draw "face" edges. A value of `null` disables coloring facing edges. + * + * @property {?string} collidingTileOverfill - When debug rendering (`debug` is true), this fill is used for tiles that are collidable. A value of `null` disables applying the additional overfill. + * + */ + this.debugSettings = { + + missingImageFill: 'rgb(255,255,255)', + debuggedTileOverfill: 'rgba(0,255,0,0.4)', + + forceFullRedraw: true, + + debugAlpha: 0.5, + facingEdgeStroke: 'rgba(0,255,0,1)', + collidingTileOverfill: 'rgba(0,255,0,0.2)' + + }; + + /** + * Speed at which this layer scrolls horizontally, relative to the camera (e.g. scrollFactorX of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do). + * @property {number} scrollFactorX + * @public + * @default + */ + this.scrollFactorX = 1; + + /** + * Speed at which this layer scrolls vertically, relative to the camera (e.g. scrollFactorY of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do) + * @property {number} scrollFactorY + * @public + * @default + */ + this.scrollFactorY = 1; + + /** + * If true tiles will be force rendered, even if such is not believed to be required. + * @property {boolean} dirty + * @protected + */ + this.dirty = true; + + /** + * When ray-casting against tiles this is the number of steps it will jump. For larger tile sizes you can increase this to improve performance. + * @property {integer} rayStepRate + * @default + */ + this.rayStepRate = 4; + + /** + * Flag controlling if the layer tiles wrap at the edges. + * @property {boolean} _wrap + * @private + */ + this._wrap = false; + + /** + * Local map data and calculation cache. + * @property {object} _mc + * @private + */ + var tileset = this.layer.tileset || this.map.tilesets[0]; + this._mc = { + + // Used to bypass rendering without reliance on `dirty` and detect changes. + scrollX: 0, + scrollY: 0, + renderWidth: 0, + renderHeight: 0, + + // dimensions of tiles in the original tilemap (the one holding all the tile indices) + tileWidth: tilemap.tileWidth, + tileHeight: tilemap.tileHeight, + + // Collision width/height (pixels) + // What purpose do these have? Most things use tile width/height directly. + // This also only extends collisions right and down. + + // dimensions of tiles in this tileset (may not match the original tilemap) + cw: tileset.tileWidth, + ch: tileset.tileHeight, + + // the tileset for this layer + tileset: tileset, + + // Cached tilesets from index -> Tileset + tilesets: [] + }; + + /** + * The rendering mode (used by PIXI.Tilemap). Modes are: 0 - render entire screen of tiles, 1 - render entire map of tiles + * TODO: make some constants for the rendering modes + * @property {number} _renderMode + * @private + */ + this._renderMode = 0; + + /** + * The current canvas left after scroll is applied. + * @property {number} _scrollX + * @private + */ + this._scrollX = 0; + + /** + * The current canvas top after scroll is applied. + * @propety {number} _scrollY + * @private + */ + this._scrollY = 0; + + /** + * Used for caching the tiles / array of tiles. + * @property {Phaser.Tile[]} _results + * @private + */ + this._results = []; + + // get PIXI textures for each tileset source image + var baseTexture = new PIXI.BaseTexture( tileset.image ); + PIXI.Tilemap.call(this, new PIXI.Texture(baseTexture), this.map.width, this.map.height, this._mc.tileset.tileWidth, this._mc.tileset.tileHeight, this.layer); + + Phaser.Component.Core.init.call(this, game, 0, 0, null, null); + + // must be set *after* the Core.init + this.fixedToCamera = true; +}; + + +// constructor: extends PIXI.Tilemap +Phaser.TilemapLayerGL.prototype = Object.create(PIXI.Tilemap.prototype); +Phaser.TilemapLayerGL.prototype.constructor = Phaser.TilemapLayerGL; + + +// only one Phaser component used +Phaser.Component.Core.install.call(Phaser.TilemapLayerGL.prototype, [ + 'FixedToCamera' +]); + + +// redirect method prototypes (TODO: not needed? I'm not sure...) +Phaser.TilemapLayerGL.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; +Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; +Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; +Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; +Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; + + +/** +* Automatically called by World.preUpdate. +* +* @method Phaser.TilemapLayerGL#preUpdate +*/ +Phaser.TilemapLayerGL.prototype.preUpdate = function() { + + return this.preUpdateCore(); + +}; + +/** +* Automatically called by World.postUpdate. Handles camera scrolling. +* +* @method Phaser.TilemapLayerGL#postUpdate +* @protected +*/ +Phaser.TilemapLayerGL.prototype.postUpdate = function () { + + Phaser.Component.FixedToCamera.postUpdate.call(this); + + // Stops you being able to auto-scroll the camera if it's not following a sprite + var camera = this.game.camera; + + this.scrollX = camera.x * this.scrollFactorX / this.scale.x; + this.scrollY = camera.y * this.scrollFactorY / this.scale.y; + + this.render(); + +}; + +/** +* Destroys this TilemapLayerGL. +* +* @method Phaser.TilemapLayerGL#destroy +*/ +Phaser.TilemapLayerGL.prototype.destroy = function() { + + PIXI.CanvasPool.remove(this); + + Phaser.Component.Destroy.prototype.destroy.call(this); + +}; + +/** +* Resizes the internal dimensions and texture frame used by this TilemapLayerGL. +* +* This is an expensive call, so don't bind it to a window resize event! But instead call it at carefully +* selected times. +* +* Be aware that no validation of the new sizes takes place and the current map scroll coordinates are not +* modified either. You will have to handle both of these things from your game code if required. +* +* @method Phaser.TilemapLayerGL#resize +* @param {number} width - The new width of the TilemapLayerGL +* @param {number} height - The new height of the TilemapLayerGL +*/ +Phaser.TilemapLayerGL.prototype.resize = function (width, height) { + + this.texture.frame.resize(width, height); + + this.texture.width = width; + this.texture.height = height; + + this.texture.crop.width = width; + this.texture.crop.height = height; + + this.texture.baseTexture.width = width; + this.texture.baseTexture.height = height; + + this.texture.baseTexture.dirty(); + this.texture.requiresUpdate = true; + + this.texture._updateUvs(); + + this.dirty = true; + +}; + +/** +* Sets the world size to match the size of this layer. +* +* @method Phaser.TilemapLayerGL#resizeWorld +* @public +*/ +Phaser.TilemapLayerGL.prototype.resizeWorld = function () { + + this.game.world.setBounds(0, 0, this.layer.widthInPixels * this.scale.x, this.layer.heightInPixels * this.scale.y); + +}; + +/** +* Take an x coordinate that doesn't account for scrollFactorX and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixX +* @private +* @param {number} x - x coordinate in camera space +* @return {number} x coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixX = function (x) { + + if (x < 0) + { + x = 0; + } + + if (this.scrollFactorX === 1) + { + return x; + } + + return this._scrollX + (x - (this._scrollX / this.scrollFactorX)); + +}; + +/** +* Take an x coordinate that _does_ account for scrollFactorX and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixX +* @private +* @param {number} x - x coordinate in scrollFactor-adjusted dimensions +* @return {number} x coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixX = function (x) { + + if (this.scrollFactorX === 1) + { + return x; + } + + return (this._scrollX / this.scrollFactorX) + (x - this._scrollX); + +}; + +/** +* Take a y coordinate that doesn't account for scrollFactorY and 'fix' it into a scrolled local space. +* +* @method Phaser.TilemapLayerGL#_fixY +* @private +* @param {number} y - y coordinate in camera space +* @return {number} y coordinate in scrollFactor-adjusted dimensions +*/ +Phaser.TilemapLayerGL.prototype._fixY = function (y) { + + if (y < 0) + { + y = 0; + } + + if (this.scrollFactorY === 1) + { + return y; + } + + return this._scrollY + (y - (this._scrollY / this.scrollFactorY)); + +}; + +/** +* Take a y coordinate that _does_ account for scrollFactorY and 'unfix' it back to camera space. +* +* @method Phaser.TilemapLayerGL#_unfixY +* @private +* @param {number} y - y coordinate in scrollFactor-adjusted dimensions +* @return {number} y coordinate in camera space +*/ +Phaser.TilemapLayerGL.prototype._unfixY = function (y) { + + if (this.scrollFactorY === 1) + { + return y; + } + + return (this._scrollY / this.scrollFactorY) + (y - this._scrollY); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileX +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @return {integer} The X map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileX = function (x) { + + // var tileWidth = this.tileWidth * this.scale.x; + return Math.floor(this._fixX(x) / this._mc.tileWidth); + +}; + +/** +* Convert a pixel value to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileY +* @public +* @param {number} y - Y position of the point in target tile (in pixels). +* @return {integer} The Y map location of the tile. +*/ +Phaser.TilemapLayerGL.prototype.getTileY = function (y) { + + // var tileHeight = this.tileHeight * this.scale.y; + return Math.floor(this._fixY(y) / this._mc.tileHeight); + +}; + +/** +* Convert a pixel coordinate to a tile coordinate. +* +* @method Phaser.TilemapLayerGL#getTileXY +* @public +* @param {number} x - X position of the point in target tile (in pixels). +* @param {number} y - Y position of the point in target tile (in pixels). +* @param {(Phaser.Point|object)} point - The Point/object to update. +* @return {(Phaser.Point|object)} A Point/object with its `x` and `y` properties set. +*/ +Phaser.TilemapLayerGL.prototype.getTileXY = function (x, y, point) { + + point.x = this.getTileX(x); + point.y = this.getTileY(y); + + return point; + +}; + +/** +* Gets all tiles that intersect with the given line. +* +* @method Phaser.TilemapLayerGL#getRayCastTiles +* @public +* @param {Phaser.Line} line - The line used to determine which tiles to return. +* @param {integer} [stepRate=(rayStepRate)] - How many steps through the ray will we check? Defaults to `rayStepRate`. +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {Phaser.Tile[]} An array of Phaser.Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getRayCastTiles = function (line, stepRate, collides, interestingFace) { + + if (!stepRate) { stepRate = this.rayStepRate; } + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + // First get all tiles that touch the bounds of the line + var tiles = this.getTiles(line.x, line.y, line.width, line.height, collides, interestingFace); + + if (tiles.length === 0) + { + return []; + } + + // Now we only want the tiles that intersect with the points on this line + var coords = line.coordinatesOnLine(stepRate); + var results = []; + + for (var i = 0; i < tiles.length; i++) + { + for (var t = 0; t < coords.length; t++) + { + var tile = tiles[i]; + var coord = coords[t]; + if (tile.containsPoint(coord[0], coord[1])) + { + results.push(tile); + break; + } + } + } + + return results; + +}; + +/** +* Get all tiles that exist within the given area, defined by the top-left corner, width and height. Values given are in pixels, not tiles. +* +* @method Phaser.TilemapLayerGL#getTiles +* @public +* @param {number} x - X position of the top left corner (in pixels). +* @param {number} y - Y position of the top left corner (in pixels). +* @param {number} width - Width of the area to get (in pixels). +* @param {number} height - Height of the area to get (in pixels). +* @param {boolean} [collides=false] - If true, _only_ return tiles that collide on one or more faces. +* @param {boolean} [interestingFace=false] - If true, _only_ return tiles that have interesting faces. +* @return {array} An array of Tiles. +*/ +Phaser.TilemapLayerGL.prototype.getTiles = function (x, y, width, height, collides, interestingFace) { + + // Should we only get tiles that have at least one of their collision flags set? (true = yes, false = no just get them all) + if (collides === undefined) { collides = false; } + if (interestingFace === undefined) { interestingFace = false; } + + var fetchAll = !(collides || interestingFace); + + // Adjust the x,y coordinates for scrollFactor + x = this._fixX(x); + y = this._fixY(y); + + // Convert the pixel values into tile coordinates + var tx = Math.floor(x / (this._mc.cw * this.scale.x)); + var ty = Math.floor(y / (this._mc.ch * this.scale.y)); + // Don't just use ceil(width/cw) to allow account for x/y diff within cell + var tw = Math.ceil((x + width) / (this._mc.cw * this.scale.x)) - tx; + var th = Math.ceil((y + height) / (this._mc.ch * this.scale.y)) - ty; + + // Discard old results before storing the new ones + this._results = []; + + for (var wy = ty; wy < ty + th; wy++) + { + for (var wx = tx; wx < tx + tw; wx++) + { + var row = this.layer.data[wy]; + + if (row && row[wx]) + { + if (fetchAll || row[wx].isInteresting(collides, interestingFace)) + { + this._results.push(row[wx]); + } + } + } + } + + return this._results.slice(); + +}; + +/** +* The TilemapLayerGL caches tileset look-ups. +* +* Call this method of clear the cache if tilesets have been added or updated after the layer has been rendered. +* +* @method Phaser.TilemapLayerGL#resetTilesetCache +* @public +*/ +Phaser.TilemapLayerGL.prototype.resetTilesetCache = function () { + + this._mc.tilesets = []; +}; + +/** + * This method will set the scale of the tilemap as well as update the underlying block data of this layer. + * + * @method Phaser.TilemapLayerGL#setScale + * @param {number} [xScale=1] - The scale factor along the X-plane + * @param {number} [yScale] - The scale factor along the Y-plane + */ +Phaser.TilemapLayerGL.prototype.setScale = function (xScale, yScale) { + + xScale = xScale || 1; + yScale = yScale || xScale; + + for (var y = 0; y < this.layer.data.length; y++) + { + var row = this.layer.data[y]; + + for (var x = 0; x < row.length; x++) + { + var tile = row[x]; + + tile.width = this.map.tileWidth * xScale; + tile.height = this.map.tileHeight * yScale; + + tile.worldX = tile.x * tile.width; + tile.worldY = tile.y * tile.height; + } + } + + this.scale.setTo(xScale, yScale); + +}; + +/** +* Render tiles in the given area given by the virtual tile coordinates biased by the given scroll factor. +* This will constrain the tile coordinates based on wrapping but not physical coordinates. +* +* @method Phaser.TilemapLayerGL#renderRegion +* @private +* @param {integer} scrollX - Render x offset/scroll. +* @param {integer} scrollY - Render y offset/scroll. +* @param {integer} left - Leftmost column to render. +* @param {integer} top - Topmost row to render. +* @param {integer} right - Rightmost column to render. +* @param {integer} bottom - Bottommost row to render. +*/ +Phaser.TilemapLayerGL.prototype.renderRegion = function (scrollX, scrollY, left, top, right, bottom, offx, offy) { + + var width = this.layer.width; + var height = this.layer.height; + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + // var lastAlpha = NaN; + + offx = offx || 0; + offy = offy || 0; + + if (!this._wrap) + { + if (left <= right) // Only adjust if going to render + { + left = Math.max(0, left); + right = Math.min(width - 1, right); + } + if (top <= bottom) + { + top = Math.max(0, top); + bottom = Math.min(height - 1, bottom); + } + } + + // top-left pixel of top-left cell + var baseX = (left * tw) - scrollX; + var baseY = (top * th) - scrollY; + + // Fix normStartX/normStartY such it is normalized [0..width/height). This allows a simple conditional and decrement to always keep in range [0..width/height) during the loop. The major offset bias is to take care of negative values. + var normStartX = (left + ((1 << 20) * width)) % width; + var normStartY = (top + ((1 << 20) * height)) % height; + + // tx/ty - are pixel coordinates where tile is drawn + // x/y - is cell location, normalized [0..width/height) in loop + // xmax/ymax - remaining cells to render on column/row + var tx, ty, x, y, xmax, ymax; + + //context.fillStyle = this.tileColor; + + for (y = normStartY, ymax = bottom - top, ty = baseY; + ymax >= 0; + y++, ymax--, ty += th) + { + + if (y >= height) { y -= height; } + + var row = this.layer.data[y]; + + for (x = normStartX, xmax = right - left, tx = baseX; + xmax >= 0; + x++, xmax--, tx += tw) + { + + if (x >= width) { x -= width; } + + var tile = row[x]; + + if (!tile || tile.index < 0) + { + // skipping some tiles, add a degenerate marker into the batch list + this._mc.tileset.addDegenerate( this.glBatch ); + continue; + } + + var index = tile.index; + + if (tile.rotation || tile.flipped) + { + this._mc.tileset.drawGl(this.glBatch, -tile.centerX + offx, -tile.centerY + offy, index, tile.alpha); + } + else + { + this._mc.tileset.drawGl(this.glBatch, tx + offx, ty + offy, index, tile.alpha); + } + } + + // at end of each row, add a degenerate marker into the batch drawing list + this._mc.tileset.addDegenerate( this.glBatch ); + } + +}; + +/** +* Clear and render the entire canvas. +* +* @method Phaser.TilemapLayerGL#renderFull +* @private +*/ +Phaser.TilemapLayerGL.prototype.renderFull = function () { + + var scrollX = this._mc.scrollX; + var scrollY = this._mc.scrollY; + + var renderW = this.game._width; //this.canvas.width; + var renderH = this.game._height; //this.canvas.height; + + var tw = this._mc.tileWidth; + var th = this._mc.tileHeight; + + var cw = this._mc.cw; + var ch = this._mc.ch; + + var left = Math.floor( (scrollX - (cw - tw)) / tw ); + var right = Math.floor( (renderW - 1 + scrollX) / tw ); + var top = Math.floor( (scrollY - (ch - th)) / th ); + var bottom = Math.floor( (renderH - 1 + scrollY) / th ); + + this.glBatch = []; + this.renderRegion(scrollX, scrollY, left, top, right, bottom, 0, -(ch - th)); +}; + +/** +* Renders the tiles to the layer canvas and pushes to the display. +* +* @method Phaser.TilemapLayerGL#render +* @protected +*/ +Phaser.TilemapLayerGL.prototype.render = function () { + + var redrawAll = false; + + if (!this.visible) + { + return; + } + + if (this.dirty || this.layer.dirty) + { + this.layer.dirty = false; + redrawAll = true; + } + + // Scrolling bias; whole pixels only + var scrollX = this._scrollX | 0; + var scrollY = this._scrollY | 0; + + var mc = this._mc; + var shiftX = mc.scrollX - scrollX; // Negative when scrolling right/down + var shiftY = mc.scrollY - scrollY; + + if (!redrawAll && + shiftX === 0 && shiftY === 0) + { + // No reason to rebuild batch, looking at same thing and not invalidated. + return; + } + + mc.scrollX = scrollX; + mc.scrollY = scrollY; + + this.renderFull(); + + this.texture.baseTexture.dirty(); + + this.dirty = false; + + return true; + +}; + +/** +* Flag controlling if the layer tiles wrap at the edges. Only works if the World size matches the Map size. +* +* @property {boolean} wrap +* @memberof Phaser.TilemapLayerGL +* @public +* @default false +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "wrap", { + + get: function () { + return this._wrap; + }, + + set: function (value) { + this._wrap = value; + this.dirty = true; + } + +}); + +/** +* Scrolls the map horizontally or returns the current x position. +* +* @property {number} scrollX +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollX", { + + get: function () { + return this._scrollX; + }, + + set: function (value) { + this._scrollX = value; + } + +}); + +/** +* Scrolls the map vertically or returns the current y position. +* +* @property {number} scrollY +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "scrollY", { + + get: function () { + return this._scrollY; + }, + + set: function (value) { + this._scrollY = value; + } + +}); + +/** +* The width of the collision tiles (in pixels). +* +* @property {integer} collisionWidth +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionWidth", { + + get: function () { + return this._mc.cw; + }, + + set: function (value) { + this._mc.cw = value | 0; + this.dirty = true; + } + +}); + +/** +* The height of the collision tiles (in pixels). +* +* @property {integer} collisionHeight +* @memberof Phaser.TilemapLayerGL +* @public +*/ +Object.defineProperty(Phaser.TilemapLayerGL.prototype, "collisionHeight", { + + get: function () { + return this._mc.ch; + }, + + set: function (value) { + this._mc.ch = value | 0; + this.dirty = true; + } + +}); diff --git a/src/tilemap/TilemapParser.js b/src/tilemap/TilemapParser.js index a74b487a2..799ab5928 100644 --- a/src/tilemap/TilemapParser.js +++ b/src/tilemap/TilemapParser.js @@ -26,34 +26,7 @@ Phaser.TilemapParser = { INSERT_NULL: false, /** - * A tiled flag that resides within the 32 bit of the object gid and - * indicates whether the tiled/object is flipped horizontally. - * - * @constant - * @type {number} - */ - FLIPPED_HORIZONTALLY_FLAG: 0x80000000, - - /** - * A tiled flag that resides within the 31 bit of the object gid and - * indicates whether the tiled/object is flipped vertically. - * - * @constant - * @type {number} - */ - FLIPPED_VERTICALLY_FLAG: 0x40000000, - - /** - * A tiled flag that resides within the 30 bit of the object gid and - * indicates whether the tiled/object is flipped diagonally. - * - * @constant - * @type {number} - */ - FLIPPED_DIAGONALLY_FLAG: 0x20000000, - - /** - * Parse tilemap data from the cache and creates a Tilemap object. + * Parse tilemap data from the cache and creates data for a Tilemap object. * * @method Phaser.TilemapParser.parse * @param {Phaser.Game} game - Game reference to the currently running game. @@ -532,8 +505,6 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { - var self = this; - var object = { gid: curo.objects[v].gid, @@ -541,13 +512,9 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, - width: curo.objects[v].width, - height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties, - horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, - verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, - diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG + properties: curo.objects[v].properties + }; if (curo.objects[v].rotation) @@ -680,11 +647,13 @@ Phaser.TilemapParser = { var sid; var set; - // go through each of the map layers + // go through each of the map data layers for (var i = 0; i < map.layers.length; i++) { layer = map.layers[i]; + set = null; + // rows of tiles for (var j = 0; j < layer.data.length; j++) { @@ -705,12 +674,14 @@ Phaser.TilemapParser = { sid = map.tiles[tile.index][2]; set = map.tilesets[sid]; + // if that tile type has any properties, add them to the tile object if (set.tileProperties && set.tileProperties[tile.index - set.firstgid]) { tile.properties = Phaser.Utils.mixin(set.tileProperties[tile.index - set.firstgid], tile.properties); } + } } } diff --git a/src/tilemap/Tileset.js b/src/tilemap/Tileset.js index 4ff1ee75e..a51a4b2a0 100644 --- a/src/tilemap/Tileset.js +++ b/src/tilemap/Tileset.js @@ -137,6 +137,7 @@ Phaser.Tileset.prototype = { if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) { + // draw the tile on the canvas context.drawImage( this.image, this.drawCoords[coordIndex], @@ -152,6 +153,56 @@ Phaser.Tileset.prototype = { }, + /** + * Draws a tile from this Tileset at the given coordinates using a WebGl renderer. + * + * @method Phaser.Tileset#drawGl + * @public + * @param out {Array} glBatch - A list of webgl batch objects to draw later. + * @param {number} x - The x coordinate to draw to. + * @param {number} y - The y coordinate to draw to. + * @param {integer} index - The index of the tile within the set to draw. + * @param {number} alpha - The alpha value to draw this tile with. + */ + drawGl: function (glBatch, x, y, index, alpha) { + + // Correct the tile index for the set and bias for interlacing x/y values + var coordIndex = (index - this.firstgid) * 2; + + if (coordIndex >= 0 && (coordIndex + 1) < this.drawCoords.length) + { + // add the tile to the webgl batch + // source and destination coordinates, in pixel units + // destination is the centre of the tile + glBatch.push( { + sx: this.drawCoords[coordIndex], + sy: this.drawCoords[coordIndex + 1], + sw: this.tileWidth, + sh: this.tileHeight, + dx: x + this.tileWidth * 0.5, + dy: y + this.tileHeight * 0.5, + dw: this.tileWidth, + dh: this.tileHeight, + alpha: alpha + } ); + } + + }, + + /** + * adds a marker for the WebGl batch display to insert a degenerate triangle (eg. at the end of each row of tiles) + * + * @param {[type]} glBatch [description] + */ + addDegenerate: function( glBatch ) + { + // don't insert multiple degenerate markers in a row + if ( glBatch[ glBatch.length - 1] ) + { + glBatch.push( null ); + } + }, + /** * Returns true if and only if this tileset contains the given tile index. * diff --git a/tasks/manifests/tilemaps.json b/tasks/manifests/tilemaps.json index d1588eaef..906ec697a 100644 --- a/tasks/manifests/tilemaps.json +++ b/tasks/manifests/tilemaps.json @@ -1,8 +1,11 @@ [ + "src/pixi/extras/Tilemap.js", + "src/pixi/renderers/webgl/shaders/TilemapShader.js", "src/tilemap/ImageCollection.js", "src/tilemap/Tile.js", "src/tilemap/Tilemap.js", "src/tilemap/TilemapLayer.js", + "src/tilemap/TilemapLayerGL.js", "src/tilemap/TilemapParser.js", "src/tilemap/Tileset.js" ] diff --git a/typescript/phaser.d.ts b/typescript/phaser.d.ts index 9fcc90130..842ddc23c 100644 --- a/typescript/phaser.d.ts +++ b/typescript/phaser.d.ts @@ -755,7 +755,7 @@ declare module Phaser { static HSVtoRGB(h: number, s: number, v: number, out?: ColorComponents): ColorComponents; static HSVColorWheel(s?: number, v?: number): ColorComponents[]; static hueToColor(p: number, q: number, t: number): number; - static interpolateColor(color1: number, color2: number, steps: number, currentStep: number, alpha: number): number; + static interpolateColor(color1: number, color2: number, steps: number, currentStep: number, alpha?: number): number; static interpolateColorWithRGB(color: number, r: number, g: number, b: number, steps: number, currentStep: number): number; static interpolateRGB(r1: number, g1: number, b1: number, r2: number, g2: number, b2: number, steps: number, currentStep: number): number; static packPixel(r: number, g: number, b: number, a: number): number; @@ -1532,7 +1532,7 @@ declare module Phaser { graphics(x: number, y: number, group?: Phaser.Group): Phaser.Graphics; group(parent?: any, name?: string, addToStage?: boolean, enableBody?: boolean, physicsBodyType?: number): Phaser.Group; image(x: number, y: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Image; - physicsGroup(physicsBodyType: number, parent?: any, name?: string, addToStage?: boolean): Phaser.Group; + physicsGroup(physicsBodyType?: number, parent?: any, name?: string, addToStage?: boolean): Phaser.Group; plugin(plugin: Phaser.Plugin, ...parameter: any[]): Phaser.Plugin; renderTexture(width?: number, height?: number, key?: string, addToCache?: boolean): Phaser.RenderTexture; retroFont(font: string, characterWidth: number, characterHeight: number, chars: string, charsPerRow: number, xSpacing?: number, ySpacing?: number, xOffset?: number, yOffset?: number): Phaser.RetroFont; @@ -5606,7 +5606,7 @@ declare module Phaser { createBullets(quantity?: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Weapon; debug(x?: number, y?: number, debugBodies?: boolean): void; destroy(): void; - fire(from: any, x?: number, y?: number): boolean; + fire(from?: any, x?: number, y?: number): boolean; fireAtPointer(pointer: Phaser.Pointer): boolean; fireAtSprite(sprite: Phaser.Sprite): boolean; fireAtXY(x: number, y: number): boolean;